Hättste mal den Thread gelesen...
Die Zeile ist so verkehrt, dass ich mich frage, wie weit vorne ich anfangen muss...
Vermutlich sollte der Channel so aussehen (kannst Du auch in einer Zeile schreiben, so kann man aber einigermaßen gut erkennen, was Schlüsselworte und Parameternamen, und was die eigentlichen Parameterwerte sind.
Code: Alles auswählen
Type switch : sPM1_Terasse "Decke" [
stateTopic="shellyplus1pm-d4d4da082310/status/switch:0",
transformationPattern="JSONPATH:$.params.switch:0.output"
commandTopic="shellyplus1pm-d4d4da082310/rpc",
formatBeforePublish="{\"src\": \"chan_1\", \"method\": \"Switch.Set\", \"params\": {\"id\": 0,\"on\":\"%s\"}}",
off="false",
on="true"
]
Ganz wichtig: Jeder Parameterwert, der nicht rein numerisch ist, muss in Anführungszeichen stehen. das gilt hier also für alle Parameterwerte.
In welcher Reihenfolge die Paramter angegeben werden (alles zwischen den eckigen Klammern) ist egal, ich versuche aber immer, die Parameter passend zu gruppieren, hier also zuerst die Empfangsseite (
stateTopic +
transformationPattern), dann die Sendeseite (
commandTopic +
formatBeforePublish), zum Schluss die richtungsunabhängigen Parameter
off und
on)
Beim Parameter
formatBeforePublish ist ganz wichtig, dass der angegebene String selbst ebenfalls Anführungszeichen enthält. Damit diese nicht als Ende des Parameterwertes erkannt werden, müssen sie escaped werden, das passiert mit dem Backslash. Jedes Anführungszeichen im angegebenen JSON Objekt muss also so geschrieben werden
\" , nicht einfach so
". Jedes einzelne, ohne Ausnahme.
Alle Parameter werden durch ein Komma vom Vorgänger getrennt. Leerzeichen und Zeilenumbrüche sind hingegen optional.
Zwischen Parametername und Parameterwert steht ein Gleichheitszeichen.
Im
transformationPattern kommt der Teilstring "
switch:0" vor. Ich bin mir nicht sicher, ob das so in der Syntax erlaubt ist. Falls Du keinen gültigen Status empfangen kannst, kannst Du stattdessen auch
transformationPattern="JSONPATH:$.params["switch:0"]output" versuchen.
Ob die Konfiguration so tatsächlich korrekt ist, kann ich nicht sagen, da ich keine Shelly im Einsatz habe - hätte ich welche, wäre meine erste Amtshandlung, sie auf Tasmota umzuflashen, die MQTT Schnittstelle ist seit der Version 2 (?) eine Zumutung.
Ursprünglich war das mal einigermaßen menschenfreundlich gestaltet und dann wurde es kaputt optimiert.
Tasmota Thing (einfache Schaltsteckdose):
Code: Alles auswählen
Type switch : ch1 "Schalter" [ stateTopic="stat/meinDevice/POWER",commandTopic="cmnd/meinDevice/POWER"]
Und das war's. Es kann so einfach sein... Und selbstverständlich steht auf Wunsch auch ein JSON mit dem vollständigen Status zur Verfügung...