[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

Sebastian84

Guten Tag

Ich möchte Infomiert werden wenn ich aus den wlan raus bin von Zuhause, dass noch eine Tür oder Fenster auf ist.
Das sind die Listen von Erkennung und ein Fenster
  Internals:
   ADDRESS    192.168.0.107
   DEF        lan-ping 192.168.0.107 15
   FUUID      5ecab806-f33f-b383-7dc6-8d81b875ebaea5e5
   INTERVAL_NORMAL 15
   INTERVAL_PRESENT 15
   MODE       lan-ping
   NAME       handy_sebastian
   NOTIFYDEV  global
   NR         96
   NTFY_ORDER 50-handy_sebastian
   STATE      Zuhause
   TYPE       PRESENCE
   READINGS:
     2020-09-12 21:15:20   model           lan-ping
     2020-09-14 12:12:30   presence        present
     2020-09-14 12:12:30   state           present
   helper:
     CURRENT_STATE present
     RUNNING_PID:
       abortFn    PRESENCE_ProcessAbortedScan
       arg        handy_sebastian|192.168.0.107|0|4
       bc_pid     30113
       finishFn   PRESENCE_ProcessLocalScan
       fn         PRESENCE_DoLocalPingScan
       pid        29644
       telnet     telnetForBlockingFn_1599876025_127.0.0.1_46424
       timeout    60
       abortArg:
Attributes:
   eventMap   absent:Abwesend present:Zuhause
   group      Anwesenheit
   room       8_Zuhause
   userattr   presence presence_map structexclude   



   Internals:
   DEF        sensor 3  IODev=deconz
   FUUID      5f11ad98-f33f-50a5-8f18-e88de1899765ba0d
   FVERSION   31_HUEDevice.pm:0.218370/2020-05-02
   ID         S3
   INTERVAL   
   IODev      deconz
   NAME       Fenster_Bad_EG
   NR         109
   STATE      open
   TYPE       HUEDevice
   lastupdated 2020-09-14 09:56:20
   lastupdated_local 2020-09-14 11:56:20
   manufacturername LUMI
   modelid    lumi.sensor_magnet.aq2
   name       Fensterkontakt Bad EG
   on         1
   reachable  1
   swversion  20161128
   type       ZHAOpenClose
   uniqueid   00:15:8d:00:04:9f:db:3b-01-0006
   READINGS:
     2020-09-14 11:56:20   battery         100
     2020-09-14 11:56:20   batteryPercent  100
     2020-09-14 11:56:20   reachable       1
     2020-09-14 11:56:20   state           open
     2020-09-14 11:56:20   temperature     29
   helper:
     devtype    S
     reachable  0
     update_timeout 1
     configList:
     json:
       ep         1
       etag       9dfa7831569440e289ef21296e7e0e27
       lastseen   2020-09-14T09:56:20.964
       manufacturername LUMI
       modelid    lumi.sensor_magnet.aq2
       name       Fensterkontakt Bad EG
       swversion  20161128
       type       ZHAOpenClose
       uniqueid   00:15:8d:00:04:9f:db:3b-01-0006
       config:
         battery    100
         temperature 2900
       state:
         lastupdated 2020-09-14T09:56:20.463
     setList:
Attributes:
   IODev      deconz
   devStateIcon open:fts_window_1w_open@#e56524 closed:fts_window_1w
   event-on-change-reading .*
   group      Tür_Fensterkontakte
   model      lumi.sensor_magnet.aq2
   room       2_EG->Bad   


Und hier mein Notify:  Fenster_Bad_EG:open.* set pushmsg msg 'Fenster Bad EG' 'Fenster offen''sebastian' 0 'bike'   

Danke schonmal

Beta-User

Dein notify sieht so aus, als würde das "open" ständig getriggert (=entsprechender Event wird geworfen). Das wäre aber nur der Fall, wenn jemand das Fenster öffnet, alles andere wird unterbunden (eocr .*)...

Von daher würde ich die Logik umdrehen, und die Regex auf das Ausbuchen aus dem Netzwerk hören lassen. Dann mußt du allerdings im Ausführungsteil eine Abfrage machen, ob denn das/die Fenster noch offen sind. Einfache Beispiele (mit at, aber das ist in der Hinsicht egal) findest du z.B. in https://wiki.fhem.de/wiki/If-condition.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

MadMax-FHEM

Da kann ich Beta-User nur zustimmen...
...und dir im übrigen auch ;)

Zitat
Ich möchte Infomiert werden wenn ich aus den wlan raus bin von Zuhause, dass noch eine Tür oder Fenster auf ist.

Du schreibst ja selbst, dass wenn du "weg bist" du wissen willst, wenn/ob noch ein Fenster offen ist...
...und nicht wie dein notify: ob jemand das Fenster aufmacht wenn/während du weg bist ;)

Du kannst dann entweder über alle Fenster "loopen" (Stichwort: devSpec / gute Namenswahl hilft) oder ein "Sammel-Device" für gesammelte Fensterzustände anlegen und das abfragen.

Geht mit structure oder DOIF oder oder...

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)

Peteruser

