[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

laberlaib

Also du brauchst ja für dein
Zitatclientstate_priority
noch das
Zitatclientstate_behavior
Und dann geht das doch sogar komplett ohne mapping. In der Commandref ist sogar ein beispiel für dich (auch wenn Lampen keine Türen sind, so gilt dass das Problem On != An und Off !=Aus deinem entspricht: Closed!=Geschlossen etc).
Zitatclientstate_behavior
Der Status einer Struktur hängt von den Status der zugefügten Devices ab. Dabei wird das propagieren der Status der Devices in zwei Gruppen klassifiziert und mittels diesem Attribut definiert:

    absolute
    Die Struktur wird erst dann den Status der zugefügten Devices annehmen, wenn alle Devices einen identischen Status vorweisen. Bei unterschiedlichen Devictypen kann dies per Attribut <struct_type>_map pro Device beinflusst werden. Andernfalls hat die Struktur den Status "undefined".
    relative
    S.u. clientstate_priority.
    relativeKnown
    wie relative, reagiert aber nicht auf unbekannte, in clientstate_priority nicht beschriebene Ereignisse. Wird für HomeMatic Geräte benötigt.
    last
    Die Struktur übernimmt den Status des zuletzt geänderten Gerätes.

clientstate_priority
Wird die Struktur auf ein relatives Verhalten eingestellt, so wird die Priorität der Devicestatus über das Attribut clientstate_priority beinflusst. Die Prioritäten sind in absteigender Reihenfolge anzugeben. Dabei können Gruppen mit identischer Priorität angegeben werden, um zb. unterschiedliche Devicetypen zusammenfassen zu können. Jede Gruppe wird durch Leerzeichen oder /, jeder Eintrag pro Gruppe durch Pipe getrennt. Der Status der Struktur ist der erste Eintrag in der entsprechenden Gruppe.
Beispiel:

    attr kueche clientstate_behavior relative
    attr kueche clientstate_priority An|On|on Aus|Off|off
    attr haus clientstate_priority Any_On|An All_Off|Aus

Bei mir habe ich teilweise Sensoren mit kipp-erkennung (tiled). Dies soll aber auch als open in der Structure definiert werden, daher:
Zitatattr strc_win_Fenster clientstate_behavior relative
attr strc_win_Fenster clientstate_priority open|open|tilted closed|closed
Das erste vor der Pipe ("|") wird der Status der Structure, wenn mindestens ein Element auf open oder tilted steht. sonst wird die Structure closed (und da gibt es von allen Kindern eben nur closed).
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

Sebastian84

Das hab ich in bekomm.
Aber wie bekomme ich hin wenn ich zb. Ein Fenster schließe
Das andere Fenster mit Name in  LastDevice ohne die Seite Manuel zu aktualisieren?

Sebastian84

und was könnte an den Notyfi falsch sein. Bekomme keine Benarichtung

                    Internals:
   CFGFN     
   DEF        Haus:open.* {if(ReadingsVal("handy_sebastian","state","n.a.") eq "absent"){fhem("set pushmsg msg 'Haus' 'Nicht alle Fenster oder Türen zu' 'sebastian' 0 'bike' ")}}
   FUUID      5f63f5d7-f33f-cdd4-dc40-e3d3c1e8f2685158
   NAME       Haus_alle_zu
   NOTIFYDEV  Haus
   NR         46069
   NTFY_ORDER 50-Haus_alle_zu
   REGEXP     Haus:open.*
   STATE      active
   TRIGGERTIME 1600386563.82445
   TYPE       notify
   READINGS:
     2020-09-18 01:51:57   state           active
Attributes:



Haus
   open    
structure
handy_sebastian
   Abwesend    
PRESENCE
pushmsg
   connected    
Pushover

Mir ist aufgefallen das der Notify nur auslöst wenn kein Wlan mehr habe und ich dann erst das Fenster auf mache. Das bringt mir ja nix ich möchte aus den Haus gehen
un dann wenn kein Wlan mehr ist und ein Fenster schon auf wahr mir ne pushover Nachricht sendet

MadMax-FHEM

Zitat von: Sebastian84 am 18 September 2020, 01:59:06
und was könnte an den Notyfi falsch sein. Bekomme keine Benarichtung

Das stimmt ja wohl nicht ;)

Denn:

Zitat von: Sebastian84 am 18 September 2020, 01:59:06
Mir ist aufgefallen das der Notify nur auslöst wenn kein Wlan mehr habe und ich dann erst das Fenster auf mache. Das bringt mir ja nix ich möchte aus den Haus gehen
un dann wenn kein Wlan mehr ist und ein Fenster schon auf wahr mir ne pushover Nachricht sendet

