Moduł przekaźników z ESP Home

Witam wszystkich, to mój pierwszy post na forum.
Dopiero się wdrażam w temat HA i dlatego potrzebuje pomocy w konfiguracji.

Zakupiłem poniższą płytę przekaźników:

Po połączeniu z HA niby wszystko działa, ale jest to trochę toporne rozwiązanie.
NA płycie jest 4 przekaźniki a ja mam w karcie aż 8 przełączników, 4x ON i 4x OFF.
Do tego nie mam żadnego feedbeck’u czy dany przekaźnik jest załączony czy też nie.

Chciał bym aby to wyglądało tak jak przy sterowaniu np przekaźnikami sonoff czy też po prostu włącznikami oświetlenia, że po przełączeniu, przełącznik będzie pozostawał w pozycji ON i w ten sposób będę widział jaki jest stan przekaźnika.

fragment konfiguracji:

    uart:
  baud_rate: 115200 # speed to STC15L101EW
  tx_pin: GPIO1
  rx_pin: GPIO3

switch:
  - platform: uart
    name: "A1on"
    data: [0xA0, 0x01, 0x01, 0xA2]

  - platform: uart
    name: "A1off"
    data: [0xA0, 0x01, 0x00, 0xA1]

...

Czy ktoś ma jakiś pomysł jak skonfigurować to w bardziej elegancki sposób?

dziękuję z góry i pozdrawiam
Damian

Podsumowanie

Ten tekst zostanie ukryty

Moja stara konfiguracja

# przekazniki anita espswitch1
- platform: command_line
  switches:
  
    espswitch0:
      command_on: "curl -X GET 'http://192.168.1.58/control?cmd=relay,0,1'"
      command_off: "curl -X GET 'http://192.168.1.58/control?cmd=relay,0,0'"
      #command_state: "curl -X GET 'http://192.168.1.58/control?cmd=relay/'"
      value_template: "{{ value_json.status == '1' }}"
      #value_template: '{{ value_json["espswitch0"]["state"] == "on" }}'
      #friendly_name: espswitch0
    
    espswitch1:
      command_on: "curl -X GET 'http://192.168.1.58/control?cmd=relay,1,1'"
      command_off: "curl -X GET 'http://192.168.1.58/control?cmd=relay,1,0'"
     # command_state: "curl -X GET 'http://192.168.1.58/control?cmd=relay/'"
      value_template: "{{ value_json.status == '1' }}"
      #value_template: '{{ value_json["espswitch1"]["state"] == "on" }}'
      #friendly_name: espswitch1

    espswitch2:
      command_on: "curl -X GET 'http://192.168.1.58/control?cmd=relay,2,1'"
      command_off: "curl -X GET 'http://192.168.1.58/control?cmd=relay,2,0'"
     # command_state: "curl -X GET 'http://192.168.1.58/control?cmd=relay/'"
      value_template: "{{ value_json.status == '1' }}"
      #value_template: '{{ value_json["espswitch2"]["state"] == "on" }}'
      #friendly_name: espswitch2

    espswitch3:
      command_on: "curl -X GET 'http://192.168.1.58/control?cmd=relay,3,1'"
      command_off: "curl -X GET 'http://192.168.1.58/control?cmd=relay,3,0'"
    # command_state: "curl -X GET 'http://192.168.1.58/control?cmd=relay/'"
      value_template: "{{ value_json.status == '1' }}"
      #value_template: '{{ value_json["espswitch3"]["state"] == "on" }}'
      #friendly_name: espswitch3

Inny Temat : https://forum.arturhome.pl/t/przelacznik-mqtt/1042/19
Do tych modułów można wgrać tasmote o ile pamiętam

Install ESP Easy on LCTech Wifi Relay

https://www.youtube.com/watch?v=i_CnBcQgdGk

Rozwiązanie widzę w tamtym wątku (użyte template i metoda optimistic, czyli wnoszę z tego, że STC15L101EW nie raportuje stanu przekaźników)

Swoją drogą to dość dziwaczna konstrukcja - zastosowano dodatkowy kontroler sterowany z ESP po porcie szeregowym, zamiast wykorzystać możliwości samego ESP… (ESP8266 ma wystarczającą ilość GPIO by zrealizować sterowanie “po bożemu”, ale użyto najbiedniejszy moduł ESP-01, który po prostu ma niewyprowadzone GPIO w takiej ilości).

Jeszcze jeden link z gotowym kodem

Nie przypuszczałem, że gotowce są też dostępne jako link z oficjalnej dokumentacji ESPHome, ale są i to ciekawe (jakkolwiek wymagają dodatkowych plików nagłówkowych - są też w komplecie)

https://ncrmnt.org/2019/05/05/integrating-nice-flor-s-remotes-with-homeassistant/

Tutaj jest rozwiązanie jak sterować przekaźnikami z potwierdzeniem stanu, tylko trzeba użyć jakiegoś modułu arduino lub innego i napisać krótki program do obsługi.

EDIT:
Sprawdziłem to rozwiązanie tak na szybko i wszystko działa poprawnie, mając przekaźniki z podwójną parą styków można się pokusić o hardwarową kontrolę załączenia przekaźników.

Dziękuję wszystkim za wkład,

Trochę to trwało ale przetestowałem wszystkie proponowane rozwiązania, łącznie z instalowaniem tasmoty ale najlepsze i chyba najlżejsze wydaje mi się to:

switch:
  - platform: template
    name: 'Relay 1'
    id: relay1
    turn_on_action:
      - uart.write: [0xA0, 0x01, 0x01, 0xA2]
    turn_off_action:
      - uart.write: [0xA0, 0x01, 0x00, 0xA1]
    optimistic: true
  - platform: template
    name: 'Relay 2'
    id: relay2
    turn_on_action:
      - uart.write: [0xA0, 0x02, 0x01, 0xA3]
    turn_off_action:
      - uart.write: [0xA0, 0x02, 0x00, 0xA2]
    optimistic: true

Przynajmniej na razie przy nim zostanę.
Mimo wszystko jestem pod wrażeniem mnogości rozwiązań do ESP01. Na pewno będę tego używał w przyszłości.

A czy ktoś z kolegów może ma pomysł jak przy pomocy tego modułu zrobić kartę wejść?
Chcę żeby HA reagował na podanie sygnału na określone wejście. To się bardzo przydaje przy budowie prostej automatyki sekwencyjnej.

1 polubienie

Skoro się upierasz przy ESP-01 (praktycznie każdy moduł ESP inny od ESP-01 będzie lepszy do takiego zastosowania), to będziesz potrzebował jakiegoś port expadera, można to ogarnąć np. tak:
GPIO0 → SDA
GPIO2 → SCL
oraz do wyboru jakiś dodatkowy moduł

  • na bazie Arduino (GPIO + wejścia analogowe, zależnie od użytego modułu)
  • na bazie TI ADS1115 - 4 wejścia analog
  • na bazie Semtech SX1509 (16 GPIO zamiennie z klawiaturą do max. 64 klawiszy - możliwe kombinacje np. 8GPIO + 16 klawiszy, dodatkowo jeszcze ciekawostka - na bazie tego ukłądu można też łatwo ogarnąć sterownik LED DIY, bo dysponuje wyjściami PWM, chociaż oczywiście trzeba dodać stopień mocy na każdym kanale)
  • na bazie TI PCF8574 (8 GPIO) lub PCF8575 (16GPIO)
  • na bazie Microchip MCP230xx (MCP23008 - 8 GPIO, MCP23016/ MCP23017 - 16 GPIO)
  • no i na koniec na bazie TI TCA9548A multiplekser I2C - 8 magistral I2C (umożliwia to np. użycie nawet kilku układów o tym samym adresie - po prostu podpinasz je na różnych magistralach)

oprócz tego po I2C można podpiąć równocześnie po kilka modułów/czujników o różnych adresach (a na bis - wiele z nich ma możliwość konfiguracji adresu - zwykle dostępne są 2 lub 4 różne adresy konfigurowane prze zalutowanie/rozcięcie mostka/zworki)

PS to nie są wszystkie możliwe rozwiązania w przypadku ESPHome, ale nie chciało mi się kopać po dokumentacji (a powyższe kojarzę, bo do niektórych z nich się powoli “przyczajam” :P)

1 polubienie

Nie, absolutnie się nie upieram na żadne rozwiązanie, jestem otwarty na wszelkie propozycje.
Liczyłem się z tym ze trzeba będzie dodać jakieś rozszerzenie do ESP-01, ale jeśli są już gotowe układy to nie zamierzam wynajdywać koła na nowo.

Mam parę lat zaległości w elektronice i tak na prawdę sam nie wiem co jest teraz dostępne na rynku.
Najchętniej zrobił bym to poprzez Lan a nie wifi, ale widzę ze wifi jest dużo popularniejsze wiec pewnie przy tym pozostanę

Oczywiście można na upartego ESP i podpiąć po Ethernecie (także są jakieś gotowe moduły, ale nigdy nie próbowałem tego rozwiązania).

Natomiast w kwestii ESP-01 - istotnie jest najtańszy, ale podejrzewam, że w pewnych kombinacjach (a raczej ich większości) taniej wyjdzie użyć po prostu innego modułu bazującego na ESP8266 czy nawet ESP32 w postaci płytki z wyprowadzoną potrzebną ilością GPIO i będzie to tańsze i prostsze rozwiązanie niż ESP-01 + dodatkowa płytka ekspandera (no chyba, że już masz sprzętu od groma po szufladach - u mnie np. wala się tego dość sporo po niezrealizowanych projektach, na które brakło mi zapału lub czasu, albo znalazłem inne lepsze/prostsze rozwiązanie - w ten sposób właśnie mam całą garść dotąd niewykorzystanych ESP-01, a kupionych jeszcze zanim sensowniejsze konstrukcje były dostępne, tj. jeszcze zanim pojawił się w produkcji np. SoC ESP32 :smiley: ).
Plan ich wykorzystania oczywiście jest (WLED + Hyperion na bazie RPi), tylko powstał w międzyczasie pewien istotny problem - to firmware na tyle się rozrosło, że moduł ESP-01 ma już zbyt małe zasoby (i konieczne jest rezygnowanie z wybranych funkcji lub z OTA) - to tak przy okazji w przypadku budowy bardziej rozbudowanej konstrukcji może stanowić problem również w przypadku innych modułów bazujących na ESP8266 (chociaż akurat ESPHome jest niezłym rozwiązaniem, bo domyślnie wkompilowuje tylko to co faktycznie zadeklarowaliśmy i potrzebujemy oszczędzając zasoby).