Hallo,
das Problem steckt wie immer in der Logik. Wie soll das System erkennen, ob man nur den Müll rausträgt oder zum Einkaufen? Bei mir ist das dann eine Ampel an der Tür geworden. Grün, alle Fenster sind zu und Rot das Gegenteil.

Wenn ich das anders wissen will, dann kann ich den Status der Fenster per Telegram abfragen.

Grüße Peter
Ubuntu+Debian FHEM + ESPEasy + Homematic + ConBee + DUROFERN

CoolTux

Eventuell kann dieser Code aus meiner myUtils behilflich sein


sub statusFensterOffen {

    my $contactSensorDevice     = shift;
    $contactSensorDevice        = 'FensterKontakt.*_(Dachfenster|F[1-4])' if( not defined($contactSensorDevice) );
   
    my @monitored=devspec2array("($contactSensorDevice):FILTER=STATE!=closed");
my $i = 0;
my $msgtext = "";
foreach(@monitored) {
    $msgtext .= AttrVal($_,"alias",$_);
       
        if( $i < scalar(@monitored) - 2) {
    $msgtext .= ", ";
        } elsif( $i == scalar(@monitored) - 2) {
    $msgtext .= " und ";
    }

    $i++;
    }

return $msgtext if (scalar(@monitored) > 0);
}


Man kann damit alle Fenster abfragen welche näher durch $contactSensorDevice definiert sind oder der Funktion einen Devicenamen übergeben um dessen Status zu erfahren.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

laberlaib

Ich triggere bei uns auf die das Öffnen der Haustür (=beim TE eben das verlassen des WLANs)
Dann habe ich eine Structure mit allen Fenstern, welche bei einem offenen Fenster als "open" gilt (= if-condition)
Und dann wird eine CoolTuxs-ähnliche Sub durchlaufen um Sprachausgabe und Jabber-Msg zu erstellen und per "msg"-Befehl loszuschicken.
Aber alles aus Gewohnheit mit DOIF.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

Damian

Wenn eine konsequente Namensgebung bei den Fenstern existiert, dann lässt sich so etwas auch ohne Structure erledigen:

define di_Fenster DOIF ([tuer] eq "auf" and [?#"^Window:state:"open"] > 0) (push "Folgende Fenster: [@"^Window:state:"open"] sind noch geöffnet")
attr di_Fenster do always


Bedeutet, wenn Tuer geöffnet wird (oder sonst ein Ereignis, das man abfragen kann) und Anzahl der geöffneten Fenster (Devices beginnend mit "Window") größer 0, dann per push-Nachricht die geöffneten Fenster senden.

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

juergen012

Hallo,
folgenden Code sende ich, wenn die Alarmanlage eingeschaltet wird:

([du_FensterOffen] eq "on" and [#"FK:open"])(set ECHO_xxxxxxxxxxxxxx speak folgende Fenster sind geöffnet: [di_Fenster_offen]) (set du_FensterOffen off)
DOELSEIF ([#"FK:closed"]) (set [$SELF] initialize)
Fhem unter Proxmox

Sebastian84

Guten Abend.

Ich möchte mit der Eingangstuer offen oder mit Wlan aus das alle Tür und Fensterkontakte die auf sind per push pushover aufs handy landen

Habe das Problemm das ich unterschiedliche Namen habe

in den einen Türen gibt es open für offen und in andern gibt es on für Status

Hier mal die Namen
Balkontuer
Dachfenster_GaestezL.
Dachfenster_GaestezR.
Eingangstuer
Fenster_Bad_1OG
Fenster_Bad_EG
Fenster_Keller
Fenster_Kinderzimmer
Fenster_Keller
Fenster_Kueche
Grosse_Garage
Kellertuer
Kleine_Garage
die möchte ich irgendwie zusammenfügen zur überprüfung wenn ich draußen bin ob was davon noch offen ist.
Kann mir da jemand ein Beispiel geben????
Sammel-Device? wie geht das?
oder devSpec?

laberlaib

Gude,

Du kannst alle in eine STRUCTURE packen und dann die states bei den Mitgliedern mappen, Stichwort:
<struct_type>_map

Und dann per "clientstate_priority" in der Structure selbst einstellen, dass ein "open" reicht um die structure auf open zu stellen.

https://fhem.de/commandref_DE.html#structure

Hab ich so, klappt gut.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

Sebastian84

zusammengefügt habe ich jetzt alle

  Internals:
   ATTR       room
   CFGFN     
   CHANGEDCNT 0
   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      ???
   TYPE       structure
Attributes:   



jetzt muss ich doch ein Nenner mit on und open hinbekommen???

und dann?

Müßte ich jetzt nicht nur ein Notify schreiben der bei State: on oder open wenn wlan aus oder Eingangstür auf eine push Naricht schickt

Thyraz

Genau, mit dem map Attribut wie von laberlaib beschrieben.
Beispiel ist in dem Link den er gepostet hat.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Sebastian84

steh ein bischen auf den Schlauch

unter Atrr. steht nur event map

Kann mir da einer ein genaueres Beispiel geben zu meinen Räumen

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

Hab das jetzt in jeden Fensterkontskt und Türkontskt eingegeben

Internals:
   ATTR       room
   CFGFN     
   CHANGEDCNT 14
   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      undefined
   TYPE       structure
   READINGS:
     2020-09-17 06:08:20   LastDevice      Fenster_Kinderzimmer
     2020-09-17 06:08:20   LastDevice_Abs  Fenster_Kinderzimmer
     2020-09-17 06:08:20   state           undefined
Attributes:
   clientstate_priority on 


Was muss ich jetzt noch machen?



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

laberlaib

Zitat von: KyleK am 20 September 2020, 13:38:02
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.
Stimmt, ich muss da das Fragezeichen an die Familie bappen! Oder gar kein Fragezeichen - falls man die Audioansage überhört, will man ja wenigstens später gewarnt werden.
Danke, gleich erledigt.
(Ist ein bisschen wie der Bundeswarntag - wird nie genutzt, drum merkt man nicht, dass was nicht stimmt und zack - keine einzige Sirene heult.)
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

Sebastian84

Eingangstuer:on.* {if(ReadingsVal("handy_sebastian","state","present") eq "absent" && ReadingsVal("handy_patricia","state","present") eq "absent" && ReadingsVal("handy_oma","state","present") eq "absent" ){fhem("set pushmsg msg 'Alarmanlage' 'Eingangstür unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")}}

Der erste Notify klappt an der Balkontür super. Da habe ich auch immer wlan.
habe das Problemm das an der Eingangstür  die presens zu spät kommt so dass, ich ein Alarm bekomme wenn ich ins Haus gehe. kann man da noch ne Zeit einbauen, damit die Presens angezeigt wird.

Ein anderer Ansatz den ich versucht habe
  define Grosse_Garage_Alarmanlage notify Grosse_Garage:off.* {if(ReadingsVal("handy_sebastian","state","n.a.") eq "absent" && ReadingsVal("handy_oma","state","n.a.") eq "absent" && ReadingsVal("Eingangstuer","state","off") eq "on") {fhem("set pushmsg msg 'Alarmanlage' 'Eingangstür unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")}}


MadMax-FHEM

Ja, du kannst nat. verzögern.

Ich nehme ein at und prüfe einfach nach x Zeit (erneut) bzgl. Anwesenheit...

ABER: jetzt bist du ja wieder bei "Tür auf und wenn nicht anwesend eine Meldung"

Ich dachte du willst/wolltest: wenn ich gehe/gegangen bin, dann soll gemeldet werden, wenn noch was offen...


DAS SIND 2 KOMPLETT UNTERSCHIEDLICHE DINGE!

Wie wäre es sich (mal) zu entscheiden!

Hast du die gemachten Beispiele und Hinweise mal "durchgearbeitet"!?

(wobei die meisten davon nat. in Richtung: "Meldung bei Verlassen" waren)

EDIT: Verwendung von code-Tags (das '#' im "Menü") wäre auch schön... So wie das 2te notify ;)

EDIT: das 2te notify reagiert doch auf geschlossen!? Oder funktionieren die 2 Türen unterschiedlich bzgl. offen/zu - on/off!?

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

Habe jetzt mal über event Monitor crate

   Internals:
   CFGFN     
   DEF        handy_sebastian:presence:.Abwesend && handy_oma:presence:.Abwesend && handy_patricia:presence:.Abwesend
   FUUID      5f6af34f-f33f-cdd4-ac73-9a6e81bae3853155
   NAME       handy_sebastian_notify_1
   NOTIFYDEV  handy_sebastian
   NR         169592
   NTFY_ORDER 50-handy_sebastian_notify_1
   REGEXP     handy_sebastian:presence:.Abwesend
   STATE      2020-09-23 09:57:01
   TRIGGERTIME 1600847821.64074
   TYPE       notify
   READINGS:
     2020-09-23 09:51:15   state           active
Attributes: 


Jetzt würde ich gerne noch

    if(ReadingsVal("Haus","state","closed") eq "open")     

Da stehen alle Fenster und Türen drin .
Die würde ich da gerne noch reingekommen.
Es soll ein notify sein der nur auslöst wenn sebastian,  Oma und Patricia nicht da sind und dann über Haus eine Tür oder Fenster auf gemacht wird auslösen.
Am besten müsste noch eine Zeit drin stehen die nach Ablauf die Presence nochmal abfragt da es mal vorkommt das das wlan erst um Haus erkannt wird und dann fehlalarme gibt.

MadMax-FHEM

Das mag ja teils mit EventMonitor erstellt sein...

ABER: du kannst in den Regex-Teil des notify KEIN && irgendwas prüfen!! Da ist NICHT Perl!! Da ist Regex!!!

Ich würde empfehlen mal Wiki/commandref bzgl. notify zu LESEN!

Du kannst sowas machen:


define nTest notify handy_.*:presence:.Abwesend { }


EDIT: allerdings reagiert dieses notif auf "jedes" Handy (bzw. jedes Device was mit handy_ beginnt und ein Event Names presence mit dem Inhalt Abwesend "feuert")... Wenn du nur willst, dass etwas passiert, wenn alle Handys "weg" sind, dann eben ZUERST prüfen, ob dem so ist. Also ob quasi das jetzt "meldende" Handy das letze noch anwesende war... Und dann halt tun was dann passieren soll (oder weitere Dinge prüfen)... Es gibt für das was du willst glaub ich auch was "von" DOIF (aggregats-irgendwas glaube ich). Nutze aber kein DOIF, daher nur soviel dazu...

In den geschweiften Klammern ist dann Perl!

Da kannst du z.B. mit if etc. Bedingungen prüfen...
Und mittels:


fhem("set irgendwas auf was")


auch fhem-Befehle nutzen...

So, wenn wieder "Blödsinn" kommt wo man (ich für mich) denke/merke: nix gelesen (wollen) bzw. nix "verstehen" (wollen)...

Dann bin ich hier (leider) raus...

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)

Beta-User

Von meiner Seite auch nochmal ein letzter Versuch zum Mitmeißeln: notify besteht immer aus zwei Teilen:

- einer devspec mit dem auslösenden Event (die potentiellen Auslöser hast du hier nicht mit der richtigen Syntax verbunden, _falls_ das gemeint war...), im Wiki nennt sich das "Suchmuster" und kann z.B. mit www.regex101.com geprüft werden, und

- einer Reaktion, einem <command>. _Falls_ das Auslöser sein sollten, die du da versucht hast logisch zu kombinieren, fehlt der <command>, falls der hintere Teil als command zu verstehen sein sollte, paßt die Syntax nicht...

Bevor du dir nicht klar bist, was 
- Auslösebedingungen (Events),
- abzufragende Zustandsbedingungen (ReadingsVal()&Co, das gehört bei notify in den command-Teil) und was
- abzusetzender Befehl sein soll (ggf. einschließlich darin enthaltener Verzögerung),
wird es mit keiner Lösung was, weder mit notify, noch mit irgendwas anderem.



Generell solltest du überlegen, Zustände mehrerere Devices ggf. irgendwie zu konsolidieren. Für die Handy's (PRESENCE?) ginge das z.B. mit structure, aber an sich ist dir das auch wurst, denn eigentlich geht es um den Bewohnerstatus, und dafür würde ich empfehlen, das mit RESIDENTS abzubilden.

Setzt aber voraus, dass du dir erst mal über die Bedeutung von EVENTS in FHEM (v.a. im Unterschied zu Readings) im Klaren bist, da scheinen mir noch deutliche Verständnislücken zu bestehen.

Just my2ct.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Sebastian84

Sorry
Hab mich versucht einzulesen
Hab da was hinbekommen
  handy_.* presence:.Abwesend {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" && ReadingsVal("Haus","state","closed") eq "open") {fhem("set pushmsg msg 'Alarmanlage' 'Tür oder Fenster unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")} }

Leider kommen zwischendurch Fehlalarme
Wenn das Wlan mit fhem zu spät auf present geht.
Wenn ich ca. 5 Sekunden an der Eingangstuer warte und dann erst aufmache gibts keine Fehlalarme mehr. Weil er dann auf present steht. Kann man da was mit einer Zeit oder was anderes machen?

Beta-User

 :) Das sieht jedenfalls deutlich besser aus als die letzten Versuche.

Zu der Zeitfrage ist es wie immer: für sowas gibt es viele Möglichkeiten.

Vorab mal, was ich _nicht_ empfehlen würde: zu versuchen, an der polling-Zeit für die Anwesenheitserkennung was zu ändern...

Meine Empfehlung wäre, das ggf. mit einem watchdog zu lösen, der "kann" die Zeitkomponente und ist der "Prototyp" dieser Art Funktionalität.

Also 1. Trigger wie hier, der 2. trigger (auf den erfolglos zu warten wäre) wäre dann das "present-Event, und erst, wenn das z.B. 10 Sekunden ausbleibt (oder wie lange auch immer man warten muss, um Fehlalarme auszuschließen), wird dann der Befehl abgesendet und am Ende dann der watchdog wieder aktiviert (die "komische" Sache mit dem "Punkt" in der Commandref zu watchdog...).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

MadMax-FHEM

Der Fehlalarm hat aber nichts mit dem zu letzt geposteten notify zu tun, das triggert ja auf "Handy geht weg"...

Und ich hatte zuvor (selbe Frage) schon mal geantwortet ;) : statt gleich die Nachricht schicken ein at und im at dann noch mal prüfen.

(oder im notify gleich nur ein at und nur im at prüfen)

Aber wie geschrieben: muss eigentlich ein anderes notify sein, dass den geschilderten Fehlalarm hervorruft...

EDIT: mit meiner WLAN-Anwesenheitserkennung habe ich auch so ein at (spätere [erneute] Prüfung) gebraucht. Und: ich habe im Sommer bei geöffnetem Fenster auch ab und an Fehlalarme, wenn das Handy in "sleep" ging (alles Versucht, inkl. "hping3-Methode" [gibt einen Thread dazu]). Bin letztlich auf BT-Dongels umgestiegen: (kein at mehr und) keine Fehlalarme im Sommer ;)

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

  handy_.*:presence:.Abwesend at 00:00:05 {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" && ReadingsVal("Haus","state","closed") eq "open") {fhem("set pushmsg msg 'Alarmanlage' 'Tür oder Fenster unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")} }   
Ich glaube das ich ein Fehler mit at mache.
Es soll wenn ich ins Haus gehe eine Verzögerung geben. Das wenn dann das wlan die Presence erkennt nicht auslöst.
Aber dann auch anders rum das wenn ein unbefugten rein geht und die Tür direckt schließt dass dann nach 5 Sekunden der alarm losgeht da die Presence Abwesend ist.


Beta-User

Der Fehler liegt weniger in at, sondern in dem Ausführungsteil von deinem notify. "at" ist mWn. kein gültiger FHEM-Befehl...

(Hier würde ich mal "defmod" als FHEM-Befehl ins Rennen werfen und auch nochmal einen Blick auf die Syntax von at empfehlen, die Zeit kommt mir seltsam vor...).

Und schau dir das mit watchdog nochmal an. Ist am Anfang eher schwer zu verstehen, aber du solltest diese Art Programmierlogik verstehen lernen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

MadMax-FHEM

Jep, wenn du bei at bleibst, dann defmod, weil at ist kein Befehl sondern ein Device-Type.

EDIT: ergänzt zu Device-Type... ;)

Genau wie notify, DOIF, dummy, ...

Und bei der Zeit muss ein + davor für: "relativ ab jetzt"...

Ich hatte auch mal 5Sek hat aber nicht immer gereicht...

Und mal prüfen, ob die Handys stabil anwesend bleiben, gerade über Nacht.
Z.B. mit einem FileLog...

Weil wie geschrieben: ich hatte bei offenem Fenster im Sommer schon mal den einen oder anderen Fehlalarm...

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)

Beta-User

Zitat von: MadMax-FHEM am 24 September 2020, 15:14:29
weil at ist kein Befehl sondern ein Device.
?

Wenn du's schon erklärst, wäre etwas "genauer" mMn. an dieser Stelle angebracht. "at" ist erst mal eine Modulbezeichnung, oder meinetwegen ein TYPE, aber für sich genommen jedenfalls _noch_ kein Device ;) .

(Ansonsten wäre es hier mMn. angebracht, den TE erst mal noch etwas über der Doku sitzen zu lassen, dann fällt vielleicht eher der Groschen und/oder wir bekommen wieder eine qualifizierte Rückfrage - hoffentlich auch zu der Andeutung mit structure bzw. RESIDENTS...?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

MadMax-FHEM

Zitat von: Beta-User am 24 September 2020, 15:25:50
(Ansonsten wäre es hier mMn. angebracht, den TE erst mal noch etwas über der Doku sitzen zu lassen, dann fällt vielleicht eher der Groschen und/oder wir bekommen wieder eine qualifizierte Rückfrage - hoffentlich auch zu der Andeutung mit structure bzw. RESIDENTS...?)

Drum hab ich bislang ja noch nicht mit fertigen Dingen aufgewartet (wie so manch anderer "Kollege" hier...), sondern immer (versucht zu) erklärt und Stichworte genannt (bzw. versucht zu korrigieren, wenn es "übelst" missverstanden wurde)...

...mal sehen wie der TE sich zurückmeldet...

Vielleicht fallen die Groschen ja... ;)

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

   define Uberwachung watchdog Handys_anwesend:absent 00:15 Handys_anwesend:present and if(ReadingsVal("Haus","state","closed") eq "open {fhem("set pushmsg msg 'Alarmanlage' 'Tür oder Fenster unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")}
   
Würde doch heißen wenn 15 Minuten abwesend und haus open sende die Naricht.
Und wenn in 15 Minuten von abwesend zu present gewechselt wird das es keine narichten gibt.
Und dann noch autoreset:1 das der Befehl in ausgangszustand gebracht wird.
Weiß aber nicht ob ich einfach and und if einbinden kann.

MadMax-FHEM

Zitat von: Sebastian84 am 26 September 2020, 10:07:21
Weiß aber nicht ob ich einfach and und if einbinden kann.

Das hatten wir doch schon mal: https://forum.fhem.de/index.php/topic,114240.msg1087044.html#msg1087044

Lesen ist nicht so deins!?

Dort wo RegEx in der "Anleitung" (commandref etc.) drauf steht ist auch nur RegEx drin ;) Bedingungen kommen dann in den Ausführungsteil. Entwerder IF dann auf fhem-Ebene oder if dann eben in Perl.

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

         define Uberwachung watchdog Handys_anwesend:absent 00:15 Handys_anwesend:present {fhem("set if(ReadingsVal("Haus","state","closed") eq "open  ;; fhem "set pushmsg msg 'Alarmanlage' 'Tür oder Fenster unbefugt    offen' 'sebastian' 2 'siren' 30 3600 ")}
     


Das währe doch dann über fhem im Ausführungsteil?

Beta-User

Jein. Über Perl im Ausführungsteil. Nur das "eigentlich" über die Kommandozeile gültige Kommando sollte in die fhem("...")-Klammer, das Perl-if gehört hier davor (für Spezialisten: Ja, oder dahinter, aber das ist eine Perl-Besonderheit...).

Ansonsten ist "autoreset:1" mAn. was anderes als ";;trigger w.".
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Sebastian84

  define Uberwachung watchdog Handys_anwesend:absent 00:15 Handys_anwesend:present {fhem "set if(ReadingsVal("Haus","state","closed") eq "open  ;; fhem "set pushmsg msg 'Alarmanlage' 'Tür oder Fenster unbefugt    offen' 'sebastian' 2 'siren' 30 3600 ")}

