NEWS
[Hilfe] json auswerten und in Objekte scheiben
-
Hallo,
ich brech mir gerade ziemlich einen ab und befürchte es geht viel einfacher.
Ich möchte meinen 3D Drucker einbinden. Per MQTT bekomme ich die gewünschten Informationen als json.
Nun hab ich leider nur Ahnung von Blockly und mache nun dort mit "suche in Text" und "nehme Teil aus Text" und "schreibe in Objekt" die Auswertung der json Objekte. Das würde ein riesiges, unübersichtliches Blockly ergeben. Geht doch bestimmt auch einfacher und bitte bitte hilf mir einer :D
Ziele wäre es, für jede Position im json ein Objekt zu generieren und regelmäßig die Werte eintragen
Die Beitrage im Forum welche ich gefunden habe, haben mich leider nicht weiter gebracht (weil ich halt keine Ahnung hab).
Das wäre beispielhaft ein json welche als MQTT Datenpunkt ankommt:
mqtt.0.temperature.bed {"_timestamp": 1523023292, "actual": 60.0, "target": 60.0}
Also will ich darauf machen
javascript.0.Drucker3D.BedTempActual
javascript.0.Drucker3D.BedTempTarget
javascript.0.Drucker3D.BedTempTimestamp
-
Wenn der Datenpunkt "mqtt.0.temperature.bed" den JSON-String enthält, dann versuche mal
function getBedTemp() { var obj = JSON.parse(getState('mqtt.0.temperature.bed').val); setState('javascript.0.Drucker3D.BedTempActual', obj.actual, true); setState('javascript.0.Drucker3D.BedTempTarget', obj.target, true); setState('javascript.0.Drucker3D.BedTempTimestamp', obj['_timestamp'], true); } getBedTemp(); // Aufruf bei Skriptstart -
Danke, Temperaturen klappen. Der _timestamp leider nicht

18:09:39.113 [info] javascript.0 Start javascript script.js.aktiv.Drucker.test18:09:39.114 [warn] javascript.0 at getBedTemp (script.js.aktiv.Drucker.test:5:4)
18:09:39.115 [warn] javascript.0 at script.js.aktiv.Drucker.test:8:1
18:09:39.115 [info] javascript.0 script.js.aktiv.Drucker.test: registered 0 subscriptions and 0 schedules
So klappts aber auch nicht
setState('javascript.0.Drucker3D.BedTempTimestamp', obj._timestamp, true);
Den brauch ich aber glaub ich auch, da er nicht immer mit dem Zeitstempel des MQTT objects übereinstimmt und ich auch mit den unterschiedlichen timestamps Zeitdifferenzen ausrechnen will.
Edit: die states automatisch zu erzeugen, welche er in der json findet geht auch?
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden