NEWS
[Vorlage] Variable Zeitsteuerung mit VIS Editor
-
@Chris71
In deinem Screenshot ist ein Ausschnitt aus deinem Objekt-Explorer zu sehen. Versuchst du hier Aufzählungen zu erstellen bzw. zu editieren?
Im linken Hauptreiter "Aufzählungen" (statt "Objekte") kannst du Aufzählungen erstellen und editieren/befüllen. -
Habe ich jetzt auch gefunden wie ich das mache.
Ich spiele das Script jetz mal neu ein.
Danke -
Hallo zusammen,
dieses Script ist eigentlich für Rollläden, kann es auch für Lampen genutzt werden? Sozusagen als programmierbare Anwesenheitssimulation? Wenn ich es richtig erkenne, kann auch ein Actor mehrere Vorgaben erhalten (18 Uhr an, 19 Uhr aus, 20 Uhr an etc. ggf auch Dimmwerte?)
Sorry falls ich total daneben liege
-
@PatrickFro sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Sorry falls ich total daneben liege
Da liegst Du nicht daneben , es kann auch dafür genutzt werden , da GiuseppeS es auch dafür vorgesehen hat .
An / Aus ( true / false ) ist über Pulldown wählbar ,
oder auch die Dimmwerte 0-100 -
Danke für die Info. Ich schiebe das Script für mich noch auf, denn aktuell verstehe ich die Einstellungen noch nicht, auch hab ich andere Baustellen. Ich werd sicher noch ein paar Fragen loswerden
-
Der Supergau ist gerade passiert :
Die Terrassentür ist auf und der Terrassenrolladen ist gerade um 22:34 Uhr heruntergefahren , obwohl zwei Bedingungen nicht erfüllt waren .
Sehr komisch um fast die gleiche Uhrzeit + - wegen Random lief es immer die Tage und die Rollladen fuhr nicht runter .
Ich habe es nicht mehr verändert , weder war ein Neustart vom Skript.Die Bedingungen sind da, weil meine Widget Bilder : Tür auf sichtbar und die Bedienung ausgeblendet ist .
Da der Zustand 0% jetzt ist ,wird natürlich dann der Hintergrund blau aktiviert.Ich bin gerade ratlos .
TimerJSON
ConditionJSON
Das sind die zwei letzten LOG Eintragungen :
Kein LOG Eintrag um 22:34 Uhr vorhanden und auch kein weiteres Programm vorhanden.
-
@Glasfaser
So wie es aussieht wurden zuletzt die Timer um 20:24 Uhr gesetzt; Bedingungen waren wohl erfüllt.
Um 20:51 Uhr hatten sich die Bedingungen geändert (Terrassen Tür auf?) und die Timer wurden neu bewertet. Da steht dann auch grob "Timer nicht erstellt da Bedingungen nicht erfüllt" aber ich bin mir gerade unsicher ob da nicht auch zuvor hätte stehen müssen "Timer gelöscht". Bin nur mobil online und kann nicht wirklich groß analysieren.
Ich schau im laufe des Tages mal in die txt des Skripts rein.
Zu den Bedingungen: Gab es zufällig eine kurzzeitige mehrfache Änderung der Bedingungen, so wie ein Flackern? Nicht, dass bestimmte Wartezeiten im Skript eine Analyse verzögert und dann vermeintlich ältere States auswertet. -
Zu den Bedingungen: Gab es zufällig eine kurzzeitige mehrfache Änderung der Bedingungen, so wie ein Flackern? Nicht, dass bestimmte Wartezeiten im Skript eine Analyse verzögert und dann vermeintlich ältere States auswertet.
Nein kein flattern bekannt, die Terrassentür wurde nur einmal geöffnet. ( Bedingung1 : Schloss auf / Bedingung 2: Tür auf )
-
@Glasfaser
Gerade geprüft: Ist zwischen 20:24 Uhr und 20:51 Uhr sicher nichts weiter im Log?
Um 20:24 Uhr werden die schedules gesetzt. Um 20:51 Uhr wurden keine neuen schedules gesetzt. Aber es hätten definitiv die alten gelöscht werden müssen. Das Löschen ist quasi ohne If-Bedingungen. Wenn schedule existent, dann löschen... Das ist bei dir anscheinend nicht passiert. Erklären kann ich mir das aber auch nicht.
Werde im Skript noch eine "else" Log-Ausgabe hinzufügen, um sowas besser nachzuvollziehen. Else zu "if (cronArr[scheduleNr])". -
Ich habe nur im Log diese beiden Meldungen , seitdem ich die Tür geöffnet habe.
-
Wenn ich daheim bin werde ich die oben genannte Bedingung "if (cronArr[scheduleNr])" überarbeiten. Die hat bei dir anscheinend nicht gegriffen.
Kannst evtl selbst testen mit: if (cronArr[scheduleNr] != null). Null vllt. groß schreiben. Habe noch eine andere Idee als workaround zur weiteren Absicherung, muss ich aber selbst machen. Nur blöd wenn die Ursache unbekannt ist. -
Ich kann es Simulieren , die Bedingungen werden nicht beachtet :
15:32 Uhr - Eine 3. Uhrzeit für runter um 15:36 Uhr erstellt
15:33 Uhr - Tür auf
15:34 Uhr - Bedingung wurde rot
15:35 Uhr - Rollladen fuhr runter15:36 Uhr - Tür zu gemacht , da Rollladen runter und Rollladen hochgefahren
15:38 Uhr - Bedingung wurde grün
15:38 Uhr - Neue Uhrzeit eingestellt für 15:41 Uhr
15:39 Uhr - Tür auf
15:40 Uhr - Bedingung wurde rot
15:41 Uhr - Rollladen fuhr runter und Rollladen wieder hochgefahren
////
15:50 Uhr - Eine 4. Uhrzeit für hoch um 15:56 Uhr erstellt
15:51 Uhr - Tür auf
15:52 Uhr - Bedingung wurde rot
14:56 Uhr - Rollladen fuhr hochhier der Log ab 15:30 Uhr
Nachtrag : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Sehr komisch !!!???????
habe Timer 3 und 4 gelöscht ,
dann zufällig bei Tür auf , also wo die zwei Bedingungen vorhanden sind ( Bedingung rot )16:51 Uhr - Uhrzeit für runter um 16:53 Uhr erstellt ( Timer 3 )
16:53 Uhr - Rollladen blieb oben ( Bedingung natürlich noch rot ) -
@GiuseppeS
Habe ein Nachtrag , siehe oben -
@Glasfaser
Es ist in den Logs genau sichtbar, dass das Löschen der Timer anscheinend nicht immer funktioniert.
Beim letzten Test ist das Löschen immer vorhanden, bevor eine Validierung stattfindet. Daher IO.
Bei den fehlerhaften Fällen werden die Timer nicht gelöscht, obwohl die Bedingungen den Trigger ausgeführt hatten.Es wird bei Änderungen der Bedingungen immer der korrekte Timer getriggert.
Eine erneute Erstellung wird auch immer vermieden wenn die Bedingungen insgesamt false sind.
Das aber vorliegende Löschen der Timer wird nicht durchgeführt. Wie oben erwähnt, werde ich die Abfrage, ob Timer xy vorhanden ist, anders gestalten. Aber zunächst muss ich schauen, dass ich den Fehler reproduzieren kann.Dein letzter Stand ist, dass ein Reproduzieren des Fehlers nicht immer klappt, oder?
Am Sonntag werde ich hoffentlich dazu kommen ein paar Tests durchzuführen.
-
@Glasfaser
Sehe glaub eine Systematik.Es gibt unterschiedliche Fälle, wie ein Timer (sowohl löschen als auch erstellen) getriggert wird:
- Durch Button in Vis Popup
- Tägliches Triggern über Cron in Funktion recalc
- Triggern über geänderte Bedingungen
Beim hier genannten letzten Fall läuft wohl was schief.
Als du den letzten Test gemacht hast, wurden zwischen Timer-Erstellung und gewünschter Timer-Ausführung die Bedingungen nicht geändert (waren dauerhaft false). Es funktionierte alles wie gewünscht.
Bei den NIO Fällen waren die Bedingungen der Trigger für die Schedules. Timer waren gesetzt und eine Änderung der Bedingungen sollte den Timer löschen, was aber nicht funktionierte.
Vielleicht kann ich was im Skript auf die schnelle finden.
-
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Dein letzter Stand ist, dass ein Reproduzieren des Fehlers nicht immer klappt, oder?
Wie ich oben beschrieben haben ist der Fehler immer Reproduzierbar.
Was komisch ist bei meinen Nachtragsanhang , das wenn die Tür auf ist also die Bedingungen vorhanden sind und ich den Timer ändere/bzw, einen neuen erstelle es wie oben beschrieben zu der eingestellten Uhrzeit auch der Rollladen nicht runterfährt. -
@Glasfaser
Ok, dann ist es wie in meinem letzten Post beschrieben und auf diese Art reproduzierbar.
Geänderte Bedingungen löschen nicht zuvor gesetzte Timer.
Werde schauen was ich finden kann... -
Mache in Ruhe …dich auf die suche ... wo der Fehler ist ,
ich habe mein Datenpunkt / Skript für den Terrassenrollladen erstmal wieder aktiviert wie vor deinen Änderungen im Skript , da ich ab morgen im Urlaub bin .War auch eine harte Nuss die ich dir zur Erweiterung des Skripts gegeben habe
-
@Glasfaser
Dieses ToDo hatte ich allerdings schon länger auf der Liste, aber mit mangelhafter Motivation
Aber keine Sorge, debuggen mach ich gern, auch wenn es bedeutet, dass zuvor etwas nicht perfekt lief -
@Glasfaser
Ich versuche gerade den Fehler zu reproduzieren, bisher erfolglos.Meine Vorgehensweise:
- Bedingung wäre erfüllt aber Timer ist noch inaktiv
- Timer wird aktiviert; schedule wird laut log erstellt da Bedingung erfüllt
- States werden verändert damit Bedingungen = false werden
- Im nächsten Cron-Durchlauf wird Änderung des States der Bedingung erkannt und Darstellung der Bedingung wird rot
-> schedule wird laut log gelöscht und nicht neu erstellt
Das entspricht doch deinen Tests wo es wiederholt nicht geklappt hat, oder?
Ich kann zwar gerade nichts am Skript testen aber zumindest das Reproduzieren wäre möglich...Edit:
Habe jetzt unterschiedliche Wege probiert.- Timer aktiviert / deaktiviert während Bedingung immer true war.
- Bedingung true / false während Timer dauerhaft Aktiviert war
- Test wie Original-Post aber Bedingung zunächst false, dann true und danach wieder false.
Kann den Fehler einfach nicht reproduzieren. Kannst du dein Original Skript hochladen?
In der Zwischenzeit grübel ich mal weiter. Morgen geht wieder der Flug gen Heimat, da gibt's genug Wartezeit