MadMax-FHEM

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

define Uberwachung watchdog Handys_anwesend:absent 00:15 Handys_anwesend:present {if("Haus","state","open") {fhem "set pushmsg msg 'Alarmanlage' 'Tür oder Fenster unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")}}

MadMax-FHEM

Zähl doch mal die runden Klammern...

Entweder: fhem("Befehl") oder fhem "Befehl" aber nicht fhem "Befehl")

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

   define Uberwachung watchdog Handys_anwesend:absent 00:15 Handys_anwesend:present {if("Haus","state","open") fhem ("set pushmsg msg 'Alarmanlage' 'Tür oder Fenster unbefugt offen' 'sebastian' 2 'siren' 30 3600 "))}

MadMax-FHEM

Wer hat geschrieben, dass die geschweiften Klammern weg sollen!?

Hier steht doch wie: https://forum.fhem.de/index.php/topic,114240.msg1087974.html#msg1087974

Und warum ist immer noch eine runde Klammer zuviel!?

Letzte Anmerkung, dann fühle ich mich echt (langsam) veräppelt...

EDIT: und warum denkst du, dass ("Haus","state","open") "plötzlich" eine Bedingung wäre!? Genaugenommen ist es nichts! Außer Parameter für den Aufruf von ReadingsVal... Und dann fehlt eben noch die Bedingung... Hattest es doch schon mal: if(ReadingsVal("Haus","state","closed") eq "open") | Habe langsam wirklich den Eindruck du schreibst was dir in den Sinn kommt, ohne auch nur einmal drüber nachzudenken, etwas bei Perl nachzulesen etc. und denkst wir würden hier für dich immer Syntax und Logik etc. prüfen... Wie geschrieben, fühle mich (langsam) veräppelt...

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

