NEWS
Erster Versuch ein JSON zu erzeugen
-
Hier der log von 2 Abgebrochenen Durchgänge:
08:58:09.745 info javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Eco50 08:58:09.745 info javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Ready 08:58:09.746 info javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Run 08:58:09.746 info javascript.0 (3489476) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.Eco50 08:58:09.746 info javascript.0 (3489476) script.js.common.JSON.JASONSP: Eco 50° 08:58:09.918 info javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: Dishcare.Dishwasher.Program.Eco50 09:00:36.446 info javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: null 09:00:36.847 info javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Eco50 09:00:36.847 info javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Run 09:00:36.847 info javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Aborting 09:01:03.132 info javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Eco50 09:01:03.132 info javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Aborting 09:01:03.133 info javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Ready 09:09:34.041 info javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Quick65 09:09:34.042 info javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Ready 09:09:34.042 info javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Run 09:09:34.042 info javascript.0 (3489476) script.js.common.JSON.JASONSP: Dishcare.Dishwasher.Program.Quick65 09:09:34.042 info javascript.0 (3489476) script.js.common.JSON.JASONSP: Speed 65° 09:09:34.107 info javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: Dishcare.Dishwasher.Program.Quick65 09:10:56.316 info javascript.0 (3489476) script.js.common.JSON.JASONSP: aktiv: null 09:10:56.480 info javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Quick65 09:10:56.480 info javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Run 09:10:56.480 info javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Aborting 09:11:20.331 info javascript.0 (3489476) script.js.common.JSON.JASONSP: gewählt: Dishcare.Dishwasher.Program.Quick65 09:11:20.332 info javascript.0 (3489476) script.js.common.JSON.JASONSP: alter Status: BSH.Common.EnumType.OperationState.Aborting 09:11:20.332 info javascript.0 (3489476) script.js.common.JSON.JASONSP: neuer Status: BSH.Common.EnumType.OperationState.Ready
So sieht die JSON nach dem 1. aus:
[ { "Start": "06.09.22 23:48", "Programm": "Intensiv 70°", "Ende": "06.09.22 23:49" }, { "Start": "07.09.22 08:58", "Programm": "Eco 50°", "Ende": "07.09.22 09:00" } ]
und so nach dem 2.
[ { "Start": "06.09.22 23:48", "Programm": "Intensiv 70°", "Ende": "06.09.22 23:49" }, { "Start": "07.09.22 09:09", "Programm": "Speed 65°", "Ende": "07.09.22 09:10" }, { "Start": "07.09.22 09:09", "Programm": "Speed 65°", "Ende": "07.09.22 09:10" } ]
-
@chris76e
Aus dem Log erkennt man, dass "ActiveProgram" zu Beginn und zu Ende triggert - am Ende mit Wertnull
. Damit kann man das Programm vereinfachen:const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle // const idStatus = 'homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState'; // const idProg = 'homeconnect.0.011040388898000963.programs.selected.BSH_Common_Root_SelectedProgram'; const idAktiv = 'homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram'; var table = []; if(getState(idTable).val) table = JSON.parse(getState(idTable).val); var obj = {}; on(idAktiv, function(dp) { if(dp.state.val) { obj = {}; obj.Start = formatDate(new Date(), 'DD.MM.YY hh:mm'); obj.Programm = dp.common.states[dp.state.val]; } else { obj.Ende = formatDate(new Date(), 'DD.MM.YY hh:mm'); // log(table); table.push(obj); if(table.length > 10) table.shift(); setState(idTable, JSON.stringify(table), true); // log(table); } });
-
Wird immer noch überschrieben....
10:20:10.018 info javascript.0 (3489476) script.js.common.JSON.JASONSP: [{'Start':'06.09.22 23:48','Programm':'Intensiv 70°','Ende':'06.09.22 23:49'},{'Start':'07.09.22 09:09','Programm':'Speed 65°','Ende':'07.09.22 09:10'},{'Start':'07.09.22 09:09','Programm':'Speed 65°','Ende':'07.09.22 09:10'}] 10:20:10.018 info javascript.0 (3489476) script.js.common.JSON.JASONSP: [{'Start':'06.09.22 23:48','Programm':'Intensiv 70°','Ende':'06.09.22 23:49'},{'Start':'07.09.22 09:09','Programm':'Speed 65°','Ende':'07.09.22 09:10'},{'Start':'07.09.22 09:09','Programm':'Speed 65°','Ende':'07.09.22 09:10'},{'Start':'07.09.22 10:16','Programm':'Eco 50°','Ende':'07.09.22 10:20'}] 10:23:40.013 info javascript.0 (3489476) script.js.common.JSON.JASONSP: [{'Start':'06.09.22 23:48','Programm':'Intensiv 70°','Ende':'06.09.22 23:49'},{'Start':'07.09.22 09:09','Programm':'Speed 65°','Ende':'07.09.22 09:10'},{'Start':'07.09.22 09:09','Programm':'Speed 65°','Ende':'07.09.22 09:10'},{'Start':'07.09.22 10:21','Programm':'Eco 50°','Ende':'07.09.22 10:23'}] 10:23:40.013 info javascript.0 (3489476) script.js.common.JSON.JASONSP: [{'Start':'06.09.22 23:48','Programm':'Intensiv 70°','Ende':'06.09.22 23:49'},{'Start':'07.09.22 09:09','Programm':'Speed 65°','Ende':'07.09.22 09:10'},{'Start':'07.09.22 09:09','Programm':'Speed 65°','Ende':'07.09.22 09:10'},{'Start':'07.09.22 10:21','Programm':'Eco 50°','Ende':'07.09.22 10:23'},{'Start':'07.09.22 10:21','Programm':'Eco 50°','Ende':'07.09.22 10:23'}]
-
@chris76e sagte: Wird immer noch überschrieben....
Muss ich noch mal schauen.
-
Okay, kann ich aber erst heute Abend weiter testen, muss gleich zur Arbeit....
-
-
-
Brauche nochmal deine Hilfe. Möchte jetzt noch den Stromverbrauch anzeigen lassen. Habe den Wert bei Start und Ende. Wie kann ich jetzt damit rechnen?
const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle // const idStatus = 'homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState'; // const idProg = 'homeconnect.0.011040388898000963.programs.selected.BSH_Common_Root_SelectedProgram'; const idAktiv = 'homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram'; const idVerbrauch = 'sonoff.0.Spuehlmaschine.ENERGY_Total'; var table = []; if(getState(idTable).val) table = JSON.parse(getState(idTable).val); var obj = {}; on(idAktiv, function(dp) { if(dp.state.val) { obj = {}; obj.Start = formatDate(new Date(), 'MM.DD.YY hh:mm'); obj.StartUhr = formatDate(new Date(), 'hh:mm'); obj.Programm = dp.common.states[dp.state.val]; obj.StartVerbrauch = getState(idVerbrauch).val; } else { obj.Ende = formatDate(new Date(), 'MM.DD.YY hh:mm'); obj.EndeUhr = formatDate(new Date(), 'hh:mm'); obj.EndVerbrauch = getState(idVerbrauch).val; log(table); table.push(obj); if(table.length > 10) table.shift(); setState(idTable, JSON.stringify(table), true); log(table); } });
{ "Start": "10.12.22 20:00", "StartUhr": "20:00", "Programm": "Eco 50°", "StartVerbrauch": 212.794, "Ende": "10.12.22 20:08", "EndeUhr": "20:08", "EndVerbrauch": 212.796 }
-
Du möchtest die Differenz Endverbrauch - Startverbrauch?
var obj = {}; var StartVerbrauch = getState(idVerbrauch).val; on(idAktiv, function(dp) { if(dp.state.val) { obj = {}; obj.Start = formatDate(new Date(), 'MM.DD.YY hh:mm'); obj.StartUhr = formatDate(new Date(), 'hh:mm'); obj.Programm = dp.common.states[dp.state.val]; StartVerbrauch = getState(idVerbrauch).val; } else { obj.Ende = formatDate(new Date(), 'MM.DD.YY hh:mm'); obj.EndeUhr = formatDate(new Date(), 'hh:mm'); obj.Verbrauch = getState(idVerbrauch).val - StartVerbrauch; log(table); table.push(obj); if(table.length > 10) table.shift(); setState(idTable, JSON.stringify(table), true); log(table); } });
-
Ja, das klappt auch. Danke
Jetzt habe ich noch versucht die Dauer zu berrechnen, bekomme auch einen Wert in ms. Wie kann ich das in hh:mm:ss umschreiben?
const idTable = '0_userdata.0.JSON.Spülmaschiene'; // ID JSON-Tabelle // const idStatus = 'homeconnect.0.011040388898000963.status.BSH_Common_Status_OperationState'; // const idProg = 'homeconnect.0.011040388898000963.programs.selected.BSH_Common_Root_SelectedProgram'; const idAktiv = 'homeconnect.0.011040388898000963.programs.active.BSH_Common_Root_ActiveProgram'; const idVerbrauch = 'sonoff.0.Spuehlmaschine.ENERGY_Total'; var table = []; if(getState(idTable).val) table = JSON.parse(getState(idTable).val); var obj = {}; var StartVerbrauch = getState(idVerbrauch).val; var startDate = new Date(); var endDate = new Date(); on(idAktiv, function(dp) { if(dp.state.val) { obj = {}; obj.Start = formatDate(new Date(), 'MM.DD.YY hh:mm'); obj.StartUhr = formatDate(new Date(), 'hh:mm'); obj.Programm = dp.common.states[dp.state.val]; StartVerbrauch = getState(idVerbrauch).val; startDate = new Date(); } else { obj.Ende = formatDate(new Date(), 'MM.DD.YY hh:mm'); obj.EndeUhr = formatDate(new Date(), 'hh:mm'); obj.Verbrauch = getState(idVerbrauch).val - StartVerbrauch; endDate = new Date(); obj.Dauer = endDate - startDate, 'hh:mm:ss'; log(table); table.push(obj); if(table.length > 10) table.shift(); setState(idTable, JSON.stringify(table), true); log(table); } });