Seite 3 von 3

Re: [GELÖST] State() mit Delay in HM Script

Verfasst: 30.06.2020, 13:11
von MichaelN
Da ich eine solche Funktion gerade gut gebrauhcen könnte:

kann man eigentlich abfragen, ob ein Delay gesetzt ist?

Konkret: ich schalte in einem Programm eine Variable verzögert von false auf true und möchte zwischendurch abfragen, ob diese Verzögerung noch läuft oder ob sie durch einen gegenläufigen Befehl (sofort auf false) gestoppt wurde.

Re: [GELÖST] State() mit Delay in HM Script

Verfasst: 30.06.2020, 13:35
von Black
MichaelN hat geschrieben:
30.06.2020, 13:11
Da ich eine solche Funktion gerade gut gebrauhcen könnte:

kann man eigentlich abfragen, ob ein Delay gesetzt ist?

Konkret: ich schalte in einem Programm eine Variable verzögert von false auf true und möchte zwischendurch abfragen, ob diese Verzögerung noch läuft oder ob sie durch einen gegenläufigen Befehl (sofort auf false) gestoppt wurde.
Noch nicht... ich habe aber Funktionen wie .IsScheduled() bzw .ClearDelay() schon bei Jens als Issue angemeldet

Stringfunktionen wie .EscapeString() bzw .UnEscapeString () wären auch sinnvoll nach dem breaking Change Erfahrungen . Den Pascal Quelltext dazu kann ich gerne zur Verfügung stellen.
Ebenso .StringBetween (linketextgreze,rechtetextgrenze)

Black

Re: [GELÖST] State() mit Delay in HM Script

Verfasst: 30.06.2020, 14:50
von jmaus
jmaus hat geschrieben:
30.06.2020, 11:53
Ja, das ist es in der Tat und ich hab es auch schon reproduzieren können und ich denke auch schon den schuldigen gefunden. Der entscheidende Hinweis war dabei die folgende Fehlermeldung die kommt wenn man ein Delayed State() auf einen Kanal macht:

Code: Alles auswählen

Jun 30 09:07:43 homematic-raspi local0.err ReGaHss: ERROR: dp pointer is null - id= 1679 [ExecuteWriteJob():iseRTScheduler.cpp:641]
Der Scheduler der das State ja dann nach der angegebenen Delayzeit ausführen soll kann bis jetzt eben nur mit DPs umgehen und verweigt mit dieser Fehlermeldung auch ein State() auf einem Kanal auszuführen (was prinzipiell geht wenn es einen DefaultDP für einen Kanal gibt. Sollte sich recht einfach reparieren lassen.
So, ab der kommenden R1.00.0388.0220 sollte das nun gehen. Und noch mehr, denn mir war auch gleich noch aufgefallen das das delayed State() auch nicht für OT_PROGRAM funktioniert hat. Damit sollte das delayed State() in der kommenden ReGa version dann für alle Objekttypen gehen auf die man ein State() anwenden kann (ausser natürlich ich hab einen übersehen :)

Re: [GELÖST] State() mit Delay in HM Script

Verfasst: 04.07.2020, 09:54
von jmaus
So, noch kurz nachgeliefert: Im aktuellsten nightly Snapshot von RaspberryMatic ist jetzt die neueste ReGaHss Betaversion mit dabei bei der nun das delayed State() auch für OT_CHANNEL und OT_PROGRAM funktionieren sollte. Interessierte Tester können das gerne mal selber testen und hier berichten. Danke nochmal an alchy für den Hinweis!

Re: [GELÖST] State() mit Delay in HM Script

Verfasst: 04.07.2020, 13:54
von Black
Gib mir mal bitte einen Use case für den state bzw statedelay eines OT_PROGRAM Objektes.

Thnx Black

Re: [GELÖST] State() mit Delay in HM Script

Verfasst: 04.07.2020, 17:11
von alchy
.State(1) oder auch true oder Los triggert ein Programm sofern es aktiv ist in es werden die Bedingungen geprüft im Gegensatz zu execute.
Das hat aber nichts mit der Rapi zu tun. Das ist schon länger so wurde jetzt nur verraten.
Der delay würde es dann verzögern auf der raspi.

Alchy

Re: [GELÖST] State() mit Delay in HM Script

Verfasst: 04.07.2020, 17:20
von Black
Thnx, interessanter Ansatz der sich da eröffnet.

Black

Re: [GELÖST] State() mit Delay in HM Script

Verfasst: 04.07.2020, 18:25
von jmaus
Black hat geschrieben:
04.07.2020, 17:20
Thnx, interessanter Ansatz der sich da eröffnet.
Genau, das eröffnet z.b. den interessanten Ansatz in einem Program1 in einem Skript das zweite Program2 aufzurufen das wiederrun Program1 aufruft und somit mitunter dazu führt das die ReGa irgendwann tot am Boden liegt vor lauter Rekursionen ;) Also einfach damit nun ein wenig sparsam umgehen damit man sich nicht irgendwann damit böse in den Fuß schießt ;)
Aber ansonsten ist das wie alchy sagt nichts wirklich neues. Neu ist nur das man das State() jetzt auch mit einem Delay ausführen lassen kann.

Re: [GELÖST] State() mit Delay in HM Script

Verfasst: 04.07.2020, 18:36
von Black
da gibts noch ganz andere möglichkeiten, um die rega ins nirvana zu setzen. generell ist es aber ein interessanter ansatz, für den es mit sicherheit auch die ein oder andere vernünftige Anwendung gibt

Black