Ich getrau mich es nach 10 Jahren IPS eigentlich garnicht zu fragen, aber …
Alle 30 Min soll „State“ eines HM-Devices für 5 Min. an sein.
Mein Script:
// Pumpe 5 min an
$id = 49282 /*[Homematic\Dach Pumpe\SWITCH]*/;
if($_IPS['SENDER'] == "TimerEvent") {
IPS_SetScriptTimer($_IPS['SELF'], 0);
HM_WriteValueBoolean($id, "STATE" , false);
}
else {
IPS_SetScriptTimer($_IPS['SELF'], 300);
HM_WriteValueBoolean($id, "STATE" , true);
}
schaltet die Pumpe an und nach 5 Min. aus.
Soweit, so gut!
Wenn ich das Device mit einem Schalter einschalte, geht es nach 5 Min. wieder aus. Alles OK.
Aber, wenn ich das Script mit einem zyklischen Ereignis alle 30 Min. starte, wird ja die Bedingung „TimerEvent“ von diesem Ereignis erfüllt und das Device bleibt aus.
Kann jemand meinen Knoten lösen?
paresy
2. März 2017 um 11:50
2
if($_IPS['SENDER'] == "TimerEvent") {
ändern zu
if($_IPS['SENDER'] == "TimerEvent" && $_IPS['EVENT'] != $id_von_30_min_timer) {
paresy
Swifty
2. März 2017 um 11:52
3
… nur mal so aus dem Kopf …
// Pumpe 5 min an
$id = 49282 /*[Homematic\Dach Pumpe\SWITCH]*/;
if($_IPS['SENDER'] == "TimerEvent") {
if( $_IPS['EVENT'] != xxxxx ){
IPS_SetScriptTimer($_IPS['SELF'], 0);
HM_WriteValueBoolean($id, "STATE" , false);
}
else {
IPS_SetScriptTimer($_IPS['SELF'], 300);
HM_WriteValueBoolean($id, "STATE" , true);
}
}
xxxxx = ID Deines 30min Timers
Gruß
Swifty
Danke dir, es kann so einfach sein.
Swifty
2. März 2017 um 11:53
5
… da war ich wieder zu langsam …
Titus
2. März 2017 um 12:51
6
Da Du ja Homematic benutzt kannst Du sogar nur mit dem 30-Minuten-Timer und mit ON_TIME arbeiten:
$id = 49282 /*[Homematic\Dach Pumpe\SWITCH]*/;
if($_IPS['SENDER'] == "TimerEvent") {
HM_WriteValueFloat($id, "ON_TIME" , 300);
HM_WriteValueBoolean($id, "STATE" , true);
}
Dann kümmert sich der HM-Aktor selbst ums ausschalten.
bumaas
2. März 2017 um 13:07
7
… falls der Aktor „ONTIME“ unterstützt[emoji3]
Nicht jeder Aktor kennt dieses Attribut.
Daran hab ich ja gar nicht gedacht. Ist auch eine gute Lösung, die funktioniert.
Danke für alle Tips