NEWS
Edit: JSON aus Objekten erstellen
-
Hallo ich habe vor mir die Werte einzelner Monate in eine JSON zu schreiben und zwar sobald sich ein Wert ändert.
Die Objekte sehen so aus.

Der Datenpunkt des JSON heißt Solar_Monate. Wie kann ich das Realisieren?
Mein erster Ansatz sah so aus:const idTable = 'Solar_Monate'; // ID JSON-Tabelle const ids = ['0_userdata.0.Haus.Energie.Zählerstände.Monate.1','0_userdata.0.Haus.Energie.Zählerstände.Monate.2','0_userdata.0.Haus.Energie.Zählerstände.Monate.3','0_userdata.0.Haus.Energie.Zählerstände.Monate.4','0_userdata.0.Haus.Energie.Zählerstände.Monate.5','0_userdata.0.Haus.Energie.Zählerstände.Monate.6','0_userdata.0.Haus.Energie.Zählerstände.Monate.7','0_userdata.0.Haus.Energie.Zählerstände.Monate.8','0_userdata.0.Haus.Energie.Zählerstände.Monate.9','0_userdata.0.Haus.Energie.Zählerstände.Monate.10','0_userdata.0.Haus.Energie.Zählerstände.Monate.11','0_userdata.0.Haus.Energie.Zählerstände.Monate.12']; var table = []; for(let i = 0; i < ids.length; i++) { table[i] = {}; table[i].Name = getObject(ids[i]).common.name; table[i].Wert = getState(ids[i]).val; } setState(idTable, JSON.stringify(table), true); on(ids, function(dp) { let idx = ids.indexOf(dp.id); table[idx].Wert = dp.state.val; setState(idTable, JSON.stringify(table), true); });Gruß Michael
-
Hallo ich habe vor mir die Werte einzelner Monate in eine JSON zu schreiben und zwar sobald sich ein Wert ändert.
Die Objekte sehen so aus.

Der Datenpunkt des JSON heißt Solar_Monate. Wie kann ich das Realisieren?
Mein erster Ansatz sah so aus:const idTable = 'Solar_Monate'; // ID JSON-Tabelle const ids = ['0_userdata.0.Haus.Energie.Zählerstände.Monate.1','0_userdata.0.Haus.Energie.Zählerstände.Monate.2','0_userdata.0.Haus.Energie.Zählerstände.Monate.3','0_userdata.0.Haus.Energie.Zählerstände.Monate.4','0_userdata.0.Haus.Energie.Zählerstände.Monate.5','0_userdata.0.Haus.Energie.Zählerstände.Monate.6','0_userdata.0.Haus.Energie.Zählerstände.Monate.7','0_userdata.0.Haus.Energie.Zählerstände.Monate.8','0_userdata.0.Haus.Energie.Zählerstände.Monate.9','0_userdata.0.Haus.Energie.Zählerstände.Monate.10','0_userdata.0.Haus.Energie.Zählerstände.Monate.11','0_userdata.0.Haus.Energie.Zählerstände.Monate.12']; var table = []; for(let i = 0; i < ids.length; i++) { table[i] = {}; table[i].Name = getObject(ids[i]).common.name; table[i].Wert = getState(ids[i]).val; } setState(idTable, JSON.stringify(table), true); on(ids, function(dp) { let idx = ids.indexOf(dp.id); table[idx].Wert = dp.state.val; setState(idTable, JSON.stringify(table), true); });Gruß Michael
@michihorn sagte: Die Objekte sehen so aus.
const idTable = '0_userdata.0.Haus.Energie.Zählerstände.Monate.Solar_Monate'; // ID JSON-TabelleBei deiner Deklaration wird das JSON in den DP "javascript.0.Solar_Monate" geschrieben, der vermutlich nicht existiert.
-
Hallo ich habe vor mir die Werte einzelner Monate in eine JSON zu schreiben und zwar sobald sich ein Wert ändert.
Die Objekte sehen so aus.

Der Datenpunkt des JSON heißt Solar_Monate. Wie kann ich das Realisieren?
Mein erster Ansatz sah so aus:const idTable = 'Solar_Monate'; // ID JSON-Tabelle const ids = ['0_userdata.0.Haus.Energie.Zählerstände.Monate.1','0_userdata.0.Haus.Energie.Zählerstände.Monate.2','0_userdata.0.Haus.Energie.Zählerstände.Monate.3','0_userdata.0.Haus.Energie.Zählerstände.Monate.4','0_userdata.0.Haus.Energie.Zählerstände.Monate.5','0_userdata.0.Haus.Energie.Zählerstände.Monate.6','0_userdata.0.Haus.Energie.Zählerstände.Monate.7','0_userdata.0.Haus.Energie.Zählerstände.Monate.8','0_userdata.0.Haus.Energie.Zählerstände.Monate.9','0_userdata.0.Haus.Energie.Zählerstände.Monate.10','0_userdata.0.Haus.Energie.Zählerstände.Monate.11','0_userdata.0.Haus.Energie.Zählerstände.Monate.12']; var table = []; for(let i = 0; i < ids.length; i++) { table[i] = {}; table[i].Name = getObject(ids[i]).common.name; table[i].Wert = getState(ids[i]).val; } setState(idTable, JSON.stringify(table), true); on(ids, function(dp) { let idx = ids.indexOf(dp.id); table[idx].Wert = dp.state.val; setState(idTable, JSON.stringify(table), true); });Gruß Michael
@michihorn sagte: Mein erster Ansatz sah so aus:
Ich würde auch die Liste ids in der Schleife erzeugen, etwa so:
const path = '0_userdata.0.Haus.Energie.Zählerstände.Monate.'; const idTable = path + 'Solar_Monate'; // ID JSON-Tabelle const ids = []; const table = []; for(let i = 0; i < 12; i++) { const id = path + (i + 1); ids[i] = id; table[i] = { Name: getObject(id).common.name, Wert: getState(id).val }; } setState(idTable, JSON.stringify(table), true); on(ids, function(dp) { let idx = ids.indexOf(dp.id); table[idx].Wert = dp.state.val; setState(idTable, JSON.stringify(table), true); }); -
@michihorn sagte: Mein erster Ansatz sah so aus:
Ich würde auch die Liste ids in der Schleife erzeugen, etwa so:
const path = '0_userdata.0.Haus.Energie.Zählerstände.Monate.'; const idTable = path + 'Solar_Monate'; // ID JSON-Tabelle const ids = []; const table = []; for(let i = 0; i < 12; i++) { const id = path + (i + 1); ids[i] = id; table[i] = { Name: getObject(id).common.name, Wert: getState(id).val }; } setState(idTable, JSON.stringify(table), true); on(ids, function(dp) { let idx = ids.indexOf(dp.id); table[idx].Wert = dp.state.val; setState(idTable, JSON.stringify(table), true); }); -
@paul53 Jetzt wäre noch interessant, die Tabelle zu aktuallisieren sobald sich einer der Werte in den Objekten 1-12 ändert.
@michihorn sagte: die Tabelle zu aktuallisieren sobald sich einer der Werte in den Objekten 1-12 ändert.
Das sollte durch den Trigger erfolgen:
on(ids, function(dp) { let idx = ids.indexOf(dp.id); table[idx].Wert = dp.state.val; setState(idTable, JSON.stringify(table), true); }); -
@michihorn sagte in JSON aus Objekten erstellen:
Hallo ich habe vor mir die Werte einzelner Monate in eine JSON zu schreiben und zwar sobald sich ein Wert ändert.
Hier habe ich u.a. genau zu solchem Vorhaben Datenstrukturen und Algorithmen entwickelt. Vielleicht hilft es dir als Ideensammlung.
Leitideen/Strategien ..
- Monatstabellen erstellen und mittels Trigger befüllen
- Diese Tabellen mittels JSON.parse ins RAM als Objekt einlesen
- Objekt mit JavaScript bearbeiten
- Anschließend Objekt mittels JSON.stringify wieder in den Objektbaum schreiben
- ..
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