Я нарисовал квартиру в Бангкоке в GATE. Теперь рисунок управляет всем домом.

Один чат и ни строчки кода: светящиеся лампы, ровная температура и довольные растения.

Виктор Валландер · Бангкок

Также на: English · Svenska

Homie в движении: кондиционер включается со своей карточки, а рисунок меняется вместе со светом, временем суток и погодой.

Вечер в Бангкоке. На экране телефона квартира нарисована как уютная видеоигра: лампы в гостиной бросают тёплые круги света на деревянный пол, кондиционер у обеденного стола выпускает маленькие струйки воздуха, за стеклом идёт дождь, а на балконе стоит тыква-фонарь, наполовину скрытая за перилами. Когда я выключаю лампу в приложении, этот угол рисунка темнеет.

Я спроектировал каждую часть и не написал ни строчки кода. Я руководил всей работой в одном чате с Molly, ИИ-ассистентом, который работает на GATE, платформе, которую мы создаём в Gate Intelligence.

Теперь рисунок ещё и управляет домом. Molly и GATE держат температуру ровной: когда воздух становится слишком тёплым или влажным, кондиционеры включаются сами и выключаются, когда в комнате снова так, как я хочу. У четырёх растений есть датчики почвы, и растения пишут мне письма, когда хотят пить или тонут. Вот как всё получилось, шаг за шагом, включая то, что пошло не так.

Всё началось с диммера

В нашей съёмной квартире в районе Тонглор первая проблема была маленькой: 30-метровая светодиодная лента в нише потолка, у которой было только два режима: светло и очень светло.

Прежде чем что-то покупать, я хотел знать, сколько лента реально потребляет. Molly прочитала этикетку блока питания с моей фотографии: 6,6 Вт на метр, около 200 Вт всего, больше, чем выдерживает найденный мной умный диммер на 150 Вт. Поэтому сначала я провёл дешёвый эксперимент: проводной диммер за 108 бат. Он заработал и показал, что остальной план стоит реализовывать.

Потом появились светильники IKEA на Zigbee и хаб DIRIGERA. С тех пор у меня было одно правило для каждой покупки: устройство должно поддерживать Matter или сразу работать с Home Assistant. Розетка с Matter работает с хабом IKEA. Дешёвая розетка Tuya на Zigbee нет.

Урок: прежде чем покупать, читайте страницу товара и документацию по интеграции. Это правило показало, что дешёвым камерам Reolink для Home Assistant нужен дополнительный хаб, а модели Outdoor нет.

Home Assistant на Raspberry Pi

Потом я поставил настоящую цель: «Если у нас будет Home Assistant, мы сможем построить собственное приложение внутри GATE: каждая лампа, каждый датчик, камеры, всё в одном месте».

Мы делали покупки вместе. В GATE есть браузерный инструмент: ассистент работает в настоящей вкладке браузера, а я наблюдаю. Molly искала на Lazada, проверяла сроки доставки и собирала корзину по моему списку: Raspberry Pi 5 в корпусе без вентилятора (тишина была обязательным условием), Zigbee-стик, датчики температуры, датчик почвы для монстеры и ИК-передатчики Broadlink для наших пяти кондиционеров.

Когда Pi приехал, я настроил его с помощью Claude на ноутбуке по инструкциям, подготовленным в чате. Home Assistant запустился в локальной сети, Pi получил постоянный адрес в роутере, а туннель Cloudflare дал GATE безопасный доступ снаружи. Ключ хранится в сейфе GATE, а не в чате.

С этого момента квартира понимала обычный язык:

  • «Поставь все лампы на 50 процентов, уже вечер».
  • «Выключи свет, потом оба кондиционера».
  • «Режим кино: телевизор включить, свет до 30 процентов, всё одновременно».

У кондиционеров нет сети, только ИК-пульт. Поэтому мы их обучили: Broadlink слушает, я нажимаю кнопку на пульте, и код сохраняется. Одна температура и скорость вентилятора за раз. Первый код «power» оказался кнопкой включения, а не переключателем. Такое узнаёшь, только проверив каждую кнопку.

От макета к настоящему приложению

