NEWS
Eigenen JSON output für SimpleAPI erzeugen
-
Hallo zusammen,
ich versuche gerade einen eignen JSON output mit mehreren Werten zu erstellen und über den SimpleAPI Adapter abzufragen. Ziel soll es sein, dass wenn ich über SimpleAPI eine Anfrage an den JSON Datenpunkt stelle, ich als Antwort eine richtig formatierte JSON bekomme.
Aktuell habe ich es so versucht, dass ich einen Text in Blockly mit dem Inhalt der JSON erstelle und diesen zu einem JSON konvertiere. Leider ist die Antwort-JSON so aber falsch formatiert und wird auch nicht als JSON im Browser erkannt.
Im Prinzip möchte ich als Antwort eine JSON die so aussieht und auch im Browser als JSON erkannt wird.:
{ "Wert1": *Wert von Objekt ID 1*, "Wert2": *Wert von Objekt ID 2* }
Leider komme ich einfach nicht weiter wie ich alles einstellen muss.
Kann mir jemand helfen?Gruss Chris
-
Hab es gerade herausgefunden...
An das Ende der SimpleAPI URL muss ?json, dann funktioniert es.Dafür erhalte ich in der Blockly Log des Skripts nun folgenden Warn, immer wenn das Skipt ausgelöst wird:
at Object.<anonymous> (script.js.simpleapi_json.homepage.iobroker_admin:5:3)
-
@el-lutschi sagte in Eigenen JSON output für SimpleAPI erzeugen:
immer wenn das Skipt ausgelöst wird:
und was steht bei 5:3 in dem Script?
-
@homoran
Wo genau muss ich danach suchen? Ich bin mir gerade nicht sicher. Im Blockly Export? Oder im Blockly->Javascript? -
@el-lutschi sagte in Eigenen JSON output für SimpleAPI erzeugen:
im Blockly->Javascript?
aber nicht konvertieren, sondern nur als js Anzeigen
-
@homoran
Danke.schedule("* * * * *", async () => { setState('javascript.0.variables.simple_api.homepage.json' /* simple_api.homepage.json */, JSON.stringify((['{"updates": "',getState('admin.0.info.updatesNumber').val,'", "test": "',getState('octoprint.0.printing').val,'"}'].join('')))); console.info(getState('javascript.0.variables.simple_api.homepage.json').val); }); //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRm.......
-
@el-lutschi
ist das alles?
zeig mal das Blockly als Screenshothast du Skripte unter "global"?
-
@homoran
Ja, das ist alles was drin steht.
Ich wüsste nicht, dass ich globale Skripte habe. -
@el-lutschi sagte in Eigenen JSON output für SimpleAPI erzeugen:
Ich wüsste nicht, dass ich globale Skripte habe.
Nachsehen!
-
@el-lutschi Niemand baut JSON-Strings manuell zusammen. Nimm doch bitte die neuen Objekt-Blöcke und erstelle ein neues Objekt mit den gewünschten Eigenschaften.
Und ein "Objekt zu JSON" brauchst Du deinem Fall ja auch nicht mehr, weil Du ja schon einen JSON-String hast.
-
@homoran
Nein, ich habe keine.
Screenshot:
@haus-automatisierung
Klingt interessant. Wie benutzt man die? -
@el-lutschi sagte in Eigenen JSON output für SimpleAPI erzeugen:
Screenshot:
Fehler wird, wie @haus-automatisierung schrieb, an dem Versuch der Konvertierung eines nicht vorhandenen Objekts liegen
-
@el-lutschi sagte in Eigenen JSON output für SimpleAPI erzeugen:
Klingt interessant. Wie benutzt man die?
Hab ich zwar schon zig mal ausführlichst mit Beispielen in Videos erklärt, aber die grundlegende Idee.
-
@haus-automatisierung
Super. Ich danke euch vielmals.
Das einzige was nun noch nicht passt ist, dass die Werte nicht in "" stehen{"update":9,"test":false}
Dies erwartet aber der Service, der die JSON ausliest.
-
@el-lutschi sagte in Eigenen JSON output für SimpleAPI erzeugen:
Das einzige was nun noch nicht passt ist, dass die Werte nicht in "" stehen
Warum sollten sie auch? Für number und boolean ist das so richtig im JSON.
-
@haus-automatisierung sagte in Eigenen JSON output für SimpleAPI erzeugen:
Für number und boolean ist das so richtig im JSON.
@el-lutschi sagte in Eigenen JSON output für SimpleAPI erzeugen:
Dies erwartet aber der Service, der die JSON ausliest.
dann arbeitet der falsch und verwendet nur Strings.
Dann versuche die "Wert von..." Blöcke mit "nach Text" zu konvertieren
-
@homoran
Super. Durch eure Tipps bin ich zur Lösung gekommen. Ich konnte in meinem Service auch das Format konfigurieren und mein getestetes boolean wird gar nicht erst unterstützt. Dieses konnte ich aber durch den Tipp mit dem umwandeln in Text lösen.Wieder was gelernt. Ich danke euch.