Seite 1 von 1

[V3.5.1] Verschachtelte JSON-Struktur für HTTP POST generieren

Verfasst: Di Mai 09, 2023 9:56 am
von KPU78
Guten Tag,

mein Samsung Kühlschrank erlaubt es mittels HTTP Post die Soll-Temperatur von Freezer und Cooler anzupassen. Nun möchte ich die Temperatur stets um ein paar Grad heruntersetzen, sobald der Batteriespeicher voll geladen ist, um unseren Photovoltaik-Strom bestmöglich zu nutzen und die Energie in Kälte zu speichern. Sobald der Batteriespeicher wieder entladen wird, möchte ich die Temperatur wieder auf den ursprünglichen Wert zurück setzen.

Hierfür benötige ich folgendes JSON im Body der Abfrage

Code: Alles auswählen

{
    "commands": [
        {
            "component": "freezer",
            "capability": "thermostatCoolingSetpoint",
            "command": "setCoolingSetpoint",
            "arguments": [
                -20
            ]
        }
    ]
}
Gemäß Wiki-Text hätte ich gedacht, folgendermaßen ans Ziel zu kommen (der rechte Teil jeweils aus Multiplexer/String zugeführt):
Objekt 1 Selektor: commands[0].component -> "freezer"
Objekt 2 Selektor: commands[1].capability -> "thermostatCoolingSetpoint"
Objekt 3 Selektor: commands[2].command -> "setCoolingSetpoint"
Objekt 4 Selektor: commands[3].arguments[0] -> "-20"

Als Body resultiert hieraus aber nur folgendes:

Code: Alles auswählen

{
  "commands": {}
}
Kann mir jemand einen Tipp geben, wie ich vorgehen muss?

Die Möglichkeit Text/plain als Request Content-Type scheidet leider aus, da bei 30 Zeichen abgeschnitten wird.

Danke und viele Grüße
Kilian

Re: [V3.5.1] Verschachtelte JSON-Struktur für HTTP POST generieren

Verfasst: Di Mai 09, 2023 11:30 am
von Sun1453
Guten Tag Kilian,

erstmal Danke für das korrete Erstellen des Themas und der Signatur. Willkommen hier im Forum.

Ich verwende immer diese Seite: https://jsonpathfinder.com/ oder http://jsonselector.com/

Bitte mal probieren. Commands[0] sollte in deinem Fall die Werte liefern. Du brauchst also die Zahl in der Eckigen Klammer nicht hochzählen.

Re: [V3.5.1] Verschachtelte JSON-Struktur für HTTP POST generieren

Verfasst: Di Mai 09, 2023 12:36 pm
von KPU78
Hallo Michael,

danke für deine Antwort, da hatte ich in der Tat noch einen Denkfehler. Ich habe jetzt 1, 2, 3 durch 0 ersetzt, was entsprechend der vorgeschlagenen Seiten auch richtig sein sollte. Das Ergebnis bleibt leider gleich, ich bekomme weiterhin nur folgenden Body

Code: Alles auswählen

{
  "commands": {}
}
Vielleicht gibt es noch einen weiteren Tipp oder eine Idee, worin der Fehler liegen könnte?

Danke und viele Grüße
Kilian

Re: [V3.5.1] Verschachtelte JSON-Struktur für HTTP POST generieren

Verfasst: Di Mai 09, 2023 5:15 pm
von KPU78
Ich ergänze dies nochmal.

Wenn ich testweise die Erzeugung der beiden Arrays weg lasse, wird ein JSON generiert, wie ich es erwarte, d. h.
aus
Objekt 1 Selektor: commands.component -> "freezer"
Objekt 2 Selektor: commands.capability -> "thermostatCoolingSetpoint"
Objekt 3 Selektor: commands.command -> "setCoolingSetpoint"
Objekt 4 Selektor: commands.arguments -> "-20"
wird

Code: Alles auswählen

{
    "commands": {
          "component": "freezer",
          "capability": "thermostatCoolingSetpoint",
          "command": "setCoolingSetpoint",
          "arguments": "-20"
      }
 }
Erst mit den Arrays entsteht das Problem, das aus
Objekt 1 Selektor: commands[0].component -> "freezer"
Objekt 2 Selektor: commands[0].capability -> "thermostatCoolingSetpoint"
Objekt 3 Selektor: commands[0].command -> "setCoolingSetpoint"
Objekt 4 Selektor: commands[0].arguments[0] -> "-20"

eben nur

Code: Alles auswählen

{
  "commands": {}
}
entsteht.

Kann es sein, dass der Aufbau von Arrays in diesem Fall nicht richtig unterstützt wird?

Der Vollständigkeit halber:
Objekte 1-3 stehen auf "Aktualisierung des Objektwerts löst selbst KEINE Abfrage aus (wird nur zwischengespeichert)"
Objekt 4 steht auf " Wertänderung löst Abfrage mit Übergabe aller aktuellen Objektwerte aller Transaktionen aus"

Die Abfrage der aktuellen Werte des Kühlschranks mit GET funktioniert problemlos; dafür sind allerdings auch keine Arrays notwendig.

Schöne Grüße
Kilian