Konfiguracja MQTT

CGI nie znam, MQTT będzie lepsze, tylko musisz ogarnąć.
Działający switch już miałeś tylko bez raportowania stanu. Stwórz taki. Osobno dodaj sensor tka jak Ci podesłałem, nie wiąz go jeszcze z z switchem, napraw/popraw to co zapisałem i dopiero wtedy połącz z switchem.

Co masz na myśli połącz ze switchem?
tzn mam zostawić działający przycisk bez raportowania i dodatkowo dołączyć cały twój kod?

Zrób konfigurację taką jak Ci wysłałem ostatnio, tylko bez tej linijki:
value_template: “{{ is_state(‘sensor.office_relay’, ‘ON’) }}”

Bez niej sterowanie przekaźnikiem działa. Stan on/ off zmienia kolor ikony.
Przy zmianie ręcznie nie dział raportowanie, tak jak poprzednio
Jak połączyć ze switchem?

Dodaj jeszcze sensor do pliku sensors.yaml i zobacz czy działa odczyt stanu na tym sensorze.

Nie działa raportowanie przy ręcznym wysterowaniu przyciskiem. Tak jak pisałem wcześniej.

A przy sterowaniu przez HA sensor pokazuje stan?

Tak, zmienia się stan. Kolor ikony się zmienia.
Ale Gdy fizyczne podam masę na wejście i przekaźnik zmieni stan, HA pozostaje bez zmian.
@Stravi hehe też jestem z Gdańska :slight_smile:
Hmmm zauważyłem że sensor nie pojawia się w encjach?

To jeszcze raz:
Switch w HA - będzie się zmieniał tylko jeśli jego klikniesz w HA - zmiana fizyczna poza HA nie zaktualizuje go
po to własnie tworzymy sensor żeby aktualizować switcha niezależnie skąd następuje trigger zmiany.

Rozumiem że po dodaniu sensora do pliku sensors.yaml zrobiłeś restart lub przeładowanie sensorów?
Jakieś błędy w logach?

konfiguracja w Switch

  • platform: template
    switches:
    office:
    turn_on:
    service: mqtt.publish
    data:
    topic: “/dingtian/relay1454/in/control”
    payload: “{‘type’:‘ON/OFF’,‘idx’:‘1’,‘status’:‘ON’,‘time’:‘0’,‘pass’:‘0’}”
    turn_off:
    service: mqtt.publish
    data:
    topic: “/dingtian/relay1454/in/control”
    payload: “{‘type’:‘ON/OFF’,‘idx’:‘1’,‘status’:‘OFF’,‘time’:‘0’,‘pass’:‘0’}”

Konfiguracja w sensor

  • platform: mqtt
    name: office_relay
    state_topic: “/dingtian/relay1454/out/relay1”
    value_template: “{{ value_json.status }}”

Po przyciśnięciu przycisku w HA przekaźnik klika i zmienia stan. Działa poprawnie.
Po fizycznym wciśnięciu w przycisku na urządzeniu przekaźnik klika, ale stan się nie aktualizuje w HA. Błędne raportowanie. Rozjeżdżają się stany pomiędzy tym co w Jolce a rzeczywistością.

pm2 restart ais - robię za każdym razem.

Ok, a sensor już się pojawił w encjach?

Nie ma w encjach office_relay
Dodałem bezpośrednio sensor do pliku configuration.yaml
Sensor pojawił się w encjach, jednak samo raportowanie nadal nie działa.
Po dodaniu na pulpicie encji z office_relay jej stan się zmienia po fizycznej zmianie w urządzeniu.
Sensor poprawnie odczytuje zmiany.

To teraz dodaj skasowaną linijkę:
value_template: “{{ is_state(‘sensor.office_relay’, ‘ON’) }}”

1 polubienie

!!! Działa !!!
@Stravi Brawo TY :slight_smile:
Dziękuję bardzo za poświęcony czas i wytrwałość.

1 polubienie

Hej,
borykam sie z tym samym problemem. Dostalem link do tej konwersacji i probuje skopiowac wasze rozwiazanie. Niestety nie dziala - mam HA w wersji 2020.12.06 Moze podpwiecie jak zmodyfikowac pliki switch i sensor.
Dostaje taki blad:
Invalid config for [switch.template]: invalid slug Office (try office) for dictionary value @ data[‘switches’]. Got OrderedDict([(‘Office’, OrderedDict([(‘turn_on’, OrderedDict([(‘service’, ‘mqtt.publish’), (‘data’, OrderedDict([(‘topic’, ‘/dingtian/relay14/in/control’), (‘payload’, “{‘type’:‘ON/OFF’,‘idx’:‘1’,‘status’:‘OFF’,‘time’:‘0’,‘pass’:‘0’}”)]))])), (‘turn_off’, OrderedDict([(‘service’, ‘mqtt.publish’), (‘data’, OrderedDict([(‘topic’, ‘/dingtian/relay14/in/control’), (‘payload’, “{‘type’:‘ON/OFF’,‘idx’:‘1’,‘status’:‘ON’,‘time’:‘0’,‘pass’:‘0’}”)]))]))]))]). (See ?, line ?).

Wrzuć jako załącznik plik sensors.yaml - może oczywiście być okrojony do interesującej nas części.

  • platform: mqtt
    name: office_relay
    state_topic: “/dingtian/relay1413/out/relay1”
    value_template: “{{ value_json.status }}”

Skopiowalem go z watku. Zmienilem tylko typ relay.

  • platform: template
    switches:
    Office:
    #value_template: “{{ is_state(‘sensor.office_relay’, ‘ON’) }}”
    turn_on:
    service: mqtt.publish
    data:
    topic: “/dingtian/relay1413/in/control”
    payload: “{‘type’:‘ON/OFF’,‘idx’:‘1’,‘status’:‘OFF’,‘time’:‘0’,‘pass’:‘0’}”
    turn_off:
    service: mqtt.publish
    data:
    topic: “/dingtian/relay1413/in/control”
    payload: “{‘type’:‘ON/OFF’,‘idx’:‘1’,‘status’:‘ON’,‘time’:‘0’,‘pass’:‘0’}”

Proponuję posłuchać sugestii z błędu, pewnie nie można używać dużych liter.

Czytanie ze zrozumieniem sie klania:)

. Teraz konfiguracja jest ok ale nic sie dzieje.
Sprawdzilem MQTT i jest wyswietlany topic.