NEWS
Merkwürdige javascriptfehler und abstürze
-
Dann solltest du mal deine Version des Skriptes hier zeigen, bitte in Codetags oder, wenn es zu groß sein sollte, als Textdatei.
Enrico
Edit: Da steht was von events.88, fragst du deine Müllabfuhr über 80 Tage in der Zukunft ab?
-
Die V2 script version ist die:
// Skript basiered auf JoJ123's Müllskript und Pix' Regenskript // v 0.1, tempestas 21.12.2018 // Voraussetzung: ical 1.7 // Anleitung: /* 1) im ical Adapter die Ereignisse definieren, die gesucht werden sollen (z.B. Restabfall) 2) const PFAD auf euren ical Adapter anpassen (0, oder 1, zwei...) 3) im Bereich EINTRAEGE vor den Doppelpunkten die Ereignisse analog des ical Ereginis eintragen. ACHTUNG: ES DÜRFEN HIER KEINE FREIZEICHEN GENUTZT WERDEN; ICAL MACHT AUS "Gelber Sack" ALS EREIGNIS DATENPUNKT "GelberSack" daher muss hier dann "GelberSack" eingetragen werden hinter den Doppelpunkten wird der Pfad angegeben, in dem die Datenpunkte für die Tage bis zum jeweiligen Müll gespeichert werden. Davor wird dann noch die Javascript Instanz gesetzt, in der ihr das Skript startet. Gesamtpfad dann also z.B. "javascript.0.muell.restmuell" Hinweis: das Skript kann für alle Arten von Events genutzt werden, daher hier auf dne Begriff "Muell" verzichtet. */ debug = true; const PFAD = "ical.4.events."; const EINTRAEGE = { "Restabfall": 'muell.restmuell', "Papierabfall": 'muell.papier', "Bioabfall": 'muell.bioabfall', "GelberSack": 'muell.gelbersack' }; //States anlegen Object.keys(EINTRAEGE).forEach(key => { createState(EINTRAEGE[key], -1); if (debug) log("State "+EINTRAEGE[key] +" angelegt"); }); createState("muell.next"); // state, in den der kleinste Wert geschrieben wird, falls man z.B. auf einer Hauptübersicht immer nur den Wert bis zum nächsten Event (egal welches) sehen möchte) var idNext = "muell.next"; function check() { var i; var min =90; // maximale Vorschau der Tage im ical ist 90, von dort aus suchen wir den kleinsten Wert Object.keys(EINTRAEGE).forEach(eintrag => { // erst prüfen, ob event heute vorliegt if ( getState(PFAD + 0 +".today." + eintrag).val === true) { // Pfad weicht von den anderen Tagen ab! setState(EINTRAEGE[eintrag], 0); min = 0; if(debug) log(eintrag + " wird heute abgeholt"); } // falls nicht, weiter schauen, wann es kommt else { for (i=1 ; i<90;i++) { // heute (0) wird separat geprüft, da dort ein andere Pfad zum Tragen kommt; max 90 Tage Vorschau if ( getState(PFAD + i +"." + eintrag).val === true) { setState(EINTRAEGE[eintrag], i); if (i < min) min = i; if(debug) log(eintrag + " in "+i +" Tagen"); break; // beim ersten gefundenen Eitnrag wird unterbrochen, da ja der nächste Termin gesucht wird } } } }); // kleinsten Wert in next - State schreiben if(debug) log("Der nächste Müll ist in "+min +" Tagen"); setState(idNext, min); } // Bei Start setTimeout(check, 5000); // 5 Sekunde warten, um beim erstmaligen Start Fehler zu vermeiden, die aus nicht existierenden States resultieren // Zeitplan schedule('00 1 * * *', () => check() ); // Täglich 1.00h
Ich habe es auf 90 Tage eingetragen ja, und da ist auch der Fehler, die Zahl zeigt im gelben Tonnen Bereich und papiertonne auch nicht an.
Ical version ist das neueste drauf
-
Ich bin leider der Javaskript-Sprache nicht mächtig, vielleicht zeigst du noch die ical-Einstellungen, dann sind hier schonmal die wichtigsten Infos zu deinem Problem zusammen. Sind denn die Fehler weg, wenn dieses Skript deaktiviert ist?
Enrico
-
Im Ical sind diese Einstellungen vorhanden:
-
Hast du im ical-Adapter auch 90 Tage eingestellt?
Enrico
-
Ja, egal ob ich es auf 30 Tage runterschraube oder wieder auf 90, keine Änderung
-
Und du hast auch 4 Instanzen von ical am Laufen?
Im zweiten Bild steht z.B. getstate"ical.4.events.89.GelberSack"not found, also Objekt nicht gefunden, hast du denn solch ein Objekt?
Enrico
-
ja das ist auch alles genauso wie es da steht ja
-
Hast du die Frage von Enrico richtig verstanden?
Hast du eine ICAL instanz mit der Nr. 4 installiert und laufen?
Also so wie hier mit ".4" :
Poste doch mal einen Screenshot der Instanzübersicht.
-
Und ja hab ich :