NEWS
[Gelöst] Script um JSON erzeugen funktioniert nicht
-
Hi,
versuche mit folgendem Script ein JSON zu erzeugen. Als trigger soll der DP "ecovacs-deebot.0.status.device" dienen.
Wenn ich das script starte bekomme ich folgende Warnung angezeigt:
16:53:42.813 info javascript.0 (2842511) Start javascript script.js.common.JSON.Deebot 16:53:42.828 warn javascript.0 (2842511) at script.js.common.JSON.Deebot:9:4 16:53:42.828 warn javascript.0 (2842511) at script.js.common.JSON.Deebot:31:3 16:53:42.828 info javascript.0 (2842511) script.js.common.JSON.Deebot: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
const idTable = '0_userdata.0.JSON.Deebot'; const idRaum = 'ecovacs-deebot.0.map.lastCleanedSpotArea.spotAreaName'; const idDatumEnde ='ecovacs-deebot.0.map.lastCleanedSpotArea.dateTime'; const idFlaeche = 'ecovacs-deebot.0.cleaninglog.current.cleanedArea'; const idDauer = 'ecovacs-deebot.0.map.lastCleanedSpotArea.totalTime'; const idAktiv = 'ecovacs-deebot.0.status.device'; var table = []; if(getState(idTable).val) table = JSON.parse(getState(idTable).val); var obj = {}; var startDate = 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'); } else { obj.Ende = idDatumEnde; obj.Dauer = idDauer; obj.Flaeche = idFlaeche; obj.Raum = idRaum; log(table); table.push(obj); if(table.length > 50) table.shift(); setState(idTable, JSON.stringify(table), true); log(table); } });
Kann mir hier jemand auf die sprünge helfen?
Danke
-
@chris76e
Im Tab "Protokolle" stehen mehr Informationen zur Warnung.
Welchen Wert enthält "0_userdata.0.JSON.Deebot"?Außerdem Zeilen 20 bis 23:
obj.Ende = getState(idDatumEnde).val; obj.Dauer = getState(idDauer).val; obj.Flaeche = getState(idFlaeche).val; obj.Raum = getState(idRaum).val;
-
"0_userdata.0.JSON.Deebot" da stand "null" drin, habe jetzt [] reingeschrieben, keine Warnung mehr.
Habe auch das andere geändert, aber es wird nichts geschrieben.
der DP "ecovacs-deebot.0.status.device" kann die werte "charging", "cleaning" und "returing" annehmen. Vermute da wird nochwas faul sein. Mit dem Wert "cleanig" soll JSON anfangen und mit "charging" beenden....
-
@chris76e sagte: Mit dem Wert "cleanig" soll JSON anfangen und mit "charging" beenden....
if(dp.state.val == 'cleaning') { obj = {}; obj.Start = formatDate(new Date(), 'MM.DD.YY hh:mm'); obj.StartUhr = formatDate(new Date(), 'hh:mm'); } else if(dp.state.val == 'charging') {
-
Danke, funktioniert jetzt