Timer Scheduler - Verzögerungen aus HM-Script V1.3

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
jmaus
Beiträge: 9819
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1856 Mal
Kontaktdaten:

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von jmaus » 29.05.2019, 17:15

Hallo Zusammen,

ich verfolge seit geraumer Zeit die Diskussionen hier zum Thema bzgl. einer verzögerten State() Ausführung innerhalb von ReGa-Skripts und erst einmal vielen Dank an Black für die Vorarbeiten hier unter Nutzung eines tcl Skriptes. Das scheint ja auf viel Zuspruch gestoßen zu sein.

Aktuell schaue ich mir die Gemengelage innerhalb von ReGaHss gerade an und ich denke ich habe einen Weg gefunden das hier via tcl Skript ermöglichte verzögerte setzen eines Datenpunktes bzw. Systemvariable direkt in der ReGa Skriptsprache zu implementieren. Dazu gab/gibt es ja schon seit geraumer Zeit ein entsprechendes Feature-Ticket im RaspberryMatic GitHub:

https://github.com/jens-maus/RaspberryMatic/issues/262

Und ich denke nun habe ich einen Weg gefunden das direkt in die Skriptsprache aufzunehmen, sodass man in Zukunft so etwas wie folgendes machen kann:

Code: Alles auswählen

dom.GetObject("BidCos-RF.012345678:4.SET_TEMPERATURE").State(9, 500);
D.h. die State() Funktion wird so wie es momentan aussieht einen zusätzlichen optionalen Parameter bekommen der es erlaubt eine Zeit in Millisekunden anzugeben und dann wird ReGa das setzen dieses Datenpunktes oder einer Systemvariablen entsprechend verzögert ausführen. Was mich jedoch interessieren würde wäre ob euch diesbzgl. noch weitere mögliche Dinge einfallen die man der State() Methode beibringen müsste? Wie steht es um eine Option des "Retriggern", d.h. das bereits wartende State() dann für das selbe Objekt vorher verworfen werden? Oder was fällt euch noch so ein was man da ggf. noch hinzufügen sollte? Und als Returnwert dieser angepassten State() Funktion würde ich dann auch im Falle der Nutzung des Delay ein boolean zurückgeben ob das hinzufügen zum scheduler erfolgreich war oder nicht.

Sonst noch irgendwelche Hinweise/Wünsche? :D
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Black » 29.05.2019, 18:32

hi Jens,

den Ansatz würde ich natürlich auch voll begrüssen, auch wenn damit mein gutes "altes" TCL Script aufs Abstellgleis könnte.

dein Vorschlag hier wäre das entsprechende zu einen SetStateDelayed, definitiv bräuchte auch auch einen ClearStateDelayed, der diesen verzögerten Worker tillt.

Dann stellt sich für mich folgende Frage, die man auch berücksichtigen müsste.
Aus normalen Klicke Buntis reihen sich ja "Verzögert um" in den Scheduler ein. Wenn ich ein ClearStateDelayed oder ein SetStateDelayed via Script gebe, müsse es auch noch einen dritten Parameter geben, quasi der berühmte "Retriggern", der, wenn ich retriggern mitgebe (wobei ich der Meinung bin, der Dritte sollte ein optional Paramter sein, vorbesetzt bei nicht Angabe mit retriggern=true) der dann im Scheduler Andere Zeittrigger auf diese ID (Datenpunkt oder Sysvars) tillt. fies ist aber glaube ich, dass im Scheduler nicht die ID des Datenpunktes sondern die ID der SingleDestination gehalten wird. Also müsste, wenn retriggern = true, durch den Scheduler iteriert werden mit Auflösung der Singledest und wenn die SingleDest die ID enthält, diesen Eintrag aus dem Scheduler tillen.

Wäre ein Diskussionspunkt am besten via Handy, sonst tippen wir uns die Finger wund. (WebUI SingleConditions mit indirekten Vergleichen stehen ja auch noch im Raum bei uns)

Gruss, Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Xel66 » 29.05.2019, 18:52

Reicht es nicht, wenn man erreicht, dass im Scheduler die entsprechenden Positionen der Queue überschrieben würden anstatt sie einfach anzureihen? Dann würde sich ein Retriggern doch auch erübrigen und wäre quasi Standard. Auch ein Volllaufen der Scheduler-Queue wie in diesem Thread wäre dann kein Problem mehr. Wie handelt die CCU eigentlich solche laufenden Verzögerungen, wenn sie z.B. eigentlich durch einen gegenteiligen oder erneuerten Befehl "gelöscht" sind? Laufen sie trotzdem intern noch weiter?

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

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Black » 29.05.2019, 20:12

eigentlich müsste die CCU diese aus dem scheduler ausklinken... also bei dem Retriggern.

bei nicht retriggern blieben die alten bestehen und die neuen werden einzugeklinkt.

damit es konsistent ist, müsste das Verhalten von State dieses auch so handhaben, bei retriggern die Queue tillen, auch ältere SetStateDelayed Einträge tillen.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Xel66 » 29.05.2019, 20:31

OK, danke für die Info.

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

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

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von dtp » 30.05.2019, 17:24

Schön zu lesen, dass eine verzögerte Auslösung per HM-Skript denkbar wäre.

Ich habe aber noch mit der aktuellen Lösung ein kleines Problem. Und zwar möchte ich mein vierkanaliges Lauflicht periodisch über n Zyklen durchlaufen lassen. Dazu habe ich mir folgendes Skript erstellt:

Code: Alles auswählen

string deviceName = "EG Flur Licht Treppe";
integer numCycles = 3;
integer duration = 4;
boolean state = true;

string channelsList; string channel; string dpID;
integer cnt = 0; string command = "";

while(cnt < numCycles){
  cnt = cnt + 1;
  channelsList = (dom.GetObject(ID_DEVICES).Get(deviceName)).Channels().EnumUsedIDs();
  foreach(channel, channelsList){
    dpID = (dom.GetObject(ID_CHANNELS).Get(channel)).DPByHssDP("STATE").ID();
    command = command#dpID#" "#duration#" "#state#",";
  }
  state = !state;
  command = 'tclsh /usr/local/timerschedule.tcl -c -d "'#command.Substr(0, command.Length()-1)#'"';
  dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(command);
  WriteLine(command);
  command = "";
}
Im Prinzip tut es nun das, was ich mir vorgestellt habe, allerdings mit einem kleinen Haken, wie das nachfolgende Syslog zeigt (jeweils grün umrandet sind die einzelnen Kanäle):
2019-05-30_17h19_39.png
Es wird nämlich leider nicht abgewartet, bis ein Schleifendurchlauf beendet ist, sondern es werden praktisch alle drei Schleifendurchläufe parallel abgearbeitet, so dass jeweils nur der letzte Befehl übergeben wird, wie die vorangestellten Auslösezeiten zeigen.
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
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Black » 30.05.2019, 18:18

Einen einzelnen kommandostring zusammen setzen und dann absetzen.
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

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

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von dtp » 31.05.2019, 07:07

*räusper* 8)
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
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von Black » 31.05.2019, 08:08

ich versteh da grad die Fragestellung net ^^
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

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

Re: Timer Scheduler - Verzögerungen aus HM-Script V1.3

Beitrag von dtp » 31.05.2019, 08:19

Keine Fragestellung. Wollte damit nur zum Ausdruck bringen, dass ich auf die von dir vorgeschlagene Lösung auch selber hätte kommen müssen. Aber manchmal sieht man den Wald vor lauter Bäumen nicht. 8)
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 „HomeMatic Tipps & Tricks - keine Fragen!“