Timer unterbrechen und weiterlaufen lassen

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

Moderator: Co-Administratoren

Antworten
dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Timer unterbrechen und weiterlaufen lassen

Beitrag von dtp » 18.09.2017, 08:02

Hallo,

ich habe jetzt trotz Bemühen der Suchfunktion nichts gefunden. Falls es das Thema doch schon gibt, würde mir ein entsprechender Link helfen.

Frage: Wie kann ich einen CUxD-Timer anhalten und ihn mit seinem Stopp-Wert weiterführen?

Konkret: Ich möchte einen Timer durch ein Ereignis A unterbrechen lassen, um ihn dann durch ein Ereignis B oder durch dasselbe Ereignis A mit dem letzten Wert bis zum Ende oder bis zur nächsten Unterbrechung weiterlaufen zu lassen. Er soll also selbst bei einer Unterbrechung kein Ereignis triggern und folglich nicht auf Null gesetzt werden. Der CUxD-Timer soll erst dann ein Ereignis triggern, wenn er den Wert Null erreicht hat.

Wie ist da Eure Vorgehensweise?

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

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

Re: Timer unterbrechen und weiterlaufen lassen

Beitrag von Cash » 18.09.2017, 08:49

ich nutze so etwas zwar nicht aber man kann ja per Script den Timer abfragen und den Inhalt in eine Systemvariable schreiben. Wenn der Timer wieder laufen soll einfach den Timer mit dem Wert aus der Systemvariable füllen...

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Timer unterbrechen und weiterlaufen lassen

Beitrag von dtp » 18.09.2017, 09:36

Ja, das ist durchaus eine Möglichkeit. Ich habe mich aber schon häufiger gefragt, warum der CUxD-Timer bei TIMER_STOP auf Null gesetzt wird und damit ein Ereignis triggert. So ganz erschließt sich mir die Logik dahinter nicht. Für mich wäre TIMER_STOP eher das Anhalten des Timers mit dem letzten Wert, um ihn dann wieder von dieser Stelle weiterlaufen lassen zu können. Für die jetzige TIMER_STOP-Funktion hätte ich eher ein TIMER_ZERO oder dergleichen implementiert, während man mit TIMER_RESET den Timer wieder auf den Ursprungswert setzen kann. Das hätte dann die Krücke mit der Systemvariablen vermieden.

Oder kann man evtl. auch ohne zusätzliche Systemvariable mit dem TS-Wert zum Ziel kommen?
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
JRiemann
Beiträge: 3903
Registriert: 12.11.2015, 21:05
Wohnort: Aurich
Danksagung erhalten: 3 Mal

Re: Timer unterbrechen und weiterlaufen lassen

Beitrag von JRiemann » 18.09.2017, 09:49

Eine ähnliche Diskussion gab es vor längerer Zeit bereits. Damals war Uwe auch an der Unterhaltung beteiligt.
Leider finde ich das Thema bzw. den Link gerade nicht.
Damals wurde auch der Wunsch nach einer "Pause" Funktion geäußert. Uwe wollte darüber nachdenken und die Möglichkeiten dazu prüfen.
Viele Grüße!
Jörg

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

Re: Timer unterbrechen und weiterlaufen lassen

Beitrag von Cash » 18.09.2017, 10:58

Lt Handbuch (allerdings cuxd V1.5) wir mit TIMER_STOP kein Event ausgelöst.

Abbruch des Timers → Tastendruck auf WebUI
Dabei wird kein Timer-Event ausgelöst!

Ich nutze

Code: Alles auswählen

dom.GetObject("CUxD.CUX2800001:1.TIMER_SET").State("0");
Dadurch wird auch nicht getriggert. Ist aber lt. Handbuch das gleiche wie TIMER_STOP

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

Re: Timer unterbrechen und weiterlaufen lassen

Beitrag von Cash » 18.09.2017, 11:23

Habe noch diesen Thread gefunden:

viewtopic.php?f=37&t=36829

