Hallo Sprinterfreak ,
jetzt hast du mich neugierig gemacht
Nach meiner Einschätzung sind verschiedene Design Ansätze für MQTT völlig in Ordnung. Mir persönlich ist da ein kleines JSON viel lieber als ein komplexes XML .
Ich hab mir kurz die Doku angesehen und kann dich beruhigen. Die von dir gewählte Variante 'MQTT Control' verwendet kein JSON. Dieses hättest du nur bei "RPC over MQTT" oder allen anderen RPC Calls.
Bei mir funktioniert dieser Part wie du ihn erwartest, aber dazu komme ich gleich.
Ich fange mal bei null an, um den Fehler einzugrenzen
Ich gehe davon aus, dass du 'MQTT Control' aktiviert hast und dein Prefix stimmt und MQTT aktiv verbunden ist.
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
Zum Debuggen von MQTT kannst du folgendes machen:
Installiere dir die Mosquitto-Tools oder etwas vergleichbares um den MQTT Traffic mitzulesen. Es gibt sogar einen Error Pfad auf den du subscriben kannst.
# Alles mitlesen
mosquitto_sub -h 192.168.xxx.xxx -t "shelly-hoehle/#" -u "user" -P "password"
# Nur den Error Pfad mitlesen
mosquitto_sub -h 192.168.xxx.xxx -t "shelly-hoehle/error/switch:0" -u "user" -P "password"
# weitere Pfade siehe Doku
Somit kannst du sicherstellen, dass Home Assistant die richtigen Werte übermittelt.
Dieser Befehl funktioniert zum Einschalten:
mosquitto_pub -h 192.168.xxx.xxx -t "shelly-hoehle/command/switch:0" -u "user" -P "password" -m "on"
Valide Werte für dich wären "on", "off", "toogle". Siehe hier: https://shelly-api-docs.shelly.cloud/gen2/Component…ch#mqtt-control
Wenn das alles funktioniert, kannst du die Fehlersuche auf HA eingrenzen.
Home Assistant MQTT
Hier fehlt mir im Augenblick etwas Zeit mich reinzudenken. Deshalb nur meine Gedanken, was ich kontrollieren würde.
state_value_template: "{{ iif(value_json['output'], 'true', 'false') }}"
Versuche doch erstmal nur on, off oder toggle - zum herantasten:
state_value_template: "toggle"
- Passt hier überhaupt 'iif' oder müsste es 'if' heißen? Ich weiß es nicht auswendig.
- Schicke doch mal "{{ value_json['output'] }} ab und beobachte, was du z.B. mit o.g. Tool auf der Konsole sehen kannst. Was wird hier geschickt?
Ich weiß aus eigener Erfahrung, dass diese Variablen Berechnung in dieser Double Mustache Syntax (wie heißt die eigentlich genau?) im YAML extrem frickelig ist. Da gehen einem komplett die Augen über, vor allem wenn du auch noch URL Encodierung für REST Commands dazu nimmst.
Hier an der Stelle verstehe und Teile ich dann auch deinen Frust.
Schreibe mal wie weit du gekommen bist, vielleicht kommst du ja nun schon bis zum Ziel.
Viele Grüße,
Marco