Прошивка Tasmota в реле Sonoff Basic и интеграция в Home Assistant с помощью MQTT
Во время ремонта в ванной планировалось установить зеркало с подсветкой, для этого в месте установки сразу был выведен провод. Зеркало планировалось со своей кнопкой включения по этой и еще нескольким причинам провод и коробка для выключателя заранее не закладывались. После изучения ассортимента зеркал для ванной с подсветкой, требованиям: понравилось - качество - цена - размер, соответствует только зеркало из Икеи, но подсветка в нем не имеет своего выключателя. В качестве размыкателя цепи решено было поставить реле Sonoff Basic, а управлять этим реле через одноклавишный беспроводной выключатель или беспроводную кнопку от компании Xiaomi и системой автоматизации Home Assistant.
Sonoff Basic - реле с одной управляемой линией, подключаемое к сети Wi-Fi. Из коробки управление происходит на телефоне в программе eWeLink через китайское облако. Мне пришло устройство второго поколения Sonoff R2 Power, которое управляется чипом ESP8285.
Работать Home Assistant с реле будет по протоколу MQTT, для этого реле необходимо перепрошить. В качестве управляющего программного обеспечения в реле, выбрана прошивка Tasmota.
Прошивка устройства
Скачиваем программу прошивки устройства: Tasmotizer
Скачиваем последнюю прошивку: tasmota.bin
ВНИМАНИЕ! Автор статьи не несет никакой ответственности за последствия, которые могут произойти при выполнении действий, описанных в данной статье! Всё что вы делаете, вы делаете только на свой страх и риск!
Отключаем питание 220V от реле!!! Попытка прошить реле с подключенным питанием 220V может привести к поражению электрическим током, выходу из строя реле и подключенного к нему оборудования!!!
Прошивка реле осуществляется через USB-to-TTL адаптер, для подключения на плате реле имеются соответствующие технические контакты. Что бы не припаивать к технической площадке провода удобнее один раз впаять штыревую вилку на четыре контакта.
Маркировка контактов на обратной стороне платы.
Подключаем USB2TTL к реле: GND -> GND
, RX -> TX
, TX -> RX
, 3.3V -> 3.3V
. Провод 5V не подключать! Подключение 5V сразу выведет реле из строя!
USB-to-TTL | ESP8285 |
---|---|
GND | GND |
RX | TX |
TX | RX |
3.3V | 3.3V or VCC |
Зажимаем единственную кнопку на реле, подключаем USB2TTL адаптер в компьютер, отпускаем кнопку. Запускаем программу Tasmotizer
, выбираем COM
порт на который подключился адаптер, выбираем скачанную прошивку tasmota.bin
. Если прошивка осуществляется в первый раз, то необходимо выбрать Save original firmware
и Flash size 1MB
, т.к. впоследствии восстановить оригинальную прошивку возможно только из сохраненной существующей. Жмем кнопку Tasmotize!
После перепрошивки отключаем USB-to-TTL адаптер от реле и собираем реле обратно в корпус.
Настройка MQTT
На момент написания статьи версия прошивки была 8.5.1.
Подключаем реле к сети 220V. На телефоне или компьютере ищем Wi-Fi сеть с именем tasmota_XXXXXX, при подключении к этой сети появится окно для ввода настроек подключения реле к сети Wi-Fi. После ввода и сохранения настроек, реле должно перезагрузиться и подключиться к Wi-Fi.
Внимание! В реле установлен модуль Wi-Fi только на 2.4GHz.
Открываем на компьютере браузер и в адресную строку вводим: http://RELAY_IP_ADDRESS. Где RELAY_IP_ADDRESS - адрес вашего реле в локальной сети. Попадаем в меню настроек реле.
В меню Configuration -> Configure Module
проверяем, если отличается, то выставляем, в поле Module type
значение Sonoff Basic
.
Переходим Configuration -> Configure MQTT
. Вносим настройки:
- Host - IP адрес вашего MQTT сервера
- Port - Порт на котором доступен MQTT сервер, по умолчанию 1883
- User - Имя пользователя для авторизации на MQTT сервере, если такой имеется
- Password - Пароль для авторизации на MQTT сервере, если такой имеется
Остальные настройки по умолчанию. Кнопка Save
.
Переходим Configuration -> Configure Other
. Вносим настройки:
- Включаем Web Admin Password и вводим пароль для доступа к Web интерфейсу с настройками реле.
- Включаем MQTT Enable
Остальные настройки по умолчанию. Кнопка Save
. После сохранения настроек при доступе к Web интерфейсу будет запрашиваться логин и пароль:
- Пользователь: admin
- Пароль: Ваш введенный пароль
Подключаемся к MQTT серверу (например, программой MQTT Explorer), проверяем подключение реле, в топике tasmota/discovery/
должен появиться MAC адрес устройства, так же устройство должно появиться в топике tele
с именем tasmota_XXXXXX
.
Настройка Home Assistant
Проверяем работу реле, в Home Assistant переходим Developer Tools -> Services
, в поле Service
выбираем mqtt.publish
, в поле Service Data (YAML, optional)
пишем:
topic: cmnd/tasmota_XXXXXX/POWER payload: ON
После нажатия кнопки CALL SERVICE
реле должно включиться.
В файл configuration.yaml
прописываем устройство:
switch: - platform: mqtt unique_id: <strong>sonoff_relay_light</strong> name: "<strong>sonoff_relay_light</strong>" state_topic: "stat/<strong>tasmota_XXXXXX</strong>/RESULT" value_template: "{{ value_json.POWER }}" command_topic: "cmnd/<strong>tasmota_XXXXXX</strong>/POWER" payload_on: "ON" payload_off: "OFF" availability_topic: "tele/<strong>tasmota_XXXXXX</strong>/LWT" payload_available: "Online" payload_not_available: "Offline" qos: 1 retain: false
unique_id
и name
не обязательно должны быть одинаковыми, tasmota_XXXXXX
- ваше устройство.
Проверяем конфигурацию Configuration -> Server Controls -> Check configuration
, если ошибок нет, то перезагружаем сервис Home Assistant.
После перезагрузки проверяем наше устройство в Configuration -> Entities
. По необходимости добавляем кнопку включения реле на панель Lovelace
.
Автоматизация
Как уже говорилось в начале статьи, реле используется для включения подсветки зеркала в ванной комнате и пока нет отдельной беспроводной кнопки для включения решил использовать одноклавишный выключатель основного освещения от компании Xiaomi. Поскольку у инженеров и программистов в Xiaomi туго с фантазией на действия в одноклавишных выключателях, то пришлось использовать такую схему:
- Если выключено основное освещение и подсветка, то включается основное освещение.
- Если основное освещение включено и выключена подсветка, то включается подсветка
- Если включено освещение и подсветка, то выключается основное освещение
- Если основное освещение выключено и включена подсветка, то выключается подсветка
Для начала выключатель необходимо перевести в режим программной кнопки. При подключении выключателя через шлюз Xiaomi это делается в настройках выключателя в программе MiHome
. Если выключатель подключен по протоколу MQTT, то в топик zigbee2mqtt/SWITH_FRIENDLY_NAME/system/set
необходимо отослать сообщение:
{ "operation_mode": { "button": "single", "state": "decoupled" } }
SWITH_FRIENDLY_NAME - имя выключателя назначенное пользователем, которое прописано в файле zigbee2mqtt/data/configuration.yaml
. Сообщение можно отослать с помощью, выше упомянутого MQTT Explorer'а.
В файле automation.yaml
или в мастере создания автоматизаций создаем четыре новых автоматизации:
- id: 'bathroom_up_light_on' alias: Bathroom - Up Light ON trigger: - platform: device domain: mqtt device_id: 911a80f8ddce42bb942261d6e27d3835 type: click subtype: single discovery_id: 0x00158d00034d45c0 click_single condition: - condition: state entity_id: switch.xiaomi_switch_bathroom_switch state: 'off' - condition: and conditions: - condition: state entity_id: switch.sonoff_relay_bathroom state: 'off' action: - service: switch.turn_on data: {} entity_id: switch.xiaomi_switch_bathroom_switch mode: single - id: 'bathroom_mirror_light_on' alias: Bathroom - Mirror Light ON trigger: - platform: device domain: mqtt device_id: 911a80f8ddce42bb942261d6e27d3835 type: click subtype: single discovery_id: 0x00158d00034d45c0 click_single condition: - condition: state entity_id: switch.xiaomi_switch_bathroom_switch state: 'on' - condition: state entity_id: switch.sonoff_relay_bathroom state: 'off' action: - service: switch.turn_on data: {} entity_id: switch.sonoff_relay_bathroom mode: single - id: 'bathroom_up_light_on' alias: Bathroom - Up Light OFF trigger: - platform: device domain: mqtt device_id: 911a80f8ddce42bb942261d6e27d3835 type: click subtype: single discovery_id: 0x00158d00034d45c0 click_single condition: - condition: state entity_id: switch.xiaomi_switch_bathroom_switch state: 'on' - condition: and conditions: - condition: state entity_id: switch.sonoff_relay_bathroom state: 'on' action: - service: switch.turn_off data: {} entity_id: switch.xiaomi_switch_bathroom_switch mode: single - id: 'bathroom_mirror_light_off' alias: Bathroom - Mirror Light OFF trigger: - platform: device domain: mqtt device_id: 911a80f8ddce42bb942261d6e27d3835 type: click subtype: single discovery_id: 0x00158d00034d45c0 click_single condition: - condition: state entity_id: switch.xiaomi_switch_bathroom_switch state: 'off' - condition: and conditions: - condition: state entity_id: switch.sonoff_relay_bathroom state: 'on' action: - service: switch.turn_off data: {} entity_id: switch.sonoff_relay_bathroom mode: single
Что бы не мучиться с device_id
и discovery_id
лучше использовать мастер автоматизации Configure -> Automation -> +
, для любителей погрызть кактус данные значения можно посмотреть в файле .homeassistant/.storage/core.device_registry
.