Sorry

hab mir jetzt noch mal alle Beiträge durchgelesen.

  define Uberwachung watchdog Hausbewohner:absent 00:01 Hausbewohner:present {if(ReadingsVal("Haus","state","closed") eq "open {fhem ("set pushmsg msg 'Alarmanlage' 'Tür oder Fenster unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")}}


Ich hoffe ich hab es jetzt verstanden

MadMax-FHEM

Mit Klammern zählen ist nicht so deins!?

{if(Bedingung){fhem("set device on")}}

Also:


  define Uberwachung watchdog Hausbewohner:absent 00:01 Hausbewohner:present {if(ReadingsVal("Haus","state","closed") eq "open") {fhem ("set pushmsg msg 'Alarmanlage' 'Tür oder Fenster unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")}}


Wobei ich jetzt nicht bzgl. watchdog geprüft habe...

Und: warum änderst du immer von "Version" zu "Version" die "Parameter" bzgl. watchdog?

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

Habe die structure alle handy zusammengefügt (Hausbewohner) und ich glaube das 1 Minute reichen müßte.
Damit müßte ich ja eigentlich die fehlalarme beim betreten der z.b. Eingangstuer da das wlan zu spät erkennt das jemand zuhause ist vermeiden? Da ja 1 Minute gewartet wird  und nur eine Nachricht rausgeht wenn keiner von Hausbewohner da ist nach der Minute.

MadMax-FHEM

Allerdings denke ich deine Logik bzgl. watchdog ist Quatsch...

Weil der watchdog (so ich das verstehe) doch auf "weg" reagiert und 1 min wartet ob wieder "da", wenn nicht, dann schaue ob was auf und wenn ja, dann schicke eine Nachricht...

Was du aber willst: Tür auf (du kommst nach hause) und eine Minute später prüfen, ob du (oder alle) da bist oder nicht!?

Zumindest laut deinem letzten Post...

Aber probier es aus...

Ich würde (und habe ich auch geschrieben) bei Tür auf prüfen (optional), ein at anlegen und eben später (erneut) prüfen, ob jemand zuhause ist usw...

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

Und damit wären wir wieder bei der Eingangsfrage: was willst du!?

Überlege es DIR, schreib es DIR auf und baue dann die Logik danach...

EDIT: weil weggehen und eine Nachricht bekommen, wenn noch was offen ist UND heimkommen (Tür auf) und prüfen, ob jemand da ist (also ein "Berechtigter" und kein "Fremder") SIND 2 KOMPLETT UNTERSCHIEDLICHE DINGE...

Viel Erfolg, 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

     at +00:00:10 handy_.*:presence:.Abwesend {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" && ReadingsVal("Haus","state","closed") eq "open") {fhem("at 0 set pushmsg msg 'Alarmanlage' 'Tür oder Fenster unbefugt offen' 'sebastian' 2 'siren' 30 3600 ")} }     


Ja damit hast du recht. Leider verstehe ich nicht wo das at eingefügt werden muss.

MadMax-FHEM

Naja, wenn du mal für DICH aufschreibst WAS du willst und WAS Auslöser sind und WAS dann u.U. (später) geprüft werden soll, dann ist es doch ganz einfach...

Und deutlich schneller als immer hier irgendwas zu posten mit der Frage: und so? Oder: und jetzt? usw.

Jaja: warum poste ich nicht einfach eine Lösung!?

Weil es auf lange Sicht nichts bringt.
Es einige gepostete Lösungen gab, die (gefühlt) nicht beachtet wurden...

Wenn ich richtig verstehe willst du:

Wenn die (oder irgendeine) Tür aufgeht -> Auslöser: notify/DOIF/...

Prüfen, ob jemand zuhause ist: Bedingung

ABER: du willst das nicht sofort bzw. später (noch mal): at

Also muss das at dann ins notify für Tür auf.

Du kannst auch gleich prüfen (vielleicht hast du "Glück" und du bist auch für fhem schon "da" ;) ) und dann DORT (im notify) das at anlegen (defmod) und im at dann (nochmal) prüfen, eben zeitverzögert...

Und wie (fast) immer: es ist nicht die einzige Lösung ;)

Und: alles was du hier frägst, ob das so geht, kann man (ja auch du) einfach ausprobieren. Warten oder eben auslösen und schauen was passiert. Evtl. auch das Log nach Fehlern kontrollieren etc.

EDIT: und wenn ich mir deinen at-Vorschlag anschaue: hast du überhaupt mal geschaut WIE ein at definiert wird!? Kann ich mir nicht vorstellen! Weil so ein RegEx-Teil hat dort nix zu suchen...

EDIT: du hast alle Teile beeinander, jetzt wie geschrieben mal nachdenken und auch lesen wie was definiert wird und dann zusammenbauen. Kleine Bauanleitung: define nUeberwachung notify Tür-Auf defmod at mit Prüfung und Nachricht, falls niemand da
Optional auch gleich prüfen: define nUeberwachung notify Tür-Auf {if(niemand da){fhem("defmod at mit Prüfung und Nachricht, falls immer noch niemand da")}}

Viel Erfolg, 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,

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?

MadMax-FHEM

Soll das "spezifizierter" Pseudocode sein!!?

Weil: "und alle" ist KEIN Perl!

Und: ReadingsAge liefert eine Zahl zurück (Sekunden seit letzter Änderung: ReadingsAge -> "Alter des Readings"). Da macht ein Vergleich mit "absent" doch überhaupt keinen Sinn!

Hast du denn den Link von amenomade "verfolgt"!?
Gelesen!?

Und: "else at +3" äh, was soll das tun...

Und keine Ahnung, ob das schon alles war was "nicht passt"...

Das muss doch tausend Fehler im Log erzeugen...

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

Zitat von: Sebastian84 am 19 Oktober 2020, 06:51:51

Meintest du so?

Ja, mit ein bischen Kopf dazu. Die Syntax für at +3 hattest Du schon im vorherigen notify. "Alle" steht natürlich für (ReadingsVal(blabla...) und ReadingsVal(blublbu....) und ReadingsVal(blibli...), das hattest Du auch schon im vorherigen notify. Und ReadingsVal schreibt man nicht readingsVal. Und was Joachim schon geschrieben hat.

Also bitte... Lies mal was Du geschrieben hast! Wie sollte es funktionieren?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

MadMax-FHEM

Was ich ja auch schon mal geschrieben hatte (https://forum.fhem.de/index.php/topic,114240.msg1088070.html#msg1088070):

warum nicht sofort prüfen, wenn alles (noch) passt -> keine Nachricht (also kein Fehlalarm, sofern ein Handy NOCH eingeloggt ist während du aber schon die Garage öffnest)

und wenn es nicht passt, dann eben 3min (oder so) später noch mal prüfen -> keine Nachricht, falls du doch nachhause gekommen bist und das Handy inzwischen eingeloggt ist

Wenn bei sofortiger Prüfung UND später KEIN Handy eingeloggt -> Nachricht


define nUeberwachung notify Kleine_Garage:on {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("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 \")")}}}}


