Hauptmenü

Fensterüberwachung

Begonnen von stefan-dd, 30 Dezember 2021, 17:43:27

Vorheriges Thema - Nächstes Thema

stefan-dd

Es gibt so ein schönes Beispiel um die Fenster zu überwachen:

defmod Fenster_state DOIF ##
attr Fenster_state DOIF_Readings windows:[@as( | )"Fenster_.*":reading:"off","keine"]
attr Fenster_state stateFormat windows
attr Fenster_state uiTable {package ui_Table;;;;}icon([$SELF:windows],"fts_window_1w_open\@DarkOrange","fts_window_1w",".*","keine")|[$SELF:windows]


https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_offene_Fenster

Es hat allerdings einen Hacken. Es werden keine Events erzeugt auf die man triggern könnte, auch die Anzeige im Tablet UI funktioniert nicht. Eine Aktualisierung bekomme ich nur mit "checkall"

Kann man da was machen?


MadMax-FHEM

Ok, es fehlt schon mal mindestens ein list eines deiner Fenster-Devices... ;)

EDIT: und besser auch gleich noch ein list deines DOIF, statt irgendwelche "DEF-copy" etc.

Das hier hast du beachtet:
Zitat
Fenster-Devices enden mit "Fenster" im Namen
und deine Fenster-Devices "halten" sich auch dran? ;)

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)

stefan-dd

Internals:
   DEF        ##
   DOIFDEV    ^global$|Fenster_.*
   FUUID      61bceecf-f33f-804b-0b81-9afb13772d649951
   MODEL      FHEM
   NAME       Fenster_state
   NR         1542
   NTFY_ORDER 50-di_uiTable_windows
   STATE      keine
   TYPE       DOIF
   VERSION    25295 2021-12-04 18:13:39
   DOIF_Readings:
     windows    ::AggregateDoIf($hash,'@as( | )','Fenster_.*','reading','"off"','"keine"')
   READINGS:
     2021-12-30 18:10:00   cmd             0
     2021-12-30 18:11:35   mode            enabled
     2021-12-30 18:10:00   state           initialized
     2021-12-30 18:13:33   windows         keine
   Regex:
     DOIF_Readings:
       :
         windows:
           "Fenster_.*" Fenster_.*
     accu:
     collect:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
   do:
     0:
   helper:
     DEVFILTER  ^global$|Fenster_.*
     NOTIFYDEV  global|.*Fenster_.*.*
     event      windows: keine
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev Fenster_state
     triggerEvents:
       windows: keine
     triggerEventsState:
       windows: keine
   hmccu:
   uiState:
   uiTable:
     dev        Fenster_state
     header     
<table uitabid='DOIF-Fenster_state' class=' block wide uiTabledoif doif-Fenster_state ' style='border-top:none;'>
     package    package ui_Table;
     reading    windows
     table:
       0:
         0:
           0:
             0          package ui_Table;::DOIF_Widget($hash,$reg,'Fenster_state_uiTable_c_0_0_0_0',icon(::ReadingValDoIf($hash,'Fenster_state','windows'),"fts_window_1w_open\@DarkOrange","fts_window_1w",".*","keine"),'','Fenster_state','windows')
         1:
           0:
             0          package ui_Table;::DOIF_Widget($hash,$reg,'Fenster_state_uiTable_c_0_1_0_0',::ReadingValDoIf($hash,'Fenster_state','windows'),"")
     tc:
     td:
       0:
     tr:
Attributes:
   DOIF_Readings windows:[@as( | )"Fenster_.*":reading:"off","keine"]
   stateFormat windows
   uiTable    {package ui_Table;;}icon([$SELF:windows],"fts_window_1w_open\@DarkOrange","fts_window_1w",".*","keine")|[$SELF:windows]




Internals:
   DEF        20
   FUUID      5cdc327b-f33f-804b-5178-de7601187028a789
   IODev      MegaUG
   NAME       Fenster_WiZi1
   NR         1303
   PIN        20
   STATE      on
   TYPE       FRM_IN
   READINGS:
     2021-12-25 21:22:43   IODev           MegaUG
     2021-12-30 18:13:33   reading         on
     2021-12-25 21:22:43   state           Initialized
