Вы считаете устройства nooLite умными?
…
Как само собой разумеющееся, мои устройства nooLite взаимодействуют с агрегатором умного дома по протоколу MQTT. Для меня это кажется нормальным, но для многих гостей это не так: зачем нужны непонятные «добавки» в систему, когда достаточно просто вставить свисток и необходимый плагин — надкушенное яблоко наше все.
Нужны. Не всем. Не всегда. Рассказываю.

- Что такое MQTT.
Про MQTT прочитать можно во многих местах. Лучше вот в этом. Здесь же совсем кратко.
MQTT — очень-очень легкий протокол, созданный для общения «умных железок», с целью дать надежную связь но не перегружать их, в основном, малый объем мозга. Суть проста и лаконична:
1. какой-нибудь датчик температуры отправляет стандартизованное сообщение на чрезвычайно легкий сервер, который можно разместить на слабом железе, лишь бы оно еще дышало;
2. легкий сервер, который именуется брокером, принимает сообщение и хранит его до определенного момента;
3. какой-нибудь железный «управитель» отоплением (устройство IoT) говорит брокеру, что его интересует температура от датчика — брокер отдает ему эту температуру, и уничтожает сообщение;
4. если интересующихся температурой несколько — сообщение будет отдано каждому. Каждый из желающих называется подписчик и учтен на брокере. Сообщение не уничтожится до получения всеми. Сообщение может не уничтожаться и никогда, если брокеру будет на то команда.
Это все. Итак, общение по MQTT подразумевает стандартизованность, легкость, контроль доставки.
2. MQTT — можно ли без него?
Конечно можно! Ясный перец, это пятое колесо в телеге, если у вас крутой айфон, вы узнали что такое хоумбридж и хоумкит и вставляете в это невероятное явление очередную «умную» лампочку (ум которой заключается в некоторой реакции на внешние раздражители). Возможно, вам никогда не потребуется MQTT.
Или потребуется. Когда? Ну, в первую очередь, тогда, когда вы займетесь умным домом более глубоко, чем предлагает ябочное/сяомишное/etc. потреблядство.
Наряду с типовыми решениями, что предлагают различные продавцы, есть вещи, которые ими не будут охвачены, скорее всего, никогда. Перечислю те, которые созданы мной для меня и работают в настоящее время:
- управление отоплением мастерской, когда, в некоторых случаях, преимущество отдается мастерской за счет снижения температуры в доме;
- дублированный датчик температуры в мастерской для обеспечения работы этого устройства;
- управление проветриванием /подогревом погреба с учетом получения информации от него по восьми параметрам через слой земли/бетона;
- управление поливом огорода и наполнением бочек водой:
- автоматическая индивидуальная и групповая подсветка мебели. Особо доставляет ночная подсветка кровати;
- получение данных со счетчика Энергомера;
- получение данных о распределении электричества по группам потребителей с применением китайского восьмивходового амперметра с названием из иероглифов;
- отображение ряда важных данных на самостоятельном дисплее на кухне;
- отображение температуры в парной на отдельном дисплее и том же дисплее на кухне, когда парная готова;
- часы с получением времени, текущей погоды и ее прогноза и отображением все той же температуры в парной;
- открытые для всех с улицы большие часы с отображением уличной температуры (за случайное выключение которых я получаю неоднократные выговоры от соседей 🙂 );
- четыре реле автоматического отключения/подключения потребителей в зависимости от постановки жилища на охрану;
- кое-что связанное с охраной.
Каждое из перечисленных выше устройств — самостоятельно, то есть ни одно из них не требует участия в работе любого агрегатора умного дома. Устройства посылают на агрегатор информацию о своем состоянии, могут получать от него команды и выполнять их, но это вспомогательное действо.
К этому, некоторое количество датчиков температуры, запущенное в работу тогда, когда «эппло/сяоми» еще и не родились. Однако они контролируют температуру в критически важных местах — котельных дачи и бани.
Теперь к перечисленному выше можно добавить штук 15 устройств от nooLite, которые, как вы можете сообразить, не более чем включают лампочки.
И тут получается, что nooLite с его собственным понимание умного дома в моем хозяйстве вещь не первой значимости, а лишь некоторая часть дома моего, требующая унификации в подключении и управлении.
3. Без MQTT — никуда!
Перечисленные выше устройства (почти все) работают по wifi (ESP8266, ESP32), многие требуют получение некоторых данных: о температуре, состоянии охраны, освещенности. Все до одной железки обязаны сообщать о своем состоянии.
Еще особенность — устройства находятся и на даче и в квартире.
При этом, мне не нужны два агрегатора, мне нужна стабильная работа и одновременное присутствие информации обо всем в одном, доступном за пределами дачи и квартиры месте.
===========
Исходя из ситуации, единственный способ завязать это хозяйство в узел — «завестить» все железо на два брокера. Один брокер находится на даче, второй брокер находится в квартире. Между брокерами — мост.
Безусловно, можно было бы каждое дачное устройство присоединить к агрегатору (Home Assistant) в квартире, но тут возникает ряд проблем:
- стабильность связи дача <-> квартира;
- настройка связи каждого устройства-поставщика данных с получателем в пределах НА;
- стабильность работы самого НА, который постоянно стремится обновиться.
Итого, здесь (пока) нет никаких агрегаторов умного дома, но устройства общаются между собой.
С постановкой дачи на охрану, на брокер отправляется сообщение, подписчики-реле получают информацию и сами переходят в необходимый режим. Причем, не представляет сложности добавить любое количество таких реле без организации связи с НА. Каждое вновь прибывшее будет снабжено необходимыми данными.
С наступлением дня (изменение уличной освещенности) запускается полив а затем наполнение бочек водой. Эти же данные выключат уличное освещение — управление им такой же подписчик на состояние освещенности.
Управление отоплением мастерской получает данные о температуре и действует по обстановке, управление погребом получает данные об уличной влажности и управляет вентилятором, etc.
Вот эти миньоны («Гадкий я«) своим трудом, без всякого кнута со стороны, и превращают обычный дом в умный. Вот как выглядит результат их взаимодействия. Перед вами скриншот MQTTExplorer, что позволяет одним взглядом оценить обстановку:

