Я долго думал, как превратить всё то освещение, которое у меня уже есть, в умное. Из того, что у меня уже было н тот момент, более-менее, с натяжкой, управляемым можно назвать только потолочный светильник Navigator - и тот управляется только по ИК через Broadlink. Выключил выключателем - выключателем только, будь добр, включай обратно.
Нужно менять обычные выключатели на управляемые. И тут глаза разбегаются, столько много разных предложений на Алиэкспрессе. А вместе с выбором прилагается масса нюансов, самым распространённым из которых является требование нейтрального провода в подрозетнике. Немаловажную роль также играет наличие современного подрозетника в стене, поскольку большинство решений имеют установку европейского образца - с прикручиванием выключателя к ушкам подрозетника, что вообще никак не сочетается с советскими чашками.
Несколько раз на глаза мне попадались упоминания реле Shelly, но ценник немножко кусался. Зато нашёлся близкий аналог в виде Sonoff MINI, который подкупил, кроме всего прочего, ещё и возможностью прямой работы через REST api. Нужность этой возможности - предмет для споров, но любая возможность отвязать устройство от серверов и учётных записей производителей, на мой взгляд, это плюс.
В общем, на ближайшей (предновогодней) распродаже Aliexpress заказал я таких сразу пять штук, по цене около 460 рублей за штуку, и уже третьего января я их получил. Очень удобно, я успел почти все расставить за январские праздники (и один спалить).
Описание устройства
Sonoff MINI - это белый кирпичик размерами 42,6х42,6х20мм с вынесенной наружу антенной на липкой основе. В отличие от круглого упомянутого Shelly он квадратный и нужно внимательно замерять, влезет ли он в современный подрозетник. В один из моих он не влез, поскольку мешали распорки подрозетника, которыми оный держится в стене. Кроме этого, всегда надо считать глубину подрозетника с учётом установленного выключателя или розетки. Тем, кто планирует или делает ремонт, стоит сразу подыскать подходящие подрозетники для установки - в любом случае место лишним не бывает. Если всё же места маловато, можно выиграть несколько миллиметров в толщину, если снять корпус, но это манипуляции на любителя.
Реле имеет шесть контактов: линия и нейтраль на вход, линия и нейтраль на выход (нейтрали замкнуты между собой) и два контакта для подключения выключателя:
Подключается реле к сети Wi-Fi в диапазоне 2.4ГГц. Сети 5ГГц не поддерживает (вообще практически все устройства для умного дома работают исключительно в диапазоне 2.4ГГц, потому что работают на одних и тех же чипах).
Переключается реле с заметным щелчком. Когда реле будет упрятано в подрозетник, щелчки будут не так слышны, но ночью в тишине их всё равно будет слышно даже из соседней комнаты через открытую дверь. Впрочем, с одной стороны, лично мне это ничем не мешает, а с другой - наоборот, сигнализирует о том, что реле переключилось, даже если не видно, переключился ли свет.
Добавление устройства в eWelink
Для дальнейшей работы с устройством и просто для проверки работоспособности нужно установить на телефон приложение eWelink и добавить в него устройство. В самом приложении всё довольно интуитивно и понятно даже для тех, кто не знаком с английским.
Долгим нажатием на кнопку реле переводим устройство в режим сопряжения - огонёк быстро мигает. Если огонёк мигает, но медленно - держим кнопку нажатой дольше. На телефоне включаем геолокацию (без неё не работает сопряжение почему-то). Затем в приложении нажимаем синюю кнопку "добавить", выбираем быструю синхронизацию, вводим реквизиты для подключения к домашнему Wi-Fi (нужно только в первый раз, потом при включенной геолокации данные подставляются автоматически) и нажимаем "Далее". Начнётся поиск устройства:
Если устройство правильно переведено в режим сопряжения, то оно довольно быстро подхватится и останется только задать имя нового устройства.
После этого можно в настройках устройства обновить прошивку (все мои устройства поставлялись с прошивкой 3.3.0, но сейчас доступна уже 3.5.0
Так же в настройках нужно обязательно посмотреть Идентификатор устройства (DeviceID):
DIY-режим и настройка
Сразу скажу, что для интеграции в HomeAssistant режим DIY не обязателен, есть компонент, который работает с учётной записью eWelink, но при этом выкачивает токены локально и дальше работает с реле исключительно внутри сети (без облака производителя). Про этот компонент и подключение его к HomeAssistant я расскажу в другой заметке про другой выключатель, но всё это будет применимо и к этому реле.
Для смены параметров есть специальные утилитки, про которые добрые люди написали в интернете, но у меня под рукой не оказалось Windows и проще оказалось переподключить релюшки к домашней сети через точку доступа и команды REST.
Инструкция ниже действительна для устройств с версией прошивки 3.3.0 или 3.4.0. Для прошивки 3.5.0 есть более свежая документация с описанием подключения и настройки. Как только я получу новую партию реле и обновлю прошивку, я напишу отдельную заметку по новой инструкции.
Итак, во-первых, надо разобрать корпус устройства (он на простых защелках) и установить перемычку, которая прилагается к устройству, на два контакта-штырька. Затем на телефоне заводим точку доступа с названием sonoffDiy и паролем 20170618sn. Пароль универсальный для всех устройств Sonoff. К этой точке доступа я подключил свой ноутбук и к ней же приконнектил релюшки (по одной, чтобы не путаться).
Затем надо найти ip-адрес. На Ubuntu (и другой Debian-based OS) нужно установить пакет для работы:
sudo apt install avahi-utils
Затем сканируем сеть на наличие устройств:
avahi-browse -t _ewelink._tcp --resolve
Получим что-то типа такого:
+ wlp2s0 IPv4 eWeLink_1000b4a828 _ewelink._tcp local
= wlp2s0 IPv4 eWeLink_1000b4a828 _ewelink._tcp local
hostname = [eWeLink_1000b4a828.local]
address = [192.168.1.123]
port = [8081]
txt = ["data1={"switch":"off","startup":"on","pulse":"off","sledOnline":"on","pulseWidth":500,"rssi":-68}" "seq=380" "apivers=1" "type=diy_plug" "id=1000af0b78" "txtvers=1"]
Здесь нам нужен address и id (он должен совпадать с Идентификатором устройства, полученным в eWelink.
Для владельцев MacOs порядок такой:
- сканируем сеть на наличие устройств eWelink:
dns-sd -B _ewelink._tcp
Получаем в результате запись вида:
22:42:25.474 Add 3 5 local. _ewelink._tcp. eWeLink_1000af0b78
- находим ip-адрес устройства:
dns-sd -G v4v6 eWeLink_1000af0b78.local
Получаем:
Timestamp A/R Flags if Hostname Address TTL
22:48:33.527 Add 40000002 5 eWeLink_1000b5b1f3.local. 192.168.1.123
Теперь у нас есть всё необходимое для прямой работы с устройством. Для работы через REST-запросы я поставил плагин ARC (Advanced Rest Client) для Google Chrome.
Подробное описание протокола взаимодействия с устройствами с версией 3.3.0 и 3.4.0 есть в официальном документе от производителя, можно пользоваться им.
Во-первых, проверим доступность реле, для этого формируем запрос:
- метод POST
- Request URL: http://[IP-адрес]:8081/zeroconf/switch
- Body content type: application/json
- Текст запроса:
{
"deviceid": "[Идентификатор устройства]",
"data": {
"switch": "on",
}
}
Отправляем сформированный запрос на устройство кнопкой SEND и получаем ответ. Если запрос отправляется, но ответа нет - надо проверить ip-адрес, вероятнее всего отправляем не туда. Если запрос не "200 OK" - значит что-то в запросе неверное, проверяем device id или структуру запроса.
Ответ "ОК" говорит о том, что запрос успешно отправлен. Реле должно щёлкнуть, лампочка - поменять свой цвет. Это говорит о том, что ip-адрес и deviceid определены верно, можно приступить к настройке реле под домашнюю Wi-Fi сеть.
Отправляем запрос на адрес http://[ip-адрес]:8081/zeroconf/wifi с текстом
{
"deviceid": "[Идентификатор устройства]",
"data": {
"ssid": "MyWiFi",
"password": "MyPassword"
}
}
где ssid и password - логин и пароль от домашней Wi-Fi сети.
После этого можно отключиться от точки доступа и подключиться к домашней сети, новое устройство должно подключиться к ней и будет доступно по новому адресу.
В заключение остаётся только выставить режим работы реле при подаче питания. Делается это запросом на адрес http://[ip-адрес]:8081/zeroconf/startup с текстом
{
"deviceid": "[Идентификатор устройства]",
"data": {
"startup": "stay"
}
}
, где параметр startup может принимать значения:
- on - включить реле при подаче питания
- off - выключить реле при подаче питания
- stay - установить последнее положение, которое было до отключения питания.
Нужный режим выбирается исходя из сценария использования реле. Если планируется использовать реле под стандартным выключателем, то наилучшим режимом, на мой взгляд, является stay, что исключит необходимость совершать лишние телодвижения, если вдруг электричество отключилось а потом вернулось обратно. В этом случае, если свет горел, то он включится самостоятельно. Если же по каким-то причинам нужно управлять освещением (или другим прибором) путём подачи/прерывания питания, то нужно выбирать on или off, в зависимости от того, нужно ли нам включать устройство или выключать.
Интеграция с HomeAssistant.
Теперь нам осталось добавить свои устройства в HomeAssistant. Для этого есть два компонента, по умолчанию недоступные в HACS, но которые можно туда добавить: один работает через учётную запись eWelink, второй подключается к устройствам напрямую.
Поскольку я изначально не планировал использовать облако производителя и потратил столько усилий на переделку устройств на работу внутри сети, то и интеграцию я выбрал подходящую. Идём в HACS на вкладку Settings и в поле Add custom repository вставляем mattsaxon/sonoff-lan-mode-homeassistant, категория Integration, сохраняем (значок дискеты). Теперь на вкладке Integrations у нас появился новый модуль SONOFF LAN MODE R3. Устанавливаем его и приступаем к настройке.
Открываем в Конфигураторе файл switches.yaml и добавляем в него строки:
- platform: sonoff_lan_mode_r3
name: sonoff_bedroom
device_id: 1000af0b78
, где name - название нашего устройства, которым мы будем пользоваться в дальнейшем, device_id - идентификатор устройства.
Перезагружаем конфигурацию и проверяем наличие нашего выключателя в Панели разработчика, на вкладке Состояния.
Если выключатель sonoff_bedroom находится поиском, то проверяем его работу - создаём на любой панели кнопку и проверяем работу выключателя из HomeAssistant:
Заключение
В общем и целом Sonoff MINI - занятная вещица. Самый существенный минус - это то, что реле не работает без нейтрального провода (у меня старая проводка, в большинство выключателей проведена только фаза на разрыв). Есть вариант замыкания линии на нейтральный контакт через конденсаторы, но я не стал городить такой огород.
Забегая вперёд скажу, что позднее в некоторых местах реле были заменены на полноценные выключатели, но лишним ни одно реле не осталось, им всем нашлось применение, и даже более того - я заказал ещё три штуки под последующую установку.
Свои сценарии и варианты применения я планирую описать в отдельной заметке. Кроме этого, будет ещё одна заметка, посвящённая выключателю Sonoff T4EU1C, для которого не требуется нейтральный провод, но который не умеет работать по локальной сети (и ещё одна для выключателя не-Sonoff).
Оставайтесь на связи, ну и, конечно, лайк, шер, в закладки и подписки.