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

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

dstephan
Beiträge: 3
Registriert: 30.06.2019, 21:51
Hat sich bedankt: 1 Mal

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

Beitrag von dstephan » 11.04.2020, 16:14

Hallo zusammen,

seit Version 3.47.15.20190828 können Kanäle per State mit einem delay geschaltet werden. Ich versuche das jetzt zu nutzen, um meine Beregnungsventile nacheinander ein- und wieder auszuschalten.

Code: Alles auswählen

dom.GetObject("ID_VENTIL1").State(true, 60000);
dom.GetObject("ID_VENTIL1").State(false, 120000);
dom.GetObject("ID_VENTIL2").State(true, 120000);
dom.GetObject("ID_VENTIL2").State(false, 180000);
Im (vereinfachten) Beispiel würde Ventil 1 mit einer Verzögerung von einer Minute starten und eine Minute laufen, anschließend Ventil 2 nochmal eine Minute. In der Realität sind es sieben Ventile mit individuellen Timings, die aus Systemvariablen gezogen werden. Einzeln funktionieren die Aufrufe, nur zusammen nicht, ich vermute, weil der letzte für den Kanal gesetzte Wert den vorigen überschreibt (also wird das Einschalten durchs nachfolgende Ausschalten wieder überschrieben).

Hat jemand eine Idee, wie sich das lösen lässt?

Schöne Grüße
Daniel

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

Re: State Delay in HM Script

Beitrag von jmaus » 14.04.2020, 15:26

dstephan hat geschrieben:
11.04.2020, 16:14
Hat jemand eine Idee, wie sich das lösen lässt?
Ja, das habe ich. Für den von dir genannten Anwendungsfall gibt es extra zusätzlich zum zweiten parameter für die delay zeit in ms auch noch einen dritten Parameter den man der State() Funktion mitgeben kann. Dieser Parameter (boolean) ist standardmäßig "true", heisst "retrigger" und macht genau das was du festgestellt hast bzw. das was auch die WebUI Programmierung standardmäßig macht. D.h. ein noch laufendes State() mit delay wird unterbrochen bzw. überschrieben. Wenn du das also nicht willst und einfach mehrere gestaffelte State() aufrufe machen möchtest müsste dein Aufruf wie folgt aussehen:

Code: Alles auswählen

dom.GetObject("ID_VENTIL1").State(true, 60000);
dom.GetObject("ID_VENTIL1").State(false, 120000, false);
dom.GetObject("ID_VENTIL2").State(true, 120000);
dom.GetObject("ID_VENTIL2").State(false, 180000, false);
Hoffe das löst dein Problem.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

dstephan
Beiträge: 3
Registriert: 30.06.2019, 21:51
Hat sich bedankt: 1 Mal

Re: State() mit Delay in HM Script

Beitrag von dstephan » 28.04.2020, 16:42

Hi Jens,
herzlichen Dank, funktioniert!
Gibt es eigentlich irgendwo eine konsolidierte Dokumentation dieser Scripting-API (HM-Standard + RasperryMatic-Erweiterungen), bzw. ließe sich das irgendwie generieren á la JavaDoc?
Schöne Grüße
Daniel

Stefan0815
Beiträge: 169
Registriert: 16.04.2019, 15:15
Hat sich bedankt: 9 Mal
Danksagung erhalten: 10 Mal

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

Beitrag von Stefan0815 » 26.05.2020, 10:27

Eine Frage zur Verzögerung bei State: Wird der Sendebefehl um die Delay-Zeit verzögert oder wird die Verzögerung erst im Aktor realisiert?
Viele Grüße
Stefan

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

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

Beitrag von Black » 26.05.2020, 20:40

Sendebefehl wird verzögert
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

ehohz
Beiträge: 45
Registriert: 19.11.2015, 14:27

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

Beitrag von ehohz » 25.06.2020, 11:05

Ich habe versucht in einem HM Script einen Schaltaktor auszuschalten und nach 5 Sekunden wieder einzuschalten.

Code: Alles auswählen

dom.GetObject("schalter1").State(false);
dom.GetObject("schalter1").State(true, 5000);
Der Schalter wird zwar ausgeschaltet, aber nicht wieder eingeschaltet.

Was mache ich falsch?

MichaelN
Beiträge: 9655
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

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

Beitrag von MichaelN » 25.06.2020, 11:41

Gibt es Fehlermeldungen im SysLog?
Ich setze vorraus, das der Aktor schalter1 existiert und es ohne ,5000 funktioniert und Du auch die richtige Firmware hast!?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

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

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

Beitrag von jmaus » 25.06.2020, 12:11

ehohz hat geschrieben:
25.06.2020, 11:05
Ich habe versucht in einem HM Script einen Schaltaktor auszuschalten und nach 5 Sekunden wieder einzuschalten.

Code: Alles auswählen

dom.GetObject("schalter1").State(false);
dom.GetObject("schalter1").State(true, 5000);
Der Schalter wird zwar ausgeschaltet, aber nicht wieder eingeschaltet.

Was mache ich falsch?
Schau doch einfach ein paar Beiträge weiter oben nach meinen Hinweisen. Dort habe ich etwas von einem dritten Parameter für die State() funktion beschrieben (siehe viewtopic.php?f=65&t=58034&p=589846#p575179). Könnte auch deine Lösung sein.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

ehohz
Beiträge: 45
Registriert: 19.11.2015, 14:27

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

Beitrag von ehohz » 25.06.2020, 17:04

Hallo MichaelN,

zu deinen Fragen:

1. Ich habe die neuste Firmware installiert.
2. Neuere Gerätefirmware wird nicht angezeigt.

3. Wenn ich es ohne Verzögerung probiere, geht es. Er schaltet aus und sofort wieder an.

4. Im Syslog gibt es folgende Fehlermeldung:
homematic-raspi local0.err ReGaHss: ERROR: dp pointer is null - id= 1419 [ExecuteWriteJob():iseRTScheduler.cpp:641]

Die Fehlermeldung sagt mir allerdings nichts.

MichaelN
Beiträge: 9655
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

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

Beitrag von MichaelN » 25.06.2020, 17:06

Und es gibt nur ein Objekt "schalter1"?
Wie lautet die genaue Firmware deiner CCU?
Zuletzt geändert von MichaelN am 25.06.2020, 17:41, insgesamt 1-mal geändert.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „RaspberryMatic“