Я хотел видеть квартиру, а не список выключателей, и попросил план с точкой для каждого устройства. Это сработало, и я решил, что это должен быть настоящий продукт, а не демо-страница с ключом внутри.

Так появился GATE Homie: закрытый репозиторий, небольшой сервер, который хранит ключ Home Assistant, PIN-код для каждого члена семьи, и всё это в первую очередь для телефона. Код писался в кодовой сессии GATE: ИИ-разработчик работает в своей копии репозитория и открывает pull request. Раз приложением будет пользоваться моя семья, я потребовал независимую проверку безопасности до запуска. Это окупилось: первая версия позволила бы любому семейному PIN вызывать любую службу Home Assistant, вплоть до перезагрузки сервера. Исправлено до запуска.

Урок: «работает» и «безопасно дать семье» это две разные проверки.

Дальше оно росло, решение за решением:

  • Режимы: Бэтмен (10 процентов, одна лампа у стола на 50), Уют, Ужин, Утро, Ночь, Всё вкл, Всё выкл. Мой любимый приём: настроить комнату как нравится и сказать «сохрани это как Уют».
  • Климат: все датчики в шапке, графики истории, точные значения при наведении.
  • Датчики, перепрошитые на Zigbee, второй ИК-передатчик и приложение для iPhone (PWA).

Держим температуру ровной

В Бангкоке жарко и влажно круглый год, и раньше я не выпускал из рук пульт от кондиционера. Теперь Molly и GATE держат температуру ровной. Molly написала правило Auto AC в Home Assistant, а я задаю его значения в Homie:

  • Слишком тепло: оба кондиционера охлаждают в режиме, который я выбрал для каждого. «Cold delight» это 16 градусов на слабом вентиляторе: комната быстро остывает, и кондиционеры раньше выключаются.
  • Слишком влажно, но не жарко: они переходят в режим осушения.
  • Снова норма: они выключаются, только когда и температура, и влажность опустились ниже своих порогов выключения.

Разрыв между порогами включения и выключения и держит температуру ровной: комната остаётся внутри него, а кондиционеры не включаются и не выключаются без конца вокруг одного числа. Я выбираю, какие из пяти датчиков в квартире учитываются и достаточно ли одного или должны согласиться все. Правило проверяет всё каждую минуту, днём и ночью, открыто приложение или нет, и помнит, что отправило в последний раз, поэтому никогда не пищит, выключая уже выключенный кондиционер.

Если что-то всё равно не так, я спрашиваю Molly. Однажды ночью влажность в спальне дошла до 72 процентов, и я спросил её, не сломался ли кондиционер. Она посмотрела историю датчиков: температура в комнате держалась чуть ниже заданной на кондиционере, поэтому компрессор почти не работал и воздух никто не осушал. После этого правило Auto AC получило настройку влажности и режим осушения, а в спальне появился осушитель, который сам включается, когда воздух становится слишком влажным.

Чтобы растения были довольны

У четырёх растений в горшке стоит датчик почвы: у монстеры, лайма на балконе, арековой пальмы и мока. У каждого свои пороги для слишком сухой и слишком мокрой почвы. Для лайма Molly выяснила, что значит слишком мокро: выше 70 процентов двое суток подряд, потому что после свежего полива датчик несколько часов показывает высокие значения.

Из-за лайма растения и начали писать мне письма: однажды он несколько дней простоял в воде. Теперь у каждого растения свой адрес, и оно само пишет мне, когда становится слишком сухо, слишком мокро или снова всё в порядке. «Mano: я тону» приходит с mano@ на моём домене. Homie считает поливом резкий скачок влажности почвы, поэтому в каждом письме написано, когда растение поливали в последний раз. В приложении растение, которому хочется пить, горит красным, а тонущее фиолетовым.

Письмо в Gmail от Monstera с темой Monstera: I'm thirsty: почва слишком сухая (20 %), просьба полить сегодня и дата последнего полива
Монстера сама пишет мне, когда земля пересыхает.

Поливаю я по-прежнему сам. GATE подсказывает, какое растение и когда.

Карточка растения Lime в Homie: почва, воздух, влажность, батарея и график почвы за сутки
У каждого растения своя карточка: почва, воздух, влажность, батарея и график за сутки с линией сухости.