Attributes:
   IODev      MegaUG
   activeLow  yes
   alias      WoZi1
   devStateIcon on:10px-kreis-gruen off:10px-kreis-rot
   group      Fenster
   internal-pullup on
   room       Tür/Tor
   stateFormat reading

juergen012

hallo,
ich mache das so wie im DOIF Wiki:
defmod di_window_open DOIF (["FK:open"]) (msg Fenster wurde geöffnet. Es sind folgende Fenster geöffnet: [@:a"FK":state:"open"])\
DOELSEIF ([#"FK:closed":state:"open"] == 0) (msg alle Fenster geschlossen)
attr di_window_open DbLogExclude .*
attr di_window_open alias di_window_open
attr di_window_open checkReadingEvent 1
attr di_window_open cmdState [$SELF:Device] zuletzt geöffnet|alle geschlossen
attr di_window_open room DOIF
attr di_window_open verbose 2
Fhem unter Proxmox

MadMax-FHEM

#4
@stefan-dd: du hast ja dein DOIF nun (heimlich ;)  ) angepasst...
...geht es nun?

Also nat. schon mal Fenster auf/zu gemacht wegen Events...

Ansonsten muss wohl jemand ran, der (mehr) Ahnung von DOIF hat...

EDIT: dazu wäre es ratsam den Thread ins passende Unterforum zu verschieben. Kannst du selber machen! Welches Unterforum: siehe help doif...

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)

stefan-dd

Nein, ich habe vom Beispiel aufs tatsächliche geändert, ändert aber nichts am Problem. Es reagiert auf die Fenster, man hat aber kein Reading, auf was man triggern kann.
Ist aus meiner Sicht nur ein grafischer  Beispielcode, der nur zur Anzeige dient, mit dem man nichts weiter anfangen kann, außer anschauen. Da keine Readings erstellt werden.

MadMax-FHEM

#6
Was willst du erreichen?

Ja klar das Beispiel ZEIGT dir eine Übersicht über offene Fenster...

EDIT: steht ja auch ganz groß drüber
Zitat von: wiki
Visualisierung: offene Fenster

Alle offenen Fenster werden aufgelistet und mit entsprechendem Icon visualisiert.

Wenn du wissen willst, ob ein Fenster auf-/zugemacht wurde: Eventmonitor, auf Event warten, Zeile markieren und notify/DOIF anlegen lassen...

Oder halt "auswendig" ein DOIF anlegen, was dann entsprechende Aktionen auslöst oder tut was immer dir "vorschwebt"...
EDIT: erläutere doch was du (eigentlich) willst...

ABER: das DOIF reagiert erst mal nur auf Events! Die Events, dass etwas passiert ist (z.B. Fenster auf/zu) kommen doch von deinen Fenster-Devices...

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)

juergen012

ich sehe in Telegram:
Fenster wurde geöffnet. Es sind folgende Fenster geöffnet: Schlafzimmer

oder: alle Fenster geschlossen

es wir sehr wohl ein Reading erstellt
Fhem unter Proxmox

Sany

Hallo stefan-dd

Zitatattr Fenster_state DOIF_Readings windows:[@as( | )"Fenster_.*":reading:"off","keine"]

Dies erzeugt dir die Liste mit den offenen Fenstern. Es ist als DOIF_readings definiert, damit wird nur das DOIF intern getriggert.
Wenn Du es als event_Readings anlegst wird auch ein Event erzeugt, der außerhalb vom DOIF in fhem weiterverarbeitet werden kann.
Schau mal in der cref nach DOIF_Readings und event_Readings.


Viel Erfolg!


Sany
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

stefan-dd

Danke, eigentlich ganz einfach.

attr Fenster_state event_Readings windows:[@as( | )"Fenster_.*":reading:"off","keine"]