[Gelöst] HomeCMDpresence-absent schaltet nach einfügen von if nicht mehr

Begonnen von dogas, 17 Mai 2019, 08:33:36

Vorheriges Thema - Nächstes Thema

dogas

Hallo Gurus,

Ich habe meine Frau und Mich als Residents angelegt und frage über die Fritzbox unsere Anwesenheit per Mac Adresse ab. Damit schalte ich die Alarmanlage.
Das HomoMode Modul übernimmt das alles auch schön automatisch.

Leider verzweifel ich an einer if Klausel, die den Alarm erst einschalten soll wenn wir mind. 5 Minuten abwesend sind mittels der HomeCMDpresence-absent Funktion des HomeMode Moduls.
Wenn ich die Funktion wie folgt auspräge, funktioniert es einwandfrei, es wird sofort geschaltet.

{
fhem('set doif_Alarm enable; set teleBot message Alarmanlage aktiviert!');
}


Füge ich allerdings ein if ein um eine Verzögerung um 5 Minuten zu erreichen, schaltet nichts mehr.  :-\

{
if (%DURABSENCE% > 5 ) {
fhem('set doif_Alarm enable; set teleBot message Alarmanlage aktiviert!');
}
}


Hat jemand eine Idee was das sein könnte. Es gibt leider keinen Log Eintrag und auch keinerlei Syntaxfehler die dieses Verhalten erklären könnten.

mfg
Chris

Otto123

Hallo Chris,

Zitat%DURABSENCE%
value of the durTimerAbsence_cr reading of the last triggered resident
Wenn ich die Doku da richtig verstehe, müsstest Du mit ReadingsVal("DeinHomeModeGerät","durTimerAbsence_cr",0) dieses Reading auslesen.
Der Code den Du gepostet hast ist Perl, dort versteht man deinen Platzhalter aus dem Modul nicht.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

binford6000

Die Platzhalter müssen in "" dann werden sie auch ausgelesen:
"%DURABSENCE%"

VG Sebastian

binford6000

Was Du vorhast wird aber trotzdem nicht funktionieren.

HomeCMDpresence-absent wird ausgeführt wenn alle Residents absent sind. Dann sind aber auch alle
durTimerAbsence_cr = 0. Ein
fhem('sleep 300; set doif_Alarm enable; set teleBot message Alarmanlage aktiviert!')
würde funktionieren.

VG Sebastian

dogas

Zitat von: Otto123 am 17 Mai 2019, 09:22:49
Hallo Chris,
Wenn ich die Doku da richtig verstehe, müsstest Du mit ReadingsVal("DeinHomeModeGerät","durTimerAbsence_cr",0) dieses Reading auslesen.
Der Code den Du gepostet hast ist Perl, dort versteht man deinen Platzhalter aus dem Modul nicht.

Gruß Otto

Angeblich ersetzt das Modul die Platzhalter vor Ausführung.

Die Beispiele zeigen es auch ganz gut. https://wiki.fhem.de/wiki/Modul_HOMEMODE#HomeCMDpresence-.3Cabsent.2Fpresent.3E

dogas

Zitat von: binford6000 am 17 Mai 2019, 09:37:13
Was Du vorhast wird aber trotzdem nicht funktionieren.

HomeCMDpresence-absent wird ausgeführt wenn alle Residents absent sind. Dann sind aber auch alle
durTimerAbsence_cr = 0. Ein
fhem('sleep 300; set doif_Alarm enable; set teleBot message Alarmanlage aktiviert!')
würde funktionieren.

VG Sebastian

Ist eine Idee, aber würde das nicht heißen er würde die Alarmanlage scharf schalten auch wenn ich innerhalb von 5 Minuten wieder heim komme?!

binford6000

ZitatIst eine Idee, aber würde das nicht heißen er würde die Alarmanlage scharf schalten auch wenn ich innerhalb von 5 Minuten wieder heim komme?!

Jepp. Du könntest auch das Attribut "HomeCMDmode-absent-belated" nutzen  ;)
VG Sebastian

dogas

Zitat von: binford6000 am 17 Mai 2019, 09:59:26
Jepp. Du könntest auch das Attribut "HomeCMDmode-absent-belated" nutzen  ;)
VG Sebastian

Super, das ist genau das was ich brauche. Hat funktioniert.
Ob es unterbrochen wird wenn ich innerhalb der Zeit wieder heim komme, werde ich heute Abend mal testen. Vielen Dank.

PS: Unterbrechungstest erfolgreich. Man kann ja einen Roommate auch auf Anwesend stellen.  ;D