Пришло время переводить выключатели на ESPEasy в Home Assistant

Что имеем:

  • Home Assistant 0.70
  • Esp прошитый ESPEasy Mega
  • Реле
  • Переключатель

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

Подключаем ESP с прошивкой ESPEasy к реле следующим образом:

ESP пин 3v3 к VCC реле
ESP пин GND к GND реле
ESP пин D6 (Gpio-12)  к IN реле

В ESPEasy создаем переключатель Switch input — Switch для реле во вкладке Devices.

Приводим его к следующему виду:

Имя: relay
Enabled: — галочка
Internal PullUp: — галочка
Inversed Logic: — пусто
1st GPIO: GPIO-12 (D6)
Switch Type: Switch
Switch Button Type: Normal Switch
Send Boot state: — галочка
Send to Controller: — пусто
IDX: — номер Dummy переключателя в Domoticz (если активно Send to Controller)
Values Name: state

Сохраняем.

Управляется реле командой (192.168.0.23 это адрес ESPEasy):

Включить: http://192.168.0.23/control?cmd=GPIO,12,0 
Выключить: http://192.168.0.23/control?cmd=GPIO,12,1 

Включаем нулем если реле сделали нормально закрытым, и единицей, если нормально открытым

Выполнив переходы в браузере, реле сработает и выдаст ответ:

{ "log": "GPIO 12 Set to 0", "plugin": 1, "pin": 12, "mode": "output", "state": 0 }

или

{ "log": "GPIO 12 Set to 0", "plugin": 1, "pin": 12, "mode": "output", "state": 1 }

Мы будем управлять через MQTT.

Для этого переходив во вкладку Controllers и добавляем первым контроллером OpenHUB MQTT. Прописываем адрес брокера, порт и не меняя остальные настройки сохраняем.

Теперь создаем переключатель Switch input — Switch для переключателя во вкладке Devices:

Имя: button
Enabled: — галочка
Internal PullUp: — галочка
Inversed Logic: — пусто
1st GPIO: GPIO-14 (D5)
Switch Type: Switch
Switch Button Type: Normal Switch
Send Boot state: — пусто (если активировать, то при загрузке esp синхронизирует реле с выключателем: если был свет включен, то при загрузке тоже будет включен)
Send to Controller: — пусто
Values Name: state

Сохраняем.

Подключим обычный (любой) переключатель света:
от ESP пин GPIO-14 (D5 на NodeMCU) в разрыв переключателя и на GND ESP:

Включаем Rules в Tools> Advanced

Переходим на вкладку Rules и вставляем туда следующее:

//Изменение состояния реле переключателем
on button#state do
  if [button#state]=0
    gpio,12,0
      else
    gpio,12,1
      endif
endon

 

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

В Home Assistant переходим в switches.yaml и добавляем следующее:

####################################################
#                   Выключатели                    #
####################################################
# Выключатель, спальня
- platform: mqtt
  name: bedroom_switch
  state_topic: "/esp_switch_bedroom/relay/state"
  command_topic: "/esp_switch_bedroom/gpio/12"
  payload_on: "0"
  payload_off: "1"
  qos: 1
  retain: true


Пояснения:
ESPEasy публикует и слушает данные в MQTT следующим образом:
/esp_switch_bedroom/gpio/12
esp_switch_bedroom — это название нашей esp, заданное во вкладке Main
gpio/12 — тут все ясно
и отправив 1 или 0 мы включим или выключим реле на ESPEasy

Статус:
/esp_switch_bedroom/relay/state


Так как мы русскоговорящие, названия устройств в Home Assistans нам хочется видеть тоже на русском. Но name: bedroom_switch обязательно должно быть на английском, так как от этого имени формируется название устройства в Dev, и именно это название из dev мы будем распределять по группам в будущем (- switch.bedroom_switch)

Если же поставить name: Выключатель, то в dev он примет вид  switch.__

Он будет работать, но ровно до тех пор, пока мы не решим добавить еще один выключатель, так как он получит точно же такое имя switch.__


 

Весь этот набор отлично вмещается в глубокие подрозетники

 

0 0 vote
Article Rating

Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

81 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Serg.le
Serg.le
1 год назад

>state_topic: «/esp_switch_bedroom/relay/state»
>command_topic: «/esp_switch_bedroom/gpio/12»
>payload_on: «0»
> payload_off: «1»
Такой вариант не работает в последних версиях espeasy mega. Теперь статус выдается только json’ом причем не совместимым с компонентом MQTT JSON Light.
— platform: mqtt_template
command_topic: «coil-kitchen/cmd»
state_topic: «coil-kitchen/status»
command_on_template: «gpio,13,1»
command_off_template: «gpio,13,0»
state_template: >
{% if value_json.state == 1 and value_json.pin == 13 %}
on
{% if value_json.state == 0 and value_json.pin == 13 %}
off
{% endif %}

gumileeev
1 месяц назад
Reply to  kvv

Здравствуйте! Сеществует ли у вас на сегодня связка espeasy и homeassistant? Можете показать пример сбора статусов gpio для актуальных версий? HA ругается на command_topic

gumileeev
1 месяц назад
Reply to  kvv

Да вот я тоже думаю не присмотреться ли к esphome, спасибо за быстрый ответ!

Павел
Павел
14 дней назад
Reply to  Serg.le

Здравствуйте. Второй день пытаюсь разобраться с топиками. Условия: подключить ESPEasy к бесплатному стороннему MQTT серверу mqtt.4api.ru Сервер просит создавать топики так user_854ad62/cmd где user_854ad62 я изменить не могу. Что делаю: Создаю топик user_854ad62/cmd в настройках ESPEasy прописываюName: user_854ad62, OpenHub, srv1.mqtt.4api.ru, логин, пароль. при этом в терминале наблюдаю «Subscribed to: user_854ad62» В конфиге ESPEasy Tools-Advens по умолчанию Subscribe Template: /%sysname%/# пробовал менять на /%sysname%/ и %sysname% и %sysname%/ как вообще правильно? Publish Template:/%sysname%/%tskname%/%valname% В топик шлю: gpio,2,0 Не работает контроль поступления команд контролирую приложением клиентом на телефоне (команді приходят) Также создан топик user_854ad62/gpio/2 куда шлю «0». Не работает. строка из браузера… Подробнее »

максим
максим
1 год назад

А блок питания к этому набору какой и куда его прятать ?

Alert
Alert
9 месяцев назад

Где брать данные ip брокера и порт.

ilya
ilya
5 месяцев назад

Подскажите а как добавлять в Home Asistent что-то не могу подключить.

Vasal
Vasal
4 месяцев назад
Reply to  ilya

Подскажите новичку, switches.yaml Home Assistant нужно самому создавать?

Vasal
Vasal
4 месяцев назад
Reply to  kvv

Здравствуйте уважаемый kvv. Через интернет и физической кнопкой реле управляется. Теперь для меня самое сложное, как этим реле управлять из Home Asistent?
Только начинаю постигать узы, не обессудьте. Спасибо.
Да, в configuration.yaml вставил то, что вы указали.

Александр
Александр
2 месяцев назад

Случайно наткнулся на ваш блог, и уже второй день перечитываю)) Спасибо огромное за вашу работу!
Если вас не затруднит, не подскажите, как в HA настроить работу switch c GPIO RPi как кнопку?
Как вкл/выкл работает, а так, чтобы «нажал» и через пол секунды вернулось состояние не могу сделать 😕
Использую код:

switch:
  - platform: rpi_gpio
    ports:
      11: Fan Office
Александр
Александр
2 месяцев назад
Reply to  kvv

«Спасибо большое» кинул на кофе ))
Читаю дальше ваш блог и учусь ))

Александр
Александр
2 месяцев назад
Reply to  kvv

Всё отлично работало, пока сегодня не обновил HA с предпоследней на последнюю версию…
Теперь даже когда ставлю задержку 50 милисекунд, всё равно «держит» больше секунды.
У меня это критично, спалю реле…
Подскажите пожалуйста, где копать? Возможно что какая-то задержка при обработке? Вот мой конфиг:

— alias: ‘knopka_svet_koridor’
trigger:
— platform: state
entity_id: switch.koridor
from: ‘off’
to: ‘on’
action:
— delay:
milliseconds: 50
— service: switch.turn_off
data:
entity_id: switch.koridor
— alias: ‘knopka_svet_spalnia’
trigger:
— platform: state
entity_id: switch.spalnia
from: ‘off’
to: ‘on’
action:
— delay:
milliseconds: 50
— service: switch.turn_off
data:
entity_id: switch.spalnia

Александр
Александр
2 месяцев назад
Reply to  kvv

Может как-то можно объединить автоматизацию для двух свитчей в одну?

Александр
Александр
2 месяцев назад
Reply to  kvv

Работать то работает, но ставлю 100мсек задержку, а держит больше секунды…
Причем заметил, что из нескольких проб вкл/выкл бывает что отрабатывает задержку правильно.
Может быть что HA как-то кэширует это?
Home Assistant 0.108.6

Александр
Александр
2 месяцев назад
Reply to  kvv

Стыдно признаться, но мой английский оставляет желать лучшего, так что описать проблему я грамотно не смогу.
Да и честно говоря, я уже не уверен что «чисто» работало до обновления. Поскольку иногда и сейчас работает как нужно, а до обновления я особо не успел «потестить».
Вообщем решил пока оставить как есть, планирую в ближайшее время переехать на с RPi на ноут с докер+ХА. Значит прямых GPIO всё равно не будет.
Спасибо за участие и помощь!