Рисуем квартиру

Я хотел, чтобы панель выглядела как сама квартира, нарисованная в стиле уютной видеоигры. Это была самая трудная часть и самая интересная.

У первых ИИ-рисунков было правильное настроение и неправильная квартира: балкон висел в воздухе, кухня появлялась дважды, мои цветные пометки были нарисованы на стенах как украшения. Мы пробовали вырезанную мебель на пустой комнате (всё выглядело вклеенным), меблировку всей комнаты лучшей моделью изображений (она двигала стены, как будто это лишь пожелания) и правку по частям.

Метод, который в итоге сработал, появился, когда я стал относиться к этому как к производственной линии:

  1. Один эскиз как единственный источник. Чистый чёрно-белый линейный рисунок квартиры. Если что-то не так, я исправляю эскиз ластиком, а не готовые картинки. Исправить источник один раз, а не двенадцать изображений.
  2. Один зафиксированный шаблон запроса с тремя полями: свет, время суток, погода. Я написал его сам и сделал коротким: «Ничего не добавляй. Ничего не убирай».
  3. Переосвещать, а не перерисовывать. Ночная картинка это дневная, переосвещённая. Мебель остаётся точно на месте, поэтому все слои совпадают.
  4. Два-три прохода ИИ, потом код. После нескольких проходов картинка начинает выглядеть грязной. Затемнение ночи, удаление фона и тонировка стекла делаются кодом.
  5. Красный фон. Модель закрашивает всё снаружи красным, а код его вырезает. Стекло становится настоящим стеклом, и дождь идёт за окнами, а не в гостиной. (Да, у нас был дождь в квартире.)
Чёрно-белый линейный эскиз квартиры, вид сверху под углом
Единственный источник: чёрно-белый линейный эскиз. Если что-то не так, я исправляю это здесь ластиком, а не в готовых картинках.
ИИ-рисунок квартиры, где всё за стенами и окнами закрашено красным
Модель закрашивает всё снаружи и за каждым окном чистым красным.
Тот же рисунок с вырезанным красным на тёмном фоне
Код вырезает красное. Стекло становится настоящим стеклом, а фон следует теме приложения.
Homie в дневной теме с рисунком квартиры при дневном свете
День: рисунок следует за настоящим солнцем, и всё приложение становится светлым.

Живой рисунок

Homie накладывает три картинки: день или ночь как основа и версия «со светом» под ней. Когда лампа горит, вокруг неё проступает мягкий круг освещённой картинки, а диммер задаёт его размер и яркость. Светодиодная лента светится по своему настоящему пути на потолке. Точки кондиционеров показывают движение воздуха, когда они работают.

Homie ночью, все лампы выключены
Всё выключено
Homie ночью, горят четыре лампы
Горят четыре лампы
Homie ночью, горят пять ламп
Горят пять ламп

Картинка следует за настоящим небом. Home Assistant знает, где солнце и какая погода, поэтому Homie показывает утро, день, сумерки или ночь, и ясно, облачно, дождь или грозу. Тема всего приложения меняется вместе с ними: светлая днём, персиковая утром, янтарная в сумерках, тёмная ночью или в грозу. Кнопка-симулятор позволяет посмотреть дождливую ночь в полдень.

Homie в сумерках: нарисованная квартира с включёнными лампами рядом с кнопками режимов, кондиционеров и света
Сумерки: лампы горят, кондиционер у обеденного стола работает, на балконе тыква-фонарь.
Homie во время грозы: дождь за окнами и тёмная тема
Гроза: дождь идёт за стеклом, картинка и тема темнеют.

Украшения и проблема стен

Я хотел украшения, не перерисовывая картинку. Мой вопрос был: как это делают настоящие игры? Слоями. Украшения это наклейки на отдельном слое: прозрачная картинка с положением и размером. В режиме Перемещение я перетаскиваю их, меняю размер, отражаю или убираю на Склад.

Потом я поставил тыкву на балкон, и она повисла поверх стеклянной стены.

Плоский рисунок не знает, что находится впереди, а что сзади. Игры решили это десятилетия назад с помощью карт глубины. Мы попробовали ИИ-карту глубины: слишком размыто для мультяшной картинки, а верх стен оказался позади их собственного основания.

