Hauptmenü

Suchmuster bei notify

Begonnen von Christian Uhlmann, 05 Juli 2016, 00:02:16

Vorheriges Thema - Nächstes Thema

Christian Uhlmann

Hallo zusammen,

hoffentlich habe ich für mein Anliegen das richtige Forum getroffen, wenn nicht gerne ein kleiner Hinweis.

Ich bin gerade auf der Suche nach einer Möglichkeit ein Notify für alle Geräte auszuführen, welche ein bestimmtes userattr (in meinem Fall "subType = motionDetector") zu triggern.
Es handelt sich dabei um Digitale Input PINs eines Arduino, welche ich über die Configurable Firmata eingebunden habe.

Angeschlossen sind Bewegungsmelder (kein Smarthome sondern vorhanden über Kabel verbundene sehr alte Geräte) welche bei Bewegung ein on erzeugen und bei keiner Bewegung ein off.
Das funktioniert auch soweit wie ich möchte.
Die Devices sollen ähnlich den Homematic Bewegungsmeldern im FHEM nutzbar sein.

List eines dieser Bewegungsmelder devices:

Internals:
   CFGFN
   DEF        12
   IODev      SYS.gw.AE.Versorgungsraum
   NAME       SYS.gw.AE.Versorgungsraum_D12
   NR         871
   PIN        12
   STATE      Initialized
   TYPE       FRM_IN
   Helper:
     Dblog:
       Motion:
         Sys.dblog.gw.ae.versorgungsraum:
           TIME       1467668991.23661
           VALUE      off
       Reading:
         Sys.dblog.gw.ae.versorgungsraum:
           TIME       1467668991.23661
           VALUE      off
       State:
         Sys.dblog.gw.ae.versorgungsraum:
           TIME       1467656916.92509
           VALUE      Initialized
   Readings:
     2016-07-04 23:49:51   motion          off
     2016-07-04 23:49:51   reading         off
     2016-07-04 23:49:51   state           Initialized
Attributes:
   IODev      SYS.gw.AE.Versorgungsraum
   alias      EGFlur - Bewegungsmelder (alt)
   group      Schalter
   icon       people_sensor
   room       EGFlur,Versorgungsraum
   showtime   1
   subType    motionDetector
   userReadings motion { ReadingsVal($name,"reading","off") }
   userattr   showtime:1,0 subType:motionDetector
   verbose    5


Ziel: der state der Geräte soll wie bei den Homematic Bewegungsmeldern in FHEM sichtbar und nutzbar sein.
über 2 notify's steuere ich dann den State, ist im Ergebnis auch das was ich haben möchte.
notify für on

Internals:
   CFGFN
   DEF        SYS.gw.AE.Versorgungsraum_D12:reading:.on setreading SYS.gw.AE.Versorgungsraum_D12 state motion
   NAME       not.TEST.state.on
   NOTIFYDEV  SYS.gw.AE.Versorgungsraum_D12
   NR         1823
   NTFY_ORDER 50-not.TEST.state.on
   REGEXP     SYS.gw.AE.Versorgungsraum_D12:reading:.on
   STATE      2016-07-04 23:55:14
   TYPE       notify
   Readings:
     2016-07-04 23:10:27   state           active
Attributes:


notify für off

Internals:
   CFGFN
   DEF        SYS.gw.AE.Versorgungsraum_D12:reading:.off setreading SYS.gw.AE.Versorgungsraum_D12 state noMotion
   NAME       not.TEST.state.off
   NOTIFYDEV  SYS.gw.AE.Versorgungsraum_D12
   NR         1825
   NTFY_ORDER 50-not.TEST.state.off
   REGEXP     SYS.gw.AE.Versorgungsraum_D12:reading:.off
   STATE      2016-07-04 23:55:19
   TYPE       notify
   Readings:
     2016-07-04 23:10:44   state           active
Attributes:


Damit sieht das Device dann so aus wie gewünscht:

Internals:
   CFGFN
   DEF        12
   IODev      SYS.gw.AE.Versorgungsraum
   NAME       SYS.gw.AE.Versorgungsraum_D12
   NR         871
   PIN        12
   STATE      noMotion
   TYPE       FRM_IN
   Helper:
     Dblog:
       Motion:
         Sys.dblog.gw.ae.versorgungsraum:
           TIME       1467669319.9524
           VALUE      off
       Reading:
         Sys.dblog.gw.ae.versorgungsraum:
           TIME       1467669319.9524
           VALUE      off
       State:
         Sys.dblog.gw.ae.versorgungsraum:
           TIME       1467656916.92509
           VALUE      Initialized
   Readings:
     2016-07-04 23:55:19   motion          off
     2016-07-04 23:55:19   reading         off
     2016-07-04 23:55:19   state           noMotion
Attributes:
   IODev      SYS.gw.AE.Versorgungsraum
   alias      EGFlur - Bewegungsmelder (alt)
   group      Schalter
   icon       people_sensor
   room       EGFlur,Versorgungsraum
   showtime   1
   subType    motionDetector
   userReadings motion { ReadingsVal($name,"reading","off") }
   userattr   showtime:1,0 subType:motionDetector
   verbose    5


da ich aber mehrere von diesen Bewegungsmeldern habe würde ich ungern für jeden einzelnd die notify's anlegen, mir schwebt da eher vor, das ganze über das userattr zu steuern.
Über ein

list TYPE=FRM_IN:FILTER=subType=motionDetector

erhalte ich genau die Geräte für die das notify triggern soll.
Leider habe ich nichts dazu gefunden, wie man das umsetzen kann.

Danke fürs lesen und hoffentlich viele Hilfreiche Tipps, ich bin auch offen das ganze anders zu lösen, vielleicht bin ich ja immomment nur zu blind für die richtig einfache Lösung.


LG Christian
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

justme1968

das einfachste ist die devices so zu benennen das du mit einer regex auf den device namen arbeiten kannst.

wenn das nicht geht (ich wüsste aber nicht warum) dann dann musst du im notify mit perl code arbeiten und den   TYPE und subType von hand abprüfen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Otto123

Kann ich Andre nur zustimmen! Namen so geben, dass man auch etwas damit anfangen kann. Und eine der simpelsten Funktionen die ein Name in FHEM leisten kann ist die Verwendung direkt im Befehl/Code.
Meine Lieblingsbeispiele  8)
set Rollo.* on
set Licht.* aus


Das geht natürlich auch im notify!

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

ftsinuglarity

Hallo,
ergänzend: Ich hatte eine ähnliche Fragestellung. Bei mir ging es um Funksignale, die per CUL gesendet werden. Da die manchmal nicht ankommen, sollten sie wiederholt werden.Dazu habe ich mir eine sub gebastelt, die mir die entsprechenden Geräte per Type zu einem Notify zusammenstellen. Also nur so als Gedanke was auch geht:

# Notify für alle IT Devices (CUL)
sub all_TYPE_IT {
    my $notify_name = "n_IT_send_repeated";

    # Liste mit allen IT's zusammenstellen
    my $list = "(";
    foreach my $dev ( keys %defs) {
        if($defs{$dev}{TYPE} eq "IT") {  $list .= $dev."|";  }
    }
    chop($list);
    $list .= ")";

    fhem("defmod ".$notify_name." notify ".$list." { mach_irgendwas } ");
}