Заметим, что каждая строка может быть развернута, и там содержится еще куча и важной и справочной информации. То есть, в пределах одного окна я имею данные о текущем состоянии всех моих устройств. Не все эти данные «заведены» в НА, многие обладают важной отладочной информацией, но необходимости в повседневной жизни в них нет.
А еще обратим внимание, что nooLiteMTRF в этом списке занимает всего одну строку (с 17 подстроками). Ну да, у меня 17 устройств, больше пока не требуется.
4. А где Home Assistant?
НА тоже присутствует в этой таблице тремя записями. Одна сообщает всем «миньонам» о том, день сейчас или ночь, две другие имеют специальное назначение.
Таким образом, концептуально я полагаю правильным все важные конечные устройства наделять собственным мозгом, снабжать их необходимой информацией наиболее эффективным путем, и в каждом иметь аварийный режим, когда связь потеряна. Например, устройство управления отоплением включается в режим 2/3 мощности обогрева, погреб отключает вентилятор, нагреватель при этом продолжает работать по внутреннему датчику температуры, часы переключаются в режим день/ночь по времени, а не по освещению, etc.
Home Assistant же во всей этой истории занимает место неосновного управляющего тупыми «умными» устройствами, к коим с полной уверенностью относится весь nooLite.
Например, я в ночное время приезжаю на дачу, и с участием nooLite будет включено освещение дома и участка. Ну а если что-то не так — то и шут с ним, включу пультом.
Но вот управление насосами, отоплением, контроль важных участков температуры никакому агрегатору умного дома, включая волшебный HomeKit, я никогда не отдам. Это всегда будут отдельные, независимые устройства, не прекращающие работу в отсутствие связи. Только отключение электричества может их остановить 🙂
Итак, как же выглядит мое понимание построение умного дома. Вот оно:

