Schaltdauer lässt sich nicht übermitteln

Hallo zusammen,

laut Dokumentation gibt es ja die Möglichkeit die Schaltdauer von HM Geräten zu steuern. Hierzu muss als erstes die Schaltdauer übermittelt werden und danach muss der Aktor eingeschaltet werden.

Dies habe ich in diesem Bsp. auch gemacht:

HM_WriteValueFloat(23684, "ON_TIME", 10);
HM_WriteValueBoolean(23684, "STATE", true);

Nur bekomme ich beim Ausführen die Fehlermeldung:

call HM_WriteValueFloat

Auch wenn ich einen anderen Aktor nehme, habe ich das gleiche Problem. Auch wie im Forum beschrieben hilft es nicht, den Haken „Status emulieren“ rauszunehmen.

Hat vielleicht jemand noch eine Idee?

Moin,

bitte etwas mehr Infos; welcher Aktor ?
Wird On_Time vom Gerät unterstützt ?
Siehe hier:
HM_Script_Teil_4_Datenpunkte_1_503.pdf

Michael

Was ist 23684? Die :1-Instanz des Aktors, oder was anderes?

Gruß
Bruno

Hallo Michael,

es ist ein

HMW-IO-12-Sw7-DR

Laut dem PDF kann ich diesen Parameter scheinbar nicht mitgeben.

Wie kann man den einen Kontakt für eine Zeit „x“ anschalten und danach automatisch wieder ausschalten?

Ich möchte halt meine Heizungspumpe zyklisch einschalten und diese soll automatisch wieder nach Zeit „x“ ausschalten.

@Bruno
Ja das ist die Instanz von dem Ausgang des

HMW-IO-12-Sw7-DR

Gruß

Thorsten

Wired kennt diesen Parameter nicht. Darum ja meine Frage.

Setzte nach dem Einschalten einen Timer für das Script (Scripttimer).
Wenn das Script über den Timer aufgerufen wird ( prüfen auf $_IPS[‚Sender‘] ), ausschalten.

Oder nutze, wenn es auch ohne IPS wieder ausgeschaltet werden soll, ein Programm in der CCU.
Wenn Aktor ein, dann verzögert um xx aus.
Michael

Hallo Michael,

ich rufe jetzt per Timer Event mein Script zyklisch auf:

if($_IPS['SENDER'] == "TimerEvent")
{
    //Aus Befehl
    HM_WriteValueBoolean(23684 , "STATE", false);
	 
    IPS_SetScriptTimer($_IPS['SELF'], 0);

} else
{
    //An Befehl
    HM_WriteValueBoolean(23684 , "STATE", true);
}

Nur springt das Script nie in den „Else Zweig“. Muss ich manuell einen Timer setzten und wird der aufrufende Timer nicht ausgewertet?

Gruß

fussi24

Da du auch über ein event einschalten willst, musst du auch auf das event prüfen. Schau dir die Doku zu den IPS Systemvariablen an, da ist auch die Var welche die ID des ausgelösten event enthält beschrieben.
Auf diese ID prüfen. Wenn event x dann einschalten und mit setscript timer die zeit zum ausschalten vorgeben, wenn event id des setscriptevents dann ausschalten.
Michael

Erst falsch gelesen :o

Dein Skript lautet auf deutsch:
Wenn ein TimerEvent aufruft schalte State false und setze den Timer auf Null.
–> wenn was anderes aufruft (else) schalte State true. (Da fehlt noch der
Skripttimer Befehl zum Setzen)

Gruß
Bruno

Hallo Michael & Bruno,

vielen Dank jetzt hat es funktioniert.

Ich habe als Event die Änderung eines Aktors genommen. Wenn ich einen Timer im Script setze wird dieser ja automatisch als Child an das Script gehangen (war mir nicht so bewusst).

Somit passt meine Script Logik und das Script arbeitet wie gewünscht.

Gruß

fussi24

Event vom Aktor ist auch sehr gut, weil es dann ja egal ist wie du den Aktor einschaltest. Somit schaltet er auch aus, wenn du ihn manuell am Gerät oder über das Webfront einschaltest.
Michael