NEWS
Json-String in Objekte schreiben
-
Vielen Dank für die Unterstützung.
Habe das jetzt noch etwas angepasst, sieht nun so aus:createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Export', 0, {type: 'number', name: 'Export', unit: 'kWh', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', 0, {type: 'number', name: 'Leistung_aktuell', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', 0, {type: 'number', name: 'Leistung_L1', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', 0, {type: 'number', name: 'Leistung_L2', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', 0, {type: 'number', name: 'Leistung_L3', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', 0, {type: 'number', name: 'Spannung_L1', unit: 'V', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', 0, {type: 'number', name: 'Spannung_L2', unit: 'V', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', 0, {type: 'number', name: 'Spannung_L3', unit: 'V', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', 0, {type: 'string', name: 'Seriennummer', read: true, write: false, role: 'state'}) on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) { let obj = {}; //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object try {obj = JSON.parse(dp.state.val).sn.SM; } catch (e) { console.error('Cannot parse: ' + dp.state.val); return; } setState('0_userdata.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', obj['96_1_0'], true); });Würde das soweit passen oder gibt es noch Fehler darin?
-
Vielen Dank für die Unterstützung.
Habe das jetzt noch etwas angepasst, sieht nun so aus:createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Export', 0, {type: 'number', name: 'Export', unit: 'kWh', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', 0, {type: 'number', name: 'Leistung_aktuell', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', 0, {type: 'number', name: 'Leistung_L1', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', 0, {type: 'number', name: 'Leistung_L2', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', 0, {type: 'number', name: 'Leistung_L3', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', 0, {type: 'number', name: 'Spannung_L1', unit: 'V', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', 0, {type: 'number', name: 'Spannung_L2', unit: 'V', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', 0, {type: 'number', name: 'Spannung_L3', unit: 'V', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', 0, {type: 'string', name: 'Seriennummer', read: true, write: false, role: 'state'}) on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) { let obj = {}; //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object try {obj = JSON.parse(dp.state.val).sn.SM; } catch (e) { console.error('Cannot parse: ' + dp.state.val); return; } setState('0_userdata.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', obj['96_1_0'], true); });Würde das soweit passen oder gibt es noch Fehler darin?
ich weiß gerade nicht ob obj im Fehlerfall
{}oderundefiniedenthält. Das solltest du checken in dem du einen absichtlich Fehler erzeugst. Ansonsten siehts gut aus.Noch was kleinkarriertes, wenn du rolen benutzten willst, hier findest du die richtigen: https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/stateroles.md
-
Vielen Dank für die Unterstützung.
Habe das jetzt noch etwas angepasst, sieht nun so aus:createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Export', 0, {type: 'number', name: 'Export', unit: 'kWh', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', 0, {type: 'number', name: 'Leistung_aktuell', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', 0, {type: 'number', name: 'Leistung_L1', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', 0, {type: 'number', name: 'Leistung_L2', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', 0, {type: 'number', name: 'Leistung_L3', unit: 'W', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', 0, {type: 'number', name: 'Spannung_L1', unit: 'V', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', 0, {type: 'number', name: 'Spannung_L2', unit: 'V', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', 0, {type: 'number', name: 'Spannung_L3', unit: 'V', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', 0, {type: 'string', name: 'Seriennummer', read: true, write: false, role: 'state'}) on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) { let obj = {}; //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object try {obj = JSON.parse(dp.state.val).sn.SM; } catch (e) { console.error('Cannot parse: ' + dp.state.val); return; } setState('0_userdata.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', obj['96_1_0'], true); });Würde das soweit passen oder gibt es noch Fehler darin?
@chrischros sagte: gibt es noch Fehler darin?
Der Initialisierungswert für die Seriennummer sollte ein Leerstring sein - keine 0.
Die Rollen passen nicht. Leistung: "value.power", Spannung: "value.voltage". -
habe das Skript angepasst:
createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Export', 0, {type: 'number', name: 'Export', unit: 'kWh', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', 0, {type: 'number', name: 'Leistung_aktuell', unit: 'W', read: true, write: false, role: 'value.power'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', 0, {type: 'number', name: 'Leistung_L1', unit: 'W', read: true, write: false, role: 'value.power'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', 0, {type: 'number', name: 'Leistung_L2', unit: 'W', read: true, write: false, role: 'value.power'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', 0, {type: 'number', name: 'Leistung_L3', unit: 'W', read: true, write: false, role: 'value.power'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', 0, {type: 'number', name: 'Spannung_L1', unit: 'V', read: true, write: false, role: 'value.voltage'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', 0, {type: 'number', name: 'Spannung_L2', unit: 'V', read: true, write: false, role: 'value.voltage'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', 0, {type: 'number', name: 'Spannung_L3', unit: 'V', read: true, write: false, role: 'value.voltage'}) createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', ' ', {type: 'string', name: 'Seriennummer', read: true, write: false, role: 'state'}) on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) { let obj = {}; //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object try {obj = JSON.parse(dp.state.val).sn.SM; } catch (e) { console.error('Cannot parse: ' + dp.state.val); return; } setState('0_userdata.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', obj['96_1_0'], true); });Ist der Leerstring so richtig eingepflegt?
-
habe das Skript angepasst:
createState('0_userdata.0.Hichi_Wifi_IR.Bezug', 0, {type: 'number', name: 'Bezug', unit: 'kWh', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Export', 0, {type: 'number', name: 'Export', unit: 'kWh', read: true, write: false, role: 'value.energy'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', 0, {type: 'number', name: 'Leistung_aktuell', unit: 'W', read: true, write: false, role: 'value.power'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', 0, {type: 'number', name: 'Leistung_L1', unit: 'W', read: true, write: false, role: 'value.power'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', 0, {type: 'number', name: 'Leistung_L2', unit: 'W', read: true, write: false, role: 'value.power'}) createState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', 0, {type: 'number', name: 'Leistung_L3', unit: 'W', read: true, write: false, role: 'value.power'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', 0, {type: 'number', name: 'Spannung_L1', unit: 'V', read: true, write: false, role: 'value.voltage'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', 0, {type: 'number', name: 'Spannung_L2', unit: 'V', read: true, write: false, role: 'value.voltage'}) createState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', 0, {type: 'number', name: 'Spannung_L3', unit: 'V', read: true, write: false, role: 'value.voltage'}) createState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', ' ', {type: 'string', name: 'Seriennummer', read: true, write: false, role: 'state'}) on('mqtt.0.tasmota/discovery/3494548E85FC/sensors', function (dp) { let obj = {}; //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object try {obj = JSON.parse(dp.state.val).sn.SM; } catch (e) { console.error('Cannot parse: ' + dp.state.val); return; } setState('0_userdata.0.Hichi_Wifi_IR.Bezug', obj['1_8_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Export', obj['2_8_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_aktuell', obj['16_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L1', obj['36_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L2', obj['56_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Leistung_L3', obj['76_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L1', obj['32_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L2', obj['52_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Spannung_L3', obj['72_7_0'], true); setState('0_userdata.0.Hichi_Wifi_IR.Seriennummer', obj['96_1_0'], true); });Ist der Leerstring so richtig eingepflegt?
@chrischros sagte: Ist der Leerstring so richtig eingepflegt?
Das ist zwar ein String mit einem Leerzeichen, ist aber auch in Ordnung.
-
ich weiß gerade nicht ob obj im Fehlerfall
{}oderundefiniedenthält. Das solltest du checken in dem du einen absichtlich Fehler erzeugst. Ansonsten siehts gut aus.Noch was kleinkarriertes, wenn du rolen benutzten willst, hier findest du die richtigen: https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/stateroles.md
-
@ticaki sagte: ob obj im Fehlerfall {} oder undefinied enthält.
Das spielt keine Rolle, da
objim Fehlerfall nicht ausgewertet wird.@paul53
Recht hast du, hab das return übersehen. -
Habe nun das Skript mal aktiviert, die neuen Objekte werden erstellt aber es sind nur "0" Werte hinterlegt.
-
Habe nun das Skript mal aktiviert, die neuen Objekte werden erstellt aber es sind nur "0" Werte hinterlegt.
@chrischros sagte: es sind nur "0" Werte hinterlegt.
Nur bis zum ersten Trigger, wenn das JSON so stimmt, wie angegeben.
-
@chrischros sagte: es sind nur "0" Werte hinterlegt.
Nur bis zum ersten Trigger, wenn das JSON so stimmt, wie angegeben.
@paul53
ok, habe festgestellt, dass das Json nicht wirklich aktualisiert wird. Muss ich mal schauen woran das liegt.
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