Некоторое время назад я установил на даче откатные ворота с мотором. Как было со старыми воротами: приезжаешь, вылезаешь из машины, заходишь, снимаешь замок, руками открыл ворота. После установки новых ворот стало гораздо удобнее: подъезжаешь, нажал на кнопку на пульте, ворота открылись, заехал, еще раз нажал на кнопку на пульте и ворота закрылись.
На даче у меня установлен сервер Home Assistant, который помогает в некоторых вещах: управляет освещением, контролирует температуру. Мне захотелось чтобы у меня была возможность управлять воротами из системы Home Assistant. Пошел разбираться как это сделать.
Мотор для ворот — это вот такая коробка:
Если снять крышку, то будет видна плата и то как сейчас все подключено:
У меня используется двигатель CAME BX608AGS и плата ZBX6N.
К мотору идет небольшая книжка с инструкцией.
Я внимательно прочитал всю эту книжку и нашел каким образом можно управлять воротами с помощью этой платы: нужно замкнуть контакты 2 и 7 на плате.
Вот страница инструкции с этой информацией:
Пошел проверять. Вставил провод в клемму 2 (в дополнение к тому проводу что там уже был), вставил провод в клемму 7. Соединил повода на секунду и тут же разъединил — ворота начали открываться. Опять на секунду соединил провода — ворота остановились. Еще раз соединил провода — ворота начали закрываться.
Т.е. задача стала совершенно понятна — для того чтобы я мог управлять воротами из компьютера нужно уметь замыкать/размыкать контакты 2 и 7 на плате.
Я описываю все так как будто у меня сразу все хорошо получилось, но это совсем не так. Я снял крышку, подключил провода, замкнул — и ничего не произошло. На led дисплее появилась ошибка E-8. Я взял пульт — с него тоже ворота больше не управляются. Пошел читать инструкцию. Оказалось что ошибка E-8 означает что не закрыта крышка мотора, при открытой крышке мотор не работает. Закрыл крышку, с пульта стало все управляться и замыкание контактов 2-7 тоже стали управлять воротами.
Изначально замыкание контактов давало действия не открыть-стоп-закрыть, а открыть-закрыть. Понадобилось еще переключить что делает мотор при замыкании контактов (для этого нужно было войти в меню с помощью кнопок в правой нижней части платы и выбрать нужный режим)
Итак, понятно что нужно для того чтобы из Home Assistant управлять воротами нужно какое-то устройство которое умеет замыкать контакты и чтобы можно было из Home Assistant давать этому устройству команду на замыкание/размыкание.
Пошел выяснять какие бывают устройства для решения этой задачи. Составил список реле с сухим контактом.
Достаточно большой выбор. Есть устройства которые питаются от розетки 230 вольт, а есть для питания которых можно использовать постоянный ток разного напряжения. Есть устройства которые подключаются по Wi-Fi, а есть те который используют Zigbee (если вам интересно что такое Zigbee, можно прочитать мой текст на эту тему).
Я решил что мне нужно устройство которое я могу перешить на ESPHome, так что выбирал только между Wi-Fi устройств. В итоге я решил что я возьму Sonoff Basic и буду использовать его для этой задачи. Я выбрал это устройство во многом потому что у меня в ящике уже лежало несколько Sonoff Basic, ничего не пришлось покупать. Но Sonoff Basic изначально не дает сухой контакт, на выходе у него 230 вольт. Для того чтобы делать с его помощью замыкание контактов нужно его сначала переделать под сухой контакт. Я разобрался как это сделать, сделал и написал инструкцию.
Скорее всего, если бы мне пришлось что-то покупать для решения этой задачи я бы купил Shelly 1. Это устройство дороже чем Sonoff Basic, но по сравнению с Basic там сразу есть сухой контакт и можно запитать это устройство не только от 230 вольт, но и от 12В или 24-60.
Итак, есть устройство. Sonoff Basic переделанный под суходй контакт. Его нужно запитать от сети 230 вольт и подключить к Wi-Fi.
Для того чтобы управлять Sonoff Basic из Home Assistant можно использовать компонент SonoffLAN. Но я предпочитаю перешить устройство на ESPHome.
Для того чтобы управлять воротами нужно на секунду замкнуть контакты, а потом разомкнуть их. Вот мне очень хочется чтобы эта логика жила на самом устройстве, а не на сервере Home Assistant.
Home Assistant может давать команду на Sonoff Basic:
Я хочу чтобы Home Assistant подавал одну команду:
Так надежнее. Для решения этой задачи я написал вот такой код прошивки ESPHome (файл gate.yaml):
esphome:
name: gate
platform: ESP8266
board: esp01_1m
board_flash_mode: dout
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
logger:
ota:
password: !secret ota_password
api:
password: !secret api_password
services:
- service: click
then:
- switch.turn_on: relay
- delay: 500ms
- switch.turn_off: relay
switch:
- platform: gpio
id: relay
pin: GPIO12
name: relay
internal: true
binary_sensor:
- platform: status
name: "Gate Status"
status_led:
pin:
number: GPIO13
inverted: True
Прошил этот код на ESPHome и после этого могу дергать в Home Assistant сервис esphome.gate_click При вызове этого сервиса Sonoff Basic сначала замкнет контакт, подождет немного, а потом разомкнет этот контакт без какой-либо дополнительной команды.
После того как у меня появился Sonoff Basic переделанный на сухой контакт и с нужной прошивкой, я подключил его к мотору.
Вот что получилось:
Sonoff Basic подключился к Wi-Fi, автоматически появился в Home Assistant (это фишка ESPHome) и я написал вот такой код в UI:
cards:
- type: entities
show_header_toggle: false
entities:
- entity: binary_sensor.gate_status
- type: 'custom:button-card'
name: Gate Click
icon: 'mdi:gesture-tap-button'
confirmation:
text: '[[[ return `Are you sure?` ]]]'
tap_action:
action: call-service
service: esphome.gate_click
styles:
card:
Теперь я могу управлять воротами не только с пульта находясь рядом с ними, но из любой точки мира где есть интернет.
То что я сделал — работает, я могу управлять воротами из Home Assistant. В Home Assistant у меня появилась новая кнопка в интерфейсе, но теперь очень просто при желании пробросить ворота в Алису или Сири чтобы можно было голосом говорить "Открой ворота".
Недостаток этого решения то что Home Assistant не знает статус ворот. Ворота сейчас открыты или закрыты? Это можно решить с помощью установки дополнительного оборудования — чтобы в конечных положениях ворота зажимали кнопки, а данные с этих кнопок были в HA.
Меня это не сильно беспокоит — у меня есть камера которая смотрит на ворота, статус ворот я понимаю из картинки с камеры.
Другой момент который мне не очень нравится в этом решнеии — это то что запитываю устройство от 230 вольт. На плате уже есть 24 вольта, более правильно было бы использовать их.
22 декабря 2020
Кстати, у меня есть телеграм канал про Home Assistant: https://t.me/bessarabov_ha
|