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

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

81 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Serg.le
Serg.le
2 лет назад

>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
9 месяцев назад
Ответить на  kvv

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

gumileeev
9 месяцев назад
Ответить на  kvv

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

Павел
Павел
7 месяцев назад
Ответить на  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». Не работает. строка из браузера… Подробнее »

максим
максим
2 лет назад

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

Alert
Alert
1 год назад

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

ilya
ilya
1 год назад

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

Vasal
Vasal
11 месяцев назад
Ответить на  ilya

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

Vasal
Vasal
11 месяцев назад
Ответить на  kvv

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

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

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

switch:
  - platform: rpi_gpio
    ports:
      11: Fan Office
Александр
Александр
10 месяцев назад
Ответить на  kvv

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

Александр
Александр
10 месяцев назад
Ответить на  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

Александр
Александр
10 месяцев назад
Ответить на  kvv

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

Александр
Александр
10 месяцев назад
Ответить на  kvv

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

Александр
Александр
10 месяцев назад
Ответить на  kvv

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

Александр
Александр
10 месяцев назад
Ответить на  kvv

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

Александр
Александр
10 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

alexintras
alexintras
7 месяцев назад
Ответить на  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
7 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  Александр

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  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: Звонят возле лифта

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

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

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

Александр
Александр
10 месяцев назад
Ответить на  kvv

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

Александр
Александр
10 месяцев назад
Ответить на  Александр

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

Александр
Александр
10 месяцев назад
Ответить на  kvv

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

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

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

alexintras
alexintras
8 месяцев назад
Ответить на  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
8 месяцев назад
Ответить на  kvv

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

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

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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

Александр
Александр
9 месяцев назад
Ответить на  kvv

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