Dann lies doch noch mal meine Antwort und deine Eingangsfrage/Aufgabe...

https://forum.fhem.de/index.php/topic,114240.msg1085051.html#msg1085051


Wenn du bei Verlassen eine Nachricht über offene Fenster haben willst, dann brauchst du auch ein notify über das VERLASSEN!

Und da dann abfragen, ob Fenster offen sind...
Wenn ja: Nachricht...

EDIT: weil fhem nun mal (meistens ;)  ) macht was man ihm "sagt". Du reagierst auf Fenster offen und frägst dann: bin ich da? Wenn nicht -> Nachricht. Also macht fhem (deiner eigenen Beschreibung nach) GENAU was du im "gesagt" hast, dass es tun soll... ;)

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)

Sebastian84

Also müßte ich den notify umdrehen.  {if(ReadingsVal("handy_sebastian","state","n.a.") eq "absent")& Haus:open{fhem("set pushmsg msg 'Haus' 'Nicht alle Fenster oder Türen zu' 'sebastian' 0 'bike' ")}}


MadMax-FHEM

Zitat von: Sebastian84 am 18 September 2020, 10:16:10
Also müßte ich den notify umdrehen.  {if(ReadingsVal("handy_sebastian","state","n.a.") eq "absent")& Haus:open{fhem("set pushmsg msg 'Haus' 'Nicht alle Fenster oder Türen zu' 'sebastian' 0 'bike' ")}}

NEIN!

Weil ein Notify auf einen Event reagiert!!

Und nicht auf irgendwelche ReadingsVal etc.

Also:

EventMonitor öffnen (optional Filter setzen)
Warten bis der entsprechende Event für "ich bin dann mal weg" kommt ;)
Diesen markieren -> create/modify -> notify (oder DOIF) generieren lassen

Und das dann anpassen, also die Abfrage, ob ein Fenster offen ist und wenn ja -> Nachricht

EDIT: falls wirklich noch nicht bekannt https://wiki.fhem.de/wiki/Event_monitor

EDIT: fhem ist an der Stelle doch wirklich "simpel" (und das sind wirklich BASICS!!! Ohne das verstanden zu haben braucht man [mMn] nicht anfangen in fhem [oder auch anders wo ;)  ] etwas umzusetzen). Also es passiert etwas (du bist weg) und daraufhin soll was passieren. Also ist doch der "Auslöser" das "ich bin dann mal weg" und NICHT "Fenster ist auf"... Und noch mal: das hat NIX mit fhem zu tun! Das ist einfach sich überlegen: WAS ist die Ursache/Auslöser und WAS soll passieren (wenn evtl. noch bestimmte Bedingungen sind, z.B. Fenster auf)...

EDIT: die zu verwendende Syntax ist dann nat. schon fhem (bzw. [manchmal] auch Modul-) spezifisch... Und dafür gibt es die commandref und Wiki...

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)

amenomade

Mit anderen Worten muss das notify NICHT so aussehen:

define nt1 notify <EVENT Fenster offen> { if (abwesend) {sende Nachricht} }

sondern so
define nt1 notify <EVENT abwesend> { if (Fenster offen) {sende Nachricht} }
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

guten Abend im Event Monitor steht

2020-09-18 19:59:31 PRESENCE handy_sebastian Abwesend
2020-09-18 19:59:31 PRESENCE handy_sebastian presence: Abwesend


   define Hausueberwachung notify PRESENCE handy_sebastian presence: Abwesend{ if (Haus open) {"set pushmsg msg 'Haus' 'Nicht alle Fenster oder Türen zu' 'sebastian' 0 'bike' "} }


    Internals:
   CFGFN     
   DEF        PRESENCE handy_sebastian presence: Abwesend{ if (Haus open) {"set pushmsg msg 'Haus' 'Nicht alle Fenster oder Türen zu' 'sebastian' 0 'bike' "} }
   FUUID      5f64f623-f33f-cdd4-e687-1d4bb2b9aff7a3e4
   NAME       Hausueberwachung
   NR         57102
   NTFY_ORDER 50-Hausueberwachung
   REGEXP     PRESENCE
   STATE      active
   TYPE       notify
   READINGS:
     2020-09-18 20:02:11   state           active
Attributes:


    Probably associated with
