Подключаем Noolite в HomeKit

Делаем это через Homebridge и Home Assistant

В прошлых статьях мы подробно сравнили устройства Noolite с зарубежными аналогами, а также рассказали про то каким универсальным может быть данное решение для реализации умного света. 

Теперь, когда мы знаем о том, что это за зверь, можно перейти к его подключению. 

Далее будет рассмотрено подключение универсального блока SUF-1-300 и использование в качестве контроллера платы MTRF-64, подключённой к Raspberry Pi.  

Нам понадобится (дополнительно к имеющейся и настроенной Raspberry Pi):

  • осветительный прибор
  • сам блок SUF-1-300
  • контроллер MTRF-64
  • коннекторы для соединения блока и вашей проводки (2-4шт) — продаются в ближайшем строительном гипермаркете
  • коннекторы мама-мама для соединения GPIO и пинов платы (4шт) — продаются на Ali или в ближайшем радиомагазине
  • (опционально) радио-пульт Noolite, к примеру, PK315

Подключение блока в сеть

И так, в первую очередь мы должны подключить сам силовой блок. 

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

Для этого обесточиваем источник света, отсоединяем его от сети, достаём блок, и вставляем его в цепочку сети перед светильником. 

Другими словами, белые провода (помечены на корпусе как 220) соединяем нашими коннекторами с проводами, по которым приходит фаза и ноль, а черные соединяем с проводами, которые идут от прибора. Т.е. точно также как мы привыкли это делать с известными всем реле Sonoff, только в данном случае не имеет значение какой провод идёт на фазу, а какой на ноль. 

Пометка: если раньше у вас осветительный прибор был сделан с двойным выключателем (один включает 2 лампочки, второй включает другие 3), то от данной схемы придётся отказаться и оба «силовые» провода нужно будет скрутить в один и подключить в одно гнездо коннектора (обратите внимание, что от люстры будет идти 3 провода: 1 на ноль, 2 на силу; не перепутайте: важно не скрутить ноль с силовым). А вместо старой схемы 2 и 3 вы можете просто использовать диммируемые лампочки. 

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

Берём радиопульт и вставляем в гнезда выключателя один из белых проводов на вход и один из черных на выход (или наоборот). 

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

Опишу быстро шаги здесь:

  • нажимаем на единственную кнопку на силовом блоке, продавливая корпус (начнёт мигать желтый диод)
  • нажимаем сервисную кнопку на пульте (начнёт моргать зелёный диод)
  • нажимаем на кнопку выключателя
  • диод на БЛОКЕ начнёт мигать быстрее
  • продавливаем кнопку на блоке ещё раз, чтобы закончить привязку

Обратите внимание, что если ваш выключатель НЕ работает в режиме кнопки (т.е. когда вы на него нажали, то его положение запоминается, а не отщёлкиваемы обратно — так работают 90% выключателей), то необходимо перевести радио-пульт в режим вкл/выкл (для этого перевести чёрный переключатель под цифрой 2 вправо). 

Теперь нажимаем на выключатель, и свет должен включиться.

Тем самым мы убедились, что мы удачно завершили первый этап и мы можем уже вернуть выключатель на место. 

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

Потроха осветительного прибора пока не убираем: для упрощения связки прибора с контролером на Raspberry. 

Подключаем контроллер к Raspberry

Пометка: дальнейшие шаги будут описаны для MTRF64 с подключением по UART. Если вы используете usb версию, то в вашем случае достаточно вставить USB в свободный слот на Raspberry и воспользовавшись командами ниже действовать самостоятельно - там всё гораздо проще :)

Приступим к наиболее прикладным к умному дому действиям — подключим MTRF64. Для этого необходимо отключить Raspberry от питания, снять корпус и подключить с помощью вышеупомянутых коннекторов мама-мама контроллер по следующей схеме. 

После этого собираем все обратно и подключаем Raspberry обратно. Должна получиться подобная картинка. 

Заходим в консоль и вбиваем команду

ls /dev/tty*

Вы должны найти среди полученного результата запись /dev/ttyS0

Если ее нет, а скорее всего ее не будет, то заходим в системные настройки командой

sudo raspi-config
  • Заходим в пункт Interfacing Options
  • Выбираем пункт P6 Serial
  • Отвечаем No
  • После этого отвечаем Yes
  • Закрываем Настройки и перезагружаем
sudo reboot

Повторяем команду 

ls /dev/tty*

И теперь находим запись  /dev/ttyS0

На этом базовое подключение контроллера закончено. Дальше переходим к настройке контроллера в вашем центре автоматизации. Ниже будут рассмотрены варианты: homebridge и home assistant. 

Подключение к Homebridge

Сразу отмечу, что рассматриваемый ниже плагин очень упрощает жизнь пользователям Homebridge, за что отдельное спасибо автору. Ссылка на репозиторий ниже.

