Ich versuche einen JSON Wert via HTTP PUT zu senden, um ein Gerät zu steuern.
Dazu wählte ich ein HTTP URL Thing und habe dann einen channel damit verbunden. Das lesen des Wertes funktioniert schon. Um den Wert zu ändern, muss man ein JSON mit PUT senden. Wie macht man das?
Das folgende JSON muss als Payload im PUT Request gesendet werden. Anstatt der Zahl 0 möchte ich einen Wert mitliefern der im Stepper gesetzt wird. Reicht es hier eine commandTransformation hinzuzufügen?
Vielen Dank für die Antwort. Das löst leider mein Problem noch nicht. In der Doku steht wie man eine URL formatiert, ich möchte aber das JSON als Payload senden, nicht in der URL.
Mir sind 2 Sachen noch nicht klar.
- Wie muss der commandTransformation aussehen, damit der HTTP Request mit einem Payload gesendet wird (also nicht als URL Parameter)?
- Wie kann ich den Wert vom Stepper in den JSON-String vom Payload einfügen (evtl. mit %1$ )?
Gibt es dafür eine spezielle Transformation?
Ich habe übrigens auch schon mit einem JS probiert. Dazu habe ich im transformations-Verzeichnis eine .js Datei abgelegt und darin dann versucht mit sendHttpPutRequest(...) die Request zu senden. Aber das hat nicht geklappt. Die Funktion steht da nicht zur Verfügung.
Es gibt kein Text2JSON. Du musst einfach den String zusammen bauen. Im Beispiel ist das halt in der URL eingebaut, aber so viel Transferleistung sollte man erwarten können dass Du den erzeugten String auch direkt als Payload senden kannst.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
Danke für den Hinweis. Ich habe noch nicht verstanden, wie man dies dann in die Payload verpackt. Oder anders gesagt, welchen Transformation-Service man hier verwenden muss.