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.