Для подключения контроллера к homebridge скачиваем соответствующий плагин: homebridge-noolite

$ sudo npm install -g --unsafe-perm homebridge-noolite

Добавляем соответствующую запись в конфиг

"platforms": [
{
"platform": "NooLitePlatform",
"serialPort": "/dev/ttyS0"
}
]

Если используется версия USB, а не UART, то выполнить дополнительно следующую команду. 

sudo usermod -a -G dialout

Перезагружаем homebridge. После чего по адресу your-raspberry-ip:8080 будет поднят веб-интерфейс для дальнейшего подключения блоков к контроллеру. 

Пометка: в некоторых случаях используется веб-интерфейс для редактирования конфига и порт может быть как раз занят им, для этого для начала меняем порт webUI для homebridge, перезагружаем Raspberry, после этого добавляем в конфиг настройки модуля Noolite

Заходим по вышеуказанному адресу и начинаем процесс привязки. 

  • Для этого выбираем «Канал 0»
  • После чего подходим к блоку и вводим его в режим привязки, нажимая кнопку 1 раз
  • Возвращаемся в интерфейс и нажимаем на кнопку «Привязать Noolite-F»
  • После чего привязанный блок должен появиться справа, а диод на самом пульте перестанет моргать.
  • Копируем полученный ID

  • Спускаемся чуть ниже и добавляем устройство в HomeKit
  • Добавляем имя, добавляем канал (в нашем случае 0), вставляем ID
  • Вуа-ля, устройство сразу же должно появится в вашем приложении Дом. 

Поздравляю.

Включаем режим диммирования

Также одним из полезных советов в окончание блока по подключению блока SUF является список действий, который необходимо выполнить для перевода режима блока SUF в состояние возможности изменения яркости.

Т.е. изначально получается такая картина, что ваши радио-пульты изначально работают в режиме диммирования, а сам блок в режиме вкл/выкл. Странно, но да ладно…

Поэтому нам необходимо перевести блок в режим диммирования для того, чтобы иметь возможность изменять яркость.

Есть два способа:

Первый способ — с помощью кнопки на самом блоке.  Необходимо с помощью зажатия кнопки на блоке более 5 секунд пока диод не начнёт гореть постоянно (ОЧЕНЬ ВАЖНО не отпускать кнопку в течение этих 5 секунд пока не дождетесь постоянного горения светодиода — в обратном случае может получится полная очистка памяти блока), после этого нажать ещё раз для подтверждения команды. Всё, блок переведен в режим диммирования.

Второй способ — с помощью отправки команды с контроллера. Для этого воспользуемся первой страницей веб-интерфейса, где заполним параметры отправки команды следующим образом:

  • MODE=режим nooLite-F TX
  • CTR=Передать команду (8)
  • CH= XX (номер канала, в нашем случае 0)
  • FMT=16
  • d0=2
  • d1=0
  • d2=255
  • d3=255
  • IDO/1/2/3 = необходимо разложить наш адрес, полученный при привязке на 4 блока и записать их по порядку, если наш адрес является 00:11:22:33, то соответственно IDO=00, ID1=11, ID2=22, ID3=33
  • CMD=Установить состояние (129)

Подключение к Home Assistant

При использовании  Home Assistant наш путь будет немного посложнее, т.к. в данном случае нам необходимо будет использовать custom component и устанавливать python модуль. За данную возможность стоит поблагодарить автора репозитория, он достаточно активно откликается на любой запрос, в том числе он и откликнулся на наш запрос для того, чтобы заставить заработать его компонент на python 3.5. Репозиторий автора. Начнем…

Устанавливаем модуль для python

pip install git+https://github.com/SergejPr/NooLite-F.git

или как альтернативу можем использовать другой ряд команд

git clone https://github.com/SergejPr/NooLite-F.git
sudo python setup.py install

Скачиваем все внутренности папки custom_components из репозитория  и добавляем их в папку custom_components на нашу Raspberry.

Заходим в configuration.yaml и добавляем следующий блок

NooLite:
port: "/dev/ttyS0"

, где в параметре port указываем путь до нашего контроллера (мы его добыли чуть выше)

После этого перезагружаем Home Assistant и убеждаемся в том, что при инициализации компонента не выдало ошибок. Значит мы на верном пути.

Приступаем к процессу добавления блока. К сожалению, в отличие от удобного веб-интерфейса под homebridge здесь мы будем вынуждены пользоваться командами на python.

И так. Привязыаем блок. Вводим блок в режим привязки, нажимая кнопку на блоке и в консоли выполняем следующую команду:

python3 -c 'from NooLite_F.MTRF64 import MTRF64Controller; from NooLite_F import ModuleMode; controller = MTRF64Controller("/dev/ttyS0"); print(controller.bind(channel=0, module_mode=ModuleMode.NOOLITE_F));'

