[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: 5932
Registriert: 17.02.2015, 14:45
System: Alternative CCU (RaspberryMatic etc.)
Wohnort: Dresden
Hat sich bedankt: 14 Mal
Danksagung erhalten: 324 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.51.6.20200621 @ ESXi mit ~180 HomeMatic Geräten + ioBroker – GitHubGitHub Sponsors / PayPalTwitter

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: 81
Registriert: 16.04.2019, 15:15
Hat sich bedankt: 2 Mal
Danksagung erhalten: 2 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?

Benutzeravatar
Black
Beiträge: 2955
Registriert: 12.09.2015, 22:31
System: Alternative CCU (RaspberryMatic etc.)
Wohnort: Wegberg
Hat sich bedankt: 43 Mal
Danksagung erhalten: 204 Mal
Kontaktdaten:

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

Beitrag von Black » 26.05.2020, 20:40

Sendebefehl wird verzögert
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 3.51.6.20200420 mit Groundplane Antennenmod
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker unter ProxMox auf NUC als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.3
Howto - AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 3.11.04 Scripteditor und Objektinspektor

technical contribution against annoying advertising

ehohz
Beiträge: 26
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: 390
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 34 Mal
Danksagung erhalten: 28 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!?

Benutzeravatar
jmaus
Beiträge: 5932
Registriert: 17.02.2015, 14:45
System: Alternative CCU (RaspberryMatic etc.)
Wohnort: Dresden
Hat sich bedankt: 14 Mal
Danksagung erhalten: 324 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.51.6.20200621 @ ESXi mit ~180 HomeMatic Geräten + ioBroker – GitHubGitHub Sponsors / PayPalTwitter

ehohz
Beiträge: 26
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: 390
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 34 Mal
Danksagung erhalten: 28 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.

Antworten

Zurück zu „RaspberryMatic“