Przycisk monostabil...
 
Powiadomienia
Wyczyść wszystko

Pytanie Przycisk monostabilny w HA

8 Wpisów
3 Użytkownicy
0 Likes
4,372 Wyświetleń
(@czeslawgrochowina)
Wpisów: 5
Bywalec
Autor tematu
 

Witam.

Pewnie dla użytkowników HA mój problem jest prosty do rozwiązania, ale ja dopiero zaczynam uczyć się obsługi i natrafiłem na problem, które nie jestem w stanie sam rozwiązać. Wszystkie rozwiązania znalezione w sieci są bardzo podobne, ale nie jestem w stanie ich przerobić tak aby działały u mnie.

Mam wgrane do NodeMCU ESPEasy a w nim zdefiniowane dwa wejścia jako Input. Pod jedno z nich mam podpięty przycisk a pod drugie przekaźnik. W samym esp mam wpis w zakładce "Rules", dzięki któremu każde wciśnięcie przełącznika powoduje zmianę stanu przekaźnika. Oczywiście stany są przekazywane do HA i to działa poprawnie, ale nie mogę utworzyć kodu, który działał by tak jak chcę. Poniżej zrzut z Esp.

Esp

A tutaj z HA

KartaHA

Poniżej definicje dla tej tablicy.

Jak zamiast tych dwóch przełączników "Button" i "Button monostabile" uzyskać tylko jeden przycisk "monostabile".

Nie potrafię przerobić kodu z tego przycisku monostabilnego tak aby on załączał się po kliknięciu na chwilę i podawał impuls na Esp, czyli symulował wciśnięcie teko przycisku na ESP. 

Może ktoś z doświadczonych użytkowników mógł by pokazać jak taki kod powinien wyglądać w tym moim układzie.

sensor:
  # stan ESP 033 / Button
  - platform: mqtt
    name: "Stan Button"
    state_topic: "ESP_Easy_033_7/Button/State"

  # stan ESP 033 / Relay
  - platform: mqtt
    name: "Stan Relay"
    state_topic: "ESP_Easy_033_7/Relay/State"



switch:
  - platform: mqtt
    name: "Relay"
    state_topic: "ESP_Easy_033_7/Relay/State"
    command_topic: "ESP_Easy_033_7/Relay/State/cmd"
    payload_on: "GPIO,12,1"
    payload_off: "GPIO,12,0"
    optimistic: true
    qos: 0
    retain: true
    value_template: "{{ value.x }}"
    
  - platform: mqtt
    name: "Button"
    state_topic: "ESP_Easy_033_7/Button/State"
    command_topic: "ESP_Easy_033_7/Button/State/cmd"
    payload_on: "GPIO,14,1"
    payload_off: "GPIO,14,0"
    optimistic: true
    qos: 0
    retain: true
    value_template: "{{ value.x }}"

  - platform: template
    switches:
      skylight:
        friendly_name: "Button monostabile"
        value_template: "{{ is_state('sensor.skylight', 'on') }}"
        turn_on:
          service: switch.turn_on
          data:
            entity_id: switch.skylight_open
        turn_off:
          service: switch.turn_on
          data:
            entity_id: switch.skylight_close
 
Dodane : 13/02/2021 12:20 pm
(@mig41)
Wpisów: 615
Ekspert
 

Czyli potrzebujesz po prostu jeden switch:

<code>

- platform: mqtt
unique_id: Przelacznik
name: "Przekaznik"
state_topic: "ESP_Easy_033_7/Relay/State"
command_topic: "ESP_Easy_033_7/Relay/State/cmd"
availability_topic: "ESP_Easy_033_7/lwt"
payload_available: "connected"
payload_not_available: "disconnected"
payload_on: "GPIO,12,1"
payload_off: "GPIO,12,0"
state_on: "on"
state_off: "off"
qos: 0
retain: true

</code>

Powstawiałem to co mi mniej wiecej pasowało , trzeba zweryfikować topic lwt ( i jakie podaje informacje) , komendy sterowania .itd.

 

 
Dodane : 13/02/2021 4:59 pm
(@czeslawgrochowina)
Wpisów: 5
Bywalec
Autor tematu
 

@marcingajda

Dziękuję za odpowiedź, niestety z moim poziomem wiedzy nie jestem w stanie tego kodu dopasować. Po wpisaniu kodu dostałem nieaktywny przycisk. Co trzeba zrobić aby uzyskać z tego kodu aktywny przycisk, który po kliknięciu przekazywał impuls do Esp i po sekundzie się znowu wyłączał.

KathaHA2

 

 
Dodane : 13/02/2021 10:57 pm
(@mig41)
Wpisów: 615
Ekspert
 

No availability_topic i związane z nim payload_available i payload_not_available są do sprawdzenia. To temat ,gdzie ESPEasy po podłączeniu do MQTT podaje tzw lwt. Trzeba go podać , i podać co podaje jak ESPEasy jest podłączone , i jaka wiadomość pozostaje , jak ESPEasy się rozłącza.

 
Dodane : 13/02/2021 11:31 pm
lukas121
(@lukas121)
Wpisów: 544
Ekspert Zasłużony dla Forum Donator 2K19
 

Tak wygląda konfiguracja przycisku

  - platform: mqtt
    name: "Button"
    state_topic: "ESP_Easy_033_7/Button/State"
    command_topic: "ESP_Easy_033_7/Button/State/cmd"
    qos: 0
    payload_on: "GPIO,14,1"
    payload_off: "GPIO,14,0"
    state_on: "1"
    state_off: "0"
    retain: true

Wyłączenie przycisku musisz dodać timer w regułach espeasy

 

 
Dodane : 14/02/2021 11:13 am
(@czeslawgrochowina)
Wpisów: 5
Bywalec
Autor tematu
 

@marcingajda

 

Sprawdziłem lwt. Poniżej zrzut wyników. 

KathaHA3ab

i kod, który mam teraz. Przycisk jest już aktywny i się włącza na chwilę a potem wyłącza, tylko nie przekazuje polecenia. Chciałbym zachować ten pierwszy przycisk, który bezpośrednio załącza lub wyłącza przekaźnik, ale też dodać ten drugi przycisk, który ma podać tylko na chwilą stan niski a potem znów wyłączyć. "Button" w ESPEasy jest podciągnięty do plusa więc tam cały czas powinien być stan 1 a tylko na chwilę wciśnięcia przycisku powinien się pokazywać stan 0 (jak wyłączę podciągnięcie do 1 też nie dziła podanie impulsu). Z poziomu samego ESP działa poprawnie, czyli każde wciśnięcie powoduje przełączenie stanu przekaźnika (dokładniej jak puszczam przycisk i o takie działanie mi chodzi). 

Obserwuję w MQTT Explorer na wartości i widzę, że przychodzi s HA cały czas wartość 1. Powinno być przesłane 0 a potem 1. Czy tego nie da się zrobić bez automatyzacji ? (Dopiero będę się tego uczył, na razie mam problem z uruchomieniem Node-RED, cały czas mam niedostęny serwer HA. Muszę poszukać jak to skonfigurować).

 

switch:
  - platform: mqtt
    name: "Relay"
    state_topic: "ESP_Easy_033_7/Relay/State"
    command_topic: "ESP_Easy_033_7/Relay/State/cmd"
    payload_on: "GPIO,12,1"
    payload_off: "GPIO,12,0"
    optimistic: true
    qos: 0
    retain: true
    value_template: "{{ value.x }}"

  - platform: mqtt
    unique_id: Przelacznik
    name: "Przekaznik"
    state_topic: "ESP_Easy_033_7/Button/State"
    command_topic: "ESP_Easy_033_7/Button/State/cmd"
    availability_topic: "ESP_Easy_033_7/status/LWT"
    payload_available: "Connected"
    payload_not_available: "Connection Lost"
    payload_on: "GPIO,14,1"
    payload_off: "GPIO,14,0"
    state_on: "on"
    state_off: "off"
    qos: 0
    retain: true
 
Dodane : 14/02/2021 2:30 pm
(@mig41)
Wpisów: 615
Ekspert
 

Ok , mam nadzieję ,że ESPEasy reaguje na sterowanie przyciskiem przez MQTT ( a nie tylko fizyczną zmianę stanu). Może trzeba sterować bezpośrednio stycznikiem , tak jak to @lukas121 pisał.

Skoro stan 0 GPIO14 powoduje załączenie przycisku , to zamień odpowiednie linie:

 

payload_on: "GPIO,14,0"
payload_off: "GPIO,14,1"

Dodatkowo widzę ,że topic ESP_Easy_033_7/Button/State ma wartości albo 0 albo pewnie 1 ,więc to też trzeba zmienić:

state_on: "1"
state_off: "0"

 

 

 
Dodane : 14/02/2021 4:19 pm
(@czeslawgrochowina)
Wpisów: 5
Bywalec
Autor tematu
 

@marcingajda

Na razie zostawię tak jak poniżej. Polecenie jest przekazywane, tylko trzeba kliknąć dwa razy na przełącznik i wtedy działa poprawnie. Niezależnie of stanów tych przełączników gdy kliknę na przycisk w ESP to przełączy się stan na przeciwny. Do testów, które chcę robić, to mi na razie wystarczy.

  - platform: mqtt
    unique_id: Przelacznik
    name: "Przekaznik"
    state_topic: "ESP_Easy_033_7/Button/State"
    command_topic: "ESP_Easy_033_7/Button/State/cmd"
    availability_topic: "ESP_Easy_033_7/status/LWT"
    payload_available: "Connected"
    payload_not_available: "Connection Lost"
    payload_on: "GPIO,14,1"
    payload_off: "GPIO,14,0"
    state_on: "1"
    state_off: "0"
    qos: 0
    retain: true
 
Dodane : 15/02/2021 12:01 am
Udostępnij: