NEWS
[Vorlage] Variable Zeitsteuerung mit VIS Editor
-
@Glasfaser
Ich konnte nichts auffälliges in deinem Skript finden. Kann mir weiterhin nicht erklären wieso es bei dir dieses Verhalten gibt. Ich schau mal ob ich dein Skript ohne großen Aufwand bei mir zum Laufen bringen kann.Habe eben übrigens ein kleines Update des Skripts hochgeladen. Diesmal gezippt Datei, damit die Umlaute weiterhin passen.
Habe ein paar Kleinigkeiten angepasst (siehe Edit im Post 1).Kann bitte eine Person, die auch das Skript nutzt, testen ob die Bedingungen alle zum gewünschten Ergebnis führen: werden die Timer korrekt gesetzt bzw. gelöscht? Ich kann leider weiterhin nicht die Fehlerfälle von @Glasfaser reproduzieren.
Danke
-
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Kann bitte eine Person, die auch das Skript nutzt, testen ob die Bedingungen alle zum gewünschten Ergebnis führen: werden die Timer korrekt gesetzt bzw. gelöscht?
Skript aktualisiert,
Skript Fehler:javascript.0 2019-07-14 20:15:00.017 error at listOnTimeout (timers.js:263:5) javascript.0 2019-07-14 20:15:00.017 error at tryOnTimeout (timers.js:300:5) javascript.0 2019-07-14 20:15:00.017 error at ontimeout (timers.js:436:11) javascript.0 2019-07-14 20:15:00.017 error at Timeout._onTimeout (C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:501:7) javascript.0 2019-07-14 20:15:00.017 error at C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:543:11 javascript.0 2019-07-14 20:15:00.017 error at Job.invoke (C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:173:10) javascript.0 2019-07-14 20:15:00.017 error at Job.nodeSchedule.scheduleJob [as job] (C:\ioBroker\node_modules\iobroker.javascript\lib\sandbox.js:1191:34) javascript.0 2019-07-14 20:15:00.017 error at Object.compareCond (script.js.Sigi.Timer_Licht:71:30) javascript.0 2019-07-14 20:15:00.017 error at JSON.parse (<anonymous>:null:null) javascript.0 2019-07-14 20:15:00.017 error Error in callback: SyntaxError: Unexpected end of JSON input javascript.0 2019-07-14 20:15:00.014 info script.js.Test.Countdown_Datum: NaN Resttage (NaN Wochen) bis zum (Sigi) javascript.0 2019-07-14 20:14:00.007 info script.js.Test.Countdown_Datum: NaN Resttage (NaN Wochen) bis zum (Sigi) javascript.0 2019-07-14 20:14:00.005 error at Timer.processTimers (timers.js:223:10) javascript.0 2019-07-14 20:14:00.005 error at listOnTimeout (timers.js:263:5) javascript.0 2019-07-14 20:14:00.005 error at tryOnTimeout (timers.js:300:5) javascript.0 2019-07-14 20:14:00.005 error at ontimeout (timers.js:436:11) javascript.0 2019-07-14 20:14:00.005 error at Timeout._onTimeout (C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:501:7) javascript.0 2019-07-14 20:14:00.005 error at C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:543:11 javascript.0 2019-07-14 20:14:00.005 error at Job.invoke (C:\ioBroker\node_modules\iobroker.javascript\node_modules\node-schedule\lib\schedule.js:173:10) javascript.0 2019-07-14 20:14:00.005 error at Job.nodeSchedule.scheduleJob [as job] (C:\ioBroker\node_modules\iobroker.javascript\lib\sandbox.js:1191:34) javascript.0 2019-07-14 20:14:00.005 error at Object.compareCond (script.js.Sigi.Timer_Licht:71:30) javascript.0 2019-07-14 20:14:00.005 error at JSON.parse (<anonymous>:null:null) javascript.0 2019-07-14 20:14:00.005 error Error in callback: SyntaxError: Unexpected end of JSON input javascript.0 2019-07-14 20:13:22.994 error at Timer.processTimers (timers.js:223:10) javascript.0 2019-07-14 20:13:22.994 error at listOnTimeout (timers.js:263:5) javascript.0 2019-07-14 20:13:22.994 error at tryOnTimeout (timers.js:300:5) javascript.0 2019-07-14 20:13:22.994 error at ontimeout (timers.js:438:13) javascript.0 2019-07-14 20:13:22.994 error at Timeout._onTimeout (C:\ioBroker\node_modules\iobroker.javascript\lib\sandbox.js:1886:34) javascript.0 2019-07-14 20:13:22.994 error at Object.main (script.js.Sigi.Timer_Licht:820:5) javascript.0 2019-07-14 20:13:22.994 error at createConditionsJSON (script.js.Sigi.Timer_Licht:48:50) javascript.0 2019-07-14 20:13:22.994 error Error in callback: TypeError: Cannot read property 'common' of null javascript.0 2019-07-14 20:13:22.993 warn Object "enum.functions.timerconditions" does not exist
-
@sigi234
Die Aufzählung "timerconditions" existiert bei dir nicht. Daher diese Fehler.
Auf welcher Version warst du? Noch die ohne variable Bedingungen?
Dann wäre es auch wichtig das Popup-View einzulesen. Außerdem wäre es wichtig die States alle zu löschen.- Skript stoppen
- PopUp View importieren
- Alle Objekte unter javascript.0.timer löschen
- Aufzählung "timerconditions" erstellen und states für die Bedingungen reinziehen, z.B. sowas wie AtHome was jeder in ähnlicher Form nutzt
- Skript neu starten (2 Mal)
Falls du die Bedingungen nicht nutzen willst, kannst du auch einfach wieder das alte Script weiternutzen.
-
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Falls du die Bedingungen nicht nutzen willst, kannst du auch einfach wieder das alte Script weiternutzen.
Hab ich jetzt nicht mehr.............
-
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Aufzählung "timerconditions" erstellen und states für die Bedingungen reinziehen, z.B. sowas wie AtHome was jeder in ähnlicher Form nutzt
Wie genau?
-
@sigi234
Du hast doch eine Aufzählung, worin alle Rollläden drin stehen.
Jetzt muss eine neue Aufzählung erstellt werden. Kannst du nennen wie du magst. Hier sollten Objekte/States rein kommen, die als Bedingung für die spätere Ausführung der Timer genutzt werden sollen.
Hast du Türkontakte? Die wären z.B. sinnvoll.
Den Namen der neuen Aufzählung gibst du oben im Script an. So wie du es mit den Rollläden auch gemacht hattest.Wenn noch etwas unklar ist, bitte genau beschreiben was unklar ist.
-
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Du hast doch eine Aufzählung, worin alle Rollläden drin stehen.
Nimm ja die Funktion Licht (Hue).......egal, ich mache alles mal neu.
-
@sigi234
Die Aufzählung "Licht" ist bei dir für das, was du steuern möchtest.Du musst im Skript ein paar Zeilen darunter noch eine weitere Aufzählung angeben. Bei mir heißt die "timerconditions". Diese Aufzählung ist für die Bedingungen, die man Hinterlegen kann.
Im ersten Post steht auch nochmal alles beschrieben.
-
vielen Dank für das Bereitstellen deines Timers. Da steckt eine Menge Arbeit dahinter, wenn man die Menge an Codezeilen und die VIS Views genauer betrachtet.
Das ist nicht selbstverständlich, dass jemand sowas einfach so bereit stellt. Tolle Arbeit und sehr professionell gelöst.!Ich habe die aktuellste Version getestet und bin genauso vorgegangen, wie du es im ersten Poste beschrieben hast. Es funktioniert alles einwandfrei.
Eine Bedingung habe ich für meine Terrassentüre ( Xiaomi Türsensor ) auch erfolgreich getestet. Ich kann die Probleme, die Glasfaser hatte nicht nachvollziehen.Wenn ich mir noch was wünschen würde, dann zusätzlich einen Offset in Sekunden definieren zu können.
Ich möchte z.B. meine Rollläden im 5 s Takt nacheinander schalten können. -
@K_o_bold
Danke für deine Tests. Falls dir noch was auffallen sollte, einfach melden.Werde schauen, dass ich folgende Punkte zeitnah integrieren kann:
- Offset mit 5s, 10s, 15s usw.
- Reihenfolge der Geräte in Tabelle über Reihenfolge in "javascript.0.Timer.Devices.Editor.DropDownDevice" editierbar.
Wenn Reihenfolge für Dropdown geändert wird, dann ändert sich auch die Reihenfolge in der Tabelle. Werde dafür das Dropdown-State eine Ebene höher ziehen (nicht unter "Editor").
-
@GiuseppeS
(So... Urlaub leider zu Ende .)Habe dein neues Skript auf meine Bedürfnisse geändert.
Sieht sehr gut aus !!
Alle Bedingungen / Simulationen habe ich wie schon oben Beschrieben genauso auf dein neues überarbeitetes Skript angewandt und es läuft wie es sein soll.
Deine neu eingesetzt Debug Option habe ich mal für mich aktiviert.
Im Log werden auch alle Bedingungen / Schedule protokolliert..Ich werde es dann mal einige Tage einen Dauertest unterziehen .
-
@Glasfaser
Willkommen zurück aus dem Urlaub. Viel Spaß beim Testen. Wenn dir was auffällt, einfach Bescheid geben. Lass den Debug-Switch an, bis du sicher bist dass alles läuft. Betrifft zwar aktuell nur eine Ausgabe (werde bei der nächsten Version weitere als debug drin haben) aber die wäre wichtig für deine letzten Fehlerfällen. -
Habe heute ein kleines Update erstellt:
Die Reihenfolge der Timer innerhalb der Tabelle kann nun über das folgende DropDown State verändert werden:
javascript.0.Timer.Devices.DropDownDevice
Bitte achtet dabei, dass die Semikolons weiterhin korrekt gesetzt sind:
z.B. wird aus"Schlafz.;Balkon_Li;Balkon_Re;Esstisch;Kueche;Bad;Kinderz."
dann
"Schlafz.;Balkon_Li;Balkon_Re;Esstisch;Kueche;Kinderz.;Bad"
Somit sind die letzten beiden Einträge vertauscht. Die Einträge in dieser Liste dienen nicht dazu, die Namen innerhalb der Tabelle zu ändern!
Dieser State bestand eigentlich im Unterordner Editor, aber ich habe ihn eine Ebene höher geholt, damit es leichter zu finden ist.
Bitte beachten, dass die Verlinkung innerhalb der VIS angepasst werden muss, wenn nun das Skript geupdated wird:Wer ein Ordnungs-Fanatiker ist, kann genau das alte State im Unterordner "Editor" löschen. Dieser hat keine Funktion mehr:
javascript.0.Timer.Devices.Editor.DropDownDeviceNicht jedermann ist ein Fan von Log-Ausgaben, die können nun komplett abgestellt werden (stdLog und debugLog auf false setzen).
Offene Punkte für zukünftige Updates:
• Ausführung des nächsten Timers in Objekt ausgeben. Objekt kann dann individuell in der VIS ausgegeben werden.
• 5s, 10s, 15s und 30s als mögliche Offsets rein nehmen, zusätzlich zu den Minuten -
@GiuseppeS
Die Testwoche ist noch nicht ganz rum , aber ich kann dir jetzt schon mitteilen das alle Bedingungen berücksichtigt wurden , also alles Top.Habe gerade nebenbei dein neues Script getestet . Alles OK , aber für mich erstmal kein Update Wert
Stehe gerade auf dem Schlau , was meinst Du mit: Ausführung des nächsten Timers in Objekt ausgeben. Objekt kann dann individuell in der VIS ausgegeben werden.
-
@Glasfaser
Freut mich, dass alles weiterhin gut funktioniert. Wer weiß was letztes Mal schief gelaufen war.Dadurch, dass du alle Geräte unterteilt hast, ziehst du wirklich keinen Nutzen aus diesem Update.
Ausgabe des nächsten Timers:
Wenn es aktuell 15 Uhr ist, wird geschaut wann ab dem aktuellen Zeitpunkt der nächste Timer greift.
Dann würde im Objekt z.B. stehen:
"18:57 Uhr Rollo_Bad" oder wenn nichts mehr am selben Tag stattfindet :
"Mo 9:38 Uhr Rollo_Kueche"Vorschläge willkommen
(war eine Anfrage von @K_o_bold ) -
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
@Glasfaser
…….> Ausgabe des nächsten Timers:
Wenn es aktuell 15 Uhr ist, wird geschaut wann ab dem aktuellen Zeitpunkt der nächste Timer greift.
Dann würde im Objekt z.B. stehen:
"18:57 Uhr Rollo_Bad" oder wenn nichts mehr am selben Tag stattfindet :
"Mo 9:38 Uhr Rollo_Kueche"
…………………………...Aber erst nach dem Schedule nach 15:10 Uhr (Astro / recalc)
wird geschaut wann ab dem aktuellen Zeitpunkt der nächste Timer greift.// Astro-Zeiten werden täglich aktualisiert, anschließend neu Berechnung der Timer schedule('5 15 * * *', setAstro); schedule('10 15 * * *', recalc);
-
@GiuseppeS , vielen Dank für die Berücksichtigung meiner Vorschläge..
Läuft alles wie gewünscht Ich bin begeistert...
Reihenfolge ändern über das neue Objekt ist eine super Sache... -
@GiuseppeS hast du eine Einstellung für ein Helligkeitsensor den man übersteuern kann ??
-
@arteck
Was genau ist mit "übersteuern" gemeint?
Wenn du das Steuern eines Rollladen in Abhängigkeit eines Lichtsensors meinst, ist aktuell z.B. folgendes möglich:
Der Lichtsensor wird in die Aufzählung für die Bedingungen gesetzt.
Der Rollladen wird auf eine bestimmte Uhrzeit für das Öffnen eingestellt und zusätzlich z.B. die Bedingung "Lichtsensor < 200".
Dann wird der Rollladen nur geöffnet, wenn der Lichtsensor zur gewählten Uhrzeit kleiner 200 ist.Oder willst du mit "übersteuern" ein Triggern des Öffnen/Schließen Befehls unabhängig von der Uhrzeit erreichen?
-
@GiuseppeS ja so ähnlich... der Sensor meldt Licht>300 (Rollo würde auf gehen) aber da es Wochenende ist und ich ausschlafen will übersteure ich diesen mit einer Uhrzeit... erst ab 10 Uhr hoch.. oder im Urlaub (Urlaubsmodus)
das gleiche andersrum Lichtsensor < 50 ..Rolo würde zu gehen aber da ich in den Garten mir die Beleuchtung anschauen will lasse ich die Rollos erst um 2 Uhr nachts runnter..