Stupid House

Прошивка Tasmota в реле Sonoff Basic и интеграция в Home Assistant


logo sonoff home assistant

Во время ремонта в ванной планировалось установить зеркало с подсветкой, для этого в месте установки сразу был выведен провод. Зеркало планировалось со своей кнопкой включения по этой и еще нескольким причинам провод и коробка для выключателя заранее не закладывались. После изучения ассортимента зеркал для ванной с подсветкой, требованиям: понравилось - качество - цена - размер, соответствует только зеркало из Икеи, но подсветка в нем не имеет своего выключателя. В качестве размыкателя цепи решено было поставить реле Sonoff Basic, а управлять этим реле через одноклавишный беспроводной выключатель или беспроводную кнопку от компании Xiaomi и системой автоматизации Home Assistant.

Sonoff Basic - реле с одной управляемой линией, подключаемое к сети Wi-Fi. Из коробки управление происходит на телефоне в программе eWeLink через китайское облако. Мне пришло устройство второго поколения Sonoff R2 Power, которое управляется чипом ESP8285.

sonoff basic r2 power relay

Работать Home Assistant с реле будет по протоколу MQTT, для этого реле необходимо перепрошить. В качестве управляющего программного обеспечения в реле, выбрана прошивка Tasmota.

 

Прошивка устройства

Скачиваем программу прошивки устройства: Tasmotizer

Скачиваем последнюю прошивку: tasmota.bin

ВНИМАНИЕ! Автор статьи не несет никакой ответственности за последствия, которые могут произойти при выполнении действий, описанных в данной статье! Всё что вы делаете, вы делаете только на свой страх и риск!

Отключаем питание 220V от реле!!! Попытка прошить реле с подключенным питанием 220V может привести к поражению электрическим током, выходу из строя реле и подключенного к нему оборудования!!!

Прошивка реле осуществляется через USB-to-TTL адаптер, для подключения на плате реле имеются соответствующие технические контакты. Что бы не припаивать к технической площадке провода удобнее один раз впаять штыревую вилку на четыре контакта.

sonoff basic r2 relay board

Маркировка контактов на обратной стороне платы.

sonoff basic r2 relay board back

Подключаем 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!

sonoff basic r2 tasmotizer

После перепрошивки отключаем 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 - адрес вашего реле в локальной сети. Попадаем в меню настроек реле.

sonoff basic tasmota web

В меню Configuration -> Configure Module проверяем, если отличается, то выставляем, в поле Module type значение Sonoff Basic.

sonoff tasmota firmware configure module

Переходим Configuration -> Configure MQTT. Вносим настройки:

  • Host - IP адрес вашего MQTT сервера
  • Port - Порт на котором доступен MQTT сервер, по умолчанию 1883
  • User - Имя пользователя для авторизации на MQTT сервере, если такой имеется
  • Password - Пароль для авторизации на MQTT сервере, если такой имеется

Остальные настройки по умолчанию. Кнопка Save.

sonoff basic tasmota configure mqtt

Переходим Configuration -> Configure Other. Вносим настройки:

  • Включаем Web Admin Password и вводим пароль для доступа к Web интерфейсу с настройками реле.
  • Включаем MQTT Enable

Остальные настройки по умолчанию. Кнопка Save. После сохранения настроек при доступе к Web интерфейсу будет запрашиваться логин и пароль:

  • Пользователь: admin
  • Пароль: Ваш введенный пароль
sonoff basic tasmota configure other

Подключаемся к MQTT серверу (например, программой MQTT Explorer), проверяем подключение реле, в топике tasmota/discovery/ должен появиться MAC адрес устройства, так же устройство должно появиться в топике tele с именем tasmota_XXXXXX.

sonoff basic r2 mqtt

 

Настройка 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: sonoff_relay_light
    name: "sonoff_relay_light"
    state_topic: "stat/tasmota_XXXXXX/RESULT"  
    value_template: "{{ value_json.POWER }}"
    command_topic: "cmnd/tasmota_XXXXXX/POWER"
    payload_on: "ON"
    payload_off: "OFF"
    availability_topic: "tele/tasmota_XXXXXX/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 туго с фантазией на действия в одноклавишных выключателях, то пришлось использовать такую схему:

  1. Если выключено основное освещение и подсветка, то включается основное освещение.
  2. Если основное освещение включено и выключена подсветка, то включается подсветка
  3. Если включено освещение и подсветка, то выключается основное освещение
  4. Если основное освещение выключено и включена подсветка, то выключается подсветка

Для начала выключатель необходимо перевести в режим программной кнопки. При подключении выключателя через шлюз 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.

Автор: muxa, 12.10.2020
Войдите или зарегистрируйтесь, чтобы иметь возможность оставлять комментарии