NEWS
[FEHLER] Blockly findet Objekte nicht mehr
-
Hallo,
nachdem nach langer Zeit meine Berechnungen für die PV-Anlage ändern muss, habe ich festgestellt, dass Blockly die angegebene Objekt-ID nicht mehr findet.
javascript.0 2017-06-09 14:20:57.995 info Start javascript script.js.PV-Anlage.PV-Berechnungen javascript.0 2017-06-09 14:20:57.845 error unsubscribe: invalid type of id - number javascript.0 2017-06-09 14:20:57.844 error unsubscribe: invalid type of id - number javascript.0 2017-06-09 14:20:57.843 error unsubscribe: invalid type of id - number javascript.0 2017-06-09 14:20:57.840 info Stop script script.js.PV-Berechnungen
Wenn ich sie auswähle, dann nimmt er sie. Im Log kommt dann aber obiger Fehler und die Werte werden auch nicht gesetzt.
Was nun?
Gruß Marco
-
JS Code?
-
// PV-Leistung berechnen on({id: getState("modbus.0.inputRegisters.30775_PVLeistung").val || getState("modbus.1.inputRegisters.30775_PV-Leistung").val, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("javascript.0.PV_Anlage.Werte.PVLeistung"/*PVLeistung*/, (getState("modbus.0.inputRegisters.30775_PVLeistung").val + getState("modbus.1.inputRegisters.30775_PV-Leistung").val)); }); on({id: getState("modbus.0.inputRegisters.30531_Gesamtertrag").val || getState("modbus.1.inputRegisters.30531_Gesamtertrag").val, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("javascript.0.PV_Anlage.Gesamtertrag"/*Gesamtertrag*/, (getState("modbus.0.inputRegisters.30531_Gesamtertrag").val + getState("modbus.1.inputRegisters.30531_Gesamtertrag").val), true); }); on({id: getState("modbus.0.inputRegisters.30537_Tagesertrag").val || getState("modbus.1.inputRegisters.30537_Tagesertrag").val, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("javascript.0.PV_Anlage.Tagesertrag"/*Tagesertrag*/, (getState("modbus.0.inputRegisters.30537_Tagesertrag").val + getState("modbus.1.inputRegisters.30537_Tagesertrag").val), true); });
-
// PV-Leistung berechnen on({id: getState("modbus.0.inputRegisters.30775_PVLeistung").val || ```` `
Das ist keine ID, sondern eine Funktion. Eine Oder-Verknüpfung bei on(id,…) funktioniert nicht. Vorschlag:
// PV-Leistung berechnen var leistung0 = getState("modbus.0.inputRegisters.30775_PVLeistung").val; var leistung1 = getState("modbus.1.inputRegisters.30775_PVLeistung").val; var gesamt0 = getState("modbus.0.inputRegisters.30531_Gesamtertrag").val; var gesamt1 = getState("modbus.1.inputRegisters.30531_Gesamtertrag").val; var tag0 = getState("modbus.0.inputRegisters.30537_Tagesertrag").val; var tag1 = getState("modbus.1.inputRegisters.30537_Tagesertrag").val; on("modbus.0.inputRegisters.30775_PVLeistung", function(obj) { leistung0 = obj.state.val; setState("javascript.0.PV_Anlage.Werte.PVLeistung", leistung0 + leistung1); }); on("modbus.1.inputRegisters.30775_PVLeistung", function(obj) { leistung1 = obj.state.val; setState("javascript.0.PV_Anlage.Werte.PVLeistung", leistung0 + leistung1); }); on("modbus.0.inputRegisters.30531_Gesamtertrag", function(obj) { gesamt0 = obj.state.val; setState("javascript.0.PV_Anlage.Werte.Gesamtertrag", gesamt0 + gesamt1); }); on("modbus.1.inputRegisters.30531_Gesamtertrag", function(obj) { gesamt1 = obj.state.val; setState("javascript.0.PV_Anlage.Werte.Gesamtertrag", gesamt0 + gesamt1); }); on("modbus.0.inputRegisters.30537_Tagesertrag", function(obj) { tag0 = obj.state.val; setState("javascript.0.PV_Anlage.Werte.Tagesertrag", tag0 + tag1); }); on("modbus.1.inputRegisters.30537_Tagesertrag", function(obj) { tag1 = obj.state.val; setState("javascript.0.PV_Anlage.Werte.Tagesertrag", tag0 + tag1); });
-
Hallo Paul,
das blöde ist, nutze ich ein altes Blockly-Script und baue die Funktion dort genauso ein, dann funktioniert es. Erstelle ich ein neues Script, gehts nicht.
Gruß Marco
-
nutze ich ein altes Blockly-Script und baue die Funktion dort genauso ein, dann funktioniert es. `
Das kann nicht sein ! -
So Paul,
ich gebe dir in der Sache recht. Das mit "UND" und "ODER" funktioniert nicht. Trotzdem ist der Fehler bei neuen Blockly Scripts da, dass er die Objekte nicht findet. Bei alten Scripts "vor JS-Controller 1.0.3" geht es. Das ist jetzt nur eine Vermutung mit dem JS-Controller, weil es zeitlich genau in dem Rahmen liegt.
Gruß Marco