Александр
Александр
2 месяцев назад
Reply to  kvv

возможно что не всегда отрабатывает как нужно, поскольку вся система грузится и работает на RPi3 не с SD карты, а с USB флешки. Поскольку там милисекунды, может запрос-ответ с флешки «съедает» это время? Или вся автоматизация в RAM уходит?

Александр
Александр
2 месяцев назад
Reply to  kvv

А вообще, можно ли без автоматизаций создать кнопку, а не переключатель в ХА? Т.е. «замкнуто-пока-нажато»?

Александр
Александр
2 месяцев назад
Reply to  kvv

Да, когда перенесу ХА с RPi на ноут, придётся.
Но я сторонник принципа «подключение проводами лучше чем по воздуху». И если у меня роутер, сервер и исполняющие реле стоят рядом, то согласитесь, хотелось бы использовать это по максимуму.

Александр
Александр
2 месяцев назад
Reply to  kvv

«хочу esp32 подключить через lan» — вот с этого места прошу по-подробнее )) Как?!

Александр
Александр
2 месяцев назад
Reply to  kvv

Класс! Там есть пример конфига для Olimex ESP32-POE, крутая штука, но стоимость тоже не малая: (https://aliexpress.ru/item/4000188817036.html?spm=a2g0v.12057483.0.0.6cd46f8a8RnBVc)
А у вас уже есть практический опыт подключения LAN8720 к ESP32s?
Не поделитесь? Отличная тема для статьи в вашем блоге!

Александр
Александр
2 месяцев назад
Reply to  kvv

Думаю часом там не отделаться ))
С нетерпением буду ждать!

alexintras
alexintras
3 дней назад
Reply to  kvv

Здравствуйте!
Приобрёл вот такой модуль LAN8720: https://aliexpress.ru/item/32828023330.html
Пытаюсь подружить его с ESP32-WROOM-32U (https://aliexpress.ru/item/4000155919030.html) и чет совсем грустно.
3.3в питание для LAN взял с платы ESP32
Вот мой последний конфиг:

esphome:
  name: esp32_zvon
  platform: ESP32
  board: esp32dev
ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  phy_addr: 1
  manual_ip:
    static_ip: 192.168.1.88
    gateway: 192.168.1.1
    subnet: 255.255.255.0
# Enable logging
logger:

Не подскажите, куда копать?

alexintras
alexintras
1 день назад
Reply to  kvv

Извините что беспокою, ну как, не удалось подключить?
Прям руки чешутся :))

Александр
Александр
2 месяцев назад
Reply to  kvv

А на таком модуле https://aliexpress.ru/item/32946148832.html
можно реализовать 2 on_press-кнопки? в ESPHome?
Сложный конфиг? С ESP_easy знаком, а вот ESPHome ни разу не щупал…

Александр
Александр
2 месяцев назад

Уточняю вопрос, можно ли в этой конфигурации: (https://gist.github.com/frenck/0af30b05f7c98d17219548b46a03df21#file-doorbell-yaml) к ESP-01s, «прицепить» ещё две on_press-кнопки? У неё вроде 4 GPIO, а здесь задействовано 2.

Александр
Александр
2 месяцев назад
Reply to  kvv

Хотел в этот конфиг https://gist.github.com/frenck/0af30b05f7c98d17219548b46a03df21#file-doorbell-yaml добавить две on_press-кнопки на свободные GPIO. Но включил голову и понял что на 2 кнопки с релюхами, нужно не 2 свободных GPIO, а 4. Т.е. нужно уже NodeMCU.
Т.е., теперь хочу в выше указанный конфиг, добавить две on_press-кнопки, каждая на своё реле, с учётом что будет модуль NodeMCU.
По вашему совету, решил переходить с GPIO RPi, на ESPHome )

Александр
Александр
2 месяцев назад
Reply to  kvv

Вот только пока въехать толком не получается. С ESP_easy как-то полегче…
Если не затруднит, не могли бы вы подправить yaml (ссылка выше) на nodemcu и + добавить две on_press-кнопки, каждая на своё реле?

Александр
Александр
2 месяцев назад
Reply to  kvv

Сделал ))
Только не могу настроить автоматизацию для notify. Шлёт уведомления после каждого нажатия кнопки звонка. Как бы сделать так, чтобы после отправки уведомления о нажатии, задержка была мин 5? Вот конфиг notify:
— alias: Test soobscheniy
trigger:
platform: state
entity_id: binary_sensor.zvonok_button
to: ‘on’
action:
service: notify.mobile_app_imoy
data:
message: Звонят возле лифта

Александр
Александр
2 месяцев назад
Reply to  kvv

