[Gelöst]BenaricHtung wenn man aus dem Haus geht das noch eine Tür oder Fenster

Begonnen von Sebastian84, 14 September 2020, 12:17:47

Vorheriges Thema - Nächstes Thema

elektrikpe2

Hallo,

ich habe auch noch keine Lösung für mein Problem. Ich habe zwar einen eindeutigen Event, wann ich die Meldung bekommen möchte und auch das Medium auf das ich das ausgeben will. Das ist zum einen die Alarmanlage, die ich scharf schalte und zum  anderen Telegram. Das Problem ist aber, dass mir die Alarmanlage 20 sek Zeit gibt, um das Haus zu verlassen. In diesem Fall ist aber im EG die Haustür immer offen und dadurch bekommme ich die Meldung natürlich auch. Also grundsätzlich ja ein einfacher DOIF
defmod di_telegram_egfensteroffen DOIF ([?Lupusec_Sensor_EG] eq "offen" and [Alarmanlage] ne "Aus")\
(set teleBot message Fenster im EG offen)


Jetzt glaube ich, dass man die Zeitverzögerung mit int(rand(20) in die Logik eingebaut bekommt. Ich bekomme aber einfach nicht die schreibweise hin. Könnte mir da jemand helfen oder liege ich sogar ganz falsch. Danke

LG Peter

Damian

Zitat von: elektrikpe2 am 27 September 2020, 13:35:53
Hallo,

ich habe auch noch keine Lösung für mein Problem. Ich habe zwar einen eindeutigen Event, wann ich die Meldung bekommen möchte und auch das Medium auf das ich das ausgeben will. Das ist zum einen die Alarmanlage, die ich scharf schalte und zum  anderen Telegram. Das Problem ist aber, dass mir die Alarmanlage 20 sek Zeit gibt, um das Haus zu verlassen. In diesem Fall ist aber im EG die Haustür immer offen und dadurch bekommme ich die Meldung natürlich auch. Also grundsätzlich ja ein einfacher DOIF
defmod di_telegram_egfensteroffen DOIF ([?Lupusec_Sensor_EG] eq "offen" and [Alarmanlage] ne "Aus")\
(set teleBot message Fenster im EG offen)


Jetzt glaube ich, dass man die Zeitverzögerung mit int(rand(20) in die Logik eingebaut bekommt. Ich bekomme aber einfach nicht die schreibweise hin. Könnte mir da jemand helfen oder liege ich sogar ganz falsch. Danke

LG Peter

siehe: https://fhem.de/commandref_DE.html#DOIF_wait
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

elektrikpe2

Hallo, danke für die (gewohnt) schnelle Reaktion. Ich dachte immer, wait wäre zur zeitlichen Aufsplittung der Befehlskette. Ich finde da jetzt auch nicht den packan. Ich möchte gerne, dass nach dem triggern der ersten Bedingung (Alarm an) die zweite Bedingung (Fenster/Tür offen) erst 20 sec. später prüft (ich habe die jetzt auch so neu mit und verbunden defmod di_telegram_egfensteroffen DOIF ([Alarmanlage] ne "Aus" and [?Lupusec_Sensor_EG] eq "offen")\
(set teleBot message Fenster im EG offen)
LG Peter

Damian

defmod di_telegram_egfensteroffen DOIF ([Alarmanlage] ne "Aus") (IF ([Lupusec_Sensor_EG] eq "offen") (set teleBot message Fenster im EG offen))
attr wait 20
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Sebastian84

define Hausueberwachung notify Eingangstuer:on defmod -temporary atTmp_Eingangstuer_on at +00:00:10 {fhem ("set pushmsg message Eingangstür ist offen" {if(ReadingsVal("handy_sebastian","state","n.a.") eq "absent)}}


ich habe mal was versucht mit at aber ich glaube das ich weit entfernt bin.

das wenn Eingangstür auf ist nach 10 Sekunden nachgefragt wird ob auf dann schicke ne Naricht wenn satus handy nicht da sind.

Ich werde die Tage nochmal drüber Nachdenken.

MadMax-FHEM

Warum hast du if und fhem("set...") "umgedreht"!?
Und warum dann auch noch durch die geschweiften Klammern zwischen if und dem fhem("set...") "entkoppelt"!?

Mach es halt (einmal) so wie vorgeschlagen...

Lies noch mal bei Klammern und fhem nach und bei Perl usw.

EDIT: und bzgl. Klammern zählen bist du immun!? ;)

-temporary ist in dem Fall unnötig, ein einmal relatives at ist eh nur 1x... ;)

EDIT: evtl. so define Hausueberwachung notify Eingangstuer:on defmod atTmp_Eingangstuer_on at +00:00:10 {if(ReadingsVal("handy_sebastian","state","n.a.") eq "absent){fhem("set pushmsg message Eingangstür ist offen")}} vorausgesetzt die von dir vorgelegten "Code-Schnipsel" sind korrekt/funktionieren (also notify triggert und die Abfrage bzgl. "zuhause" ist auch richtig, also bzgl. Readings etc.) ich habe nur deinen "Vorschlag" richtig umgestellt... Ungern... Aber ich hoffe du lernst das (trotzdem) mal selbst...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

elektrikpe2

Hallo, Danke, funktioniert. Aber es zeigt mir, dass ich doch noch viel lernen kann (muss). Wie hätte ich darauf kommen können, dass man die Syntax so schreiben kann. Also noch lesen, lesen. LG Peter

Sebastian84


Sebastian84

Guten Abend

   Kleine_Garage:on defmod atTmp_Kleine_Garage_on at +00:03:00 {if(ReadingsVal("handy_sebastian","state","n.a.") eq "absent" && ReadingsVal("handy_patricia","state","n.a.") eq "absent" && ReadingsVal("handy_oma","state","n.a.") eq "absent" ) {fhem("set pushmsg msg 'Alarmanlage' 'Kleine Garage unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")}}   

Ich hab das Problem das ich fast immer Fehlalarme bekomme.
Die Handys werden auch alle gut und schnell als zuhause und abwesend erkannt.
Das Problem wenn ich die Zeit Hochsetze wird das HANDY beim reingehen definitiv erkennt. Aber wenn ich gehe kommt dann immer der Fehlalarm, weil ich ja nicht die at Zeit warten will. Hab die Zeit auch mal sehr niedrig eingestellt aber dann ist, dass Problem genau anders herrum. Wenn jemand von den Handys zuhause ist kommt auch kein Alarm wie es sein soll.

amenomade

In Pseudocode:
Kleine_Garage:on {
       if alle readingsVal  "absent" and alle readingsAge > 300 # Tür geöffnet wenn alle absent seit mehr als 5mn
          alarm
       else                                                     # Jemand present oder einer ist absent seit weniger als 5mn
          at +3                                                 # dann checke mal wieder in 3mn...
              if alle readingsVal "absent"                      #... ob alle dann immer noch absent
                  alarm
}


Wäre lesbarer mit einem "structure" Device statt jedes einzelnen Handys
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Sebastian84

Pseudocode?
Sagt mir jetzt nix.
Also liegt das an mein Aufbau das das nicht richtig funktioniert

amenomade

Pseudocode = ich habe dir gezeigt, wie es strukturiert werden muss, aber ich hatte keinen Bock, alle ReadingsVal("device","reading","") eq "blabla"  und ReadingsAge("device","reading", "") > 300 wieder zu schreiben.

EDIT: und dein Aufbau funktioniert schon. Du hattest nur noch nicht gesagt, dass Du unterschiedliche Zeiten beim reinkommen und rausgehen wolltest. Andere Anforderungen => Lösung muss angepasst werden.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus


amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Sebastian84

   Kleine_Garage:on {if alle readingsVal("handy_sebastian","state","n.a.") eq "absent" && ReadingsVal("handy_patricia","state","n.a.") eq "absent" && ReadingsVal("handy_oma","state","n.a.") eq "absent" ) and alle readingsAge("handy_sebastian","state","n.a.") eq "absent" && ReadingsVal("handy_patricia","state","n.a.") eq "absent" && ReadingsVal("handy_oma","state","n.a.") eq "absent" ) > 300 defmod atTmp_Kleine_Garage_on at +00:05:00
          {fhem("set pushmsg msg 'Alarmanlage' 'Kleine Garage unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")}}
       else                                                     
          at +3                                                 
              {if readingsVal("handy_sebastian","state","n.a.") eq "absent" && ReadingsVal("handy_patricia","state","n.a.") eq "absent" && ReadingsVal("handy_oma","state","n.a.") eq "absent" )                     
                  {fhem("set pushmsg msg 'Alarmanlage' 'Kleine Garage unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")}}
                     



Meintest du so?