ИИ-маски поверх рисунка, отмечающие цветом стены, двери, окна и перила
Первая попытка: ИИ-модель нашла каждую стену, дверь, окно и перила. Близко, но не точно.
ИИ-карта глубины рисунка: красное близко, синее далеко
Вторая попытка: ИИ-карта глубины, красное близко, синее далеко. Слишком мягко для мультяшной картинки: перекладины и табуреты расплываются.

Поэтому я решил рисовать стены сам, кистью прямо в Homie. Это оказалось весело:

  • Стена (красный) скрывает украшения позади себя.
  • Стекло (синий) и Перила (жёлтый) пропускают их, приглушённо.
  • Поверхность (зелёный) то, на что можно поставить украшение, например барная стойка или столешница.
  • Ластик.
Нарисованная вручную карта стен поверх рисунка: красные стены, синее стекло, жёлтые перила и зелёные поверхности
Мои нарисованные стены поверх рисунка: красные стены, синее стекло, жёлтые перила, зелёные поверхности для украшений, розовые просветы.

Homie вычисляет, где каждый нарисованный предмет касается пола, и всё, что стоит дальше, прячется за ним. Чтобы всё заработало, понадобилось несколько итераций: спинки стульев с просветами, неровные края, разрезавшие тыкву на полосы, барная стойка, слившаяся с кухонной стеной, потому что краска соприкасалась. Правило простое: одно закрашенное пятно это один предмет, а между двумя вещами, которые на рисунке касаются друг друга, нужна тонкая линия ластика. Ещё я хотел приближение для мелких деталей, и в режиме перемещения, и в обычном виде.

Тыква за обеденным стулом, нарисованная поверх изогнутого верха и стоек стула: перед ней только средняя перекладина
До: тыкву скрывает только средняя перекладина.
Та же тыква за обеденным стулом, теперь её скрывает вся спинка стула, включая изогнутый верх и стойки
После: её скрывает вся спинка стула, включая изогнутый верх.

Теперь тыква стоит в кухонном окне, перед барной стойкой и за кухонной стеной, точно как в жизни. Рядом на Складе: привидение, оплывающие свечи, гном-ведьма, фонарь и миска конфет, все нарисованы в том же стиле с одного листа.

Чему я научился

  • Начинайте с намерения, а не с ТЗ. Каждая функция начиналась с одной ясной фразы и скриншота.
  • Покажите, потом спросите. Скриншот с красным кругом и «видишь это?» лучше абзаца объяснений.
  • Один источник истины. Эскиз для рисунков, Home Assistant для устройств, одна строка настроек для положений. Каждый раз, когда источников было два, они расходились.
  • ИИ-картинки: мало проходов, потом код. Два-три прохода модели, потом цвет, вырезка и затемнение кодом.
  • Проверяйте запрос до генерации. Всегда смотрите точный запрос, прежде чем тратить деньги на картинку.
  • Маленькие проверенные шаги. «Ты это протестировал?» самый полезный вопрос во всём проекте.

Сколько это стоило

Оборудование в первой корзине обошлось примерно в 23 000 бат (Pi, датчики, ИК-передатчики, розетки, камеры), плюс позже осушитель и ещё несколько датчиков. Программная часть появилась из чата с Molly. Каждая ИИ-картинка стоит примерно от 1 700 до 6 000 токенов GATE, и мы сделали больше сотни картинок на пути к тем нескольким, что используем.

У членов семьи свои PIN-коды, растения пишут мне письма, а кондиционеры держат ровную температуру, и пульт больше не нужен.

Homie работает на GATE. Ассистента зовут Molly. Идеи и квартира мои.

Частые вопросы

Можно ли сделать панель Home Assistant, не написав ни строчки кода?

Да. Виктор Валландер построил Homie, панель Home Assistant в стиле видеоигры для своей квартиры в Бангкоке, не написав вручную ни строчки кода. Он руководил всей работой в одном чате с Molly, своим ИИ-ассистентом на GATE. Код написала кодовая сессия GATE в закрытом репозитории с pull request, а до того как семья получила доступ, прошла независимая проверка безопасности.

