NEWS
Daten mit Blockly trennen
-
Liebe Community,
leider habe ich im Forum noch keine Lösung für mein Problem gefunden. Ich bekomme via MQTT die Daten unseres Stromverbrauches, Netzbezug etc. Leider sind alle Werte in einem Datenpunkt. Der sieht dann so aus:
[96.02297,96.02297,null,null,null,null,null,null,null,null,null,null,null,null,null,null]
Die erste Zahl ist der Netzbezug, die zweite Zahl der Hausverbrauch. Danach folgen (bald) PV-Strom und PKW-Ladestrom. Ich hätte die Werte nun gerne in einzelne Datenpunkte aufgeteilt. Also ein Datenpunkt für Verbrauch, einen für Bezug… Kann mir jemand sagen, wie ich das umgesetzt bekomme? Am liebsten mit Blockly? Ich wäre euch unendlich dankbar für jeden Tipp!
-
-
@homoran said in Daten mit Blockly trennen:
nur als Array, kein JSON?
das ist valides JSON
https://jsonformatter.curiousconcept.com/# -
@roctions sagte in Daten mit Blockly trennen:
für jeden Tipp!
Vorschlag:
Den oberen Textbaustein durch Deinen Datenpunkt ersetzen.
Dann natürlich nicht Debug nutzen sondern jeden Wert aus der Liste in eigene DP schreiben. -
@oliverio sagte in Daten mit Blockly trennen:
das ist valides JSON
äährlisch?
ohne Bezeichner?Man lernt nie aus
EDIT:
dann müsste auch
attribut 0 von array
gehen.
array wäre die selbe Variable wie bei @djmarc75EDIT 2
Tatsächlich
-
@djmarc75 Danke! Das hat großartig funktioniert!
-
-
@djmarc75 bei Array hätte ichves auch so gemacht wie du.
ich halte die Bearbeitung als JSON nur einsichtiger (zumindest wenn Bezeichner da sind) -
Die Lesart ist zwar gewöhnungsbedürftig,
aber hier siehst du die möglichen Notationen
https://www.json.org/json-en.htmlObjekt mit {}
Array mit []
primitiv Werte ohne irgendwas drum rum wie "abc" oder 8 oder trueist alles valides JSON
-
@homoran Ein JSON kann alles sein - selbst ein einfacher String: https://de.wikipedia.org/wiki/JavaScript_Object_Notation
JSON definiert sich letztlich durch eine festgelegte Schreibweise von Datentypen. Und neben den skalaren Datentypen, gibt es auch Arrays und Objekte. Die meisten bezeichnen aber immer nur ein Objekt als JSON und das ist in meinen Augen falsch.
So ist dieser Satz kein JSON. - "Dieser Satz ist ein JSON" - da eine Zeichenkette immer in Anführungszeichen steht.
Na da war wieder einer schneller als ich.
Als Ergänzung:
Selbst Arrays sind Objekte nur sind die Zugriffseigenschaften eben durch Nummern definiert (allerdings definiert das nur Javascript so und nicht JSON) , anstelle von Objektnamen. Für Javascript ist jeder nicht skalare Typ ein Objekt, was eigentlich nicht richtig ist.
aus: https://www.w3schools.com/js/js_arrays.asp -
@homoran sagte: ohne Bezeichner?
Bei einem Array (ohne Objekte als Elemente) kann man optisch nicht zwischen dem eigentlichem Array (Typ "object") und JSON (Typ "string") unterscheiden.
-
DANKE euch allen für die Weiterbildung!
-
@homoran sagte: dann müsste auch attribut 0 von array gehen.
Ja, liefert aber ineffizienten Javascript-Code.
-
@homoran sagte in Daten mit Blockly trennen:
dann müsste auch attribut 0 von array gehen
aber nur in blockly
in javascript geht das nichta=[1,2,3,4] a[1] ->2 a["1"] ->2 a.1 -> syntax error allerdings geht auch a={0:1,1:2,2:3,3:4} a[1] ->2 a["1"] ->2 a.1 -> syntax error oder a={x0:1,x1:2,x2:3,x3:4} a.x1 ->2 a["x1"] ->2
-
@oliverio sagte: aber nur in blockly
Blockly verwendet die Funktion getAttr(), die extra für Blockly geschaffen wurde.
-
Ich bräuchte nochmal eure Hilfe. Das Trennen der letzten Daten hat super geklappt. Jetzt wollte ich es auf andere Daten aus dem selben Adapter anwenden, aber es funktioniert nicht. Hier beginnt der Datenpunkt auch mit zwei eckigen Klammern:
[[1707320,0],[1707320,0],[148568,0.002494],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]
Habt ihr hier nochmal einen Tipp für mich?
-
@roctions sagte: Habt ihr hier nochmal einen Tipp für mich?
Attribute für ersten 6 Werte: "0.0", "0.1", "1.0", "1.1", "2.0" und "2.1"