ESPHome, управление бистабильным реле

Есть разные типы реле по способы работы, это обычные реле, которые при включении напряжения замыкают контакты, при пропадании напряжения контакты размыкаются, а есть бистабильные реле, для замыкания необходимо подать на один контакт высокий уровень, для выключения подать высокий уровень на второй контакт. Плюс такого реле в том, что при работе не потребляется ток, так как напряжение необходимо только для включения или выключения, так же при пропадании электричества на модуле состояние реле не измениться, однако минус заключается в том, что для управления необходимо использовать два GPIO или даже три для состояния статуса реле и после перезагрузки модуля нет статуса реле или необходимо использовать дополнительные элементы для определения статуса реле.

Попался у меня один такой выключатель на DIN рейку с модулем CBU от Tuya, в нем используется бистабильное реле и индикатор статуса, однако индикатор статуса не определяет состояние реле а всего лишь подключен на выход к одному из GPIO

Используются следующие контакты:

GPIO9 — статус реле, к этому GPIO подключен светодиод

GIPO24 — подключен к обмотке включения реле

GPIO26 — подключен к обмотки выключения реле

GPIO17 — кнопка на самом реле для ручного включения


binary_sensor:
  - platform: gpio
    pin:
      number: GPIO17 # кнопка
    name: "Button 1"
    id: bt1
    on_press: # нажатие на кнопку
      then:
        - if:
            condition:
              switch.is_off: rel_status # проверяем статус светодиода статуса
            then:
              - switch.turn_on: rel_status # если выключен то включаем
            else:
              - switch.turn_off: rel_status # иначе выключаем
switch:
  - platform: gpio
    pin: GPIO9 # светодиод статуса
    id: rel_status
    inverted: true
    name: rel_status
    on_turn_on:
      - switch.turn_off: relay1_off # выключаем обмотку выключения реле на всякий случай
      - switch.turn_on: relay1_on # включаем обмотку включения реле
      - delay: 500ms # ждем 0,5 секунды
      - switch.turn_off: relay1_on № выключаем обмотку включения реле
      - logger.log: "Switch Turned On!"
    on_turn_off:
      - switch.turn_off: relay1_on
      - switch.turn_on: relay1_off
      - delay: 500ms
      - switch.turn_off: relay1_off
      - logger.log: "Switch Turned Off!"
  - platform: gpio
    pin: GPIO24 # обмотка включения реле
    id: relay1_on
  - platform: gpio
    pin: GPIO26 № обмотка выключения реле
    id: relay1_off
ESPHome, управление бистабильным реле

Навигация по записям