Timer nicht zuverlässig (in Kombination mit Zeitsteuerung?)
Moderator: Co-Administratoren
Timer nicht zuverlässig (in Kombination mit Zeitsteuerung?)
Hallo zusammen,
ich würde gern nach Rat zu einem meiner Langzeitprobleme fragen.
Ich benutze seit einigen Jahren ein WebUI Programm zum Steuern meiner Rollos.
Das Programm ruft mit Verzögerung 3 Skripte auf, die einige Berechnungen machen und abhängig davon die Rollos schließen.
Bis vor kurzem wurde das Programm durch die interne Zeitsteuerung per Intervall ausgelöst, so dass die entsprechenden Bedingungen und Skripte alle 5 min. geprüft oder ausgeführt wurden.
Früher hat das ganze sehr gut funktioniert, im Laufe der Software-Versionen und speziell nochmal mit dem Umstieg auf die CCU-2 ist die Intervallsteuerung allerdings so unzuverlässig geworden, dass es nicht mehr tragbar war.
Daher bin ich vor ein paar Tagen auf CUxD umgestiegen und habe diese Programm sowie drei weitere auf Trigger durch Timer umgestellt. Insgesamt habe ich ein Timer-Gerät mit 4 Timern eingerichtet, die jeweils von enem Programm benutzt werden.
Allerdings scheint es hier mit der Zuverlässigkeit auch nicht soweit her zu sein.
Zuerst habe ich beobachtet, dass das Programm offenbar nicht immer bei jedem Timer-Ablauf auslöst.
Daraufhin habe ich die Frequenz auf 89sek. erhöht, so dass mir auch jeder 3. oder 4. Durchlauf ausreicht.
Nach zwei Tagen kam es dann erstmals vor, dass die komplett CCU eingefroren war.
Zu Gründen habe ich keine guten Ideen.
Ich habe XML-API installiert, schreibe zu Testzwecken alle 1,5min. 2-3 Einträge in´s Protokoll und habe zeitweise Überschneidungen zwischen den timergesteuerten Programmen, aber das sollte ja alles kein großes Problem sein.
Zum Programm unten:
- Auslöser ist der 89sek.-Timer mit Repeat
- dann ein Check ob die Rollos schon unten sind, um unnötige Skriptausführungen zu vermeiden
- dann eine Prüfung über das Zeitmodul auf einen Zeitraum, um unnötige Skriptausführungen zu vermeiden
- wenn alles erfüllt ist, werden die Skripte ausgeführt, in denen keine weiteren Programme aufgerufen oder die Timer benutzt werden.
Meine Fragen in die Runde wären:
- Gibt es eine Erklärung/Lösung dafür, dass das Programm nicht bei jedem Timer-Ablauf ausgeführt wird (wenn die anderen Bedingungen erfüllt sind)?
- Habe ich irgendwas übersehen/falsch benutzt?
- Ist das so die richtige Art, den Timer zu nutzen? Oder sollte ich den Timer eine Variable aktualisieren lassen und darüber die Programme auslösen? Oder ganz was anderes?
- Gibt es eine Erklärung dafür, dass die CCU sich nach ein paar Tagen aufhängt? (zu viel im Log?)
- Gibt es allgemein Probleme mit der Zeitsteuerung (von der Intervallsteuerung mal abgesehen)? Speziell mit Timern?
Sorry, ist jetzt recht länglich geworden, dafür sollten aber einige Menge Fragen schon geklärt sein.
Ich bin für jeden Tipp dankbar und würde mich freuen, wenn meine Rollos und Anwesenheitssimulation wieder zuverlässig funktionieren würden.
Gruß,
df
ich würde gern nach Rat zu einem meiner Langzeitprobleme fragen.
Ich benutze seit einigen Jahren ein WebUI Programm zum Steuern meiner Rollos.
Das Programm ruft mit Verzögerung 3 Skripte auf, die einige Berechnungen machen und abhängig davon die Rollos schließen.
Bis vor kurzem wurde das Programm durch die interne Zeitsteuerung per Intervall ausgelöst, so dass die entsprechenden Bedingungen und Skripte alle 5 min. geprüft oder ausgeführt wurden.
Früher hat das ganze sehr gut funktioniert, im Laufe der Software-Versionen und speziell nochmal mit dem Umstieg auf die CCU-2 ist die Intervallsteuerung allerdings so unzuverlässig geworden, dass es nicht mehr tragbar war.
Daher bin ich vor ein paar Tagen auf CUxD umgestiegen und habe diese Programm sowie drei weitere auf Trigger durch Timer umgestellt. Insgesamt habe ich ein Timer-Gerät mit 4 Timern eingerichtet, die jeweils von enem Programm benutzt werden.
Allerdings scheint es hier mit der Zuverlässigkeit auch nicht soweit her zu sein.
Zuerst habe ich beobachtet, dass das Programm offenbar nicht immer bei jedem Timer-Ablauf auslöst.
Daraufhin habe ich die Frequenz auf 89sek. erhöht, so dass mir auch jeder 3. oder 4. Durchlauf ausreicht.
Nach zwei Tagen kam es dann erstmals vor, dass die komplett CCU eingefroren war.
Zu Gründen habe ich keine guten Ideen.
Ich habe XML-API installiert, schreibe zu Testzwecken alle 1,5min. 2-3 Einträge in´s Protokoll und habe zeitweise Überschneidungen zwischen den timergesteuerten Programmen, aber das sollte ja alles kein großes Problem sein.
Zum Programm unten:
- Auslöser ist der 89sek.-Timer mit Repeat
- dann ein Check ob die Rollos schon unten sind, um unnötige Skriptausführungen zu vermeiden
- dann eine Prüfung über das Zeitmodul auf einen Zeitraum, um unnötige Skriptausführungen zu vermeiden
- wenn alles erfüllt ist, werden die Skripte ausgeführt, in denen keine weiteren Programme aufgerufen oder die Timer benutzt werden.
Meine Fragen in die Runde wären:
- Gibt es eine Erklärung/Lösung dafür, dass das Programm nicht bei jedem Timer-Ablauf ausgeführt wird (wenn die anderen Bedingungen erfüllt sind)?
- Habe ich irgendwas übersehen/falsch benutzt?
- Ist das so die richtige Art, den Timer zu nutzen? Oder sollte ich den Timer eine Variable aktualisieren lassen und darüber die Programme auslösen? Oder ganz was anderes?
- Gibt es eine Erklärung dafür, dass die CCU sich nach ein paar Tagen aufhängt? (zu viel im Log?)
- Gibt es allgemein Probleme mit der Zeitsteuerung (von der Intervallsteuerung mal abgesehen)? Speziell mit Timern?
Sorry, ist jetzt recht länglich geworden, dafür sollten aber einige Menge Fragen schon geklärt sein.
Ich bin für jeden Tipp dankbar und würde mich freuen, wenn meine Rollos und Anwesenheitssimulation wieder zuverlässig funktionieren würden.
Gruß,
df
-
- Beiträge: 2484
- Registriert: 13.02.2012, 20:23
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 302 Mal
- Danksagung erhalten: 116 Mal
Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun
Du schreibst das du den CCu Timer nicht nutzen willst aber hast ihn trotzaltem eingebaut
Der CUX Timer läuft bei mir recht gut, ich starte den Timer Mittags und um Mitternacht immer neu, da er gerne mal ein wenig aus dem Ruder läuft.
schmeiß mal den ccu zeitbereich raus und ersetzte es z.b. mit der Sonnenstandsberechnung, so mache ich es
Der CUX Timer läuft bei mir recht gut, ich starte den Timer Mittags und um Mitternacht immer neu, da er gerne mal ein wenig aus dem Ruder läuft.
schmeiß mal den ccu zeitbereich raus und ersetzte es z.b. mit der Sonnenstandsberechnung, so mache ich es
Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun
Hi,chka hat geschrieben:Du schreibst das du den CCu Timer nicht nutzen willst aber hast ihn trotzaltem eingebaut
Der CUX Timer läuft bei mir recht gut, ich starte den Timer Mittags und um Mitternacht immer neu, da er gerne mal ein wenig aus dem Ruder läuft.
schmeiß mal den ccu zeitbereich raus und ersetzte es z.b. mit der Sonnenstandsberechnung, so mache ich es
Danke für die Anteilnahme.
Ja, die Zeitzonen mache ich immernoch mit der internen Zeitsteuerung.
Ich war aber auch der Ansicht, dass die generell läuft, nur halt nicht die Intervallsteuerung.
Natürlich könnte ich einen Timer hernehmen, der die anderen Timer täglich um 16:00 startet und 22:00 beendet etc., aber dann habe ich hinterher Unmengen von Timern wo keiner mehr durchblickt.
Das Sonnenstand-Skript könnte ich natürlich nehmen, aber dass muss ich ja auch wieder in kurzen Intervallen starten und da habe ich dann potenziell dasselbe Problem, oder?
Programm erstellen, Sonnenstand-Timer einrichten, Programm alle 3 min. starten und dann mein bisheriges Programm auf Elevation<x starten.
Oder übersehe ich da was?
Ich muss ergänzen: Im Skript rufe ich schon die interne Sonnenuntergangsberechnung ab... Sollte man die meiden?
Ganz allgemein, mache ich irgendwas grob falsch oder gegen Best Practice?
Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun
Weshalb rufst die Scripte überhaupt alle 89s auf? Bevor du versuchst das zuverlässig hinzubekommen, würde ich versuchen das komplett zu verändern.
Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun
Darin wird in Abhängigkeit vom Sonnenuntergang berechnet was zu tun ist und daher müssen die zyklisch aufgerufen werden.DrTob hat geschrieben:Weshalb rufst die Scripte überhaupt alle 89s auf? Bevor du versuchst das zuverlässig hinzubekommen, würde ich versuchen das komplett zu verändern.
Alle 5 oder sogar 10 min. würde reichen, aktuell steht es auf 1,5min., weil das Programm eben oft nicht auslöst.
Wenn er bei 10min. 3x nicht auslöst, bin ich 30min. im Verzug, das ist zu viel.
Wie gesagt, die Hauptprobleme sind:
- Warum lösen die Timer regelmäßig nicht das Programm aus (Bedingungen stimmen)?
- Warum friert die CCU irgendwann ein?
- Sollte man die Zeitsteuerung oder XML-API Erfahrungsgemäß komplett meiden?
Danke!
Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun
Aber wieso löst du das Programm nicht bei Sonnenuntergang, sowie bei Änderung der übrigen Abhängigkeiten aus!?
Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun
Weil der Sonnenuntergang der CCU einfach zu "dumm" ist und ich gern die Möglichkeit hätte einen positiven oder negativen Offset einzurechen. Positiver Offset würde noch irgendwie gehen, negativer...naja, die CCU kann die Zeit nicht zurückdrehenDrTob hat geschrieben:Aber wieso löst du das Programm nicht bei Sonnenuntergang, sowie bei Änderung der übrigen Abhängigkeiten aus!?
Die andere Abhängigkeit oben wird nur durch die Skripte unten verändert.
Natürlich könnte ich das Ganze jetzt auf das Sonnenstandskript umstellen (und werde es vermutlich auch tun), aber prinzipiell wäre ich schon gern in der Lage periodische Aufgaben zuverlässig auszuführen... und ich will halt wissen, wo das Problem liegt
Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun
Naja zurückdrehen nicht unbedingt.dfeng hat geschrieben:Weil der Sonnenuntergang der CCU einfach zu "dumm" ist und ich gern die Möglichkeit hätte einen positiven oder negativen Offset einzurechen. Positiver Offset würde noch irgendwie gehen, negativer...naja, die CCU kann die Zeit nicht zurückdrehen
Aber wenn Du etwas 30 Minuten (+-2Minuten) vor Sonnenaufgang auslösen möchtest, dann geht das relativ einfach mit einer Systemvariable und einem Programm.
Code: Alles auswählen
Wenn
Zeitmodul bei Tag
Dann
Systemvariable "Sonnenaufgang_minus_30Minuten" "verzögert um 23 Stunden 30 Minuten" auf "true"
Hat den Nachteil, dass wenn die CCU in der Zwischenzeit neu gestartet wurde, dass dann an diesem Tag der Aulöser nicht gesetzt wird.
Dies könntest Du umgehen, wenn Du täglich einmal (und beim Reboot) ein Programm mit Skript startest, welches in Abhängigkeit der aktuellen Uhrzeit diese Systemvarible verzögert setzt.
Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun
Sorry, das ist mir dann aber doch etwas zu sehr von hinten durch die BrustBadenPower hat geschrieben:Naja zurückdrehen nicht unbedingt.dfeng hat geschrieben:Weil der Sonnenuntergang der CCU einfach zu "dumm" ist und ich gern die Möglichkeit hätte einen positiven oder negativen Offset einzurechen. Positiver Offset würde noch irgendwie gehen, negativer...naja, die CCU kann die Zeit nicht zurückdrehen
Aber wenn Du etwas 30 Minuten (+-2Minuten) vor Sonnenaufgang auslösen möchtest, dann geht das relativ einfach mit einer Systemvariable und einem Programm.
und im Programm, welches 30 Minuten vor Sonnenaufgang losgehen soll verwendest Du die Systemvariable und triggerst auf "bei Aktuallisierung".Code: Alles auswählen
Wenn Zeitmodul bei Tag Dann Systemvariable "Sonnenaufgang_minus_30Minuten" "verzögert um 23 Stunden 30 Minuten" auf "true"
Hat den Nachteil, dass wenn die CCU in der Zwischenzeit neu gestartet wurde, dass dann an diesem Tag der Aulöser nicht gesetzt wird.
Dies könntest Du umgehen, wenn Du täglich einmal (und beim Reboot) ein Programm mit Skript startest, welches in Abhängigkeit der aktuellen Uhrzeit diese Systemvarible verzögert setzt.
Ist ja alles mit einfachen HM Skripten kein Problem... die laufen ja auch wunderbar.
Sie müssen nur auch zuverlässig getriggert werden
Zyklische Auslöser über die Zeitsteuerung habe ich übrigens schon entfert...