В железе, MQTT брокер на даче висит на старой BeagleBone. Ее неоспоримое достоинство в том, что вся программная начинка умещается во внутренний флэш без всяких SD карт.
BeagleBone передает искренний привет и наилучшие пожелания всем любителям Raspberry Pi с участием SSD, специального корпуса и принудительного охлаждения. Я же, от себя лично замечу, что MQTT брокер имени Mosquitto с радостью прививается на любой старый роутер с прошивкой OpenWRT.
В квартире и MQTT брокер и Home Assistant развернуты на виртуальной машине, которая, в свою очередь, удобно устроилась на самосборном TrueNAS и, следовательно, бэкапится без всякого дополнительного участия.
Более того, на даче на старом роутере развернут запасной MQTT брокер, у которого, в случае падения основного, дистанционно будет откорректирован ip-адрес и все миньоны немедленно сами переключатся на него.
Ах, да! Про nooLite! А это такой же mqtt «миньон», один из самых неумных, кстати, одет на картинке в розовое.
5. Про неnooLite (Xiaomi).
Есть вещи, которые не сделать стоваттным паяльником. В частности, можно смастерить умные часы (на картинке MQTTExplorer в группе Clock):

Или такие:
Часы будут и температуру показывать. Но вот такой термометр не изготовить:

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

Не очень информативно, конечно, но вполне рабочее решение. Кому нужны данные — всегда может их забрать у брокера.
К сожалению, у nooLite эстетика и дизайн этих устройств ниже уровня городской канализации, поэтому лишь единственный датчик открытия от nooLite применен для ворот гаража, где ему самое подходящее место.
6. И еще кое-что.
Пару слов надо сказать про Node-Red, это есть у меня. Node-Red — относительно самодостаточная система агрегирования умного дома. Она имеет свой круг фанатов и может работать также как и все другие, но именно в ней присутствуют самые развитые инструменты трансформации данных, доступные любому нубу.
Для меня Node-Red важен двумя аспектами.
Как вспомогательный механизм трансформации данных.
Например, в гараже установлены два дублирующих друг друга датчика температуры. Устройству управления нужны лишь одни показания. Node-Red берет данные от одного и отправляет на устройство. Если с датчиком что-то произойдет, я заберу и отправлю данные с другого датчика. (В принципе, этот процесс можно автоматизировать в том же Node-Red, но за четыре года мне потребовалось это всего лишь один раз. «И так сойдет» 🙂 )

Другой пример. Счетчик Энергомера постоянно передает данные о текущей потребляемой мощности. Китайский амперметр с названием из иероглифов снимает показания текущего потребления тока частями разводки дома.

Home Assistant может накапливать и агрегировать данные об энергетике, но ему нужен формат именно текущей мощности по элементам.
Имея общую текущую мощность и текущие токи привести данные к правильному формату можно, именно Node-Red наиболее подходит для этого. В целом, это выглядит так:

В Home Assistant ушли готовые данные.
В Node-Red живет Алиса!
Да, кроме Home Assistant в Node-Red уютно поселилась Алиса! Ей там очень хорошо! Именно здесь находится движок, что голосом управляет малоумным освещением nooLite и другими миньонами. И никакой SSL здесь Алисе не нужен.
7. Итого.
В итоге, MQTT есть способ связи между собой действительно умных устройств, а также преодоления значительных расстояний в целях передачи данных. Если устройства nooLite — самые умные устройства в вашем доме, MQTT вам действительно ни к чему. Если вы любите добрый DIY — без MQTT вам не обойтись. При этом, выделение именно для nooLite иже с ним по мозгам отдельной малины со свистком и диском — зряшная, абсолютно зряшная затея.