Haus
open
structure
handy_sebastian
Abwesend
PRESENCE
pushmsg
connected
Pushover[/c

Leider bekomme ich keine Pushover Naricht.

MadMax-FHEM

Hast du das notify vom EventMonitor generieren lassen!!?

Ich denke:Nein!

EDIT: bist du überhaupt mal meinem Link bzgl. EventMonitor gefolgt!?

Weil ich bin sicher, dass das so nicht gehen wird!

EDIT: eher sowas:

define Hausueberwachung notify handy_sebastian:presence:.Abwesend { if (Haus open) {"set pushmsg msg 'Haus' 'Nicht alle Fenster oder Türen zu' 'sebastian' 0 'bike' "} }

UND: zwischen Abwesend und der { muss nat. ein Leerzeichen sein! Sonst lautet die RegEx ja Abwesend{ und nicht Abwesend !

EDIT: und komisch, dass bei dir Abwesend steht und nicht absent... Aber das mag (aus irgendwelchen Gründen) so sein. Wenn die geposteten Ausgane so aus dem EventMonitor stammen...

EDIT: bzw. was soll den (Haus open) sein!!!!!??

EDIT: gab es zu all dem KEINEN Fehler im Log!? Kann ich fast nicht glauben...

EDIT: und auch einfach das {"set pushmsg msg 'Haus' 'Nicht alle Fenster oder Türen zu' 'sebastian' 0 'bike' "} so wird NICHT!!! gehen!! Weil du bist "in" Perl {Perl} und da musst du für fhem-Aufrufe eben die "fhem-Funktion" nutzen! Also: {fhem("set pushmsg msg 'Haus' 'Nicht alle Fenster oder Türen zu' 'sebastian' 0 'bike' ")} Hast du eigentlich mal bzgl. notify gelesen!? Im Wiki stehen Beispiele und auch das mit dem fhem-Aufruf etc. https://wiki.fhem.de/wiki/Notify

Zitat
Leider bekomme ich keine Pushover Naricht.
Bei so vielen Fehlern hätte mich das eher ganz schwer gewundert ;)
Also wenn doch...

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)

Sebastian84

Please highlight exactly one complete event line
Wenn ich versuche das über den Event Monitor zu machen.

Das Haus: open ist die zusammengeführt Fenster und Türen in sammel Device .

MadMax-FHEM

Ja, eine Zeile, eben die relevante, markieren und dann auf modify/create...

EDIT: das Wiki zu EventMonitor mal gelesen!?

Das mit Haus open wird so nicht gehen!

Poste doch mal ein aktuelles list von Haus...
Am besten, wenn was "offen" ist...

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)

Sebastian84

   Internals:
   ATTR       room
   CFGFN     
   CHANGEDCNT 407
   DEF        room Balkontuer Dachfenster_GaestezL Dachfenster_GaestezR Dachfenster_HeidiZ Eingangstuer Fenster_Bad_1OG Fenster_Bad_EG Fenster_Keller Fenster_Kinderzimmer Fenster_Kueche Kellertuer Grosse_Garage Kleine_Garage
   FUUID      5f627473-f33f-cdd4-47b9-e84aa5b0e9ff8b67
   NAME       Haus
   NOTIFYDEV  Kellertuer,Fenster_Bad_1OG,Fenster_Keller,Dachfenster_HeidiZ,Eingangstuer,Kleine_Garage,Balkontuer,Dachfenster_GaestezR,Fenster_Bad_EG,Grosse_Garage,Fenster_Kinderzimmer,Dachfenster_GaestezL,global,Fenster_Kueche
   NR         28421
   NTFY_ORDER 50-Haus
   STATE      open
   TYPE       structure
   READINGS:
     2020-09-18 21:01:43   LastDevice      Fenster_Kueche
     2020-09-18 21:01:43   LastDevice_Abs  Fenster_Kueche
     2020-09-18 21:01:43   state           open
Attributes:
   clientstate_behavior relative
   clientstate_priority open|on closed|off
   room       8_Zuhause

MadMax-FHEM

Dann würde if(ReadingsVal("Haus","state","closed") eq "open") wohl als Bedingung gehen...

Aber bitte: selber lesen und einarbeiten würde nicht schaden!!

EDIT: und es gibt bestimmt auch was in "setmagic"... Evtl. If([Haus:state] eq "open") aber da ich das nicht nutze ist das hier schwerst geraten... ;) ;)

EDIT: natürlich geht auch DOIF statt notify (mit Perl if )  ;) Nutze ich aber auch nicht, daher rate ich hier nicht mal... ;)

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)

laberlaib

Ok, Zeit für die Komplettlösung per DOIF
defmod di_win_Fensterwarnung DOIF (([?strc_win_Fenster] ne "closed") and ([door_Eingang] eq "open"))({act_Fensterwarnung("audio")})\
DOELSEIF \
(([?strc_win_Fenster] ne "closed") and (([rgr_Familie] eq "absent" or [rgr_Familie] eq "gone")))({act_Fensterwarnung("push")})
attr di_win_Fensterwarnung cmdpause 30:0
attr di_win_Fensterwarnung do always


