Timer nicht zuverlässig (in Kombination mit Zeitsteuerung?)

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

dfeng
Beiträge: 10
Registriert: 22.09.2014, 13:29

Timer nicht zuverlässig (in Kombination mit Zeitsteuerung?)

Beitrag von dfeng » 20.07.2016, 23:33

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
Dateianhänge
Clipboard02.jpg
Clipboard01.jpg

chka
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

Beitrag von chka » 21.07.2016, 06:39

Du schreibst das du den CCu Timer nicht nutzen willst aber hast ihn trotzaltem eingebaut :D
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
RaspberryMatic - CuL 868mHz- CuxDemon - PioTek Tracker - Velux mit KLF200 und Somfy Anbindung- io.Broker auf Proxmox NUC6I3SYH i3-6100U RAM: 40Gig Crucial 8GB DDR4 CT2K8G4SFS824A + 32GB DDR4CT32G4SFD8266

dfeng
Beiträge: 10
Registriert: 22.09.2014, 13:29

Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun

Beitrag von dfeng » 21.07.2016, 07:19

chka hat geschrieben:Du schreibst das du den CCu Timer nicht nutzen willst aber hast ihn trotzaltem eingebaut :D
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
Hi,
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?

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun

Beitrag von DrTob » 21.07.2016, 08:58

Weshalb rufst die Scripte überhaupt alle 89s auf? Bevor du versuchst das zuverlässig hinzubekommen, würde ich versuchen das komplett zu verändern.

dfeng
Beiträge: 10
Registriert: 22.09.2014, 13:29

Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun

Beitrag von dfeng » 21.07.2016, 09:38

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.
Darin wird in Abhängigkeit vom Sonnenuntergang berechnet was zu tun ist und daher müssen die zyklisch aufgerufen werden.
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!

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun

Beitrag von DrTob » 21.07.2016, 09:40

Aber wieso löst du das Programm nicht bei Sonnenuntergang, sowie bei Änderung der übrigen Abhängigkeiten aus!?

dfeng
Beiträge: 10
Registriert: 22.09.2014, 13:29

Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun

Beitrag von dfeng » 21.07.2016, 18:35

DrTob hat geschrieben:Aber wieso löst du das Programm nicht bei Sonnenuntergang, sowie bei Änderung der übrigen Abhängigkeiten aus!?
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 :-)
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 :-)

BadenPower

Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun

Beitrag von BadenPower » 21.07.2016, 19:53

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 :-)
Naja zurückdrehen nicht unbedingt.

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"
und im Programm, welches 30 Minuten vor Sonnenaufgang losgehen soll verwendest Du die Systemvariable und triggerst auf "bei Aktuallisierung".

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.

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun

Beitrag von Cash » 21.07.2016, 20:06

Das Problem sind die unnötigen periodischen Timer :mrgreen:

dfeng
Beiträge: 10
Registriert: 22.09.2014, 13:29

Re: Timer nicht zuverlässig (in Kombination mit Zeitsteuerun

Beitrag von dfeng » 21.07.2016, 20:36

BadenPower hat geschrieben:
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 :-)
Naja zurückdrehen nicht unbedingt.

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"
und im Programm, welches 30 Minuten vor Sonnenaufgang losgehen soll verwendest Du die Systemvariable und triggerst auf "bei Aktuallisierung".

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.
Sorry, das ist mir dann aber doch etwas zu sehr von hinten durch die Brust :-)

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...

Antworten

Zurück zu „CUxD“