Aktuelle Uhrzeit (nur Stunde) in Systemvariable ohne "Dauer-Polling"?
Moderator: Co-Administratoren
Aktuelle Uhrzeit (nur Stunde) in Systemvariable ohne "Dauer-Polling"?
Hi,
für ein kleines Projekt benötige ich die jeweils aktuelle Tageszeit, genauer gesagt nur die aktuelle Stunde, in einer Systemvariable "daytime_hour".
Beispiel: von 9:00 bis 9:59 ist daytime_hour=="9" (string oder int egal)
um 10:00 wechselt die daytime_hour auf "10"
Dabei soll die daytime_hour halbwegs aktuell sein spätestens 30 Sekunden nachdem die Tageszeit auf 10:00 wechselt, muss in daytime_hour die "10" stehen.
Prinzipiell gibt es genügend Beispiele im Forum um die aktuelle Uhrzeit in eine Systemvar zu schreiben und das auf die Stunde zu beschränken, sollte auch kein Problem sein.
Allerdings würde das bedeuten, dass ich das Script zur Umwandlung alle 30 Sekunden laufen lassen müsste.
Daher meine Frage: gibt es dafür eine elegantere Möglichkeit, die weniger CPU "Last" erzeugt und trotzdem die gewünschte Genauigkeit liefert?
Gruß,
Markus
für ein kleines Projekt benötige ich die jeweils aktuelle Tageszeit, genauer gesagt nur die aktuelle Stunde, in einer Systemvariable "daytime_hour".
Beispiel: von 9:00 bis 9:59 ist daytime_hour=="9" (string oder int egal)
um 10:00 wechselt die daytime_hour auf "10"
Dabei soll die daytime_hour halbwegs aktuell sein spätestens 30 Sekunden nachdem die Tageszeit auf 10:00 wechselt, muss in daytime_hour die "10" stehen.
Prinzipiell gibt es genügend Beispiele im Forum um die aktuelle Uhrzeit in eine Systemvar zu schreiben und das auf die Stunde zu beschränken, sollte auch kein Problem sein.
Allerdings würde das bedeuten, dass ich das Script zur Umwandlung alle 30 Sekunden laufen lassen müsste.
Daher meine Frage: gibt es dafür eine elegantere Möglichkeit, die weniger CPU "Last" erzeugt und trotzdem die gewünschte Genauigkeit liefert?
Gruß,
Markus
- Baxxy
- Beiträge: 10825
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 607 Mal
- Danksagung erhalten: 2225 Mal
Re: Aktuelle Uhrzeit (nur Stunde) in Systemvariable ohne "Dauer-Polling"?
Warum? Die volle Stunde ändert sich doch nur jede Stunde. Ich würde zu jeder vollen Stunde mittels WebUI-Programm und CUxD-Timerdevice als Trigger (alternativ Zeitmodul der Zentrale) und Einzeilerscript die SysVar befüllen.
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
-
- Beiträge: 10660
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 321 Mal
- Danksagung erhalten: 501 Mal
Re: Aktuelle Uhrzeit (nur Stunde) in Systemvariable ohne "Dauer-Polling"?
Genau.
Oder zu jeder vollen Stunde einfach das folgende kleine Skript aufrufen:
Achtung: ist mehr oder weniger aus dem Stehgreif geschrieben und kann daher noch Fehler aufweisen.
Oder zu jeder vollen Stunde einfach das folgende kleine Skript aufrufen:
Code: Alles auswählen
string svHour = "Name der Systemvariablen";
time currentHour;
currentHour = system.Date("%H").ToTime();
WriteLine(currentHour);
dom.GetObject(ID_SYSTEM_VARIABLES).Get(svHour)).State(currentHour);
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.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
Re: Aktuelle Uhrzeit (nur Stunde) in Systemvariable ohne "Dauer-Polling"?
Ich hatte das folgende Programm ausprobiert. Problem: es wird nur einmal getriggert und nicht, wie im Zeitmodul eingestellt, jede Stunde.
Als Script verwende ich
Gruß,
Markus
Als Script verwende ich
Code: Alles auswählen
integer zeit = (system.Date("%H").ToInteger());
dom.GetObject("daytime_hour").State(zeit);
Gruß,
Markus
-
- Beiträge: 3621
- Registriert: 14.07.2019, 20:49
- System: CCU
- Hat sich bedankt: 847 Mal
- Danksagung erhalten: 542 Mal
Re: Aktuelle Uhrzeit (nur Stunde) in Systemvariable ohne "Dauer-Polling"?
Im Zeitmodul mal "Zeitspanne" und "Ganztägig" auswählen. Den Rest so lassen.
Falls das auch nicht geht: Programm dann zur Sicherheit mal ohne Skript testen, z.B. Lampe ein und ausschalten.
-
- Beiträge: 14164
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1500 Mal
Re: Aktuelle Uhrzeit (nur Stunde) in Systemvariable ohne "Dauer-Polling"?
Ich würde eine feste Uhrzeit eingeben 0:00 bis 23:59 Uhr. So erfolgt das erste Triggern nicht irgendwann in der Stunde (abhängig vom Bootzeitpunkt oder Einrichtung des Programms) und dann nachfolgend im Abstand von einer Stunde, sondern zu einem festen Starttermin und dann alle volle Stunde. Der Rest unten kann so bleiben. Und für "Projekte" würde ich immer das Zahlenformat und keinesfalls String benutzen, wenn man damit Vergleiche oder Berechnungen anstellen will, denn 01 ist nicht größer 1 als Stringvergleich.
Gruß Xel66
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
Re: Aktuelle Uhrzeit (nur Stunde) in Systemvariable ohne "Dauer-Polling"?
Hi,
Die 23:05 bei Startpunkt waren nur zum Testen, da es beim Programm erstellen gerade kurz nach 23:00 war und ich wollte, dass das Programm kurzfristig das erste mal getriggert wird. Hat auch geklappt, danach allerdings nicht mehr.
BTW, daytime_hour ist vom Typ Zahl.
Gruß,
Markus
Ich hatte es auch mit Zeitspanne versucht. allerdings nicht über den ganzen Tag. Probiere ich aber mal aus.Xel66 hat geschrieben: ↑07.04.2021, 17:14Ich würde eine feste Uhrzeit eingeben 0:00 bis 23:59 Uhr. So erfolgt das erste Triggern nicht irgendwann in der Stunde (abhängig vom Bootzeitpunkt oder Einrichtung des Programms) und dann nachfolgend im Abstand von einer Stunde, sondern zu einem festen Starttermin und dann alle volle Stunde. Der Rest unten kann so bleiben. Und für "Projekte" würde ich immer das Zahlenformat und keinesfalls String benutzen, wenn man damit Vergleiche oder Berechnungen anstellen will, denn 01 ist nicht größer 1 als Stringvergleich.
Die 23:05 bei Startpunkt waren nur zum Testen, da es beim Programm erstellen gerade kurz nach 23:00 war und ich wollte, dass das Programm kurzfristig das erste mal getriggert wird. Hat auch geklappt, danach allerdings nicht mehr.
BTW, daytime_hour ist vom Typ Zahl.
Gruß,
Markus
Re: Aktuelle Uhrzeit (nur Stunde) in Systemvariable ohne "Dauer-Polling"?
Hi,
Gruß,
Markus
Wenn ich Zeitspanne = ganztägig wähle, habe ich doch das Problem, dass der Startzeitpunkt zufällig (genauer Erstellzeitpunkt oder Neustartzeitpunkt) ist (siehe auch Einwand von Xel66).
Gruß,
Markus
-
- Beiträge: 14164
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1500 Mal
Re: Aktuelle Uhrzeit (nur Stunde) in Systemvariable ohne "Dauer-Polling"?
Nein, der Startzeitpunkt ist 0:00 Uhr. Und von da an stündlich. Das "Ganztägig" kann man für andere (kürzere) Intervalle benutzen. Mal abgesehen, dass ich dem Anwendungszweck nicht so recht folgen kann, würde ich für stündlich Trigger auf 00 auf CUxD-Timer setzen.
Gruß Xel66
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
Re: Aktuelle Uhrzeit (nur Stunde) in Systemvariable ohne "Dauer-Polling"?
Hi,
Gruß,
Markus.
Das bei der Zeitspanne auch autmatisch die Anfangszeit immer der Startpunkt ist war der entscheidende Hinweis. Läuft jetzt. Danke!Xel66 hat geschrieben: ↑07.04.2021, 22:13Nein, der Startzeitpunkt ist 0:00 Uhr. Und von da an stündlich. Das "Ganztägig" kann man für andere (kürzere) Intervalle benutzen. Mal abgesehen, dass ich dem Anwendungszweck nicht so recht folgen kann, würde ich für stündlich Trigger auf 00 auf CUxD-Timer setzen.
Gruß,
Markus.