, где важно заменить путь до контроллера на свой MTRF64Controller(«/dev/ttyS0») и номер канала channel=0

На выходе мы должны получить приблизительно такой ответ

[(True, <ModuleInfo (0x768063b0), id: 0xcadf, type: 5, firmware: 0>, <ModuleBaseStateInfo (0x76806370), state: ModuleState.OFF, brightness: 0.0, service mode: ServiceModeState.BIND_OFF>)]

Это означает, что теперь блок привязан и можно приступать к его настройке в Home Assistant.

Для этого добавляем в наш configuration.yaml в блок light: добавляем устройство

- platform: NooLite
channel: 0
name: "living_room_light"
scan_interval: 60
type: Dimmer
mode: NooLite-F

, где channel — это наш канал, scan_intreval — интервал сканирования статуса в секундах (лучше так и оставить), если блок будет использоваться режиме диммирования, то ставим type: Dimmer, в обратном случае просто удаляем

Перезагружаем Home Assistant и видим новое добавленное устройство, которое попадает в HomeKit с помощью стандартного модуля homekit: либо, которое потом можно прокинуть в HomeKit через Node-red — об этом мы писали в отдельной статье.

Также, как мы описали выше для Homebridge, ниже описание того, как перевести в блок режима диммирования через Home Assistant.

Включаем режим диммирования

Также одним из полезных советов в окончание блока по подключению блока SUF является список действий, который необходимо выполнить для перевода режима блока SUF в состояние возможности изменения яркости.

Т.е. изначально получается такая картина, что ваши радио-пульты изначально работают в режиме диммирования, а сам блок в режиме вкл/выкл. Странно, но да ладно…

Поэтому нам необходимо перевести блок в режим диммирования для того, чтобы иметь возможность изменять яркость.

Есть два способа:

Первый способ — с помощью кнопки на самом блоке.  Необходимо с помощью зажатия кнопки на блоке более 5 секунд пока диод не начнёт гореть постоянно (ОЧЕНЬ ВАЖНО не отпускать кнопку в течение этих 5 секунд пока не дождетесь постоянного горения светодиода — в обратном случае может получится полная очистка памяти блока), после этого нажать ещё раз для подтверждения команды. Всё, блок переведен в режим диммирования.

Второй способ — с помощью отправки команды с контроллера. Для этого воспользуемся отдельной командой python

python3 -c 'from NooLite_F.MTRF64 import MTRF64Controller; from NooLite_F import ModuleMode, ModuleConfig; controller = MTRF64Controller("/dev/ttyS0"); config = ModuleConfig(); config.dimmer_mode = True; print(controller.write_module_config(config, channel=0, module_mode=ModuleMode.NOOLITE_F));'

, где опять же обращаем внимание на MTRF64Controller(«/dev/ttyS0») и channel=0

Включаем режим диммирования

Также если вам требуется переключить режим работы подпаянного выключателя, то необходимо передать на блок следующую команду (работает только с модулем для homebridge)

MODE:F-TX; COM:0; RES:0; CH:0; CMD:129; FTM:16; D0:8; D1:0; D2:24; D3:0; ID:0x00000000;

D0:0 -переключающий выключатель
D0:16 -выключатель
D0:24 -не используется

Заключение

На этом нашу серию статей по Noolite можно считать законченной. Мы попытались сравнить устройства Noolite с другими реле и выключателями, мы рассказали вкратце об основных интересных нам устройствах, и в этой достаточно объемной статье мы попытались осветить процесс подключения устройств в центр автоматизации.

По итогам можно сказать, что хотя в общем у продукции Noolite всё еще есть недостатки:

— очень странный подход к маркетингу, который просто не дает вылезти из под тени основных игроков рынка, да и даже более слабых наработок других соотечественников, работающих на 433

— обратная связь, которая есть, но пока её нельзя назвать идеальной (есть, что доработать)

— скрытые возможности, которые приходится узнавать чуть ли не у самих разработчиков в личных переписках

— отсутствие какого-либо контакта с сообществами

Но при этом я с уверенностью могу сказать, что нашел для себя практически идеальное (за минусов недостатков выше) решение по контролю света в доме, которое в общем мне обошлось в разы дешевле основных известных игроков рынка, и при этом без изменения существующего ремонта.

Ну а также присоединяйтесь к чату Noolite, где уже собирают небольшой FAQ, а также там могут помочь с ответами на вопросы.

Подписывайтесь на канал InDaHomeKit в Telegram и Яндекс.Дзен, чтобы у вас всегда было что почитать: новости мира умного дома, обзоры новых устройств, инструкции по подключению.

Приходите в наш чат в Telegram

Так же у нас отличные паблики VK, Facebook, Instagram и Twitter.