Если правильно понимаю, то добавив delay для action, мы просто задерживаем отправку сообщения. А нужно чтобы только для повторного нажатия был delay.
Суть в том, что когда кто-то жмёт кнопку дверного звонка, может жать по несколько раз, а уведомления достаточно одного.

Александр
Александр
2 месяцев назад
Reply to  kvv

Тогда наверное наоборот, на первое нажатие идёт отправка и начинается обратный отсчет, если в промежутке идут нажатия то отправки нет (через condition?), по прошествии заданного времени, возможна повторная отправка в случае нажатия. Вот только как это «расписать»?

Александр
Александр
2 месяцев назад
Reply to  kvv

Спасибо! К сожалению смогу проверить только через неделю. Сразу же отпишусь!

Александр
Александр
2 месяцев назад

Отличная статья! Всё доступно и легко реализуемо даже для таких начинающих «интеграторов» как я.
Повторил — всё работает ))
Прошивка ESP_easy — mega-20200410.
Home Assistant 0.108.6
Единственный косяк — релешки. Взял такие же, как на фото, не протянули и 10 кликов (нагрузка около 1А), «залипли». Было 2 шт. оба в топку. Поставил тоже китайские, но на черной плате и другого производителя. Пока работают.

Александр
Александр
2 месяцев назад
Reply to  kvv

Я ещё добавил сюда же DHT22, да и nodeMCU всё же даёт больше возможностей для расширения этой поделки чем rr300w. Опять же, если сгорит бп в rr300, то гемор с его заменой в отличии от раздельного исполнения. Хотя по компактности конечно проигрывает.

Александр
Александр
2 месяцев назад

Поправляю себя, в rr300w нет БП. Так что он в любом случае хуже чем связка NodeMCU+БП ))

Александр
Александр
2 месяцев назад
Reply to  kvv

Не имею сего девайса, но учитывая что питание 5в, значит понижает до 3,3 ну и 5в, наверное, на реле.

Альберт
Альберт
2 месяцев назад

Спасибо .
Ваша статья сдвинула с мертвой точки.
Бился с подключением топика ( MQTT брокера) к переключателю на Home Assistant.
У вас увидел объяснение что \name: bedroom_switch\ это не просто имя а объявление переключателя и все заработало.

Александр
Александр
1 месяц назад
Reply to  kvv

Только сегодня добрался до компа. Попробовал сделанный вами конфиг — работает!
Что не может не радовать)
Правда пришлось заменить нотифер телеграма на ios push, телеграм почему-то перестал работать, уже и прокси менял, без толку.
«Спасибо большое» кинул на кофе ))

alexintras
alexintras
28 дней назад
Reply to  kvv

Подскажите пожалуйста! Есть следующая автоматизация:
При нажатии виртуального переключателя «input_boolean.nik_spat», включается «switch.alisa_rozetka» и затем через 30 мин отключается.
Как сделать, чтобы время отключения задавать в интерфейсе, например слайдером от 5 мин до 60 или каким другим способом?
 

- alias: 'nik_spat_avto'
  trigger:
  - platform: state
    entity_id:
          - input_boolean.nik_spat
    from: 'off'
    to: 'on'
  condition:
  action:
    - service: switch.turn_on
      data:
        entity_id:
          - switch.alisa_rozetka
- alias: 'nik_son_alisa'
  trigger:
    platform: state
    entity_id:
      - input_boolean.nik_spat
    from: 'off'
    to: 'on'
  condition:
    - condition: state
      entity_id: input_boolean.nik_spat
      state: 'on'
  action:
  - delay:
     minutes: 30
  - service: switch.turn_off
    entity_id: switch.alisa_rozetka

 

alexintras
alexintras
26 дней назад
Reply to  kvv

Не сразу понял, как реализовать, но покопавшись разобрался! Спасибо за руководящую и направляющую роль в моём образовании!! :))

Александр
Александр
1 месяц назад

Кстати, а насколько проблематична реализация данного кейса на ESPHome?

Александр
Александр
1 месяц назад
Reply to  kvv

Под «кейсом» я подразумевал данную статью «Переключатель света на EspEasy в Home Assistant».
Т.е. описываемый конечный функционал но вместо EspEasy использовать ESPHome. Всё таки интеграция ESPHome с ХА выглядит привлекательней ).

Александр
Александр
1 месяц назад
Reply to  kvv

У меня полный швах! ((
Поставил на убунту докер, хотел в него закинуть ha-supevised, а разрабы 10 мая «закрыли лавочку». Теперь ставится ha, в котором нет supervised!! Как его поставить теперь?! Второй день инет рою, ничего не могу найти по теме ((

Александр
Александр
1 месяц назад
Reply to  kvv

а я искал… и продолжаю искать))
пока безуспешно… а столько планов уже настроил на ХА…