NEWS
[Vorlage] Flexibles Timerskript + Vis
-
@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.
-
@fastfoot sagte in [Vorlage] Flexibles Timerskript + Vis:
Damit baut sich die Tabelle nach dem Löschen jetzt richtig auf und auch die Timer stimmen danach.
Muß ich mir bei Gelegenheit noch mal in Ruhe anschauen. Aber Du darfst mir glauben, ich hab hier drölfzich Timer erstellt und gelöscht, sowohl beim testen als auch im Produktivbetrieb und es hat mit dem alten Code immer gepasst. Aber ich werd gern Deine Variante mal durchtesten, wie die sich dann verhält wenns der erste oder letzte Timer ist.
-
@Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:
@fastfoot sagte in [Vorlage] Flexibles Timerskript + Vis:
Damit baut sich die Tabelle nach dem Löschen jetzt richtig auf und auch die Timer stimmen danach.
Muß ich mir bei Gelegenheit noch mal in Ruhe anschauen. Aber Du darfst mir glauben, ich hab hier drölfzich Timer erstellt und gelöscht, sowohl beim testen als auch im Produktivbetrieb und es hat mit dem alten Code immer gepasst. Aber ich werd gern Deine Variante mal durchtesten, wie die sich dann verhält wenns der erste oder letzte Timer ist.
Hiermit kannst du sehr leicht prüfen, was mit der Originalversion falsch läuft und dass meine Variante funktioniert, es ist die abgespeckte DeleteTimer() Funktion und es wird aus einem Array mit 4 Feldern immer ein Feld gelöscht, von 0-3
let MyTimer = ['T0','T1','T2','T3']; let TimerCount = MyTimer.length; function DeleteTimer(whichone, x){ let TempArray = []; let NewArray = []; if (whichone == 0) { //Erster Eintrag des Arrays soll gelöscht werden NewArray = MyTimer.slice(whichone + 1, TimerCount); if(x)log('Richtig => ' + whichone + ' ' + NewArray); } else if (whichone == TimerCount - 1) {//Letzter Eintrag des Arrays soll gelöscht werden NewArray = MyTimer.slice(0, whichone); if(x)log('Richtig => ' + whichone + ' ' + NewArray); } else { //Eintrag aus der Mitte des Array soll gelöscht werden NewArray = TempArray.concat(MyTimer.slice(0, whichone - 1), MyTimer.slice(whichone, TimerCount)); if(x)log('Falsch => ' + whichone + ' ' + NewArray); }; NewArray = TempArray.concat(MyTimer.slice(0, whichone), MyTimer.slice(whichone + 1)); if(!x)log('Richtig => ' + whichone + ' ' + NewArray); //MyTimer = NewArray; //MakeTable(); } log('Original'); for(let i = 0; i < TimerCount; i++){ DeleteTimer(i,1); } log('nach Änderung'); for(let i = 0; i < TimerCount; i++){ DeleteTimer(i,0); }
-
@Pittini einen grossen Dank an Deine persönliche Hilfe über Fernverwaltung. Fehler ist gefunden. Das Problem lag an meiner Tabs Vorlage. Wie auf meinen Screenshots zu sehen ist, habe ich oberhalb der VIS Tabs der einzelnen Seiten. Dort muss es einen Bug geben. Wenn wir dies ohne diese Tabs Voreinstellung ausführen besteht der Fehler nicht.
HERZLICHEN DANK -
Ich habe häufiger das Problem dass der Javascriptadapter abstürzt beim hinzufügen eines neuen Timers
javascript.0 2020-08-15 22:20:03.237 info (10516) received all objects javascript.0 2020-08-15 22:20:01.859 info (10516) received all states javascript.0 2020-08-15 22:19:59.847 info (10516) requesting all objects javascript.0 2020-08-15 22:19:59.845 info (10516) requesting all states javascript.0 2020-08-15 22:19:59.751 info (10516) starting. Version 4.6.17 in /opt/iobroker/node_modules/iobroker.javascript, node: v12.18.3, js-controller: 3.1.6 javascript.0 2020-08-15 22:19:26.560 error (8468) at processTicksAndRejections (internal/process/task_queues.js:97:5) javascript.0 2020-08-15 22:19:26.560 error (8468) at runMicrotasks (<anonymous>) javascript.0 2020-08-15 22:19:26.560 error (8468) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49 javascript.0 2020-08-15 22:19:26.559 error (8468) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23) javascript.0 2020-08-15 22:19:26.559 error (8468) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:547:55 javascript.0 2020-08-15 22:19:26.559 error (8468) at script.js.Timer.TimerV217:260:17 javascript.0 2020-08-15 22:19:26.559 error (8468) at FillTimerArray (script.js.Timer.TimerV217:281:9) javascript.0 2020-08-15 22:19:26.559 error (8468) at CreateDeviceTrigger (script.js.Timer.TimerV217:1056:5) javascript.0 2020-08-15 22:19:26.558 error (8468) at on (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1151:28) javascript.0 2020-08-15 22:19:26.558 error (8468) at Object.subscribe (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:973:112) javascript.0 2020-08-15 22:19:26.557 error (8468) script.js.Timer.TimerV217: TypeError: Cannot read property 'period' of null
Eine Idee und Danke im Voraus
-
@Saschag sagte in [Vorlage] Flexibles Timerskript + Vis:
Eine Idee und Danke im Voraus
N komplettes Log wär schon hilfreich.
-
Hallo, guten Abend zusammen! Ich brauche bitte (mal wieder) Eure Hilfe. Ich habe den Aktor der Poolpumpe getauscht und einen neuen Namen vergeben. Die Timer haben sich nicht löschen lassen, daher habe ich in der Java-Instanz alles gelöscht ....
Auch das Script habe ich neu installiert, auch wenn ich nicht wüsste, in welchem Zusammenhang es stehen sollte, dass ich immernoch folgende Meldung erhalte
Sonoff.0.Poolpumpe war der alte Aktor, der existiert nicht mehr, und ich bin der Meinung, ich habe auch alles entsprechend gelöscht.
Wer hat eine Idee, wo der Fehler versteckt sein könnte?
Danke für Eure Hilfe!
Schönen Abend, Gruß Stefan.
-
@rotamint sagte in [Vorlage] Flexibles Timerskript + Vis:
Wer hat eine Idee, wo der Fehler versteckt sein könnte?
Das sieht mir nach ner Leiche in den Aufzählungen aus. Wenn man nen Dp löscht, der ner Funktion zugeordnet war, wird diese Zuordnung manchmal nicht gelöscht. Geh mal in Aufzählungen > Funktionen und kontrollier bei TimerTarget ob da der alte Dp noch aufgeführt ist. Wenn ja, dort löschen, dann sollte es wieder klappen.
-
@Pittini Perfekt! Wieder einmal vielen Dank für Deine schnelle & kompetente Hilfe. Genau dort hatte sich der Fehler versteckt
Danke. Stefan.
-
Hallo, ich hab auch mal was wieder
@Pittini , gestern warum auch immer waren alle einzelnen Positionen weg. Vielleicht hat es mit dem Skript Engerie Update gestern zu tun gehabt, es kam ja heute bereits wieder ein Update davon.
Wie auch immer es waren alle Postionen weg
Musste alle wieder neu eintragen, wollte kein Backup der letzten Tage komplett wieder einspielen.
Es geht wieder alles.
Was super wäre:-
Backup Möglichkeit der einzelnen Positionen, einfach irgendwo ein Button, draufklicken und die Postionen werden gespeichert. Sollte es noch mal passieren, Restore Button um die Positionen wieder einzuspielen. Dann spart man sich die ganze Arbeit.
-
Sortierung nach Zeit der Positionen. Das diese ggf. nicht durcheinander sind. z.b. hab ich vergessen einmal eine Ausschaltzeit einzugeben, kann man nachträglich, aber dann ist diese an der letzten Position.
So das war erst mal. Vielleicht kann man gelegentlich mal Einbauen.
Danke -
-
@deta sagte in [Vorlage] Flexibles Timerskript + Vis:
Was super wäre:
Backup Möglichkeit der einzelnen Positionen, einfach irgendwo ein Button, draufklicken und die Postionen werden gespeichert. Sollte es noch mal passieren, Restore Button um die Positionen wieder einzuspielen. Dann spart man sich die ganze Arbeit.
Sortierung nach Zeit der Positionen. Das diese ggf. nicht durcheinander sind. z.b. hab ich vergessen einmal eine Ausschaltzeit einzugeben, kann man nachträglich, aber dann ist diese an der letzten Position.
So das war erst mal. Vielleicht kann man gelegentlich mal Einbauen.
Hm, sorry, wirds beides nicht geben, aus unterschiedlichen Gründen.
Backup wirds nicht geben weil, der Datenverlust kam ja nicht durchn Skriptfehler. In dem Fall wäre der einfachste Backup Weg wohln Screenshot, dann ist das doch fix wieder eingetragen. Von wieviel Timern sprechen wir denn?
Die Sache mit dem sortieren nach Zeit fände ich sinnvoll, hab auch schon mal drüber nachgedacht, war mir aber ehrlich gesagt zuviel Aufwand. Mal sehen, vieleicht is mir ja mal langweilig . -
@Pittini sagte in [Vorlage] Flexibles Timerskript + Vis:
@deta sagte in [Vorlage] Flexibles Timerskript + Vis:
Was super wäre:
Backup Möglichkeit der einzelnen Positionen, einfach irgendwo ein Button, draufklicken und die Postionen werden gespeichert. Sollte es noch mal passieren, Restore Button um die Positionen wieder einzuspielen. Dann spart man sich die ganze Arbeit.
Sortierung nach Zeit der Positionen. Das diese ggf. nicht durcheinander sind. z.b. hab ich vergessen einmal eine Ausschaltzeit einzugeben, kann man nachträglich, aber dann ist diese an der letzten Position.
So das war erst mal. Vielleicht kann man gelegentlich mal Einbauen.
Hm, sorry, wirds beides nicht geben, aus unterschiedlichen Gründen.
Backup wirds nicht geben weil, der Datenverlust kam ja nicht durchn Skriptfehler. In dem Fall wäre der einfachste Backup Weg wohln Screenshot, dann ist das doch fix wieder eingetragen. Von wieviel Timern sprechen wir denn?War nicht das große drama, aber wäre eine gute Erleichterung, kommt ja nicht jeden Tag vor, aber warum das mit einmal weg war, keine Ahnung. Alles andere lief.
Die Sache mit dem sortieren nach Zeit fände ich sinnvoll, hab auch schon mal drüber nachgedacht, war mir aber ehrlich gesagt zuviel Aufwand. Mal sehen, vieleicht is mir ja mal langweilig .
Jup, hat ja keine Eile So wie du Lust und Laune hast.
-
Ich weiß nicht ob es hier schon angemerkt wurde oder schon gelöst wurde weil ich jetzt länger nicht mehr so intensiv dem Thread folgen konnte.
Mir ist aufgefallen, dass wenn ich z.B. Beginn Sonnenuntergang als Zeit auswähle, der richtige Zeitpunkt ausgewählt wird, sich aber über ein paar Tage hinweg nicht selbstständig aktualisiert. Erst beim erneuten speichern eines Timers wird der Zeitpunkt aktualisiert. Ich könnte mir vorstellen, dass dies nicht von dir gewollt ist.
-
@Pittini Vielen Dank für das tolle Script - hat nach den Anweisungen zur Installation auch bei mir als relativem Neuling sofort geklappt. Ich habe nur festgetellt, dass beim Löschen von Timern etwas nicht stimmt. Wenn ich Timer 5 löschen will muss ich auf Timer 6 einstellen, sonst wird der falsche Eintrag gelöscht. Somit kann ich den letzten Timer auch nicht löschen. Liegt das an mir oder hat sonst jemand auch diesen Effekt.
Danke fürs nachschauen. -
@Rene55 sagte in [Vorlage] Flexibles Timerskript + Vis:
@Pittini Vielen Dank für das tolle Script - hat nach den Anweisungen zur Installation auch bei mir als relativem Neuling sofort geklappt. Ich habe nur festgetellt, dass beim Löschen von Timern etwas nicht stimmt. Wenn ich Timer 5 löschen will muss ich auf Timer 6 einstellen, sonst wird der falsche Eintrag gelöscht. Somit kann ich den letzten Timer auch nicht löschen. Liegt das an mir oder hat sonst jemand auch diesen Effekt.
Danke fürs nachschauen. -
@fastfoot Danke für die prompte Antwort. Ich habe es daraufhin gerade nochmals versucht: Angewählt habe Timer 4 -> und Timer 3 wurde gelöscht. Scheint also reproduzierbar zu sein.
-
@Rene55 sagte in [Vorlage] Flexibles Timerskript + Vis:
@fastfoot Danke für die prompte Antwort. Ich habe es daraufhin gerade nochmals versucht: Angewählt habe Timer 4 -> und Timer 3 wurde gelöscht. Scheint also reproduzierbar zu sein.
Ja, ist es. Der erste und letzte Timer lassen sich aber problemlos löschen. Im Beitrag darunter habe ich meine Lösung dazu gepostet