Wobei ich so lange if/else irgendwas-Konstrukte ja in eine Sub in myUtils auslagern würde...

EDIT: also so

notify

define nUeberwachung notify Kleine_Garage:on {myGaragenUeberwachung()}


Sub

sub myGaragenUeberwachung()
{
  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("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 \")")}}
  }
}


EDIT: bei beiden Varianten ist wichtig (sind ja prinzipeill das gleiche nur anders "verteilt" ;) ), dass statt doppelter Anführungszeichen einfache "müssen" und doppelte, wenn doch notwendig (was ich nicht weiß, da ich nicht weiß was der pushmsg-Aufruf "schluckt", drum hab ich das mal unverändert gelassen, in der Hoffnung, dass der so stimmt und funktioniert) dann müssen diese "escaped" werden: \" statt nur "

EDIT: aber hattest du nicht schon eine structure für deine Handys!? https://forum.fhem.de/index.php/topic,114240.msg1088025.html#msg1088025 Dann wäre die Abfrage-Orgie DEUTLICH kürzer... Aber musst du wissen... Übersichtlich ist anders... Hoffe daher, dass ich mich bzgl. copy/paste etc. nicht "vertan/verzählt" hab bzgl. Klammern und Anführungszeichen... Aber du schaust bestimmt noch mal drüber... Und auch ins Log, ob es Fehler gibt und so weiter...

