CUxD System.Timer()

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

Moderator: Co-Administratoren

dehell
Beiträge: 58
Registriert: 14.10.2014, 12:35

CUxD System.Timer()

Beitrag von dehell » 01.02.2017, 11:30

Hallo,
ich bin jetzt auf RaspberryMatic umgestiegen und wegen der Probleme mit dem Zeitmodul jetzt auf CUxD (1.8a) umgestiegen, in dem Bereich also noch Anfänger. Trotzdem habe ich inzwischen fast alle Programme auf CUxD-Timer umgestellt. An drei Punkten hapert es aber noch, vielleicht kann mir jemand helfen:
1. Erst mal habe ich den Unterschied zwischen "|" und "/" bei Multitimern nicht verstanden. Ich glaube, inzwischen wurde generell auf den Schrägstrich umgestellt? In der Doku steht unter 5.8.1 im ersten Abschnitt trotzdem noch der "|". Vermutlich vergessen.
2. Multitimer funktionieren gut. In einer Anwendung (Garagentor) wollte ich Montags um 22:20,22:30,22:40 schalten, alle anderen Tage auch um 22:00 und 22:10. Ich habe versucht, mit dem State zu arbeiten. Der Set-String sah so aus:
"/22:00:00//22:10:00/22:20:00//22:30:00//22:40:00"
Damit sollte der State für 22:00 und 22:10 aus sein, zu den anderen Zeiten jeweils ein.
Das CCU Logging zeigt mir aber, dass ich sowohl bei zwei durch nur ein "/" getrennte Zeiten der Status gleich bleibt, andernfalls auch bei "//" er trotzdem wechselt :-(
3. Wie kann ich in einem Programm auf einen Zeitbereich testen? (nur prüfen)
Wenn ich State abfrage, erhalte ich den Set-String zurück und wenn ich Value abfrage, erhalte ich immer false.

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

Re: CUxD System.Timer()

Beitrag von uwe111 » 01.02.2017, 12:45

dehell hat geschrieben:1. Erst mal habe ich den Unterschied zwischen "|" und "/" bei Multitimern nicht verstanden. Ich glaube, inzwischen wurde generell auf den Schrägstrich umgestellt? In der Doku steht unter 5.8.1 im ersten Abschnitt trotzdem noch der "|". Vermutlich vergessen.
Ja, der Schrägstrich ist richtig! Leider habe ich bei der Umstellung einige Stellen in der Doku übersehen und da ist aktuell noch der "|" drin.
In der nächsten Doku passt es dann.
dehell hat geschrieben:2. Multitimer funktionieren gut. In einer Anwendung (Garagentor) wollte ich Montags um 22:20,22:30,22:40 schalten, alle anderen Tage auch um 22:00 und 22:10. Ich habe versucht, mit dem State zu arbeiten. Der Set-String sah so aus:
"/22:00:00//22:10:00/22:20:00//22:30:00//22:40:00"
Damit sollte der State für 22:00 und 22:10 aus sein, zu den anderen Zeiten jeweils ein.
Das CCU Logging zeigt mir aber, dass ich sowohl bei zwei durch nur ein "/" getrennte Zeiten der Status gleich bleibt, andernfalls auch bei "//" er trotzdem wechselt :-(
Kannst Du mir das Logging bereitstellen?
dehell hat geschrieben:3. Wie kann ich in einem Programm auf einen Zeitbereich testen? (nur prüfen)
Wenn ich State abfrage, erhalte ich den Set-String zurück und wenn ich Value abfrage, erhalte ich immer false.
Was möchtest Du testen? :roll: Du hast nicht geschrieben, von welchem Datenpunkt Du State() bzw. Value() abfragst.
Die verbleibenden Sekunden siehst Du auf der CUxD-Statusseite und kannst Du mittels Datenpunkt TIMER_GET abfragen.

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

dehell
Beiträge: 58
Registriert: 14.10.2014, 12:35

Re: CUxD System.Timer()

Beitrag von dehell » 01.02.2017, 13:05

uwe111 hat geschrieben:
dehell hat geschrieben:1. Erst mal habe ich den Unterschied zwischen "|" und "/" bei Multitimern nicht verstanden. Ich glaube, inzwischen wurde generell auf den Schrägstrich umgestellt? In der Doku steht unter 5.8.1 im ersten Abschnitt trotzdem noch der "|". Vermutlich vergessen.
Ja, der Schrägstrich ist richtig! Leider habe ich bei der Umstellung einige Stellen in der Doku übersehen und da ist aktuell noch der "|" drin.
In der nächsten Doku passt es dann.
dehell hat geschrieben:2. Multitimer funktionieren gut. In einer Anwendung (Garagentor) wollte ich Montags um 22:20,22:30,22:40 schalten, alle anderen Tage auch um 22:00 und 22:10. Ich habe versucht, mit dem State zu arbeiten. Der Set-String sah so aus:
"/22:00:00//22:10:00/22:20:00//22:30:00//22:40:00"
Damit sollte der State für 22:00 und 22:10 aus sein, zu den anderen Zeiten jeweils ein.
Das CCU Logging zeigt mir aber, dass ich sowohl bei zwei durch nur ein "/" getrennte Zeiten der Status gleich bleibt, andernfalls auch bei "//" er trotzdem wechselt :-(
Kannst Du mir das Logging bereitstellen?
dehell hat geschrieben:3. Wie kann ich in einem Programm auf einen Zeitbereich testen? (nur prüfen)
Wenn ich State abfrage, erhalte ich den Set-String zurück und wenn ich Value abfrage, erhalte ich immer false.
Was möchtest Du testen? :roll: Du hast nicht geschrieben, von welchem Datenpunkt Du State() bzw. Value() abfragst.
Die verbleibenden Sekunden siehst Du auf der CUxD-Statusseite und kannst Du mittels Datenpunkt TIMER_GET abfragen.

Viele Grüße

Uwe
2. Meinst Du das Logging der CCU? Kein Problem! Oder irgendein Fehlerlog von CUxD (damit kenne ich mich garnicht aus)
3. Ja, das habe ich blöd geschrieben! Ich habe eine Aktion, die nur von 5:00 bis 12:00 bei Auftreten eines Bewegungsmelders getriggert werden soll. Normale Umsetzung in der CCU war:
Trigger über Bewegungsmelder UND Zeitmodul von 5:00 bis 12:00 nur prüfen.
Jetzt habe ich einen CUxD-Timer mit 05:00:00/12:00:00 gesetzt und gedacht, der State von diesem Kanal würde mir in der Zeitspanne true zurückliefern. Da das Programm so nicht funktionierte, habe ich über ein Script State() und Value() des Timers jede Minute ausgelesen. Die Abfrage timer.State() ergab seltsamerweise den Set-String zurück und die Abfrage auf timer.Value() immer false.
Kann ich irgendworan erkennen, das ich mich gerade im Bereich 5-12 Uhr befinde? Der TIMER_GET-Wert gibt mir bei einem Repeat-Multitimer ja keine eindeutige Auskunft. (?)

Benutzeravatar
koppenho
Beiträge: 227
Registriert: 27.12.2013, 09:12
Wohnort: Bad Neustadt, Deutschland
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 Mal

Re: CUxD System.Timer()

Beitrag von koppenho » 01.02.2017, 13:11

dehell hat geschrieben: Normale Umsetzung in der CCU war:
Trigger über Bewegungsmelder UND Zeitmodul von 5:00 bis 12:00 nur prüfen.
So mache ich das auch. Meines Wissens sind nur die Events des Zeitmoduls unzuverlässig. Solange Du das Zeitmodul mit "nur prüfen" auf einen Zeitraum verwendest, dann sollte alles funktionieren. Zumindest habe ich bei mir noch nie eine Fehlfunktion beobachtet.
--
Andreas
--------------------------------------------
Hauptwohnung: RaspberryMatic mit 320 Kanäle in 110 Geräten und 140 CUxD-Kanäle in 33 CUxD-Geräten
Zweitwohnung: CCU2 mit 18 Kanäle in 8 Geräten und 14 CUxD-Kanäle in 4 CUxD-Geräten
--------------------------------------------

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

Re: CUxD System.Timer()

Beitrag von uwe111 » 01.02.2017, 13:25

dehell hat geschrieben:2. Meinst Du das Logging der CCU?
Ja, genau. Jedes Timer-Event sollte da aufgezeichnet werden. Die anderen Geräte kannst Du vorher rausfiltern.
dehell hat geschrieben:Kann ich irgendworan erkennen, das ich mich gerade im Bereich 5-12 Uhr befinde?
Ja, der Value() Wert vom STATE Datenpunkt sollte hier helfen.
koppenho hat geschrieben:Solange Du das Zeitmodul mit "nur prüfen" auf einen Zeitraum verwendest, dann sollte alles funktionieren.
Das wäre auch eine Alternative.

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

dehell
Beiträge: 58
Registriert: 14.10.2014, 12:35

Re: CUxD System.Timer()

Beitrag von dehell » 01.02.2017, 13:26

koppenho hat geschrieben:
dehell hat geschrieben: Normale Umsetzung in der CCU war:
Trigger über Bewegungsmelder UND Zeitmodul von 5:00 bis 12:00 nur prüfen.
So mache ich das auch. Meines Wissens sind nur die Events des Zeitmoduls unzuverlässig. Solange Du das Zeitmodul mit "nur prüfen" auf einen Zeitraum verwendest, dann sollte alles funktionieren. Zumindest habe ich bei mir noch nie eine Fehlfunktion beobachtet.
Klar, keine Frage. Ich wollte nur jetzt alles einmal auf CUxD umstellen. Die Möglichkeiten interessieren mich einfach, Spielkind eben .. ;-)

dehell
Beiträge: 58
Registriert: 14.10.2014, 12:35

Re: CUxD System.Timer()

Beitrag von dehell » 01.02.2017, 15:04

Da bin ich wieder :-)
Ich habe den Timer vorhin wie folgt konfiguriert: (ich hätte drunterstehenden STATE-Wechsel vermutet
/14:00:00//14:10:00/14:20:00//14:30:00//14:40:00
FALSE FALSE TRUE TRUE TRUE

Angehängt habe ich die Konfiguration und das Log der CCU.... hoffe ich :shock:
TimerConfig.jpg
Konfiguration Timer
TimerConfig.jpg (16.85 KiB) 2272 mal betrachtet
TimerLog.jpg

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

Re: CUxD System.Timer()

Beitrag von uwe111 » 01.02.2017, 15:37

Danke, ich werde das bei mir heute Abend mal versuchen nachzustellen...

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

dehell
Beiträge: 58
Registriert: 14.10.2014, 12:35

Re: CUxD System.Timer()

Beitrag von dehell » 01.02.2017, 15:58

uwe111 hat geschrieben:Danke, ich werde das bei mir heute Abend mal versuchen nachzustellen...

Viele Grüße

Uwe
Super Service!!!!!
Danke, Spende ist unterwegs :mrgreen:

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

Re: CUxD System.Timer()

Beitrag von uwe111 » 01.02.2017, 17:29

:oops: bei mir ist es genauso. Da muss ich die Doku nochmal überarbeiten...

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

Antworten

Zurück zu „CUxD“