Hallo,
ich habe seit ewiger Zeit mal wieder etwas mit DOIF gemacht.
Der folgende Code fährt einen Rolladen an eine bestimmte Position, sobald die IP-Adressen von zwei Geräten auftauchen, es draußen zu hell ist und sich der Rolladen an einer höheren Stelle befindet.
([OLED:presence] eq "present"
and [PS5:presence] eq "present"
and [?Wetterstation:luminosity] > 20000
and [?Wetterstation:UVR:d1] >= 1000
and [?HM_rolloWohnzimmer:control] > 28) (set HM_rolloWohnzimmer pct 28)
Wenn die IP-technisch erfassten Geräte ausgeschaltet werden, kann es aufgrund dessen, dass dies von FHEM nicht unmittelbar bemerkt wird zu folgender Situation kommen:
Die Geräte wurden ausgeschaltet und es wird händisch die Rolladensteuerung betätigt. Da die Geräte aus Sicht von FHEM vermeintlich noch an sind, wird der Rolladen unmittelbar wieder runtergefahren. Die Geräte werden jeweils folgendermaßen getrackt:
function {CheckPresence("XXX.XXX.XXX.XXX", "YY:YY:YY:YY:YY:YY")} 60 60
Wäre cmdpause 61
evtl. eine mögliche Lösung? Würde das dann aber nicht auch zu einer verzögerten Ausführung bei gewünschten Ausführungen führen?
Gruß Chris
Du kannst Verzögerungen für jeden Zweig mit wait einbauen. Das verhindert unnötiges Schalten. Hier vermutlich beim DOELSE-Fall sinnvoll.
Du kannst, wenn manuelles fahren erkannt wurde, CheckPresence aufrufen. Zusätzlich würde ich einen der beiden mit ? versehen und die Reihenfolge der Funktionsaufrufe entsprechend gestalten.