NEWS
[Vorlage] Flexibles Timerskript + Vis
-
@AlCalzone sagte in [Vorlage] Flexibles Timerskript + Vis:
@Pittini Browser-Refresh dürfte keinen Einfluss auf Variablen in Skripten haben, da diese im Backend (ioBroker) laufen.
Die fragliche Zeile (631) verwendet eine Astro-Zeit, ohne zu prüfen, ob diese existiert. Es gibt ein paar Astro-Events, die an bestimmten Breitengraden zu bestimmten Jahreszeiten nicht existieren.
Ich vermute, das ist die Ursache.Hm, glaub ich eigentlich nicht, läßt sich aber ja leicht verifizieren indem wir @gelberlemmy mal fragen ob er überhaupt nen Astrotimer verwendet hatte. Ich seh das Problem hier:
javascript.0 2020-07-27 20:53:02.954 info (4109) script.js.common.Timer_Target: Reaching WriteToTemplate(whichone), whichone=undefined
Die Variable whichone legt fest welcher Timer in die TemplateDps geschrieben wird, wenn da ein undefined kommt kann nur murks rauskommen, nur woher kommt das undefined?
Das Skript is so aufgebaut das je nachdem, welcher Timer in ner Valuelist gewählt wird, die Werte dieses Timers in ein Template geschrieben wird, worauf sich das Vis bezieht. Beim klick auf des speichernbutton werden die Werte ausm (jetzt ja geänderten) Template in die eigentlichen TimerDps zurückgeschrieben. Iwo da vermute ich passiert was, aber wie gesagt ich komm da ned weiter.
Das ganze funktioniert bisher einwandfrei und ich glaub auch ned mal dasses am Skript liegt, kanns aber halt auch ned ausschliessen bevor die wahre Ursache gefunden wurde. -
@Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:
Hm, glaub ich eigentlich nicht
Wieso nicht? Steht doch in mehreren Logs oben:
javascript.0 2020-07-26 18:12:22.858 error (2508) at CheckTodayAstroIsOver (script.js.Meine_Scripte.Timersteuerung:631:15) javascript.0 2020-07-26 18:12:22.857 error (2508) Error in callback: TypeError: Cannot read property 'setMinutes' of undefined javascript.0 2020-07-26 18:12:22.848 error (2508) Cannot get astro date for "time"
Ich würde jetzt nicht pauschal ausschließen wollen, dass das nicht doch dafür sorgt, dass ungewollte Werte in DPs landen.
-
Moin, also ich habe noch nie einen Astro Tier verwendet. Immer nur eine Schaltung zur bestimmten Uhrzeit.
-
@AlCalzone sagte in [Vorlage] Flexibles Timerskript + Vis:
Ich würde jetzt nicht pauschal ausschließen wollen, dass das nicht doch dafür sorgt, dass ungewollte Werte in DPs landen.
Jaein, das isn Folgefehler. Ich hab da ne Abfrage drin die auf !time prüft und da fällt natürlich das undefined drunter, gedacht war wenns nicht time ist, musses Astro sein, deswegen springt er in den falshen Zweig dann. Es bleibt aber immer noch die Frage, woher kommt das undefined das das auslöst. Ich fang das jetzt mal ab, dann soll @gelberlemmy mal posten wie oder was sich am Fehler geändert hat.
@gelberlemmy bitte mal Zeile 1110 ändern von:
if (x == 5 && dp.state.val != "time") { //TimerChoice geändert und Astro gewählt
auf:
if (x == 5 && dp.state.val != "time" && typeof dp.state.val != "undefined") { //TimerChoice geändert und Astro gewählt
Dann bitte mal testen und ggfs. das entstandene Log wieder hier posten.
-
@Pittini danke für die Arbeit. Werde es nachher einmal probieren
-
so keine Änderung. Die Fehlermeldungen gehen auch erst los, sobald ich in den Spalten "undefined" auswähle.
javascript.0 2020-07-31 21:13:37.206 error (21270) at processImmediate (internal/timers.js:456:21) javascript.0 2020-07-31 21:13:37.206 error (21270) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37) javascript.0 2020-07-31 21:13:37.205 error (21270) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:451:25) javascript.0 2020-07-31 21:13:37.205 error (21270) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1052:38) javascript.0 2020-07-31 21:13:37.204 error (21270) at Object.<anonymous> (script.js.common.TimerTarget:1112:98) javascript.0 2020-07-31 21:13:37.204 error (21270) at DetermineNextActiveAstroDay (script.js.common.TimerTarget:520:32) javascript.0 2020-07-31 21:13:37.203 error (21270) at CheckTodayAstroIsOver (script.js.common.TimerTarget:631:15) javascript.0 2020-07-31 21:13:37.203 error (21270) Error in callback: TypeError: Cannot read property 'setMinutes' of undefined javascript.0 2020-07-31 21:13:37.199 error (21270) Cannot get astro date for "undefined" javascript.0 2020-07-31 21:13:37.198 info (21270) script.js.common.TimerTarget: Reaching CheckTodayAstroIsOver(AstroChoice=undefined Shift=0) javascript.0 2020-07-31 21:13:37.198 info (21270) script.js.common.TimerTarget: Reaching DetermineNextActiveAstroDay(whichone=-1 GoToTommorrow=false) javascript.0 2020-07-31 21:13:37.197 info (21270) script.js.common.TimerTarget: Astro choosen javascript.0 2020-07-31 21:13:37.196 info (21270) script.js.common.TimerTarget: Reaching MakeTable javascript.0 2020-07-31 21:13:37.195 info (21270) script.js.common.TimerTarget: Reaching SwitchEditMode(whichone, onoff), whichonex=undefined TimerCount=1 onoff=true javascript.0 2020-07-31 21:13:33.022 info (21270) script.js.common.TimerTarget: Reaching MakeTable javascript.0 2020-07-31 21:13:33.021 info (21270) script.js.common.TimerTarget: Reaching SwitchEditMode(whichone, onoff), whichonex=undefined TimerCount=1 onoff=true javascript.0 2020-07-31 21:13:22.307 info (21270) script.js.common.TimerTarget: Template TimerTarget changed, typeof=string Wert= javascript.0 2020-07-31 21:13:22.267 info (21270) script.js.common.TimerTarget: Timertemplate changed to undefined javascript.0 2020-07-31 21:13:22.266 info (21270) script.js.common.TimerTarget: Reaching MakeTable javascript.0 2020-07-31 21:13:22.266 info (21270) script.js.common.TimerTarget: Reaching SwitchEditMode(whichone, onoff), whichonex=0 TimerCount=1 onoff=false javascript.0 2020-07-31 21:13:22.263 info (21270) script.js.common.TimerTarget: Typeof MyTimer[undefined]=undefined javascript.0 2020-07-31 21:13:22.262 info (21270) script.js.common.TimerTarget: Reaching WriteToTemplate(whichone), whichone=undefined
-
Habe mir jetzt einen Button für den Regelneustart gebaut
-
@gelberlemmy sagte in [Vorlage] Flexibles Timerskript + Vis:
Habe mir jetzt einen Button für den Regelneustart gebaut
Als workaround sinnvoll, aber ich bin hartnäckig und will trotzdem wissen was da los ist. Vorallem weil nur Du das Problem hast. An obigem Screen sieht man ja schön das da alles leer ist im Änderungsbereich, schon das darf nicht sein.
Kannst Du mal bitte zur Sicherheit in Vis ein komplett leeres neues Projekt anlegen und da eine einzige Seite machen mit den Widgets aus dem zur Verfügung gestellten View.
Solltest Du Anydesk haben, würd ich mir das gerne mal live anschauen, wär vermutlich am sinnvollsten. ID kannste mir ja ggfs. im Chat durchgeben. -
@Pittini wenn Anydesk kostenfrei ist, sehr sehr gerne.
-
Ja, is kostenlos für Privatnutzung. https://anydesk.com/de/downloads
-
@Pittini Hallo, ich habe ein Problem beim Löschen der Timer festgestellt(V2.1.7)
Erstellt wurden 4 Timer, der Einfachheit halber wurden hier nur die Ziele zugewiesen
Löschen möchte ich nun Timer 3(Schlafzimmer), gelöscht wird jedoch Timer 2(Play2)
Ein weiterer Versuch, den Timer(nun Timer 2) zu löschen, löscht wiederum den darüberliegenden Timer 1(Play1)
Hier das
Zusätzlich, wenn Timer 3 eingestellt und eingeschaltet ist, dann wird zwar zum Zeitpunkt getriggert, jedoch meldet das LOG dann einen Fehler, Callback nicht erreichbar oder so ähnlich. (ist im LOG der Einfachheit halber nicht enthalten, da es nach einem Fix der gezeigten Fehler evtl automatisch verschwindet)
Ich habe versucht, mehr Vorarbeit zu leisten, um den Fehler evtl. selbst zu finden, bin jedoch kläglich gescheitert
-
@Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:
Ja, is kostenlos für Privatnutzung. https://anydesk.com/de/downloads
Danke. Schreibe Dir eine PN
-
@fastfoot sagte in [Vorlage] Flexibles Timerskript + Vis:
Zusätzlich, wenn Timer 3 eingestellt und eingeschaltet ist, dann wird zwar zum Zeitpunkt getriggert, jedoch meldet das LOG dann einen Fehler, Callback nicht erreichbar oder so ähnlich. (ist im LOG der Einfachheit halber nicht enthalten, da es nach einem Fix der gezeigten Fehler evtl automatisch verschwindet)
Ich habe versucht, mehr Vorarbeit zu leisten, um den Fehler evtl. selbst zu finden, bin jedoch kläglich gescheitertDer Fehler is atypisch und bisher noch bei niemand aufgetreten. Ich kanns leider auch nicht reproduzieren. Da Du aber ne Fehlermeldung hast, würd ich mich gern erst mal da drum kümmern (also genau andersrum als Du dachtest). Poste bitte mal das Log wenn der Fehler auftritt.
-
@Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:
Der Fehler is atypisch und bisher noch bei niemand aufgetreten. Ich kanns leider auch nicht reproduzieren. Da Du aber ne Fehlermeldung hast, würd ich mich gern erst mal da drum kümmern (also genau andersrum als Du dachtest). Poste bitte mal das Log wenn der Fehler auftritt.
Also ich habe ein komplett neues System aufgesetzt, nur mit JS und Hue-Adapter und VIS, Hier nochmal die Ausgangssituation, diesmal mit Zeiten
Gelöscht wird nun Timer3(Play2), in der VIS verschwindet jedoch Timer2
Nun lösche ich wieder die Play2(nun Timer2), in der VIS verschwindet jedoch Timer1
Was jetzt aber absolut unverständlich ist, die originalen Zeiten der ersten beiden Timer wurden mit den verbleibenden Zielen gemischt, d.h. die Play2 geht um 19:22:00 an und um 19:22:30 aus, wie es eigentlich für den Strip gescheduled war. (siehe auch LOG Zeilen 219 + 224). Der gestern beschriebene Fehler erscheint zur Zeit des originalen Timers 4(in Bild3 Timer2)
Lass mich doch wissen, was ich evtl. zusätzlich mitloggen soll um den Fehler einzugrenzen
-
@Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:
Der Fehler is atypisch und bisher noch bei niemand aufgetreten. Ich kanns leider auch nicht reproduzieren
Das verstehe ich nicht, das konnte so nicht funktionieren. Ich habe den Fehler jetzt gefunden, er steckt in der Funktion DeleteTimer() und fällt auf, wenn aus der Mitte des Arrays ein Timer gelöscht wird. Dabei ist mir auch aufgefallen, dass es der unterschiedlichen Behandlung der Arraypositionen nicht bedarf. Folgende Zeile(hier 10) deckt alle Fälle ab
/*if (whichone == 0) { //Erster Eintrag des Arrays soll gelöscht werden NewArray = MyTimer.slice(whichone + 1, TimerCount); } else if (whichone == TimerCount - 1) {//Letzter Eintrag des Arrays soll gelöscht werden NewArray = MyTimer.slice(0, whichone); } else { //Eintrag aus der Mitte des Array soll gelöscht werden NewArray = TempArray.concat(MyTimer.slice(0, whichone - 1), MyTimer.slice(whichone, TimerCount)); };*/ NewArray = TempArray.concat(MyTimer.slice(0, whichone), MyTimer.slice(whichone + 1));
Damit baut sich die Tabelle nach dem Löschen jetzt richtig auf und auch die Timer stimmen danach.
-
@Pittini Hallo Pittini, ich würde gerne als Schaltziel einen "Alias" nehmen. wie ich gesehen und getestet habe ist dies auch möglich. Jedoch wird mit immer nur als Name "Stammordner für Alias, sh. Screenshot" angezeigt und das auch nur für Datenpunkte die in der ersten Ebene liegen. Was mache ich falsch ?
Gruß Baerny -
@Baerny sagte in [Vorlage] Flexibles Timerskript + Vis:
Hallo Pittini, ich würde gerne als Schaltziel einen "Alias" nehmen. wie ich gesehen und getestet habe ist dies auch möglich. Jedoch wird mit immer nur als Name "Stammordner für Alias, sh. Screenshot" angezeigt und das auch nur für Datenpunkte die in der ersten Ebene liegen. Was mache ich falsch ?
Du machst nix falsch, Alias Ordner isn Sonderfall. Normalerweise ist der übergeordnete Channel eines Dps, der mit dem Namen, deswegen nimmt das Skript defaultmäßig dann diesen. Du hast jetzt 2 Lösungswege. Entweder Du benutzt benutzerdefinierte Namen oder Du nutzt im Skript unter Optionen die Variante in Zeile 10 und stellst die auf false. Letzteres gilt dann aber global.
-
@fastfoot sagte in [Vorlage] Flexibles Timerskript + Vis:
@Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:
Der Fehler is atypisch und bisher noch bei niemand aufgetreten. Ich kanns leider auch nicht reproduzieren. Da Du aber ne Fehlermeldung hast, würd ich mich gern erst mal da drum kümmern (also genau andersrum als Du dachtest). Poste bitte mal das Log wenn der Fehler auftritt.
Also ich habe ein komplett neues System aufgesetzt, nur mit JS und Hue-Adapter und VIS, Hier nochmal die Ausgangssituation, diesmal mit Zeiten
Gelöscht wird nun Timer3(Play2), in der VIS verschwindet jedoch Timer2
Nun lösche ich wieder die Play2(nun Timer2), in der VIS verschwindet jedoch Timer1
Was jetzt aber absolut unverständlich ist, die originalen Zeiten der ersten beiden Timer wurden mit den verbleibenden Zielen gemischt, d.h. die Play2 geht um 19:22:00 an und um 19:22:30 aus, wie es eigentlich für den Strip gescheduled war. (siehe auch LOG Zeilen 219 + 224). Der gestern beschriebene Fehler erscheint zur Zeit des originalen Timers 4(in Bild3 Timer2)
Kann wer anders diesen Fehler, bzw. Probleme beim löschen bestätigen?
-
@Pittini Danke, werde ich mal testen
-
@Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:
Kann wer anders diesen Fehler, bzw. Probleme beim löschen bestätigen?
Evtl. hast Du es ja überlesen, aber ich habe mittlerweile schon gezeigt, dass es sich um einen Fehler im Skript handelt, und der muss jeden Nutzer betreffen. Mich verwundert, wieso das nicht nachvollziehbar sein soll, es fällt doch schon rein optisch auf.