Konfiguracja MQTT

Witam wszystkich

Zwracam się z prośbą o pomoc w konfiguracji ustawień Switch MQTT dla zakupionego urządzenia jak poniżej:

obraz

Urządzenie posiada możliwość komunikacji po MQTT.
Integracja z Jolką jednak nie przebiega tak łatwo, z tego co udało się ustalić i sprawdzić w działaniu:

  • po ręcznym wpisaniu nasłuchiwania Topic w integracji mqtt tj.
    /dingtian/relay1454/out/relay1
    otrzymuję zwrotnie informację o stanie przekaźnika
  • po ręcznym wpisaniu opublikuj temat:
    temat: /dingtian/relay1454/in/control
    payload: {“type”:“ON/OFF”,‘idx’:‘1’,“status”:“ON”,“time”:“0”,“pass”:“0”}
    przekaźnik zmienia stan na on, a po wpisaniu
    {“type”:“ON/OFF”,‘idx’:‘1’,“status”:“OFF”,“time”:“0”,“pass”:“0”}
    Zmienia stan na OFF.

Problem tkwi w konfiguracji pliku switch.yaml aby móc sterować powyższymi komendami za pomocą encji switch/toggle.
Próbowałem różnych konfiguracji, ale w żaden sposób nie mogłem uruchomić poprawnego działania.

Proszę o radę jak powinien wyglądać poniższy kod w switch yaml:

  • platform: mqtt
    name: SYPIALNIAMQTT
    state_topic: “/dingtian/relay1454/out/relay1”
    command_topic: “/dingtian/relay1454/in/control”
    payload_on : ON
    payload_off : OFF

Z góry dziękuję za pomoc i odpowiedź.

Pozdrawiam

To co wysyłasz wrzuć w payload_on/off.

Próbowałem poniższych konfiguracji, niestety występują błąd w kompilacji:

platform: mqtt
name: SYPIALNIAMQTT
state_topic: “/dingtian/relay1454/out/relay1”
command_topic: “/dingtian/relay1454/in/control”
payload_on : {“type”:“ON/OFF”,‘idx’:‘1’,“status”:“ON”,“time”:“0”,“pass”:“0”}
payload_off : {“type”:“ON/OFF”,‘idx’:‘1’,“status”:“OFF”,“time”:“0”,“pass”:“0”}

oraz

payload_on : “type”:“ON/OFF”,‘idx’:‘1’,“status”:“ON”,“time”:“0”,“pass”:“0”
payload_off : “type”:“ON/OFF”,‘idx’:‘1’,“status”:“OFF”,“time”:“0”,“pass”:“0”

i

payload_on : ““type”:“ON/OFF”,‘idx’:‘1’,“status”:“ON”,“time”:“0”,“pass”:“0””
payload_off : ““type”:“ON/OFF”,‘idx’:‘1’,“status”:“OFF”,“time”:“0”,“pass”:“0””

Niestety błąd wyskakuje przy każdej opcji.

Proponuję tak:
sypialniamqtt.yaml (305 bajtów)

Nie mam jak przetestować poza poprawnością zapisu, więc daj znać czy działa.

1 polubienie

!!! Działa :slight_smile: jestem winien …kawę … ostatecznie piwko :slight_smile:
Teraz muszę pobawić się włącznikami w HA bo na przycisk nie działa. A po ustawieniu w encji muszę dwa razy szybko kliknąć żeby zmienił stan.
Stanu na razie nie raportuje poprawnie.
Zgodnie z dokumentacją stan jest raportowany w postaci np:

{“idx”:”1”,”status”:”OFF”}

której Jolka nie odszyfrowuje … bo i jak.
Dokumentacja w załączniku

mqtt manual_en.pdf (201,9 KB)

Jeszcze raz bardzo dziękuję.

1 polubienie

Sterowanie ON/OFF działa bez problemu.
W jaki sposób dla poniższego topicu:
/dingtian/relay1454/out/relay1
pobrać i wyświetlić w Jolce stan przekaźnika?
informacje jakie otrzymuje przy podglądzie powyższego topicu:

{“idx”:“1”,“status”:“ON”}
oraz
{“idx”:“1”,“status”:“OFF”}