Wenn ich dort alles richtig verstehe löst TIMER_STOP Programme aus wenn als Trigger TIMER_GET <= 0 benutzt wird. Was ich nicht mache

Benutzeravatar
uwe111
Beiträge: 4820
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: Timer unterbrechen und weiterlaufen lassen

Beitrag von uwe111 » 18.09.2017, 11:54

dtp hat geschrieben:Frage: Wie kann ich einen CUxD-Timer anhalten und ihn mit seinem Stopp-Wert weiterführen?
Dabei musst Du wissen, dass es relative, absolute und mehrfache CUxD-Timer mit und ohne Zufallsanteil gibt. So ist diese Frage nicht allgemein zu beantworten.

Ich vermute mal, bei Deiner Frage geht es um die einfachen relativen Timer mit bzw. ohne zufälligen Anteil. Da ist die Vorgehensweise so:
1. aktuellen Timerwert mittels TIMER_GET auslesen
2. TIMER_STOP senden -> Timer ist angehalten
wenn es dann weitergehen soll...
3. TIMER_SET auf zuvor gespeicherten Timerwert setzen
dtp hat geschrieben: Ich habe mich aber schon häufiger gefragt, warum der CUxD-Timer bei TIMER_STOP auf Null gesetzt wird und damit ein Ereignis triggert.
Dabei wurde und wird kein TIMER_EVENT Ereignis getriggert! Im Systemprotokoll der CCU kannst Du das ganz einfach nachprüfen.
Mittlerweile sollte die aktuelle ReGaHss das TIMER_EVENT auch richtig triggern. Ansonsten sende bitte ein Beispiel (wo es nicht funktioniert) an Jens Maus zur Fehlersuche.
dtp hat geschrieben:Für die jetzige TIMER_STOP-Funktion hätte ich eher ein TIMER_ZERO oder dergleichen implementiert, während man mit TIMER_RESET den Timer wieder auf den Ursprungswert setzen kann. Das hätte dann die Krücke mit der Systemvariablen vermieden.
Das ist keine Krücke. Zusätzliche Datenpunkte würden m.E. das Handling nur verkomplizieren. Und wer würde später ausser Dir dann noch verstehen, dass z.B. TIMER_GET einen Wert zurückliefert, aber der Timer gar nicht mehr läuft? Deshalb halte ich die Funktion auch so einfach wie möglich. Es gibt beim Timer schon genug individuelle Möglichkeiten und Datenpunkte. Die Vorgehensweise für eine Pause-Funktion bei einfachen relativen Timern habe ich ja am Anfang aufgezeigt.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Timer unterbrechen und weiterlaufen lassen

Beitrag von dtp » 18.09.2017, 12:17

Vielen Dank für Eure sehr hilfreichen Hinweise. Es ist in der Tat so, dass ich meine CUxD-Timer immer auf TIMER_GET <= 0 triggere, so dass sie eben auch mit TIMER_STOP auslösen. Der Grund ist der rot hinterlegte Hinweis im Manual, dass TIMER_EVENT zum Triggern mit Vorsicht zu genießen sei. Wenn diese Bedenken mittlerweile ausgeräumt sind, dann kann ich das ja mal ändern.

Meine Logik sagt mir halt, dass TIMER_STOP den Timer eigentlich mit dem letzten Wert anhalten müsste. Unter STOP verstehe ich persönlich kein definiertes Setzen auf den Wert Null.
uwe111 hat geschrieben: Ich vermute mal, bei Deiner Frage geht es um die einfachen relativen Timer mit bzw. ohne zufälligen Anteil. Da ist die Vorgehensweise so:
1. aktuellen Timerwert mittels TIMER_GET auslesen
2. TIMER_STOP senden -> Timer ist angehalten
wenn es dann weitergehen soll...
3. TIMER_SET auf zuvor gespeicherten Timerwert setzen
Werde ich dann mal so umsetzen. Danke.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Antworten

Zurück zu „CUxD“