EDIT: allerdings MUSS es jetzt so sein, dass dein bzw. das letzte Handy noch so lange eingelogged (also present) ist, bis du das kleine_Garage öffnest. Ist dein Handy (bzw. das letzte) da schon ausgelogged, also "absent", dann gibt es 3min später (trotzdem) einen Alarm! Ist dein Hnady (oder das letzte) mal nicht lange genug eingelogged, so bekommst du (nat.) wieder einen "Fehlalarm"... Daher bin ich nicht sicher, ob deine Logik wirklich passt...

EDIT: wenn du das übernehmen solltest und es tatsächlich auch noch (zufriedenstellend) funktionieren sollte, dann hast du zwar nichts gelernt und nachträglich notwendige Anpassungen landen wieder hier (weil eben nichts gelernt) aber das ist mir dann (jetzt) auch egal ;)

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

Guten Abend
Danke der super Hilfe.
Hab jetzt nochmal Überlegt, das du  zu 100% recht hast mit:
    warum nicht sofort prüfen, wenn alles (noch) passt -> keine Nachricht (also kein Fehlalarm, sofern ein Handy NOCH eingeloggt ist während du aber schon die Garage öffnest)

und wenn es nicht passt, dann eben 3min (oder so) später noch mal prüfen -> keine Nachricht, falls du doch nachhause gekommen bist und das Handy inzwischen eingeloggt ist 