str_win_Fenster: Eine structure mit allen Fenstern die open wird wenn mindestens ein Fenster open oder tilted ist, s.o.
door_Eingang: Fenstersensor an der Eingangstür. Ihc möchte natürlich nicht erst informiert werden, wenn PRESENCE feststellt, dass ich nicht im WLAN bin, sondern direkt an der Haustür.
rgr_Familie: ein RESIDENTS-Device mit mir, meiner Frau und den Kindern. Das ist die "Alarmanlage für Arme": Sind wir fort und ein Fenster ist auf, dann sollen wir gewarnt werden.
Das Fragezeichen: die Fenster-Struktur ist kein Auslöser sondern wird nur geprüft, ob es so ist. Das finde ich praktischer/einfacher/übersichtlicher als erst Auszulösen und dann per IF o.ä. zu fragen, ob ein Fenster überhaupt offen ist.

act_Fensterwarnung, ein Sub in der 99_myUtils.pm, welche ich aus den oben bereits genannten entwickelt habe:
Dort braucht man dann eine Möglichkeit, alle Fenster irgendwie zu filtern (vgl. "devspec2array("(win_.*):FILTER=STATE!=closed");")
sub act_Fensterwarnung($){
my ($output) = @_;
my @monitored=devspec2array("(win_.*):FILTER=STATE!=closed");
my $cnt_devs=@monitored;
my $sekPause = 2 + 2 * $cnt_devs;
my $i = 0;
my $gerEsp01 = int(rand(2));

my $msgtextGer = "";
my $msgtextEsp = "";
my $saytextGer = "";
my $saytextEsp = "";
foreach(@monitored) {
$msgtextGer .= AttrVal($_,"speakDEName",$_);
$msgtextEsp .= AttrVal($_,"speakESName",$_);
if ($i < $cnt_devs - 2) {
  $msgtextGer .= ", ";
  $msgtextEsp .= ", ";
}
if ($i == $cnt_devs - 2) {
  $msgtextGer .= " und ";
  $msgtextEsp .= " y ";
}
$i++;
}
#return $msgtext if ($cnt_devs > 0);
if ($cnt_devs == 1) {
$saytextGer = "Achtung, " .$msgtextGer . " ist offen. lang=de";
$saytextEsp = "Hey, " .$msgtextEsp . " esta abierta. lang=es";
}
if ($cnt_devs > 1){
$saytextGer = "Achtung, " .$msgtextGer . " sind offen. lang=de";
$saytextEsp = "Hey, " .$msgtextEsp . " estan abiertas. lang=es";
}

# Log 1, "Action Fensterwarnung mit Output " . $output . " aufgerufen.";
# Log 1, $saytextGer . " " . $saytextEsp;

if ($output eq "audio"){
# Log 1, "===== Fensterwarnung (audiozweig) mit Output " . $output . " aufgerufen.";
if ($gerEsp01 == 0){
fhem("msg audio " . $saytextGer);
}
if ($gerEsp01 == 1){
fhem("msg audio " . $saytextEsp);
}
# fhem("set snips_IO_V1 say " . $saytextGer. ";sleep " . $sekPause . ";set snips_IO_V1 say " . $saytextEsp);
}
if ($output eq "push"){
# Log 1, "===== Fensterwarnung (pushzweig) mit Output " . $output . " aufgerufen.";
fhem("msg " . $saytextGer . " Und niemand ist mehr zu Hause!");
}

return $saytextGer . " " . $saytextEsp;
}


Da meine Frau Spanierin ist wird audio zufällig auf Deutsch (Ger) ode auf Spanisch (ESP) ausgegeben. (vgl. DOIF act_Fensterwarnung(audio)).
Wenn wir aber nicht zu Hause sind, dann hört auch keiner das Audio, daher wird es gepusht per Jabber auf mein Handy.

Und die ganzen Benachrichtigungsdinge werden wir gesagt per "msg" Befehlt verarbeitet, so dass man das zentral verwalten kann.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

KyleK

Zum DOELSEIF:
Wenn eine Änderung des Status der structure nicht auslöst, dann bekommst du keine Info wenn ein Fenster geöffnet wird, obwohl niemand zuhause ist.
So wie die DEF oben steht löst cmd_2 nur aus, wenn rgr_Familie den Status auf absent oder gone ändert, und zu diesem Zeitpunkt ein Fenster offen ist.
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen