NEWS
Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x
-
@Thomas-Braun
kannte ich bereits, aber viel schlauer hats mich nicht gemacht. Problem ist auch, dass sich ein Laie unterm normalen User sehr schnell angewöhnt, eh alles mit sudo auszuführen und ich denke, da sollte man eher mal drauf hinweisen, dass das eben auch ne blöde Idee ist. -
Ich kann mir einen Grund vorstellen, warum es mit JS-Controller 2.x läuft und mit 3.x Probleme gibt. Ab js-controller 3.x führen Fehler, die auftreten und nicht behandelt werden zum beenden des Adapters.
Das Fehler in einzelnen Skripten den javascript adapter crashen, finde ich dabei allerdings nicht so prickelnd. Hm. -
@Garfonso sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
Ich kann mir einen Grund vorstellen, warum es mit JS-Controller 2.x läuft und mit 3.x Probleme gibt. Ab js-controller 3.x führen Fehler, die auftreten und nicht behandelt werden zum beenden des Adapters.
Das klingt nach dem was bei mir passiert
@Garfonso sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
Das Fehler in einzelnen Skripten den javascript adapter crashen, finde ich dabei allerdings nicht so prickelnd. Hm.
Ich auch nicht. Aber wir grenzen ja das Problem ein. Alte Scripte, die jetzt Fehlerhaft sind.
-
@AxelF1977 wenn du einmal die fehlerhaften Skripte (ausgenommen Blocky) hier posten könntest, dann könnte man da mal draufschauen.
-
@J-A-R-V-I-S sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
@AxelF1977 wenn du einmal die fehlerhaften Skripte (ausgenommen Blocky) hier posten könntest, dann könnte man da mal draufschauen.
"Nur" die wo es error gibt im log oder auch warnings?
-
@AxelF1977
fang mal mit error an.
Am besten die, die oben in den logs die Fehler erzeugt haben. -
@Garfonso sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
@AxelF1977
fang mal mit error an.
Am besten die, die oben in den logs die Fehler erzeugt haben.ok, zu diesen Fehlern
javascript.0 2020-05-03 18:19:35.039 error (28611) at script.js.Schwellwerte.Schwellwerte:754:1 javascript.0 2020-05-03 18:19:35.039 error (28611) at dpAnlegen (script.js.Schwellwerte.Schwellwerte:684:9) javascript.0 2020-05-03 18:19:35.039 error (28611) ReferenceError: logs is not defined javascript.0 2020-05-03 18:19:35.039 error (28611) ^ javascript.0 2020-05-03 18:19:35.039 error (28611) logs(pfad + schwellwerte[geraet].datenpunkt + " wurde angelegt","debug"); javascript.0 2020-05-03 18:19:35.038 error (28611) script.js.Schwellwerte.Schwellwerte: script.js.Schwellwerte.Schwellwerte:684
ist dass das Script
// todo: onAnlegen() Funktion in Funktion var loglevel = "warn"; // Loglevel des Scriptes (debug,info,warn,error) - benutzt die Funktion logs() var pfad = "Schwellwerte."; // ----------------------------------------------------------------------------- // Datenpunkte, für die Schwellwerte angelegt werden sollen // ----------------------------------------------------------------------------- // datenpunkt: Name des Datenpunkt für die Schwellwerte // liste: Verweis auf die entspechende Schwellwerteliste in diesem Script var schwellwerte = { "hm-rpc.3.0001D8A98C373C.6.POWER" : { "datenpunkt": "Strom.Fernseher.Nik", "liste": "wattFernseherNik" }, "hm-rpc.2.LEQ0847294.4.ACTUAL_TEMPERATURE"/*Nik Klima.TEMPERATURE*/ : { "datenpunkt": "Klima.Temperatur.Nik", "liste": "raumKlimaTemperatur" }, "hm-rpc.2.KEQ0509273.4.ACTUAL_TEMPERATURE"/*Küche Klima.TEMPERATURE*/ : { "datenpunkt": "Klima.Temperatur.Küche", "liste": "raumKlimaTemperatur" }, "hm-rpc.2.LEQ0999580.1.TEMPERATURE"/*Theo:1.TEMPERATURE*/ : { "datenpunkt": "Klima.Temperatur.Theo", "liste": "raumKlimaTemperatur" }, "hm-rpc.2.MEQ1587955.4.ACTUAL_TEMPERATURE"/*Wohnzimmer Klima.TEMPERATURE*/ : { "datenpunkt": "Klima.Temperatur.Wohnzimmer", "liste": "raumKlimaTemperatur" }, "hm-rpc.2.OEQ0578299.1.TEMPERATURE"/*Schlafzimmer Klima:1.TEMPERATURE*/ : { "datenpunkt": "Klima.Temperatur.Schlafzimmer", "liste": "raumKlimaTemperatur" }, "hm-rpc.2.OEQ0578951.1.TEMPERATURE"/*Bad Klima.TEMPERATURE*/ : { "datenpunkt": "Klima.Temperatur.Bad", "liste": "raumKlimaTemperatur" }, "hm-rpc.2.OEQ0578951.1.HUMIDITY"/*Bad Klima.HUMIDITY*/ : { "datenpunkt": "Klima.Luftfeuchtigkeit.Bad", "liste": "raumKlimaLuftfeuchtigkeit" }, "hm-rpc.2.OEQ0578299.1.HUMIDITY"/*Schlafzimmer Klima:1.HUMIDITY*/ : { "datenpunkt": "Klima.Luftfeuchtigkeit.Schlafzimmer", "liste": "raumKlimaLuftfeuchtigkeit" }, "hm-rpc.2.LEQ0999580.1.HUMIDITY"/*Theo Klima.HUMIDITY*/ : { "datenpunkt": "Klima.Luftfeuchtigkeit.Theo", "liste": "raumKlimaLuftfeuchtigkeit" }, "hm-rpc.2.OEQ1016368.1.TEMPERATURE"/*Balkon gr. Klima:1.TEMPERATURE*/ : { "datenpunkt": "Klima.Temperatur.Balkon", "liste": "draussenKlimaTemperatur" }, "hm-rpc.2.OEQ1016368.1.HUMIDITY"/*Balkon gr. Klima:1.HUMIDITY*/ : { "datenpunkt": "Klima.Luftfeuchtigkeit.Balkon", "liste": "raumKlimaLuftfeuchtigkeit" }, "hm-rpc.2.OEQ0700027.1.HUMIDITY"/*Küche Klima.HUMIDITY*/ : { "datenpunkt": "Klima.Luftfeuchtigkeit.Küche", "liste": "raumKlimaLuftfeuchtigkeit" }, "hm-rpc.2.OEQ0699199.1.HUMIDITY"/*Nik Klima.HUMIDITY*/ : { "datenpunkt": "Klima.Luftfeuchtigkeit.Nik", "liste": "raumKlimaLuftfeuchtigkeit" }, "hm-rpc.2.OEQ0699871.1.HUMIDITY"/*Wohnzimmer Klima.HUMIDITY*/ : { "datenpunkt": "Klima.Luftfeuchtigkeit.Wohnzimmer", "liste": "raumKlimaLuftfeuchtigkeit" } }; //load2core // ----------------------------------------------------------------------------- // Schwellwertelisten // ----------------------------------------------------------------------------- var liste = { "raumKlimaTemperatur": { "obereGrenzeBezeichnung": "sehr heiss", "obereGrenzeZahl": 4, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 15, "bezeichnung": "kalt", "zahl": -2, "color": "white", "backgroundColor": "dodgerblue" }, {"wert": 18, "bezeichnung": "kühl", "zahl": -1, "color": "black", "backgroundColor": "deepskyblue" }, {"wert": 22, "bezeichnung": "normal", "zahl": 0, "color": "black", "backgroundColor": "lime" }, {"wert": 24, "bezeichnung": "warm", "zahl": 1, "color": "black", "backgroundColor": "limegreen" }, {"wert": 26, "bezeichnung": "warm", "zahl": 2, "color": "black", "backgroundColor": "orange" }, {"wert": 30, "bezeichnung": "sehr warm", "zahl": 3, "color": "black", "backgroundColor": "orangered" } ] }, "raumKlimaLuftfeuchtigkeit": { "obereGrenzeBezeichnung": "Schimmel", "obereGrenzeZahl": 3, "ogColor": "white", "ogBackgroundColor": "dodgerblue", "schwellwerte": [ {"wert": 37, "bezeichnung": "trocken", "zahl": -1, "color": "black", "backgroundColor": "orange" }, {"wert": 60, "bezeichnung": "normal", "zahl": 0, "color": "black", "backgroundColor": "lime" }, {"wert": 70, "bezeichnung": "feucht", "zahl": 1, "color": "black", "backgroundColor": "deepskyblue" } ] }, "draussenKlimaTemperatur": { "obereGrenzeBezeichnung": "sehr heiss", "obereGrenzeZahl": 3, "ogColor": "white", "ogBackgroundColor": "orangered", "schwellwerte": [ {"wert": 0, "bezeichnung": "eisig", "zahl": -2, "color": "white", "backgroundColor": "dodgerblue" }, {"wert": 4, "bezeichnung": "kalt", "zahl": -1, "color": "black", "backgroundColor": "deepskyblue" }, {"wert": 12, "bezeichnung": "kühl", "zahl": -1, "color": "black", "backgroundColor": "#94fff4" }, {"wert": 18, "bezeichnung": "lauwarm", "zahl": 0, "color": "black", "backgroundColor": "#9dfd9d" }, {"wert": 24, "bezeichnung": "kühl", "zahl": 0, "color": "black", "backgroundColor": "limegreen" }, {"wert": 30, "bezeichnung": "warm", "zahl": 1, "color": "black", "backgroundColor": "orange" }, {"wert": 35, "bezeichnung": "warm", "zahl": 2, "color": "black", "backgroundColor": "orange" } ] }, "wattFernseherNik": { "obereGrenzeBezeichnung": "Fernseher an", "obereGrenzeZahl": 3, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 0, "bezeichnung": "Alles aus", "zahl": 0, "color": "black", "backgroundColor": "lime" }, {"wert": 20, "bezeichnung": "Standby OK", "zahl": 1, "color": "black", "backgroundColor": "limegreen" }, {"wert": 50, "bezeichnung": "Standby ohne Sub", "zahl": 1, "color": "black", "backgroundColor": "yellow" }, {"wert": 100, "bezeichnung": "TV aus, Sub noch an", "zahl": 2, "color": "black", "backgroundColor": "orange" } ] }, "wattUSV": { "obereGrenzeBezeichnung": "hoher Verbrauch", "obereGrenzeZahl": 3, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 0, "bezeichnung": "Alles aus", "zahl": -1, "color": "white", "backgroundColor": "red" }, {"wert": 60, "bezeichnung": "optimierter Verbrauch", "zahl": 0, "color": "black", "backgroundColor": "lime" }, {"wert": 80, "bezeichnung": "niedriger Verbrauch", "zahl": 1, "color": "black", "backgroundColor": "limegreen" }, {"wert": 110, "bezeichnung": "normaler Verrauch", "zahl": 1, "color": "black", "backgroundColor": "yellow" }, {"wert": 120, "bezeichnung": "erhöhter Verbrauch", "zahl": 2, "color": "black", "backgroundColor": "orange" } ] }, "wattSonos": { "obereGrenzeBezeichnung": "hoher Verbrauch", "obereGrenzeZahl": 3, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 0, "bezeichnung": "Sonos aus", "zahl": 0, "color": "black", "backgroundColor": "lime" }, {"wert": 9, "bezeichnung": "Standby", "zahl": 1, "color": "black", "backgroundColor": "yellow" }, {"wert": 20, "bezeichnung": "Sonos ist an", "zahl": 2, "color": "black", "backgroundColor": "orange" } ] }, "wattEsxi": { "obereGrenzeBezeichnung": "sehr hoch", "obereGrenzeZahl": 3, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 13, "bezeichnung": "normal", "zahl": 0, "color": "black", "backgroundColor": "lime" }, {"wert": 14, "bezeichnung": "erhöht", "zahl": 1, "color": "black", "backgroundColor": "yellow" }, {"wert": 15, "bezeichnung": "hoch", "zahl": 2, "color": "black", "backgroundColor": "orange" } ] }, "sonosVol": { "obereGrenzeBezeichnung": "sehr laut", "obereGrenzeZahl": 5, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 0, "bezeichnung": "aus", "zahl": 0, "color": "black", "backgroundColor": "lime" }, {"wert": 9, "bezeichnung": "leise", "zahl": 1, "color": "black", "backgroundColor": "limegreen" }, {"wert": 40, "bezeichnung": "normal", "zahl": 2, "color": "black", "backgroundColor": "rgb(204,204,204)" }, {"wert": 50, "bezeichnung": "etwas lauter", "zahl": 3, "color": "black", "backgroundColor": "yellow" }, {"wert": 60, "bezeichnung": "laut", "zahl": 4, "color": "black", "backgroundColor": "orange" } ] }, "windstaerke": { "obereGrenzeBezeichnung": "Orkan", "obereGrenzeZahl": 12, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 1, "bezeichnung": "Windstill", "zahl": 0, "color": "black", "backgroundColor": "rgb(204,204,204)" }, {"wert": 5, "bezeichnung": "leiser Zug", "zahl": 1, "color": "black", "backgroundColor": "rgb(204,204,204)" }, {"wert": 11, "bezeichnung": "leichte Briese", "zahl": 2, "color": "black", "backgroundColor": "rgb(204,204,204)" }, {"wert": 19, "bezeichnung": "schwacher Wind", "zahl": 3, "color": "black", "backgroundColor": "rgb(204,204,204)" }, {"wert": 28, "bezeichnung": "mäßiger Wind", "zahl": 4, "color": "black", "backgroundColor": "rgb(204,204,204)" }, {"wert": 38, "bezeichnung": "frischer Wind", "zahl": 5, "color": "black", "backgroundColor": "rgb(204,204,204)" }, {"wert": 49, "bezeichnung": "starker Wind", "zahl": 6, "color": "black", "backgroundColor": "yellow" }, {"wert": 61, "bezeichnung": "steifer Wind", "zahl": 7, "color": "black", "backgroundColor": "gold" }, {"wert": 74, "bezeichnung": "stürmischer Wind", "zahl": 8, "color": "black", "backgroundColor": "orange" }, {"wert": 88, "bezeichnung": "Sturm", "zahl": 9, "color": "black", "backgroundColor": "darkorange" }, {"wert": 102, "bezeichnung": "schwerer Sturm", "zahl": 10, "color": "black", "backgroundColor": "red" }, {"wert": 88, "bezeichnung": "orkanartiger Sturm", "zahl": 11, "color": "white", "backgroundColor": "darkorange" } ] }, "hdFreiProzent": { "obereGrenzeBezeichnung": "voll", "obereGrenzeZahl": 4, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 85, "bezeichnung": "viel frei", "zahl": 0, "color": "black", "backgroundColor": "lime" }, {"wert": 90, "bezeichnung": "gut", "zahl": 1, "color": "black", "backgroundColor": "limegreen" }, {"wert": 95, "bezeichnung": "erhöht", "zahl": 2, "color": "black", "backgroundColor": "yellow" }, {"wert": 98, "bezeichnung": "fast voll", "zahl": 3, "color": "black", "backgroundColor": "orange" } ] }, "uv-index": { "obereGrenzeBezeichnung": "UV Index nicht bekannt", "obereGrenzeZahl": 0, "ogColor": "gray", "ogBackgroundColor": "rgb(204,204,204)", "schwellwerte": [ {"wert": 2, "bezeichnung": "keine bis gering, UV Schutz nicht erforderlich", "zahl": 0, "color": "black", "backgroundColor": "rgb(204,204,204)" }, {"wert": 5, "bezeichnung": "mittel, UV Schutz sehr empfehlenswert", "zahl": 1, "color": "black", "backgroundColor": "rgb(204,204,204)" }, {"wert": 7, "bezeichnung": "hoch, UV Schutz erforderlich", "zahl": 2, "color": "red", "backgroundColor": "yellow" }, {"wert": 10, "bezeichnung": "sehr hoch, UV Schutz unbedingt erforderlich", "zahl": 3, "color": "black", "backgroundColor": "orange" }, {"wert": 99, "bezeichnung": "extrem, UV Schutz ist ein muss", "zahl": 4, "color": "white", "backgroundColor": "red" } ] }, "updates": { "obereGrenzeBezeichnung": "viele Updates", "obereGrenzeZahl": 4, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 0, "bezeichnung": "Alles aktuell", "zahl": 0, "color": "black", "backgroundColor": "lime" }, {"wert": 3, "bezeichnung": "Update verfügbar", "zahl": 1, "color": "black", "backgroundColor": "yellow" }, {"wert": 5, "bezeichnung": "updates verfügbar", "zahl": 2, "color": "black", "backgroundColor": "orange" }, {"wert": 10, "bezeichnung": "mehrere updates", "zahl": 3, "color": "black", "backgroundColor": "darkorange" } ] }, "load2core": { "obereGrenzeBezeichnung": "Überlast", "obereGrenzeZahl": 5, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 0.5, "bezeichnung": "Last niedrig", "zahl": 0, "color": "black", "backgroundColor": "lime" }, {"wert": 1.0, "bezeichnung": "Last norrmal", "zahl": 1, "color": "black", "backgroundColor": "limegreen" }, {"wert": 1.2, "bezeichnung": "erhöhte Last", "zahl": 2, "color": "black", "backgroundColor": "yellow" }, {"wert": 1.6, "bezeichnung": "Hohe Last", "zahl": 3, "color": "black", "backgroundColor": "orange" }, {"wert": 2.0, "bezeichnung": "sehr hohe Last", "zahl": 4, "color": "black", "backgroundColor": "darkorange" } ] }, "load1core": { "obereGrenzeBezeichnung": "Überlast", "obereGrenzeZahl": 5, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 0.4, "bezeichnung": "Last niedrig", "zahl": 0, "color": "black", "backgroundColor": "lime" }, {"wert": 0.6, "bezeichnung": "Last norrmal", "zahl": 1, "color": "black", "backgroundColor": "limegreen" }, {"wert": 0.7, "bezeichnung": "erhöhte Last", "zahl": 2, "color": "black", "backgroundColor": "yellow" }, {"wert": 0.8, "bezeichnung": "Hohe Last", "zahl": 3, "color": "black", "backgroundColor": "orange" }, {"wert": 1.0, "bezeichnung": "sehr hohe Last", "zahl": 4, "color": "black", "backgroundColor": "darkorange" } ] }, "alarme": { "obereGrenzeBezeichnung": "Alarme stehen an", "obereGrenzeZahl": 1, "ogColor": "white", "ogBackgroundColor": "red", "schwellwerte": [ {"wert": 0, "bezeichnung": "keine Alarme", "zahl": 0, "color": "black", "backgroundColor": "lime" } ] }, "gruenGelb": { "obereGrenzeBezeichnung": "erhöht", "obereGrenzeZahl": 1, "ogColor": "black", "ogBackgroundColor": "yellow", "schwellwerte": [ {"wert": 0, "bezeichnung": "normal", "zahl": 0, "color": "black", "backgroundColor": "lime" } ] } }; /* UV-Index Gefährdung (UV-Gefahrenindex Schutzmaßnahmen 0-2 keine bis gering nicht erforderlich 3-5 mittel sehr empfehlenswert 6-7 hoch erforderlich 8-10 sehr hoch unbedingt erforderlich ab 11 extrem sind ein Muss */ function dpAnlegen() { for (var geraet in schwellwerte) { createState(pfad + schwellwerte[geraet].datenpunkt + ".text","initalisiert"); createState(pfad + schwellwerte[geraet].datenpunkt + ".zahl",0); createState(pfad + schwellwerte[geraet].datenpunkt + ".color","black"); createState(pfad + schwellwerte[geraet].datenpunkt + ".backgroundColor","silver"); logs(pfad + schwellwerte[geraet].datenpunkt + " wurde angelegt","debug"); } } //var reg = new RegExp("^javascript\\.\\d+\\." + hueSzenenApapterPfad.replace('.', '\\.') + ".*\\.szene"); //on(reg , function (obj) { function setSchwellwerte(obj) { if(liste[schwellwerte[obj.id].liste]){ //log("Liste: " + schwellwerte[obj.id].liste); logs("Anzahl Schwellwerte: " + liste[schwellwerte[obj.id].liste].schwellwerte.length),"debug"; //var schwellwerteListe = liste var bezeichnung = liste[schwellwerte[obj.id].liste].obereGrenzeBezeichnung; var zahl = liste[schwellwerte[obj.id].liste].obereGrenzeZahl; var color = liste[schwellwerte[obj.id].liste].ogColor; var backgroundColor = liste[schwellwerte[obj.id].liste].ogBackgroundColor; var test = 9999; for (var i = 0; i < liste[schwellwerte[obj.id].liste].schwellwerte.length; i++) { if (obj.state.val <= liste[schwellwerte[obj.id].liste].schwellwerte[i].wert) { bezeichnung = liste[schwellwerte[obj.id].liste].schwellwerte[i].bezeichnung; zahl = liste[schwellwerte[obj.id].liste].schwellwerte[i].zahl; test = liste[schwellwerte[obj.id].liste].schwellwerte[i].wert; color = liste[schwellwerte[obj.id].liste].schwellwerte[i].color; backgroundColor = liste[schwellwerte[obj.id].liste].schwellwerte[i].backgroundColor; break; } } setState(pfad + schwellwerte[obj.id].datenpunkt + ".text",bezeichnung); setState(pfad + schwellwerte[obj.id].datenpunkt + ".zahl",zahl); setState(pfad + schwellwerte[obj.id].datenpunkt + ".color",color); setState(pfad + schwellwerte[obj.id].datenpunkt + ".backgroundColor",backgroundColor); //logs (schwellwerte[obj.id].datenpunkt + " - State: " + obj.state.val + " ist kleiner/gleich: " + test + " - Bezeichnung: " + bezeichnung + " - Zahl: "+ zahl, "debug"); } else { log("Schwellwertliste für " + obj.id + " nicht vorhanden","error"); } } // TODO: die Subscription nicht im Loop anlegen! function onAnlegen() { for (var geraet in schwellwerte) { logs("Schedule angelegt: " + geraet,"debug"); on({id: geraet}, function(obj) { //log(obj.id + ": " + obj.state.val); setSchwellwerte(obj); }); } } function getSchwellwerte() { for (var geraet in schwellwerte) { var val = getState(geraet).val; var obj = { "id":geraet, "state": { "val":val } }; setSchwellwerte(obj); } } // main - Hauptprogramm (wird beim Scriptstart ausgeführt) // ============================================================================= dpAnlegen(); // Datenpunkte anlegen onAnlegen(); // Subscribes anlegen function main() { // Hauptprogramm getSchwellwerte(); } setTimeout(main, 500);
Ich würde die Scripte nach und nach posten, wenn die Fehler weg sind das nächste. Sonst komme ich da durcheinander.
Danke nochmal an alle für die riesen Hilfe!
-
ersetz mal bitte folgendes in Zeile 684:
logs(pfad + schwellwerte[geraet].datenpunkt + " wurde angelegt","debug");
durch
log(pfad + schwellwerte[geraet].datenpunkt + " wurde angelegt","debug");
-
@J-A-R-V-I-S sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
ersetz mal bitte folgendes in Zeile 684:
logs(pfad + schwellwerte[geraet].datenpunkt + " wurde angelegt","debug");
durch
log(pfad + schwellwerte[geraet].datenpunkt + " wurde angelegt","debug");
Erledigt, nun kommen im Log noch andere Meldungen dazu
javascript.0 2020-05-03 20:02:56.770 error (31056) at Script.runInContext (vm.js:133:20) javascript.0 2020-05-03 20:02:56.770 error (31056) at script.js.Schwellwerte.Schwellwerte:755:1 javascript.0 2020-05-03 20:02:56.770 error (31056) at onAnlegen (script.js.Schwellwerte.Schwellwerte:728:9) javascript.0 2020-05-03 20:02:56.770 error (31056) ReferenceError: logs is not defined javascript.0 2020-05-03 20:02:56.770 error (31056) ^ javascript.0 2020-05-03 20:02:56.770 error (31056) logs("Schedule angelegt: " + geraet,"debug"); javascript.0 2020-05-03 20:02:56.770 error (31056) script.js.Schwellwerte.Schwellwerte: script.js.Schwellwerte.Schwellwerte:728
-
@AxelF1977 sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
javascript.0 2020-05-03 20:02:56.770 error (31056) ReferenceError: logs is not defined
Du musst
logs
überall durchlog
ersetzen. -
@J-A-R-V-I-S sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
@AxelF1977 sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
javascript.0 2020-05-03 20:02:56.770 error (31056) ReferenceError: logs is not defined
Du musst
logs
überall durchlog
ersetzen.Ist erledigt. Das Log gibt jetzt keine Fehler error Meldungen mehr aus. Allerdings auch keine, die nicht dieses Script betrafen.
Da waren ja etliche andere
-
Jetzt kommen die JS-Helden zur Hilfe... Da muss ich mich ausklinken, da bin ich zu doof für.
-
@AxelF1977
Einer der Gründe, warum ich nur ungern fertige Scripte bei mir im Einsatz habe. Ich habe da einfach zu wenig Plan was die machen um mir selber bei Problemen helfen zu können. Aber schön wenn bei Dir das Problem nun auch erledigt ist, da früher oder später wohl eh auf 3 hoch solltest. -
So, ich bin jetzt nochmal auf den js-Controller 3 hoch,
und, wieder geht nichts... Scheint leider doch mehr zu sein
folgende error tauchen jetzt wieder auf
javascript.0 2020-05-03 20:51:52.503 error (5830) at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5) javascript.0 2020-05-03 20:51:52.503 error (5830) at maybeClose (internal/child_process.js:982:16) javascript.0 2020-05-03 20:51:52.503 error (5830) at ChildProcess.EventEmitter.emit (domain.js:448:20) javascript.0 2020-05-03 20:51:52.503 error (5830) at ChildProcess.emit (events.js:198:13) javascript.0 2020-05-03 20:51:52.503 error (5830) at ChildProcess.exithandler (child_process.js:285:7) javascript.0 2020-05-03 20:51:52.503 error (5830) at script.js.System.Updates:381:59 javascript.0 2020-05-03 20:51:52.503 error (5830) script.js.System.Updates: TypeError: Cannot read property 'toString' of null javascript.0 2020-05-03 20:51:50.686 error (5830) script.js.Heos.Heos: [Heos] Error: connect ECONNREFUSED 192.168.178.50:1255 javascript.0 2020-05-03 20:51:49.493 error (5830) script.js.Robbi.Map_Valetudo_rotate: TypeScript compilation failed: import axios from "axios"; ^ ERROR: Cannot find module 'axios'. javascript.0 2020-05-03 20:51:37.149 error (5336) at Pipe._handle.close (net.js:607:12) javascript.0 2020-05-03 20:51:37.149 error (5336) at Socket.EventEmitter.emit (domain.js:448:20) javascript.0 2020-05-03 20:51:37.149 error (5336) at Socket.emit (events.js:198:13) javascript.0 2020-05-03 20:51:37.149 error (5336) at Socket.stream.socket.on (internal/child_process.js:389:11) javascript.0 2020-05-03 20:51:37.149 error (5336) at maybeClose (internal/child_process.js:982:16) javascript.0 2020-05-03 20:51:37.149 error (5336) at ChildProcess.EventEmitter.emit (domain.js:448:20) javascript.0 2020-05-03 20:51:37.149 error (5336) at ChildProcess.emit (events.js:198:13) javascript.0 2020-05-03 20:51:37.149 error (5336) at ChildProcess.exithandler (child_process.js:285:7) javascript.0 2020-05-03 20:51:37.148 error (5336) at script.js.System.Updates:381:59 javascript.0 2020-05-03 20:51:37.148 error (5336) script.js.System.Updates: TypeError: Cannot read property 'toString' of null javascript.0 2020-05-03 20:51:34.528 error (5336) script.js.Robbi.Map_Valetudo_rotate: TypeScript compilation failed: import axios from "axios"; ^ ERROR: Cannot find module 'axios'. javascript.0 2020-05-03 20:51:21.826 error (4829) at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5) javascript.0 2020-05-03 20:51:21.826 error (4829) at maybeClose (internal/child_process.js:982:16) javascript.0 2020-05-03 20:51:21.826 error (4829) at ChildProcess.EventEmitter.emit (domain.js:448:20) javascript.0 2020-05-03 20:51:21.826 error (4829) at ChildProcess.emit (events.js:198:13) javascript.0 2020-05-03 20:51:21.826 error (4829) at ChildProcess.exithandler (child_process.js:285:7) javascript.0 2020-05-03 20:51:21.826 error (4829) at script.js.System.Updates:381:59 javascript.0 2020-05-03 20:51:21.826 error (4829) script.js.System.Updates: TypeError: Cannot read property 'toString' of null javascript.0 2020-05-03 20:51:18.690 error (4829) script.js.Robbi.Map_Valetudo_rotate: TypeScript compilation failed: import axios from "axios"; ^ ERROR: Cannot find module 'axios'. javascript.0 2020-05-03 20:51:06.391 error (4317) at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5) javascript.0 2020-05-03 20:51:06.391 error (4317) at maybeClose (internal/child_process.js:982:16) javascript.0 2020-05-03 20:51:06.390 error (4317) at ChildProcess.EventEmitter.emit (domain.js:448:20) javascript.0 2020-05-03 20:51:06.390 error (4317) at ChildProcess.emit (events.js:198:13) javascript.0 2020-05-03 20:51:06.390 error (4317) at ChildProcess.exithandler (child_process.js:285:7) javascript.0 2020-05-03 20:51:06.390 error (4317) at script.js.System.Updates:381:59 javascript.0 2020-05-03 20:51:06.389 error (4317) script.js.System.Updates: TypeError: Cannot read property 'toString' of null javascript.0 2020-05-03 20:51:03.205 error (4317) script.js.Robbi.Map_Valetudo_rotate: TypeScript compilation failed: import axios from "axios"; ^ ERROR: Cannot find module 'axios'. javascript.0 2020-05-03 20:50:51.076 error (4040) at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5) javascript.0 2020-05-03 20:50:51.076 error (4040) at maybeClose (internal/child_process.js:982:16) javascript.0 2020-05-03 20:50:51.076 error (4040) at ChildProcess.EventEmitter.emit (domain.js:448:20) javascript.0 2020-05-03 20:50:51.075 error (4040) at ChildProcess.emit (events.js:198:13) javascript.0 2020-05-03 20:50:51.075 error (4040) at ChildProcess.exithandler (child_process.js:285:7) javascript.0 2020-05-03 20:50:51.075 error (4040) at script.js.System.Updates:381:59 javascript.0 2020-05-03 20:50:51.075 error (4040) script.js.System.Updates: TypeError: Cannot read property 'toString' of null javascript.0 2020-05-03 20:50:49.258 error (4040) script.js.Heos.Heos: [Heos] parseResponse: Unexpected end of JSON input javascript.0 2020-05-03 20:50:48.007 error (4040) script.js.Robbi.Map_Valetudo_rotate: TypeScript compilation failed: import axios from "axios"; ^ ERROR: Cannot find module 'axios'. javascript.0 2020-05-03 20:50:35.639 error (3541) at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5) javascript.0 2020-05-03 20:50:35.639 error (3541) at maybeClose (internal/child_process.js:982:16) javascript.0 2020-05-03 20:50:35.639 error (3541) at ChildProcess.EventEmitter.emit (domain.js:448:20) javascript.0 2020-05-03 20:50:35.639 error (3541) at ChildProcess.emit (events.js:198:13) javascript.0 2020-05-03 20:50:35.638 error (3541) at ChildProcess.exithandler (child_process.js:285:7) javascript.0 2020-05-03 20:50:35.638 error (3541) at script.js.System.Updates:381:59 javascript.0 2020-05-03 20:50:35.638 error (3541) script.js.System.Updates: TypeError: Cannot read property 'toString' of null
-
@AxelF1977 sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
script.js.System.Updates: TypeError: Cannot read property 'toString' of null
Da scheint irgendwo ein null oder undefined zu sein, das du nicht abfängst. Zeig mal das Skript her.
@AxelF1977 sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
script.js.Robbi.Map_Valetudo_rotate: TypeScript compilation failed: import axios from "axios"; ^ ERROR: Cannot find module 'axios'.
Zeig auch bitte das Skript einmal.
-
@J-A-R-V-I-S sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
@AxelF1977 sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
script.js.System.Updates: TypeError: Cannot read property 'toString' of null
Da scheint irgendwo ein null oder undefined zu sein, das du nicht abfängst. Zeig mal das Skript her.
// fragt die angebotenen Updates von ioBroker ab // Abfrage dauert etwas (ca. 1 Minute) // // Repository muss in den ioBroker Einstellungen richtig gepflegt sein // Übersicht der ioBroker Consolen-Kommandos: // https://github.com/ioBroker/ioBroker/wiki/Console-commands var master = true; // true: Parse Fehler und Adapter, die nciht in der Repo sind werden mit in der Update-Liste ausgegeben var logOn = true; // Logausgabe im Skript var forecreation = false; // true: Datenpunkte werden überschrieben (ween z.B. Bezeichnungen geändert wurden) var pfad = "Systeminfos.iobroker" + "."; // Pfad in dem die Datenpunkte angelegt werden // #### ab hier kann bei Änderungen der Code in die Slaves kopiert werden #### // Datenpunktnamen: var idListOK = pfad + 'update_liste_verfuegbar'; var idUpdateList = pfad + "update_liste"; var idUpdateCount = pfad + "Adapter_updates"; var idStatusTime = pfad + "status_datum"; var idAvailableCount = pfad + "Adapter_verfuegbar"; var idInstalledCount = pfad + "Adapter_installiert"; var idAktivRepo = pfad + "Repo_aktiv"; var idAktivRepoUrl = pfad + "Repo_url"; var idHostUpdate = pfad + "Host_Update_verfuegbar"; var idBeta = pfad + "Adapter_Anzahl_Betaversionen"; var idparseErr = pfad + "Adapter_Anzahl_Parse_Error"; var idAdapterGesamt = pfad + "Adapter_installiert_gesamt"; var idAdapterGesamtJSON = pfad + "Adapter_installiert_gesamt_json"; var idAdapterErrorJSON = pfad + "Adapter_mit_parse_error_json"; var idAdapterNotInRepoJSON = pfad + "Adapter_nicht_in_Repo_json"; // regelmässige Wiederholungen der Abfrage var cronStr = "57 */2 * * *"; var abfrageUpdates = 'iobroker update'; var abfrageRepo = 'iobroker repo'; var abfrageAdapter = 'iobroker list adapters'; // ----------------------------------------------------------------------------- createState(idListOK, false, forecreation, { name: 'iobroker update Liste konnte gelesen werden', desc: 'iobroker update Liste konnte gelesen werden', type: 'boolean', unit: '', role: 'value' }); createState(idUpdateList, "initalisiert", forecreation, { name: 'Liste der verfügbaren Updates aus Repo', desc: 'Liste der verfügbaren Updates aus Repo', type: 'string', unit: '', role: 'value' }); createState(idUpdateCount, 0, forecreation, { name: 'Anzahl verfügbarer Updates aus Repo', desc: 'Anzahl verfügbarer Updates der installierten Adapter aus Repo', type: 'number', unit: '', role: 'value' }); createState(idAvailableCount, 0, forecreation, { name: 'Anzahl verfügbarer Adapter im Repo', desc: 'Anzahl verfügbarer Adapter im Repo', type: 'number', unit: '', role: 'value' }); createState(idInstalledCount, 0, forecreation, { name: 'Anzahl installierter Adapter aus Repo', desc: 'Anzahl installierter Adapter aus Repo', type: 'number', unit: '', role: 'value' }); createState(idStatusTime, now(), forecreation, { name: 'Zeitpunkt der letzten Statusabfrage', desc: 'Zeitpunkt der letzten Statusabfrage', type: 'string', unit: '', role: 'value' }); createState(idAktivRepo, "initalisiert", forecreation, { name: 'Als aktiv eingestelltes Repo', desc: 'Als aktiv eingestelltes Repo', type: 'string', unit: '', role: 'value' }); createState(idAktivRepoUrl, "initalisiert", forecreation, { name: 'url des aktiven Repo', desc: 'url des aktiven Repo', type: 'string', unit: '', role: 'value' }); createState(idHostUpdate, false, forecreation, { name: 'iobroker Host update verfügbar', desc: 'iobroker Host update verfügbar', type: 'boolean', unit: '', role: 'value' }); createState(idBeta, 0, forecreation, { name: 'Anzahl installierte Betaversionen', desc: 'Anzahl installierte Betaversionen', type: 'number', unit: '', role: 'value' }); createState(idAdapterGesamt, 0, forecreation, { name: 'Anzahl installierter Adapter gesamt (Repo und Sonstige)', desc: 'Anzahl installierter Adapter gesamt (Repo und Sonstige)', type: 'number', unit: '', role: 'value' }); createState(idAdapterGesamtJSON, "initalisiert", forecreation, { name: 'Liste der installierten Adapter gesamt (Repo und Sonstige)', desc: 'Liste der installierten Adapter gesamt (Repo und Sonstige)', type: 'string', unit: '', role: 'value' }); createState(idparseErr, 0, forecreation, { name: 'Anzahl Adapter mit Parse Error', desc: 'Anzahl Adapter mit Parse Error (Cannot read or parse)', type: 'number', unit: '', role: 'value' }); createState(idAdapterErrorJSON, "initalisiert", forecreation, { name: 'Liste der Adapter mit Parse Error', desc: 'Liste der Adapter mit Parse Error (cannot read or parse)', type: 'string', unit: '', role: 'value' }); createState(idAdapterNotInRepoJSON, "initalisiert", forecreation, { name: 'Liste der installierten Adapter, die nicht in der Repo sind', desc: 'Liste der installierten Adapter, die nicht in der Repo sind', type: 'string', unit: '', role: 'value' }); // ----------------------------------------------------------------------------- function now() { return formatDate(new Date(), "hh:mm:ss, YYYY-MM-DD"); } function writeJson(json) { return JSON.stringify(json); // JSON in String umwandeln, damit das JSON in einem Datenpunkt geschrieben werden kann } function readJson(dp) { // lese ein JSON aus einem Datenpunkt var json = getState(dp).val; if (json === "") return []; try { list = JSON.parse(json); } catch (ex) { list = []; } if(!list) list = []; return list; } function checkBeta(installiertStr,updateStr) { var installiertArr = /(\d+).(\d+).(\d+)/g.exec(installiertStr); var updateArr = /(\d+).(\d+).(\d+)/g.exec(updateStr); var i; for ( i=1; i<4; i++ ) { if(parseInt(updateArr[i]) < parseInt(installiertArr[i])) return true; if(parseInt(updateArr[i]) > parseInt(installiertArr[i])) return false; } return false; } function findAdapter(json,name) { for (var i=0; i < json.length; i++) { if (json[i].adapter == name) return true; } return false; } function checkInRepo(repoJson,installJson) { if(installJson === 'undefined' || installJson === null || installJson.length < 1) { log("keine Daten für Adapter in der Installation vorhanden","warn"); return; } if(repoJson === 'undefined' || repoJson === null || repoJson.length < 1) { log("keine Daten für Adapter in der Repo vorhanden","warn"); return; } var adapterNichtInRepoJson = []; for ( i=0; i<installJson.length; i++ ) { if(!findAdapter(repoJson,installJson[i].adapter)) { adapterNichtInRepoJson.push({ adapter: installJson[i].adapter, update: "-", version: installJson[i].version, beta: "nicht in Repo" }); } } return adapterNichtInRepoJson; } // fragt die möglichen Updates ab function abfrageConsoleUpdates() { exec(abfrageUpdates, function(err, stdout, stderr) { if(logOn) log("Abfrage: "+abfrageUpdates); if (err) { log("Fehler ioBroker Statusabfrage: " + err,"error"); return; } var out = stdout.toString(); //log(out); if(out.match("Error: 404: Not Found") || out.match("Cannot download json")) { setState(idUpdateList,"ioBroker Repository nicht gefunden"); log("ioBroker Repository nicht gefunden","warn"); setState(idListOK,false); return; } var arrInstalled = out.match(/.+installed.+\n/g); var arrUpdates = out.match(/Adapter.+Updateable.+\n/g); var arrContrUpdate = out.match(/Controller.+Updateable.+\n/g); var arrAvailable = out.match(/Adapter /g); var arrRepo = out.match(/Adapter.+: \d+\.\d+\.\d+/g); var arrParseErr = out.match(/Cannot read or parse.+\n/g); var updates = 0; var ContrUpdate = 0; var installiert = -1; var verfuegbar = -1; var updateJson = []; var repoJson = []; var parsErrJson = []; var beta = 0; var parseErr = 0; var i; if(typeof arrInstalled !== 'undefined' && arrInstalled !== null && arrInstalled.length > 0) installiert = arrInstalled.length; if(typeof arrUpdates !== 'undefined' && arrUpdates !== null && arrUpdates.length > 0) updates = arrUpdates.length; if(typeof arrContrUpdate !== 'undefined' && arrContrUpdate !== null && arrContrUpdate.length > 0) ContrUpdate = 1; if(typeof arrAvailable !== 'undefined' && arrAvailable !== null && arrAvailable.length > 0) verfuegbar = arrAvailable.length; if(typeof arrParseErr !== 'undefined' && arrParseErr !== null && arrParseErr.length > 0) parseErr = arrParseErr.length; // ermittelt Adapter, die einen Fehler (parse error) erzeugt haben // Beispiel: // Cannot read or parse /opt/iobroker/node_modules/iobroker.js-controller/lib/../node_modules/iobroker.daswetter/io-package.json: SyntaxError: Unexpected token if(parseErr > 0) { for ( i=0; i<parseErr; i++ ) { var arrParseErrLine = /Cannot read or parse.+\/(.+)\/io-.+:.(.+)\n/g.exec(arrParseErr[i]); parsErrJson.push({ adapter: arrParseErrLine[1], update: "-", error: arrParseErrLine[2], beta: "parse error" }); } } if(logOn) log(writeJson(parsErrJson),"warn"); // ermittelt das JSON für die im Repo enthaltenen Adapter for ( i=0; i<arrRepo.length; i++ ) { var arrInRepo = /Adapter.+"(.+)".+(\d+\.\d+\.\d+)/g.exec(arrRepo[i]); repoJson.push({ adapter: arrInRepo[1], version: arrInRepo[2] }); } if(ContrUpdate > 0) { if(logOn) log("** HOST Update verfügbar **"); if(logOn) log("arrContrUpdate: " + arrContrUpdate); var arrController = /.+"(.+)".+(\d+.\d+.\d+).+(\d+.\d+.\d+)/g.exec(arrContrUpdate[0]); if(logOn) log("arrController: " + arrController); if(checkBeta(arrController[3],arrController[2])) beta = beta +1; updateJson.push({ adapter: arrController[1], update: arrController[2], version: arrController[3], beta: (checkBeta(arrController[3],arrController[2]) ? "beta" : "UPDATE") }); } if(updates > 0) { for ( i=0; i<updates; i++ ) { var arrUpdate = /.+"(.+)".+(\d+.\d+.\d+).+(\d+.\d+.\d+)/g.exec(arrUpdates[i]); if(checkBeta(arrUpdate[3],arrUpdate[2])) beta = beta +1; updateJson.push({ adapter: arrUpdate[1], update: arrUpdate[2], version: arrUpdate[3], beta: (checkBeta(arrUpdate[3],arrUpdate[2]) ? "Beta" : "") }); } } updates = updates + ContrUpdate - beta; var notInRepoJson = checkInRepo(repoJson,readJson(idAdapterGesamtJSON)); setState(idUpdateCount ,updates); setState(idAvailableCount ,verfuegbar); setState(idInstalledCount ,installiert); if(updateJson.length === 0) updateJson.push({adapter:"",update:"",version:""}); setState(idUpdateList ,(master ? writeJson(updateJson.concat(parsErrJson,notInRepoJson)) : writeJson(updateJson))); setState(idListOK ,true); setState(idStatusTime ,now()); setState(idHostUpdate, (ContrUpdate > 0 ? true : false)); setState(idBeta, beta); setState(idparseErr, parseErr); setState(idAdapterErrorJSON,writeJson(parsErrJson)); setState(idAdapterNotInRepoJSON,writeJson(notInRepoJson)); log("Anzahl Adapter mit Fehler (Cannot read or parse): " + parseErr,"warn"); if(logOn) log("Anzahl Adapter in Repo verfügbar: " + verfuegbar); if(logOn) log("Anzahl Adapter aus Repo installiert: " + installiert); if(logOn) log("Anzahl Adapter mit Updates: " + updates); if(logOn) log("Anzahl Adapter als Beta installiert: " + beta); }); } // fragt das aktive Repository ab function abfrageConsoleRepo() { exec(abfrageRepo, function(err, stdout, stderr) { if(logOn) log("Abfrage: "+abfrageRepo); if (err) { log("Fehler ioBroker Statusabfrage: " + err,"error"); return; } var out = stdout.toString(); if(logOn) log(stdout); var aktivRepo = stdout.match(/Active repo: (.+)/)[1]; if(logOn) log("Aktive Repo: " + aktivRepo); var regex = new RegExp("^"+aktivRepo+": (.+)", "gm"); var aktivRepoUrl = stdout.match(/^online: (.+)/gm).toString().replace(aktivRepo+": ",""); if(logOn) log("Aktive Repo url: " + aktivRepoUrl); setState(idAktivRepo,aktivRepo); setState(idAktivRepoUrl,aktivRepoUrl); }); } // fragt alle installiertenAdapter ab, auch die, die nicht in der Repo vorhanden sind function abfrageInstallierteAdapter() { exec(abfrageAdapter, function(err, stdout, stderr) { if(logOn) log("Abfrage: "+ abfrageAdapter); if (err) { log("Fehler ioBroker Abfrage installierte Adapter: " + err,"error"); return; } var out = stdout.toString(); //if(logOn) log(stdout); var arrAdapter = out.match(/:.+\n/g); var installJSON = []; var i; for ( i=0; i<arrAdapter.length; i++ ) { var arrInstall = /: (\S+) +- (\d+\.\d+\.\d+)/g.exec(arrAdapter[i]); installJSON.push({ adapter: arrInstall[1], version: arrInstall[2] }); } // if(logOn) log("arrAdapter: " + arrAdapter); if(logOn) log("arrAdapter.length: " + arrAdapter.length); // if(logOn) log("installJSON: " + writeJson(installJSON)); setState(idAdapterGesamt, arrAdapter.length); setState(idAdapterGesamtJSON, writeJson(installJSON)); }); } function abfragen() { abfrageConsoleRepo(); abfrageInstallierteAdapter(); setTimeout(abfrageConsoleUpdates,2000); } // regelmässige Wiederholungen // ----------------------------------------------------------------------------- schedule(cronStr, abfragen); // main // ----------------------------------------------------------------------------- function main() { abfragen(); } // Start Skript: // ----------------------------------------------------------------------------- setTimeout(main, 500);
@J-A-R-V-I-S sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
@AxelF1977 sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
script.js.System.Updates: TypeError: Cannot read property 'toString' of null
@AxelF1977 sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
script.js.Robbi.Map_Valetudo_rotate: TypeScript compilation failed: import axios from "axios"; ^ ERROR: Cannot find module 'axios'.
Zeig auch bitte das Skript einmal.
import axios from "axios"; // Hier den Hostnamen und Zugangsdaten eintragen, unter dem Valetudo erreichbar ist const roboHostname = "192.168.178.61"; const valetudoAuth = { username: 'valetudo-username', password: 'valetudo-password' } // Hier den State eintragen, der den aktuellen Sauger-Status angibt const idVacuumState = "mihome-vacuum.0.info.state"; const center: Point = [25600, 25600]; // Koordiaten zählen von unten links (0,0) nach oben rechts (51200,51200) // Die folgenden Koordinaten gehen von nicht rotierter Karte (Winkel 0) aus const rooms: Record<string, Rectangle[]> = { "Küche": [[21600, 29100, 23500, 33100]], "Flur": [[18400, 24000, 22200, 27100], [19500, 27100, 21600, 30400]], "Wohnzimmer": [[17600, 20000, 21600, 24000], [21600, 19200, 24200, 23200]], "Schlafzimmer": [[24100, 23200, 26100, 27400], [22100, 23800, 24100, 27400]], "Bad": [[21500, 27500, 23200, 29000]], }; // =============================================================================== type Rectangle = [number, number, number, number]; type Point = [number, number]; /** rotates a rectangle by 90° around the absolute origin */ function rotate90([x1, y1, x2, y2]: Rectangle): Rectangle { return [-y2, x1, -y1, x2]; } /** rotates a rectangle by 180° around the absolute origin */ function rotate180([x1, y1, x2, y2]: Rectangle): Rectangle { return [-x2, -y2, -x1, -y1]; } /** Rotates a rectangle around the given center by the given angle */ function rotate(rect: Rectangle, center: Point, angle: number) { rect = [rect[0] - center[0], rect[1] - center[1], rect[2] - center[0], rect[3] - center[1]]; if (angle % 180 === 90) { rect = rotate90(rect); angle -= 90; } if (angle === 180) { rect = rotate180(rect); } rect = [rect[0] + center[0], rect[1] + center[1], rect[2] + center[0], rect[3] + center[1]]; return rect; } for (const room of Object.keys(rooms) as (keyof typeof rooms)[]) { createState(`Staubsauger.${room}`, { type: "boolean", read: true, write: true, role: "switch", name: `${room} saugen`, }); on({ id: `javascript.${instance}.Staubsauger.${room}`, val: true, ack: false }, async () => { if (getState(idVacuumState).val !== 8) await cancelCurrentAction(); if (getMapRotation() === -1 /* unbekannt */) { // We need to test the map rotation const rotation = await testMapRotation(); log(`Die Karte ist ${rotation !== 0 ? `um ${rotation}° ` : "nicht "}rotiert.`); await rememberMapRotation(rotation); } // Now that we know how the map is rotated, we can clean the room cleanRoom(room); }); } createState(`Staubsauger.stop`, { type: "boolean", read: true, write: true, role: "switch", name: `Staubsauger anhalten`, }); on({ id: `javascript.${instance}.Staubsauger.stop`, val: true, ack: false }, () => { stopCleanup(); }); const idMapRotated = "Staubsauger.info.mapRotated"; createState(idMapRotated, { type: "number", read: true, write: false, role: "indicator", states: { "-1": "unknown", "0": "Robo links vom Dock", "90": "Robo unten vom Dock", "180": "Robo rechts vom Dock", "270": "Robo oben vom Dock", }, name: `Wie die Karte rotiert ist`, }); /** * Bestimmt die Kartenrotation wenn der Staubsauger neben dem Dock steht * 0 Grad bedeutet, der Sauger steht links */ async function testMapRotation(): Promise<number> { log("Teste Kartenorientierung..."); const { data: { charger, robot } } = await axios({ url: `http://${roboHostname}/api/map/latest`, auth: valetudoAuth }); // Valetudo zählt von oben links nach unten rechts, d.h. die Y-Koordinaten // sind entgegengesetzt der mathematischen Definition let c2r = [robot[0] - charger[0], charger[1] - robot[1]]; const angle = Math.atan2(c2r[1], c2r[0]) * 180 / Math.PI; if (angle <= 45 && angle >= -45) { // Sauger steht rechts return 180; } else if (angle > 45 && angle < 135) { // Sauger steht oben return 270; } else if (angle < -45 && angle > -135) { // Sauger steht unten return 90; } else { return 0; } } function rememberMapRotation(rotation: number): Promise<void> { return setStateAsync(idMapRotated, rotation); } function getMapRotation(): number { return getState(idMapRotated).val; } // "Forget" map rotation when the vacuum starts charging on({ id: idVacuumState, val: 8 /* charging */ }, (obj) => { setState(idMapRotated, -1 /* unknown */); // And reset all control states for (const room of Object.keys(rooms) as (keyof typeof rooms)[]) { setState(`Staubsauger.${room}`, false, true); } setState(`Staubsauger.stop`, false, true); }); async function beginCleanup(): Promise<void> { } async function cancelCurrentAction(): Promise<void> { setState("mihome-vacuum.0.control.pause", true); // wait for the "paused" status before going home await waitForPauseOrSleep(); } async function stopCleanup(): Promise<void> { log(`Saugvorgang abgebrochen!`); setState(`Staubsauger.stop`, true, true); if (getState(idVacuumState).val !== 8) { await cancelCurrentAction(); await setStateAsync('mihome-vacuum.0.control.home', true); // wait for the "charging" status before resolving await waitFor(idVacuumState, 8); } log(`Staubsauger ist in der Basis`); setState(`Staubsauger.stop`, false, true); } async function cleanRoom(room: keyof typeof rooms): Promise<void> { log(`Saugvorgang für ${room} gestartet!`); setState(`Staubsauger.${room}`, true, true); const mapRotation = getMapRotation(); const originalCoords = rooms[room]; log(`original coordinates: ${JSON.stringify(originalCoords)}`); const roomCoords = rooms[room].map(rect => rotate(rect, center, mapRotation)); log(`rotated coordinates: ${JSON.stringify(roomCoords)}`); const coords = roomCoords[0]; const targetCoords = [ ((coords[0] + coords[2]) / 2).toFixed(0), ((coords[1] + coords[3]) / 2).toFixed(0), ] // go to center of first zone const gotoString = targetCoords.join(","); await setStateAsync("mihome-vacuum.0.control.goTo", gotoString); log(`Fahre zur Mitte von ${room}`); await wait(10000); await waitForPauseOrSleep(); if (getState("Staubsauger.stop").val) return; const zoneCleanString = roomCoords.map(zone => { return "[" + zone.concat(1).map(coord => coord.toString()).join(",") + "]"; }).join(","); log("Starte Zonenreinigung..."); await setStateAsync("mihome-vacuum.0.control.zoneClean", zoneCleanString); // wait for the cleanup to finish await waitFor(idVacuumState, 6); } async function waitForPauseOrSleep(): Promise<void> { log("Warte auf Zustand schlafen oder Pause..."); switch (getState(idVacuumState).val) { case 3: case 10: log(" => Zustand bereits aktiv!"); return; default: await Promise.race([ waitFor(idVacuumState, 10), waitFor(idVacuumState, 3), ]); log(" => Zustand erreicht!"); } } function wait(ms: number): Promise<void> { return new Promise(resolve => { setTimeout(resolve, ms); }); } function waitFor(stateID: string, value: any): Promise<void> { return new Promise(resolve => { const handler = (obj: iobJS.ChangedStateObject) => { if (obj.newState.val === value) { unsubscribe(handler); resolve(); } } subscribe(stateID, handler); }) } function setStateAsync(id: string, state: any): Promise<void> { return new Promise(res => { setState(id, state, () => res()); }); }
-
@AxelF1977 ersetz im ersten Skript mal bitte alle
var out = stdout.toString();
durchvar out = stdout ? stdout.toString() : '';
Und ersetze im zweiten mal die erste Zeile durch
const axios = require('axios');
-
@J-A-R-V-I-S sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
@AxelF1977 ersetz im ersten Skript mal bitte alle
var out = stdout.toString();
durchvar out = stdout ? stdout.toString() : '';
Und ersetze im zweiten mal die erste Zeile durch
const axios = require('axios');
Erledigt,
folgende error zeigt der Log noch, aber es werden weniger
javascript.0 2020-05-03 21:18:00.732 error (6892) at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5) javascript.0 2020-05-03 21:18:00.732 error (6892) at maybeClose (internal/child_process.js:982:16) javascript.0 2020-05-03 21:18:00.732 error (6892) at ChildProcess.EventEmitter.emit (domain.js:448:20) javascript.0 2020-05-03 21:18:00.732 error (6892) at ChildProcess.emit (events.js:198:13) javascript.0 2020-05-03 21:18:00.731 error (6892) at ChildProcess.exithandler (child_process.js:285:7) javascript.0 2020-05-03 21:18:00.731 error (6892) at script.js.System.Updates:381:59 javascript.0 2020-05-03 21:18:00.730 error (6892) script.js.System.Updates: TypeError: Cannot read property 'toString' of null javascript.0 2020-05-03 21:16:28.340 error (3977) at Pipe._handle.close (net.js:607:12) javascript.0 2020-05-03 21:16:28.340 error (3977) at Socket.EventEmitter.emit (domain.js:448:20) javascript.0 2020-05-03 21:16:28.340 error (3977) at Socket.emit (events.js:198:13) javascript.0 2020-05-03 21:16:28.340 error (3977) at Socket.stream.socket.on (internal/child_process.js:389:11) javascript.0 2020-05-03 21:16:28.340 error (3977) at maybeClose (internal/child_process.js:982:16) javascript.0 2020-05-03 21:16:28.340 error (3977) at ChildProcess.EventEmitter.emit (domain.js:448:20) javascript.0 2020-05-03 21:16:28.340 error (3977) at ChildProcess.emit (events.js:198:13) javascript.0 2020-05-03 21:16:28.340 error (3977) at ChildProcess.exithandler (child_process.js:285:7) javascript.0 2020-05-03 21:16:28.340 error (3977) at script.js.System.Updates:381:59 javascript.0 2020-05-03 21:16:28.340 error (3977) script.js.System.Updates: TypeError: Cannot read property 'toString' of null javascript.0 2020-05-03 21:16:12.023 error (3405) at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5) javascript.0 2020-05-03 21:16:12.023 error (3405) at maybeClose (internal/child_process.js:982:16) javascript.0 2020-05-03 21:16:12.022 error (3405) at ChildProcess.EventEmitter.emit (domain.js:448:20) javascript.0 2020-05-03 21:16:12.022 error (3405) at ChildProcess.emit (events.js:198:13) javascript.0 2020-05-03 21:16:12.022 error (3405) at ChildProcess.exithandler (child_process.js:285:7) javascript.0 2020-05-03 21:16:12.022 error (3405) at script.js.System.Updates:381:59 javascript.0 2020-05-03 21:16:12.022 error (3405) script.js.System.Updates: TypeError: Cannot read property 'toString' of null
-
@AxelF1977 sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
System.Updates
Das Script auch bearbeitet?
-
@wendy2702 sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
@AxelF1977 sagte in Scripte laufen nicht mehr seit Update auf JS-Controler 3.0x:
System.Updates
Das Script auch bearbeitet?
In dem Script habe ich diese stellen bearbeitet, wie von @J-A-R-V-I-S empfohlen
@AxelF1977 ersetz im ersten Skript mal bitte alle
var out = stdout.toString();
durchvar out = stdout ? stdout.toString() : '';
Im Script selber gibt es folgenden error
21:47:25.279 error javascript.0 (30954) script.js.System.Updates: TypeError: Cannot read property 'toString' of null 21:47:25.279 error javascript.0 (30954) at script.js.System.Updates:381:59 21:47:25.323 error host.ioBrokerPC Caught by controller[0]: at script.js.System.Updates:381:59
ÜBRIGENS: sobald dieses Script Updates deaktiviert ist, läuft alles. Wahnsinn, nur wegen diesem einen Script.
Das kam hier aus dem Forum