-
Autor
Hi,
zum 2. Mal habe ich jetzt mit der neuen Firmware massive Probleme bei der Einbindung in Systeme.
Diese super unzweckmäßigen json-payloads erzwingen ein massiven Overhead für einfache Aufgaben.
Meine erste Begegnung mit dieser neuen Strukturlosen Kreation hatte ich, als ich einen Shelly 2.5 nach Defekt tauschen musste. Zum Haare raufen.
Was will ich?
Ich habe ein Shelly PLUS Plug S, dessen Relay via mqtt aus Home Assistant als switch oder fan ein und ausgeschaltet werden können soll.
Früher war das einfach (Gen 1 Shelly): Ein einfacher Switch mit Status-Rückmeldung
mqtt:
- platform: switch
unique_id: "baddehumidifier"
command_topic: shellies/shellyplug-s-BC7479/relay/0/command
state_topic: shellies/shellyplug-s-BC7479/relay/0
payload_on: "on"
payload_off: "off"
name: "Bad Entfeuchter"
icon: mdi:air-humidifier
Mit dem PLUS Plug S bekomme ich das jetzt erst nach stundenlangem probieren hin
mqtt:
- platform: fan
name: "Küche Heizung Boost Lüfter"
unique_id: kuche_heizung_boost_fan
icon: mdi:fan
command_topic: shellies/shellyplusplugs-kitchenboostfan/rpc
command_template: '{"method":"Switch.Set", "params":{"id":0,"on": {{ value }} } }'
payload_on: 'true'
payload_off: 'false'
availability_topic: shellies/shellyplusplugs-kitchenboostfan/online
payload_available: 'true'
payload_not_available: 'false'
state_topic: 'shellies/shellyplusplugs-kitchenboostfan/status/switch:0'
state_value_template: "{{ iif(value_json['output'], 'true', 'false') }}"
Alles anzeigen
Dieses ganze templating ist sowas von überflüssig. Warum kann das nicht einfach "einfach" gemacht werden, wie mqtt ursprünglich gedacht ist?
Ein Topic, ein Wert. Fertig. Super easy zu implementieren, statt jetzt irgendwelche Payloads parsen und craften zu müssen.
Das ist wie wenn man eine mysql-Tabelle mit nur einer Spalte anlegt und dann die strukturierten Daten als json-text alle in die eine Spalte schreibt.
Eine für mich wirklich nicht erklärbare Design-Entscheidung
Übrigens was in der Developer-Doku steht, funktioniert auch nicht.
https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Mqtt schreibt
> <topic_prefix>/command/<component:id> where individual components accept specific commands
In meinem Fall also:
shellies/shellyplusplugs-kitchenboostfan/command/switch:0
Ich hab versucht diverse Dinge hin zu schreiben
* on
* on,0
* true
* 1
auf nichts hat der Shelly reagiert. Auch habe ich versucht switch durch output oder relay zu ersetzen. Geht alles nicht.
Das wäre noch ein akzeptables Topic, was auch von anderen Microcontrollern aus dezentral ansprechbar wäre und in $homeassistant keine harakiri workarounds zum payload craften braucht. Und leider ist das jetzt so unnötig verfrickelt in der neuen Firmware, dass nichtmal mehr chatgpt ansatzweise durchsteigt.
hmpf. Und der neue Shelly PLUS Plug S ist nicht sonderlich gesprächig. Von den alten Shellies war ich gewohnt, dass die alle paar Sekunden mal wieder ein status-Update von sich gegeben haben. (sehr löblich)
Hat von euch das jemand hinbekommen, die neuen Shellies per mqtt anzusprechen ohne davor jedes Mal googlen zu müssen? Dieses JSON-Zeug in mqtt ist echt Krebs.