nooLite и MQTT. Зачем оно так.

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

Нужны. Не всем. Не всегда. Рассказываю.

  1. Что такое 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 иже с ним по мозгам отдельной малины со свистком и диском — зряшная, абсолютно зряшная затея.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s