ESPHome multiclick przełącznik bistabilny

Hej.
Proszę niech ktoś wrzuci gotowy kod w ESPHome na przełącznik bistabilny z multiclickiem.

Cześć,
A jak sobie to wyobrażasz? Podaj jakieś oczekiwane scenariusze.
Da się zrobić wiele rzeczy, ale uważam że np. włączenie światła dopiero po 2s od zmiany pozycji przełącznika to kiepski scenariusz.

1 polubienie

Przykład masz w dokumentacji - Binary Sensor Component — ESPHome .

Założenie jest takie, żeby przełącznik bistabilny do którego podłączony jest sonoff mini po:

substitutions:
  device_name: lampa-w-pokoj-heleny
  device_ip: 192.168.20.4
 
esphome:
  name: "${device_name}"
  platform: ESP8266
  board: esp8285
  
api:
  encryption:
    key: !secret encryption_key

ota:
  password: !secret ota_password
  safe_mode: True

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true

  manual_ip:
    static_ip: ${device_ip}
    gateway: 192.168.20.1
    subnet: 255.255.255.0
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "LampaHelena-Esp8266"
    password: !secret wifi_password

web_server:
  port: 80

captive_portal:

logger:

light:
  # the 4 lines below define the main relay as a light
  - platform: binary
    name: "Lampa w Pokoju Heleny" # you can enter a custom name to appear in HomeAsistant here.
    id: light_1
    output: relay_1  
    restore_mode: RESTORE_DEFAULT_OFF
    

  # the 4 lines below define the Blue LED light on Sonoff Mini, to expose in HomeAssistant remove line "internal: true"
  - platform: monochromatic
    name: ${device_name}_blueled
    output: blue_led
    internal: true # hides the Blue LED from Homeassistant
output:
  # the 3 lines below control the main relay
  - platform: gpio
    pin: GPIO12
    id: relay_1  
  # the 3 lines below control the Blue LED
  - platform: esp8266_pwm
    id: blue_led
    pin: GPIO13
    inverted: True

# Individual sensors
binary_sensor:
  # the 7 lines below define the reset button
  - platform: gpio
    pin: GPIO00
    id: reset
    internal: true  # hides reset switch from HomeAssistant
    filters:
      - invert:
      - delayed_off: 10ms
  # the 3 lines below toggle the main relay on press of reset button
    on_press:
      - light.toggle:
          id: light_1

  # the 13 lines below toggle the main relay on command
  - platform: gpio
    name: relay_toggle
    internal: true  # hides relay toggle from HomeAssistant
    pin: GPIO04
    id: gpio_light_id
    on_multi_click:
    - timing:
        - ON for at most 1s
        - OFF for at least 0.5s
      then:
        - text_sensor.template.publish:
              id: wlacznik_pokoj_helena
              state: !lambda 'return "double-clicked";' 
    - timing:
        - OFF for at most 1s
        - ON for at least 0.5s
      then:
        - text_sensor.template.publish:
              id: wlacznik_pokoj_helena
              state: !lambda 'return "double-clicked";'           
    - timing:
        - OFF for at least 0.5s
      then:
        - light.turn_off: light_1
    - timing:
        - ON for at least 0.5s
      then:
        - light.turn_on: light_1

text_sensor:
  - platform: template
    name: "Włącznik Pokój Helena"
    id: wlacznik_pokoj_helena
    icon: "mdi:toggle-switch"
    on_value:
      then:
        - if:
            condition:
              text_sensor.state:
                id: wlacznik_pokoj_helena
                state: ""
            else:
              - delay: 20ms
              - text_sensor.template.publish:
                  id: wlacznik_pokoj_helena
                  state: !lambda 'return "";'

  # the 2 lines below create a status entity in HomeAssistant.
  #- platform: status
  #  name: ${device_name} Status

#status_led:
#  pin:
#    number: GPIO13
#    inverted: true

oraz ustawienia w node red:

Generalnie działa zgodnie z założeniami czyli podwójne kliknięcie wysyła wiadomość double-clicked która wykorzystuje w node red do zapalenia ledów.
Ale przynajmniej raz dziennie sonoffa wyrzuca z sieci wifi i pomaga tylko odłączenie zasilania. Podejrzewam, że jednak w kodzie jest coś nie tak.
Chyba najlepiej byłoby zrobić zapalenie ledów bezpośrednio w kodzie esphome ale ostatnio trudno mi znaleźć czas i dlatego poprosiłem o gotowca :wink:

dopisz to:

wifi:
  reboot_timeout: 0s
1 polubienie

Chyba znalazłem przyczynę…
Wgrałem prosty program który działa na innym module tylko włącz/wyłącz i dalej to samo.
Wyjąłem sonoffa mini z puszki i od razu zauważyłem że mocno ciepły.
Po rozebraniu zauważyłem wyciek z przetwornicy.
obraz

Mam nadzieję, że to nie wina softu :slight_smile:

Na 100 procent nie.

Na zdjęciu niewiele widać, ale prawdopodobnie któryś z kondensatorów elektrolitycznych jest nieszczelny (był wadliwy fabrycznie, albo układ jest źle zaprojektowany, jeśli ustalisz który możesz go wymienić na sprawny o tych samych kluczowych parametrach i zapewne low-esr, koszt to od kilkudziesięciu groszy do kilku zł oczywiście skutki wycieku należy usunąć).

Raczej nie będę podejmował tematu ale jakby ktoś chciał to mogę wrzucić na olx wraz z kilkoma innymi uszkodzynymi modułami za 0zl.

Tak dla formalności, soft OK, zamontowałem nowego sonoffa z tym samy oprogramowanie i działa ponad 2 tygodnie prawidłowo.

1 polubienie