MySensors. Часть-1. Ведение

02:21

До какого-то момента, все устройства моей системе умного дома были представлены промышленными моделями от белорусской компании «Ноолайт» и самодельными на базе ESP8266. Если к первым вопросов особо не возникало (ну, может разве, кроме частоты в 433МГц на которой они работают и достаточно высокой стоимости), то ESP8266 из-за своего количества загадили домашний Wi-Fi так, что их пришлось выносить в отдельную подсеть на отдельный роутер. В общем с какого-то времени я стал недолюбливать Wi-Fi устройства и в один прекрасный момент мне подвернулся под руку проект Mysensors.

MySensors:

Mysensors, это собственно открытая библиотека для платформы Arduino и др, активно разрабатываемая сообществом. Данную библиотеку можно подключить практически к любому проекту в Arduino IDE и получить возможность передавать в сеть MySensors свои данные. Существует большое кол-во готовых скетчей для подключения всевозможных датчиков и исполнительных устройств.

MySensors может функционировать на базе радиоканала 2,4ГГц (и это не Wi-Fi), используя приемо-передатчики NRF24L01+; RFM69; RFM95 (LoRa); nRF5x… Так же система может работать с проводным интерфейсом на базе RS485. 

К MySensors можно подключить:

  • всевозможные датчики: метео, качества воздуха, освещенности, движения, открытия-закрытия, затопления, газа, дыма, IR, RFID, кнопки (выключатели) и т.п.
  • исполнительные устройства: реле, диммеры и т.п.
  • устройства вывода: LCD, OLED и т.п  

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

На базе MySensors можно создавать энергоэффективные батарейные ноды с потреблением в несколько микроампер. 

MySensors интегрирован практически во все популярные открытые системы умных домов.

Структура сети:

Цитата из Википедии:

«Устройства MySensors создают виртуальную радиосеть узлов, которая автоматически формирует структуру с самовосстановлением. Каждый узел может передавать сообщения другим узлам для покрытия больших расстояний с помощью простых приемопередатчиков ближнего действия. Каждый узел может иметь несколько датчиков или исполнительных механизмов, подключенных и взаимодействующих с другими узлами сети.»

В общем и целом сеть MySensors состоит из шлюза (MYS Gateway), необязательных узлов  повторителей (R) и узлов датчиков и актуаторов (S и A). Шлюзов может быть несколько, например, один для радиосети, а второй для проводной. 

Радио сеть строится автоматически, новые узлы (ноды) автоматически получают уникальный номер  (MY_NODE_ID) в момент регистрации на контроллере. Этот номер сохраняется в энергонезависимой памяти (EEPROM) ноды. И в дальнейшем, даже после перепрошивки используется именно он. EEPROM можно очистить, загрузив специальный скетч, после чего контроллер выдаст узлу новый номер. Номер можно принудительно указать в скетче в директиве:

1
#define MY_NODE_ID xxx

где xxx  — номер ноды от 1 до 254.
Сеть на базе RS485 не позволяет автоматически присваивать новым узлам номера, т.к. эти номера используются для для транспортного протокола и без присвоенного вручную номера нода не сможет подключиться к контроллеру в принципе. Исключение составляют те ноды, которые уже использовались в сети MySensors и в их EPROM сохранился MY_NODE_ID. Он и будет использован для транспорта на RS485 и он же отобразится на контроллере УД (необходимо контролировать уникальность MY_NODE_ID)

В простейшем случае для построения сети MySensors понадобится один шлюз и один узел. В сети даже есть примеры как с одного узла управлять другим, минуя контроллер УД. Эту схему можно использовать для децентрализации управления, что бы, например, включение/выключение освещения не зависело от работы контроллера УД.  Но в полноценной системе, конечно не обойтись без контроллера.

Шлюз:

Шлюзы могут различаться по типу подключения к сети MySensors (радиоканал или провода) и по типу подключения к контроллеру УД (Serial, Wi-Fi, Ethernet и прямое подключение, когда контроллер УД является шлюзом). Так же для подключения шлюза к контроллеру УД могут быть использованы разные протоколы (TCP-IP, MQTT… )

Самым быстрым вариантом создания шлюза, как мне кажется, будет связка ESP8266 + NRF24L01+.

Именно так я и поступил для начала, но Вы же помните о моей нелюбви к устройствам Wi-Fi, поэтому следующее, что я сделал, это прикрутил радио модуль NRF24L01+ напрямую к RaspberryPi 3, на котором у меня установлена система Majordomo.

Так же я собрал Ethernet шлюз для сети RS485.

Датчики:

Сами сенсоры проще всего строить на связке arduino pro mini (atmega328) и NRF24L01+, но также широко распространены варианты на NRF5x модулях. 

В следующих частях на своих примерах я более подробно опишу сборку всех компонентов системы MySensors.

отсюда