Genau wie du sagst macht das nur Sinn!!
Leider bekomme ich bei deinen Notify keine Fhem Ausgabe per pushmsg auch wenn keiner da ist.

MadMax-FHEM

Hast du 1:1 kopiert!?

Poste doch mal ein list von dem notify und ein list von den Handys, wenn es nicht funktioniert aber hätte müssen...

EDIT: nächstes mal dann, wenn wieder was nicht geht. Du darfst ruhig mehr Infos liefern als nur: geht nicht... Weil sonst ist helfen unmöglich...

EDIT: gibt es Fehler im Log?

EDIT: hätte es MÜSSEN! Sorry: hatte ein paar Klammern vergessen. Drum mache ich solche "Konstrukte" lieber in Subs. Und auch der Hinweis der schon gegeben wurde (und wie vermerkt ich auch dachte du hättest es umgesetzt) die Handys in eine structure zu packen macht es deutlich übersichtlicher... (oder zumindest ReadingsVal-/ReadingsNum-Abfragen VORHER in Variablen zu packen. UND: es spricht nichts dagegen auch Klammern zu zählen, sich geposteten Code anzusehen usw.

EDIT: habe es korrigiert...

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

Ich bekomme jetzt noch den Fehler:

Unmatched right curly bracket at (eval 1889668) line 1, at end of line
syntax error at (eval 1889668) line 1, near "}}"
Unmatched right curly bracket at (eval 1889668) line 1, at end of line

Beim bestätigen

MadMax-FHEM

Hast du nun neu kopiert!?

Dann zähl doch bitte mal die Klammern...

Oder pack die Handys in eine structure (dachte das hättest du)...

Oder nimm die Sub-Variante, da ist es übersichtlicher...

Vielleicht hab ich noch mal Lust...

Du musst (schon aus Eigeninteresse) lernen selbst Dinge umzusetzen oder zumindest zu verstehen/nachzuvollziehen...

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

   define nUeberwachung notify Kleine_Garage:on {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("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 nochmal Klammer hinzugefügt hinter at+00:03:00)
und 2 }} hinten entfehrnt. Jetzt nimmt er zwar den Notify an. Aber müsste am Ende nicht eigendlich 4}}}} stehen? aber dann Kommt immer eine Fehlermeldung

MadMax-FHEM

Klar kommt bei dir keine Meldung, weil das hier ein "leeres" at definiert:

fhem("defmod atTmp_Kleine-Garage_on at +00:03:00 )

aber auch das nicht korrekt, weil die schließenden Anführungszeichen fehlen...

Ich hab jetzt dann doch noch mal drüber geschaut.
Probier mal:


define nUeberwachung notify Kleine_Garage:on {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("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 \")}}")}}


Aber wie geschrieben: mache sowas übersichtlicher! Indem du wie (MEHRFACH!) vorgeschlagen z.B. Anwesenheit über eine structure erzeugst! Oder mindestens die ganzen ReadingsVal-Dinger in eine Variable packen oder oder oder...

Weil so ist Klammern zählen echt übel!!

Und du verstehst es (ja jetzt noch nicht und) in einiger Zeit nicht mehr!

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

Danke.
Es läuft echt super.
Die Funktion ist jetzt genau richtig.
Keine Fehlermeldung mehr da die Zweite Prüfung noch kommt nach 3 Minuten.
:)

MadMax-FHEM

Gratulation...
Hoffentlich was gelernt...
Und hoffentlich verstanden, sonst wird "Wartung" (oder "Erweiterung" oder "Anpassung") schwierig...

Viel Spaß noch, 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)