Poniższy kod nie zwraca aktualizacji sygnału zwrotnego po wysterowaniu ręcznym.

  • platform: mqtt
    name: “Office”
    unique_id: 1
    command_topic: “/dingtian/relay1454/in/control”
    state_topic: “/dingtian/relay1454/out/relay1”
    payload_on : “{‘type’:‘ON/OFF’,‘idx’:‘1’,‘status’:‘OFF’,‘time’:‘0’,‘pass’:‘0’}”
    payload_off : “{‘type’:‘ON/OFF’,‘idx’:‘1’,‘status’:‘ON’,‘time’:‘0’,‘pass’:‘0’}”
    state_on: “{‘idx’:‘1’,‘status’:‘ON’}”
    state_off: “{‘idx’:‘1’,‘status’:‘OFF’}”

Sprawdź to:
Wpisz tą linijkę:
state_value_template: “{{ value_json.status }}”
zamiast 2 linijek:
state_on: “{‘idx’:‘1’,‘status’:‘ON’}”
state_off: “{‘idx’:‘1’,‘status’:‘OFF’}”

Błąd kompilacji

Invalid config for [switch.mqtt]: [state_value_template] is an invalid option for [switch.mqtt]. Check: switch.mqtt->state_value_template. (See ?, line ?).

Przepraszam, nie wiem czemu, ale czytałem dokumentację light zamiast switch.
Użyj value_template zamiast state_value_template.

Przetestowałem to zanim napisałeś, niestety nie ma reakcji

A sprawdzałeś może czy faktycznie taki message na tym temacie jest?

value_template: “{{ value_json.status }}”
state_on: “ON”
state_off: “OFF”

Error loading /data/data/pl.sviete.dom/files/home/AIS/configuration.yaml: ‘utf-8’ codec can’t decode byte 0x93 in position 4091: invalid start byte

Zamień ręcznie znaki ".

Niestety :frowning:
Próbowałem wstawić również wstawić pełną nazwę w state

state_on: “{ ‘idx’: ‘1’, ‘status’: ‘OFF’}”

żadnej reakcji.

Jest pewien progres, po usunięciu payload zwrot informacji o stanie działa, ale oczywiście przestało działać sterowanie.

Aktualnie encja wygląda następująco:

  • platform: mqtt
    name: “Office”
    command_topic: “/dingtian/relay1454/in/control”
    state_topic: “/dingtian/relay1454/out/relay1”
    value_template: “{{ value_json.status }}”

Po dodaniu pełnej konfiguracji nie działa ani sterowanie ani raportowanie

Pełna konfiguracja nie działająca.

  • platform: mqtt
    name: “Office”
    command_topic: “/dingtian/relay1454/in/control”
    state_topic: “/dingtian/relay1454/out/relay1”
    payload_on : “{‘type’:‘ON/OFF’,‘idx’:‘1’,‘status’:‘ON’,‘time’:‘0’,‘pass’:‘0’}”
    payload_off : “{‘type’:‘ON/OFF’,‘idx’:‘1’,‘status’:‘OFF’,‘time’:‘0’,‘pass’:‘0’}”
    value_template: “{{ value_json.status }}”

@Stravi Czy masz może jakiś pomysł w jaki sposób zrealizować sterowanie oraz raportowanie ? Pod jednym switch-em raczej nie da się tego zrobić. Może dwa oddzielne switch-e jeden raportuje drugi steruje i jakaś automatyzacja, skrypt łączący to wszystko pod jeden przycisk.
Raportowanie jest niezbędne, choć by ze względów na przyszłą automatyzację.
Jeszcze raz dziękuję za dotychczasową pomoc.

Hm… problemem jest tutaj to, że do ustawiania stanu i odczytywania stanu są używane 2 różne json’y. Wg mnie implementacja HA nie przewidziała takiego scenariusza, ale może ktoś inny ma na to rozwiązanie. Moja propozycja w załączniku.
office.txt (744 bajty)

@Xylo działa? Czy może “something is no yes” :slight_smile:

@Stravi Niestety :frowning: próbowałem modyfikować otrzymany kod na różne strony. Niestety efekt jest taki sam jak poprzednio, przy wpisywaniu teoretycznie pełnego poprawnego kodu.
Raportowanie blokuje tak jak by sterowanie. Tzn można tylko uruchomić switch, wyłączyć już nie. Raportowanie nie działa w ogóle.
MQTT z HA raczej nie zagra.
Moduł posiada jeszcze dwie integracje, które można wykorzystać do komunikacji tj

  • CGI
  • Modbus TCP/UDP

Będę dziś próbował uruchomić pozostałe sposoby komunikacji.