Hallo,
Habe einen Plus 2PM auf neue Software (1.0.3) geupdated.
Lasse folgendes Skript laufen:
let Device =
{
GetInstance: function () {
let result = Object.create(Device);
result.infoarray = [];
Device.__OnStatus(null, result);
return result;;
},
__OnStatus: function (eventdata, usr_self)
{
usr_self.__OnChangeStatus("wifi",true);
},
__OnChangeStatus: function (comp, status)
{
{{this.Inform(JSON.stringify(status));}}
},
Inform: function (indata)
{
let topic = "Mytopic" ;
let tosend =
{
"info": indata,
"time": "12:23",
};
let sendpackage =
{
"_topic": topic,
"_tosend": tosend
};
this.infoarray.push(sendpackage);
print("Info 1:",JSON.stringify(sendpackage));
print("Info 2:",JSON.stringify(this));
},
};
let dev = Device.GetInstance();
print("Info 3:",JSON.stringify(dev));
print("Info 4:",typeof([]));
Alles anzeigen
Ergebnis unter 1.0.3:
Info 1: {"_topic":"Mytopic","_tosend":{"info":"true","time":"12:23"}}
Info 2: {"infoarray":[{"_topic":"Mytopic","_tosend":{"info": ... ,"time": ... }}]}
Info 3: {"infoarray":[{"_topic":"Mytopic","_tosend":{"info":"true","time":"12:23"}}]}
Info 4: object
Ergebnis unter 0.14.1:
Info 1: {"_tosend":{"time":"12:23","info":"true"},"_topic":"Mytopic"}
Info 2: {"infoarray":[{"_tosend":{"time":"12:23","info":"true"},"_topic":"Mytopic"}],"__p":{}}
Info 3: {"infoarray":[{"_tosend":{"time":"12:23","info":"true"},"_topic":"Mytopic"}],"__p":{}}
Info 4: array
Hier sind die Ergebnisse bei "Info 2" (Inhalt von info und time) und "Info4" unterschiedlich. Warum?
Unter 1.0.3 werden auch bei darauf folgenden Aufrufen mit den Daten bei "Info 2" die falschen Daten verwendet. Ein reales senden über MQTT liefert :{"info": ... ,"time": ... }
Wird die Zeile
{{this.Inform(JSON.stringify(status));}}
abgeändert auf (eine Klammerebene weg)
{this.Inform(JSON.stringify(status));}
Info: Im original Skript ist vor jeder Klammer und vor jedem Funktionsaufruf ein If statement. Das weglassen des "if"s hat aber keinen Einfluß auf das hier dargestellt Verhalten.
ist das Ergebnis unter 1.0.3:
Info 1: {"_topic":"Mytopic","_tosend":{"info":"true","time":"12:23"}}
Info 2: {"infoarray":[{"_topic":"Mytopic","_tosend":{"info":"true","time":"12:23"}}]}
Info 3: {"infoarray":[{"_topic":"Mytopic","_tosend":{"info":"true","time":"12:23"}}]}
Info 4: object
Hier ist die "Info 2" wieder richtig.
Mach ich hier was falsch, oder liegt es an der neuen Firmware?