Как держать дома ровную температуру, если у кондиционеров только ИК-пульт?

В квартире Виктора Валландера в Бангкоке Molly, его ИИ-ассистент на GATE, написала одно правило в Home Assistant, а он задаёт его значения в Homie. Передатчики Broadlink отправляют собственные ИК-коды пультов. Когда выбранные им датчики показывают жару, оба кондиционера охлаждают, при высокой влажности осушают, а выключаются, только когда и температура, и влажность опустились ниже его порогов выключения.

Может ли умный дом подсказать, что растению нужна вода?

Да. В Homie, панели, которую Виктор Валландер построил на GATE, у четырёх растений есть Zigbee-датчики почвы, и у каждого свои пороги для слишком сухой и слишком мокрой почвы. Когда растение выходит за порог, оно само пишет ему письмо со своего адреса, например «Mano: я тону», и сообщает, когда его поливали в последний раз: Homie видит полив по скачку влажности почвы. Поливает он по-прежнему сам.

На каком оборудовании работает Homie?

Homie работает с Home Assistant на Raspberry Pi 5 в корпусе без вентилятора: Zigbee-стик, светильники IKEA на Zigbee с хабом DIRIGERA, розетки с Matter, датчики температуры и почвы, осушитель и ИК-передатчики Broadlink для пяти кондиционеров. Туннель Cloudflare даёт GATE безопасный доступ снаружи, а ключ доступа хранится в сейфе GATE, а не в чате.

Как рисунок показывает, какие лампы включены?

Homie, панель, которую Виктор Валландер построил на GATE, накладывает три картинки одного рисунка: день или ночь как основа и под ней версия, где горят все лампы. Вокруг каждой включённой лампы проступает мягкий круг освещённой картинки, а диммер задаёт его размер и яркость. Картинка и тема приложения следуют за настоящим солнцем и погодой, которые сообщает Home Assistant.

Как добиться, чтобы ИИ-картинки одной квартиры совпадали?

Метод, которым Виктор Валландер пользовался на GATE, состоит из пяти правил. Один чёрно-белый эскиз как единственный источник, исправления только ластиком. Один зафиксированный шаблон запроса с тремя полями: свет, время суток и погода. Ночь это переосвещённая дневная картинка, а не новая. Два-три прохода ИИ, потом код. И красный фон, который код вырезает, чтобы стекло стало настоящим.

Как плоский рисунок может спрятать украшение за стеной?

В Homie, панели, которую Виктор Валландер построил на GATE, он рисует маску поверх картинки встроенной кистью: красные стены скрывают украшения, синее стекло и жёлтые перила показывают их приглушённо, а на зелёные поверхности их можно ставить. Homie вычисляет, где каждое закрашенное пятно касается пола, и прячет всё, что стоит дальше. Сначала пробовали ИИ-карту глубины, но она была слишком размытой.

Сколько стоило построить Homie?

Около 23 000 бат за оборудование в первой корзине: Raspberry Pi, датчики, ИК-передатчики, розетки и камеры, плюс позже осушитель и ещё датчики. Программная часть появилась из чата с Molly на GATE. Каждая ИИ-картинка стоила примерно от 1 700 до 6 000 токенов GATE, и на пути к нескольким картинкам, которые использует Homie, их было сделано больше сотни.

Что нашла проверка безопасности Homie?

До того как семья Виктора Валландера получила доступ, независимая проверка безопасности показала, что первая версия Homie, написанная в кодовой сессии GATE, позволила бы любому семейному PIN вызывать любую службу Home Assistant, вплоть до перезагрузки сервера. Это исправили до запуска. Его урок: работающее приложение и приложение, которое безопасно дать семье, требуют двух разных проверок.

  • Home Assistant
  • умный дом
  • кондиционер
  • датчики почвы
  • Raspberry Pi
  • ИИ-картинки
  • сделано на GATE
← Все статьи

Хотите собственного ИИ-агента для своего бизнеса?

GATE берёт на себя скучную половину работы компании: бухгалтерию, договоры, посты в соцсетях и почту поддержки. Пока только по приглашениям: мы подключаем небольшое число компаний.

Invite only. We'll meet you at the door. Prefer to talk? Talk to the founders.