NEWS
[Vorlage] Variable Zeitsteuerung mit VIS Editor
-
@Chris71
Hi. Bei dir müssen zwei Aufzählungen existieren. Eine für die Rollläden und eine weitere Aufzählung für die States der Bedingungen. Die Namen der beiden Aufzählungen trägst Du oben in den beiden Feldern ein.
Die voreingestellten Namen basieren auf meine Aufzählungen. -
@GiuseppeS Hallo Guiseppe,
ich habe das schon mit Level probiert. geht aber nicht.
-
@Chris71
Du benötigst eine weitere Aufzählung, in der deiner Meinung nach nützliche Bedingungen drin sind. Z.Bsp. "AtHome" o.ä. wird gern benutzt.
Diese Aufzählung gibst du bei der Variable für die Bedingungen an. "timerconditions" ist bei mir eine reale Aufzählung. Bin die kommende Woche nur eingeschränkt mobil online, kann leider kein Screenshot vom Smartphone einfügen, wie bei mir die Aufzählungen aussehen. -
diese Aufzählungen stehen in enum.functions ?
Sorry stehe im Moment voll auf der Leitung.
Oder muss ich eine function erstellen? -
@Chris71
Am besten erstellst du eine neue Aufzählung unter enum.functionsIn diese Aufzählung schiebst du States rein, die Du für nützlich erachtest.
Den Namen der Aufzählung gibst Du nun im Skript an.
-
@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.