Fenstersymbol mit Anzahl offener Fenster als Kreis

Begonnen von zap, 31 Januar 2016, 15:10:17

Vorheriges Thema - Nächstes Thema

zap

Ich würde gerne ein Fenstersymbol darstellen, das die Anzahl der offenen Fenster als Kreis in der rechten oberen Ecke darstellt. Wie lässt sich das in FTUI umsetzen? Ich habe schon in einigen Screenshots gesehen, dass das möglich ist.

Die Anzahl der offenen Fenster sowie den Gesamtstatus habe ich in einem Dummy Device in 2 Readings stehen:

STATE = "open" oder "closed", je nachdem, ob mindestens 1 Fenster offen ist
COUNT_OPEN = Anzahl der offenen Fenster

2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

roman1528

#1
Zitat von: zap am 31 Januar 2016, 15:10:17
Ich würde gerne ein Fenstersymbol darstellen, das die Anzahl der offenen Fenster als Kreis in der rechten oberen Ecke darstellt. Wie lässt sich das in FTUI umsetzen? Ich habe schon in einigen Screenshots gesehen, dass das möglich ist.

Die Anzahl der offenen Fenster sowie den Gesamtstatus habe ich in einem Dummy Device in 2 Readings stehen:

STATE = "open" oder "closed", je nachdem, ob mindestens 1 Fenster offen ist
COUNT_OPEN = Anzahl der offenen Fenster

Moin.

Es würde reichen wenn dein Dummy die Anzahl der offenen Fenster erfasst. Weil bei "0" keine Fenster offen sind.
Also: STATE 5
oder: STATE 0


<div data-type="symbol"
        data-device="DUMMY"
        data-states='["0","^[01]$","^[1-9][0-9]|[2-9]$"]'
        data-icons='["ftui-window","ftui-window warn","ftui-window warn"]'
        data-colors='["#505050","#aa6900","#aa6900"]'
        data-icon="ftui-window" <!-- Das füge ich immer mit ein falls es zu Problemen kommt.-->
</div>


Viel Spaß beim testen :)

Grüße^^

EDIT

Oder du lässt dein Dummy so und liest nur "COUNT_OPEN" aus:


<div data-type="symbol"
        data-device="DUMMY"
        data-get="COUNT_OPEN"
        data-states='["0","^[01]$","^[1-9][0-9]|[2-9]$"]'
        data-icons='["ftui-window","ftui-window warn","ftui-window warn"]'
        data-colors='["#505050","#aa6900","#aa6900"]'
        data-icon="ftui-window" <!-- Das füge ich immer mit ein falls es zu Problemen kommt.-->
</div>
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

chris1284

wie errechnet ihr für den dummy die anzahl offener fenster?

CoolTux

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

choenig

Hi zap,

ich mach das wie folgt:

Einen Dummy zum nachhalten des Status:

defmod dummy_OffeneFenster dummy
attr dummy_OffeneFenster stateFormat openWindowsCount


Ein DOIF zum Ausführen der der Funktion aus 99_MyUtils.pm:

defmod doif__winOpen.StartStop DOIF ([".*:(open|tilted|closed)$"]) ({winOpenStartStop("$DEVICE", "$EVENT")})
attr doif__winOpen.StartStop do always


Eine Function in 99_MyUtils.pm:

sub winOpenStartStop($$) {
    #Als Parameter muss der device-Name übergeben werden
    my ($dev,$event)=@_;
   
    #Der dummy der verwendet wird, um die offenen Fenster/Tueren nachzuhalten
    my $dummy = 'dummy_OffeneFenster';
   
    #Erst mal prüfen, ob das übergebene device überhaupt existiert
    if ($dev =~ /[Ff]enster|Tuer/ && $defs{$dev})
    {
        my $model=AttrVal($dev,'model','');
        if ($model eq 'HM-SEC-SCo' || $model eq 'HM-SEC-RHS')
        {
            #hole die liste der Fenster, die gerade offen sind
            my $openWindows = ReadingsVal($dummy, 'openWindows', '');
            my @parts;
            @parts = split(/,/, $openWindows) if ($openWindows ne '-');

            # wenn das aktuelle Fenster noch nicht in der liste ist -> hinzufuegen
            if ($event eq 'open' || $event eq 'tilted') {
                # add element to array if not already there
                push(@parts, $dev) unless grep{$_ eq $dev} @parts;
            }
            elsif ($event eq 'closed') {
                # remove element from array
                @parts = grep {$_ ne $dev} @parts;
            }
           
            # aktualisiere die Readings des dummies
            my $openWindowsCount = scalar(@parts);
            if ($openWindowsCount > 0) { $openWindows = join(',', @parts); }
            else                       { $openWindows = '-';               }
            fhem("setreading $dummy openWindows $openWindows");
            fhem("setreading $dummy openWindowsCount $openWindowsCount");
        }
    }
}


Und mein FTUI sieht wie folgt aus:

   <div data-type="label" class="cell" >Fenster/Türen geöffnet<>
   <div data-type="symbol" data-device="dummy_OffeneFenster" data-get="openWindowsCount"
       data-get-on='["0", "^[1-9].*"]'
       data-icons='["fa-exclamation-triangle", "fa-exclamation-triangle"]'
       data-colors='["#444444","#ff0000"]'
       class="cell grande top-narrow-2x" ><>
   <div data-type="symbol" data-device="dummy_OffeneFenster" data-get="openWindowsCount"
       data-get-on='["0", "^[1-9].*"]'
       data-icons='["fa-exclamation-triangle", "fa-exclamation-triangle warn"]'
       data-colors='["transparent","transparent"]'
       class="cell bigger top-narrow-2x" style="margin-top:-188px !important;margin-left:33px !important;"><>

(Achtung: Die closing tags werden durch das Board »zerstört«)

Der FTUI Code besteht aus zwei Teilen, da ich ein möglichst großes Ausrufezeichen haben wollte, aber der warn-Indikator sollte nicht so groß sein. Das geht bestimmt auch einfacher :-).

Ich bestehe nicht darauf, dass der Code optimal ist, aber er funktioniert gut :-)

LG
Christian

Thyraz

#5
Noch eine alternative Lösung:

Bei mir haben alle Fenster ein UserReading "windowState" welches open, closed, tilted sein kann.
Zusätzlich sind alle Fenster in der Gruppe "Fenster".

Die Anzahl der offenen Fenster bekomme ich dadurch ohne weitere Fallunterscheidungen für Sensormodelle etc. über diese 99_myUtils Funktion:


sub numberOfOpenWindows() {
my $openWindows = 0;

foreach my $windowName (devspec2array("group=Fenster")) {
if (ReadingsVal($windowName, "windowState", "closed") ne "closed") {
$openWindows++;
}
}
return $openWindows;
}


Für die FTUI Anzeige würde dann ein allgemeines Notify auf open|tilted|closed reichen, welches das DummyReading mit dem Rückgabewert der Funktion belegt.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

chris1284

Zitat von: CoolTux am 09 Dezember 2016, 08:26:10
Mit einer myUtils Funktion.

hatte ich mir gedacht und die 2 zeilen code in ein notfy gepackt

jnewton957

Zitat von: Thyraz am 10 Dezember 2016, 08:52:51
Noch eine alternative Lösung:

Bei mir haben alle Fenster ein UserReading "windowState" welches open, closed, tilted sein kann.
Zusätzlich sind alle Fenster in der Gruppe "Fenster".

Die Anzahl der offenen Fenster bekomme ich dadurch ohne weitere Fallunterscheidungen für Sensormodelle etc. über diese 99_myUtils Funktion:


sub numberOfOpenWindows() {
my $openWindows = 0;

foreach my $windowName (devspec2array("group=Fenster")) {
if (ReadingsVal($windowName, "windowState", "closed") ne "closed") {
$openWindows++;
}
}
return $openWindows;
}


Für die FTUI Anzeige würde dann ein allgemeines Notify auf open|tilted|closed reichen, welches das DummyReading mit dem Rückgabewert der Funktion belegt.

hallo,

kannst du das bitte mal komplett mit Anteil in der fhem.cfg , myUtils und dann ftui beschreiben.

Danke Danke

Jörg
FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

macfly

Zitat von: choenig am 09 Dezember 2016, 22:57:40
Hi zap,

ich mach das wie folgt:

Einen Dummy zum nachhalten des Status:

defmod dummy_OffeneFenster dummy
attr dummy_OffeneFenster stateFormat openWindowsCount


Ein DOIF zum Ausführen der der Funktion aus 99_MyUtils.pm:

defmod doif__winOpen.StartStop DOIF ([".*:(open|tilted|closed)$"]) ({winOpenStartStop("$DEVICE", "$EVENT")})
attr doif__winOpen.StartStop do always


Eine Function in 99_MyUtils.pm:

sub winOpenStartStop($$) {
    #Als Parameter muss der device-Name übergeben werden
    my ($dev,$event)=@_;
   
    #Der dummy der verwendet wird, um die offenen Fenster/Tueren nachzuhalten
    my $dummy = 'dummy_OffeneFenster';
   
    #Erst mal prüfen, ob das übergebene device überhaupt existiert
    if ($dev =~ /[Ff]enster|Tuer/ && $defs{$dev})
    {
        my $model=AttrVal($dev,'model','');
        if ($model eq 'HM-SEC-SCo' || $model eq 'HM-SEC-RHS')
        {
            #hole die liste der Fenster, die gerade offen sind
            my $openWindows = ReadingsVal($dummy, 'openWindows', '');
            my @parts;
            @parts = split(/,/, $openWindows) if ($openWindows ne '-');

            # wenn das aktuelle Fenster noch nicht in der liste ist -> hinzufuegen
            if ($event eq 'open' || $event eq 'tilted') {
                # add element to array if not already there
                push(@parts, $dev) unless grep{$_ eq $dev} @parts;
            }
            elsif ($event eq 'closed') {
                # remove element from array
                @parts = grep {$_ ne $dev} @parts;
            }
           
            # aktualisiere die Readings des dummies
            my $openWindowsCount = scalar(@parts);
            if ($openWindowsCount > 0) { $openWindows = join(',', @parts); }
            else                       { $openWindows = '-';               }
            fhem("setreading $dummy openWindows $openWindows");
            fhem("setreading $dummy openWindowsCount $openWindowsCount");
        }
    }
}


Und mein FTUI sieht wie folgt aus:

   <div data-type="label" class="cell" >Fenster/Türen geöffnet<>
   <div data-type="symbol" data-device="dummy_OffeneFenster" data-get="openWindowsCount"
       data-get-on='["0", "^[1-9].*"]'
       data-icons='["fa-exclamation-triangle", "fa-exclamation-triangle"]'
       data-colors='["#444444","#ff0000"]'
       class="cell grande top-narrow-2x" ><>
   <div data-type="symbol" data-device="dummy_OffeneFenster" data-get="openWindowsCount"
       data-get-on='["0", "^[1-9].*"]'
       data-icons='["fa-exclamation-triangle", "fa-exclamation-triangle warn"]'
       data-colors='["transparent","transparent"]'
       class="cell bigger top-narrow-2x" style="margin-top:-188px !important;margin-left:33px !important;"><>

(Achtung: Die closing tags werden durch das Board »zerstört«)

Der FTUI Code besteht aus zwei Teilen, da ich ein möglichst großes Ausrufezeichen haben wollte, aber der warn-Indikator sollte nicht so groß sein. Das geht bestimmt auch einfacher :-).

Ich bestehe nicht darauf, dass der Code optimal ist, aber er funktioniert gut :-)

LG
Christian

Hi,

auf die Gefahr hin, wie ein völliger Noob zu wirken:

woher kommt die Zahl aus deinem Icon bei offenem Fenster? Ich habe das mal nachgespielt und kann die icon-farbänderung nachvollziehen aus data-type="symbol"  und data-get-on. Ich sehe auch die Platzierung der runden roten zahl mit margin-top und margin-left. Aber woher genau bekommt ftui den Wert  aus dem dummy_OffeneFenster?  Kannst du mir mal nachhilfe in html und div-platzierung geben?

danke,
Friedhelm

choenig

Hi Friedhelm,

Zitat von: macfly am 03 Februar 2018, 21:58:24
woher kommt die Zahl aus deinem Icon bei offenem Fenster?
[...]
Aber woher genau bekommt ftui den Wert  aus dem dummy_OffeneFenster?

ich versteh' die Frage(n) nicht ganz. Durch das »warn« im data-icons verwendet er den Wert des dummys als anzuzeigende Zahl.

Zitat von: macfly am 03 Februar 2018, 21:58:24
Kannst du mir mal nachhilfe in html und div-platzierung geben?

Was hast Du denn für ein Problem in »html und div-platzierung«?

LG
Christian

macfly

alles klar, dein Hinweis hat mich zu https://wiki.fhem.de/wiki/FTUI_Widget_Symbol geschickt. Hatte ich garnicht so auf den Schirm, dass das "warn" solche Auswirkungen hat. Ein Beispiel auf der wiki-seite wäre cool gewesen.

Vielen Dank für deine Antwort!

schöne Grüße,
Friedhelm

PingPong

Zitat von: Thyraz am 10 Dezember 2016, 08:52:51
Noch eine alternative Lösung:

Bei mir haben alle Fenster ein UserReading "windowState" welches open, closed, tilted sein kann.
Zusätzlich sind alle Fenster in der Gruppe "Fenster".

Die Anzahl der offenen Fenster bekomme ich dadurch ohne weitere Fallunterscheidungen für Sensormodelle etc. über diese 99_myUtils Funktion:


sub numberOfOpenWindows() {
my $openWindows = 0;

foreach my $windowName (devspec2array("group=Fenster")) {
if (ReadingsVal($windowName, "windowState", "closed") ne "closed") {
$openWindows++;
}
}
return $openWindows;
}


Für die FTUI Anzeige würde dann ein allgemeines Notify auf open|tilted|closed reichen, welches das DummyReading mit dem Rückgabewert der Funktion belegt.

Hallo zusammen, habe das Userreading "windowState" gesetzt und auch die Funktion in die 99_MyUtils.pm aufgenommen.
Leider stehe ich nun aber bei der Einrichtung des Dummy bzw. Notify völlig auf dem Schlauch.
Kann mir da bitte mal jemand unter die Arme greifen? :-(

CoolTux

#12

sub numberOfOpenWindows() {

      return devspec2array("group=Fenster:FILTER=STATE!=closed")
}

Sollte Dir die Anzahl der nicht geschlossenen Fenster zurück geben.
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

PingPong

Hallo CoolTux,

vielen Dank erstmal für Dein Feedback.
Wenn ich Dich richtig verstehe, liefert die Funktion nun also die Anzahl der offenen Fenster zurück.
Jetzt würde ich das Ergebnis aber gerne noch in ein Dummy Device schreiben, um dieses anschließend in TabletUI anzuzeigen.

Hast Du noch nen Tipp für mich, wie ich das mache?

Vielen Dank im Voraus.
Marc

CoolTux

Du machst ein Notify welches auf alle Fenster triggert und startest das im Notify die Funktion. Am besten gleich mit dem set Befehl für den Dummy
Von Vorteil ist wenn man eine vernünftige Namensgebung gewählt hat.

define notifyAnzahlFenster notify FensterKontact.*:(open|tilted|closed) { CommandSet(undef,'dummyname ' . numberOfOpenWindows()) }


Notify triggert auf alle Devices die vom Namen her anfangen mit FensterKontakt und den Event open,tilted oder closed haben und führt einen set dummyname Anzahl_der_offenen_Fenster aus
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

PingPong

Oh je... da bin ich wohl ein hoffnungsloser Fall :-(

Meine Fensterdevices haben alle eine einheitliche Benennung und beginnen mit "Fensterkontakte...".
Da ich diverse unterschiedliche Fenstersensoren verwende, die alle eine andere Schreibweise im Status haben, muss ich vermutlich noch das Event "(open|tilted|closed)" anpassen, aber das im zweiten Schritt.
Konkret bekomme ich es leider noch immer nicht hin :-(

Also ich hab jetzt folgendes eingestellt:

Dummy Device
Internals:
   CFGFN
   NAME         offeneFenster
   NR             498
   STATE        ???
   TYPE          dummy
Attributes:


notify
Internals:
    DEF                         Fensterkontakt.*:(open|tilted|closed) { CommandSet(undef, ' offeneFenster ' . numberOfOpenWindows()) }
    NAME                      notifyAnzahlFenster
    NR                          305
    NTFY_ORDER          50-notifyAnzahlFenster
    REGEXP                   Fensterkontakt.*:(open|tilted|closed)
    STATE                     active
    TYPE                       notify
    READINGS:             2018-03-27 12:50:47 state active
Attributes:


hier noch ein List von einem Beispiel-Fenstersensor
Internals:
    CHANGED
    DEF        158d0001daefe8 sensor_magnet.aq2 XiaomiGateway
    IODev XiaomiGateway
    LASTInputDev XiaomiGateway
    MODEL sensor_magnet.aq2
    MSGCNT 2
    NAME XMI_158d0001daefe8
    NR 139
    SID     158d0001daefe8
    STATE Status: close<br>Batterie: ok<br>last Change: (2018-02-22 21:42:06)
    TYPE XiaomiSmartHome_Device
    VERSION 1.20
    XiaomiGateway_MSGCNT 2
    XiaomiGateway_TIME 2018-03-27 12:56:13
READINGS: 2018-03-27 12:56:13
     battery ok 2018-03-27 12:56:13
     battery_level 3 2018-03-27 12:56:13
     heartbeat 158d0001daefe8 2018-03-27 12:56:13
     no_close 0 2018-02-22 21:42:06
     state close 2018-03-27 12:56:13
     windowState closed
Attributes: IODev XiaomiGateway
     alarmDevice Sensor alarmSettings alarm4,|XMI_158d0001daefe8:open|Fenstersensor_SchlafzimmerKeller|on
     alias Fensterkontakt_SchlafzimmerKeller
     devStateIcon open:fts_door_open@red close:fts_door@green
     event-on-change-reading .*
     group Fenstersensoren
     icon fts_window_1w
     room 02_Untergeschoss->01_Schlafzimmer,10_Sonstiges->07_Fenstersensoren,20_DeviceGroups->03_Xiaomi
     stateFormat { sprintf( "Status: %s<br>Batterie: %s<br>last Change: (%s)", ReadingsVal("XMI_158d0001daefe8", "state","?"), ReadingsVal("XMI_158d0001daefe8", "battery","?"), ReadingsTimestamp("XMI_158d0001daefe8", "state", "0000-00-00 00:00:00") ) } timestamp-on-change-reading state userReadings windowState {if(ReadingsVal("XMI_158d0001daefe8","state","?") eq "close") {return "closed"} elsif (ReadingsVal("XMI_158d0001daefe8","state","?") eq "tilted") {return "tilted"} elsif (ReadingsVal("XMI_158d0001daefe8","state","?") eq "open") {return "open"} else {return "unknown"}}


Dazu dann noch den Code in der Utils:
sub numberOfOpenWindows() {

      return devspec2array("group=Fensterkontakt:FILTER=STATE!=closed")
}


Magst Du mich nochmal ein Stück an die Hand nehmen?

CoolTux

Das Problem ist das die Namen Deiner Devices nicht Fensterkontakt sind sondern die Aliase.

NAME XMI_158d0001daefe8
alias Fensterkontakt_SchlafzimmerKeller


Ich empfehle alle mit rename vernünftig um zu benennen. Dann schauen wir weiter.
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

PingPong

Hi nochmal,

also erst nochmal ganz lieben Dank für Deine Geduld und Mühe.
Ich habe die Fenstersensoren jetzt umbenannt.

Beispiel
Internals:
    CHANGED
    DEF                             158d0001daefe8 sensor_magnet.aq2 XiaomiGateway
    IODev                          XiaomiGateway
    LASTInputDev             XiaomiGateway
    MODEL                        sensor_magnet.aq2
    MSGCNT                      6
    NAME                          Fensterkontakt_SchlafzimmerKeller
    NR                              139
    SID                            158d0001daefe8
    STATE                        Status: close<br>Batterie: ok<br>last Change: (2018-02-22 21:42:06)
    TYPE                          XiaomiSmartHome_Device
    VERSION                   1.20
    XiaomiGateway_MSGCNT 6
    XiaomiGateway_TIME 2018-03-27 12:56:13
READINGS: 2018-03-27 12:56:13
     battery ok 2018-03-27 12:56:13
     battery_level 3 2018-03-27 12:56:13
     heartbeat 158d0001daefe8 2018-03-27 12:56:13
     no_close 0 2018-02-22 21:42:06
     state close 2018-03-27 12:56:13
     windowState closed
Attributes: IODev XiaomiGateway
     devStateIcon open:fts_door_open@red close:fts_door@green
     event-on-change-reading .*
     group Fenstersensoren
     icon fts_window_1w
     room 02_Untergeschoss->01_Schlafzimmer,10_Sonstiges->07_Fenstersensoren,20_DeviceGroups->03_Xiaomi
     stateFormat { sprintf( "Status: %s<br>Batterie: %s<br>last Change: (%s)", ReadingsVal("Fensterkontakt_SchlafzimmerKeller", "state","?"), ReadingsVal("Fensterkontakt_SchlafzimmerKeller", "battery","?"), ReadingsTimestamp("Fensterkontakt_SchlafzimmerKeller", "state", "0000-00-00 00:00:00") ) } timestamp-on-change-reading state userReadings windowState {if(ReadingsVal("Fensterkontakt_SchlafzimmerKeller","state","?") eq "close") {return "closed"} elsif (ReadingsVal("Fensterkontakt_SchlafzimmerKeller","state","?") eq "tilted") {return "tilted"} elsif (ReadingsVal("Fensterkontakt_SchlafzimmerKeller","state","?") eq "open") {return "open"} else {return "unknown"}}


Zudem hatte ich noch einen falschen Code für die 99_myUtils gepostet. Hier jetzt wirklich vorhandene:
sub numberOfOpenWindows() {

      return devspec2array("group=Fenstersensoren:FILTER=STATE!=closed")
}

CoolTux

Sieht schon mal gut aus. Jetzt zeigt Dein state aber close nicht closed. Das bitte im Notify Regex und bei der myUtils beim Filter ändern.
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

PingPong

ok... da hätte ich jetzt auch selbst drauf kommen können...   ::)

Ist angepasst... aber leider weiterhin ohne Erfolg. Der Wert landet nicht im Dummy.

Zudem stellt sich jetzt natürlich auch wieder die Frage von vorhin:
ZitatDa ich diverse unterschiedliche Fenstersensoren verwende, die alle eine andere Schreibweise im Status haben, muss ich vermutlich noch das Event "(open|tilted|closed)" anpassen, aber das im zweiten Schritt.
Ich müsste also auf verschiedene Schreibweisen - sowohl im Notify als auch in der myUtils reagieren (Bsp. close/closed/Close).

CoolTux

Das kommt noch. Lass uns erstmal eine generelle Funktion herstellen.
triggert denn das Notify? Gib mal bitte ein list vom Notify
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

PingPong

Ok, danke und gerne :-)
Internals:
   DEF        Fensterkontakt.*:(open|tilted|close) { CommandSet(undef, ' offeneFenster ' . numberOfOpenWindows()) }
   NAME       notifyAnzahlFenster
   NR         304
   NTFY_ORDER 50-notifyAnzahlFenster
   REGEXP     Fensterkontakt.*:(open|tilted|close)
   STATE      active
   TYPE       notify
   READINGS:
     2018-03-27 17:21:08   state           active
Attributes:

CoolTux

triggert nicht.

Mach mal bitte den Eventmonitor auf. Im FHEMWEB ganz unten ganz links

Bei Filter vor dem .* eingeben

Fensterkontakt

so das dann da steht

Fensterkontakt.*

und dann das Fenster mal auf machen und die Ausgabe des Eventmonitors hier posten
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

PingPong

2018-03-27 19:16:56 XiaomiSmartHome_Device Fensterkontakt_SchlafzimmerKeller open
2018-03-27 19:16:56 XiaomiSmartHome_Device Fensterkontakt_SchlafzimmerKeller windowState: open
2018-03-27 19:16:59 XiaomiSmartHome_Device Fensterkontakt_SchlafzimmerKeller close
2018-03-27 19:16:59 XiaomiSmartHome_Device Fensterkontakt_SchlafzimmerKeller windowState: closed


gerne

CoolTux


Fensterkontakt.*(open|tilted|close) {  }


Ändere die DEF des Notify bitte so. Ausgeführt wird dann noch nichts aber wir sehen ob er triggert.
Im Internal STATE vom Notify muss dann der Timestamp vom Trigger drin stehen.
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

PingPong

jawohl, STATE wird dann mit dem Timestamp befüllt.

CoolTux

Sehr schön. Nun zwischen { }

CommandSet(undef, ' offeneFenster ' . numberOfOpenWindows())

Fügen.

Und die Funktion erstmal so und die myUtils mit reload neu laden


sub numberOfOpenWindows() {
      return devspec2array("group=Fenstersensoren:FILTER=STATE!=close")
}
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

PingPong


CoolTux

Welcher STATE. Von Deinem Fensterzähler Dummy?

Wenn der nicht dann bitte ins Log von FHEM schauen.
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

PingPong

Nee, nur der des notify - so wie vorher auch.

Der Dummy scheint unbeeindruckt :-(

Hab das Loglevel mal hochgesetzt:
2018.03.27 20:17:15 5: XiaomiGateway: Read> Read start
2018.03.27 20:17:15 5: XiaomiGateway: Read> {"cmd":"report","model":"sensor_magnet.aq2","sid":"158d0001daefe8","short_id":52743,"data":"{\"status\":\"close\"}"}
2018.03.27 20:17:15 5: XiaomiGateway: Read> Dispatch {"cmd":"report","model":"sensor_magnet.aq2","sid":"158d0001daefe8","short_id":52743,"data":"{\"status\":\"close\"}"}
2018.03.27 20:17:15 5: XiaomiGateway: dispatch {"cmd":"report","model":"sensor_magnet.aq2","sid":"158d0001daefe8","short_id":52743,"data":"{\\"status\\":\\"close\\"}"}
2018.03.27 20:17:15 4: XiaomiGateway: DEV_Parse> IS DEFINED sensor_magnet.aq2 : 158d0001daefe8
2018.03.27 20:17:15 5: XiaomiGateway: DEV_Read> SID: 158d0001daefe8 XiaomiSmartHome_Device
2018.03.27 20:17:15 3: XiaomiGateway: DEV_Read> Name: Fensterkontakt_SchlafzimmerKeller SID: 158d0001daefe8 Type: sensor_magnet.aq2 Status: close
2018.03.27 20:17:15 5: Starting notify loop for Fensterkontakt_SchlafzimmerKeller, 2 event(s), first is close
2018.03.27 20:17:15 5: Triggering notifyAnzahlFenster
2018.03.27 20:17:15 4: notifyAnzahlFenster exec { CommandSet(undef, ' offeneFenster ' . numberOfOpenWindows()) }

2018.03.27 20:17:15 5: Cmd: >{ CommandSet(undef, ' offeneFenster ' . numberOfOpenWindows()) }
<
2018.03.27 20:17:15 3: notifyAnzahlFenster return value: Please define  first
2018.03.27 20:17:15 5: End notify loop for Fensterkontakt_SchlafzimmerKeller


Sagt Dir das irgendwas?
Vor allem das hier ist vermutlich ein Hinweis:
2018.03.27 20:17:15 3: notifyAnzahlFenster return value: Please define  first

CoolTux

Da ist ein Leerzeichen rein gerutscht

CommandSet(undef, ' offeneFenster ' . numberOfOpenWindows())

Ändern zu

CommandSet(undef, 'offeneFenster ' . numberOfOpenWindows())
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

PingPong

2018.03.27 20:30:38 5: XiaomiGateway: Read> Read start
2018.03.27 20:30:38 5: XiaomiGateway: Read> {"cmd":"report","model":"sensor_magnet.aq2","sid":"158d0001daefe8","short_id":52743,"data":"{\"status\":\"close\"}"}
2018.03.27 20:30:38 5: XiaomiGateway: Read> Dispatch {"cmd":"report","model":"sensor_magnet.aq2","sid":"158d0001daefe8","short_id":52743,"data":"{\"status\":\"close\"}"}
2018.03.27 20:30:38 5: XiaomiGateway: dispatch {"cmd":"report","model":"sensor_magnet.aq2","sid":"158d0001daefe8","short_id":52743,"data":"{\\"status\\":\\"close\\"}"}
2018.03.27 20:30:38 4: XiaomiGateway: DEV_Parse> IS DEFINED sensor_magnet.aq2 : 158d0001daefe8
2018.03.27 20:30:38 5: XiaomiGateway: DEV_Read> SID: 158d0001daefe8 XiaomiSmartHome_Device
2018.03.27 20:30:38 3: XiaomiGateway: DEV_Read> Name: Fensterkontakt_SchlafzimmerKeller SID: 158d0001daefe8 Type: sensor_magnet.aq2 Status: close
2018.03.27 20:30:38 5: Starting notify loop for Fensterkontakt_SchlafzimmerKeller, 2 event(s), first is close
2018.03.27 20:30:38 5: Batteriestatus: not on any display, ignoring notify
2018.03.27 20:30:38 5: Triggering notifyAnzahlFenster
2018.03.27 20:30:38 4: notifyAnzahlFenster exec { CommandSet(undef, 'offeneFenster' . numberOfOpenWindows()) }

2018.03.27 20:30:38 5: Cmd: >{ CommandSet(undef, 'offeneFenster' . numberOfOpenWindows()) }
<
2018.03.27 20:30:38 3: notifyAnzahlFenster return value: Please define offeneFenster12 first
2018.03.27 20:30:38 5: End notify loop for Fensterkontakt_SchlafzimmerKeller

CoolTux

Nur das vordere Leerzeichen. Das hintere lassen

CommandSet(undef, 'offeneFenster ' . numberOfOpenWindows())
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

CoolTux

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

PingPong

grmpf.... Da hab ich es nur gut gemeint und wollte den nächsten Fehler direkt mit beheben :-(

So... Teilerfolg...juhhuuu :-) Die 12 stehen jetzt auch im Dummy !!!

Aber... Das kann nicht sein. Liegt aber vermutlich eher an der abweichenden Statusmeldung - wir fragen doch "nur" auf !=close ab, oder?
Damit ist dann "closed" ebenfalls geöffnet :-)

btw: Weißt du auswendig, wie man das Logfile leert? :-)

PingPong

wenn ich das richtig versteh, werden doch jetzt auch "nur" alle devices berücksichtigt, die mit "Fensterkontakt" beginnen und in der Gruppe "Fenstersensoren" enthalten sind, oder?

Da hätte ich nämlich insgesamt nur 11 :-)

CoolTux

Leeren kannst du es über die die Linuxkonsole

> logfilename

Nicht ganz. Triggern tun nur die mit Namen Fensterkontakt. Die Zahl aber kommt aus dem tatsächlichen group=Fenstersensor und die Filter.
jetzt müssen wir das Filter erweitern.

return devspec2array("group=Fenstersensoren:FILTER=STATE!=close:FILTER=STATE!=closed")
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

PingPong

ok... jetzt sind es nur noch 10 offene Fenster - aktuell immer noch 10 zu viel :-)

Kann ich das direkt folgendermaßen um "Close" erweitern?
devspec2array("group=Fenstersensoren:FILTER=STATE!=close:FILTER=STATE!=Close:FILTER=STATE!=closed")


mumpitzstuff

Schreib doch den Einzeiler gleich ins notify mit rein...

defmod nty_OffeneFenster notify FENSTER_.*:(open|tilted|closed?) { CommandSet(undef, 'dmy_OffeneFenster '.devspec2array('NAME=FENSTER_.*:FILTER=STATE!=closed?')) }

Und close oder closed sollte mit closed? gehen.

CoolTux

Zitat von: PingPong am 27 März 2018, 21:01:26
ok... jetzt sind es nur noch 10 offene Fenster - aktuell immer noch 10 zu viel :-)

Kann ich das direkt folgendermaßen um "Close" erweitern?
devspec2array("group=Fenstersensoren:FILTER=STATE!=close:FILTER=STATE!=Close:FILTER=STATE!=closed")

Na dann zeig mal ein list von den anderen Fensterdevices. Wie ist da der STATE? Also das Internal STATE
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

CoolTux

Du kannst das ganze im übrigen in der Kommandozeile von FHEMWEB mit dem list Befehl testen
Bei mir zum Beispiel


list group=Fenster:FILTER=STATE!=closed:FILTER=STATE!=geschlossen


Und ja man kann es später auch im Notify schreiben wenn man diese Auflistung sonst nicht mehr braucht. Ich zum Beispiel brauche eine Liste aller Fenster die nicht geschlossen sind habe daher eine Funktion in der myUtils welche ich von unterschiedlichen Stellen aufrufe.
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

CoolTux

geht noch kürzer

devspec2array("group=Fenstersensoren:FILTER=STATE!=(close|Close|closed)")
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

PingPong

ok...

also das
list group=Fenstersensoren:FILTER=STATE!=closed:FILTER=STATE!=geschlossen

gibt mir genau die 10 Fenster aus... damit kann man vermutlich arbeiten :-)

ok.. ich war faul und hatte vorhin im Rahmen der Umbenennung nur das eine Device aufgeräumt.
Jetzt muss ich aber leider erstmal raus hier. Meine Tochter hat morgen Geburtstag und ich muss noch einiges vorbereiten.

Wenn es Dir nichts ausmacht, bereinige ich dann nachher erstmal noch die anderen Devices, versuche dann hier nochmal ein wenig zu verstehen und melde mich morgen nochmal mit dem aktuellen Stand.

Ich möchte mich an dieser Stelle aber schonmal bedanken, für die Mühe, die Du Dir hier heute mit mir gibst.
Das finde ich wirklich großartig und außerordentlich. Danke

Dir noch einen schönen Restabend und bis morgen.

VG
Marc

mumpitzstuff

devspec2array("group=Fenstersensoren:FILTER=STATE!=([Cc]losed?|geschlossen)")  :)

PingPong

So, also ich glaube ich hab es  :)
Aktuell wird genau die richtige Anzahl offener Fenster angezeigt.
Werde das jetzt die nächsten Tage einmal beobachten und etwas intensiver testen.

Hier nochmal kurz meine aktuellen Abfragen dokumentiert - vielleicht kann es nochmal jemand gebrauchen...
Nochmal ganz lieben Dank für Eure Mühen und Geduld...

Dummy
Internals:
   NAME       offeneFenster
   NR         305
   STATE      1
   TYPE       dummy
   READINGS:
     2018-03-2


99_myUtils
sub numberOfOpenWindows() {
      return devspec2array("group=Fenstersensoren:FILTER=STATE!=([Cc]losed?|geschlossen)")
}


notify
Fensterkontakt.*([Oo]pen|tilted|[Cc]losed?) { CommandSet(undef, 'offeneFenster ' . numberOfOpenWindows()) }

CoolTux

Sehr schön

Solltest Du keine Fenster mit Status geschlossen haben, kannst das geschlossen auch entfernen. Das war ja nur ein Beispiel aus meiner Umgebung.
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

PingPong

Ja, ist schon klar. Aber es stört ja auch nicht :-)
Hab aktuell auch kein "tilted".

So.. die nächste Baustelle wartet ... Gerade AMAD eingerichtet.... Ist ja klasse....
Wollte eigentlich meinen EchoDot sprechen lassen, aber da das Tablet eh an der Wand hängt, ... :-)

CoolTux

Wenn dein echoDot BT zu lässt, verbinde das Tablet doch damit. Dann spricht er. Mache ich mit meinem Google Home auch so.

Freut mich ja das es anscheinend Recht leicht ein zu richten ging  ;D
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

PingPong

Nee, denke dass ich den Dot dann den Kids geben kann... Da reicht dann das Tablet.
Ja, die Einrichtung von AMAD ging wirklich einfach....  :D

dt2510

Mal 'ne ganz blöde Frage: Welcher Tür-/Sensor Aktor liefert denn "tilted" ? Ich hab' aktuell erst einen (Hauppauge/Philio 4-in-1 ZWave) im Einsatz und der liefert - soviel ich bisher gesehen habe - nur open und close. Ein Bewegungsende liefert er auch nicht - wenigstens hat er das entsprechende Bit, welches zu setzen wäre bis heute nicht geändert ....

CoolTux

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

dt2510

Homematic hab' ich leider (noch) nicht ... was brauch ich da um Aktoren/Sensoren einzubinden als Minimal-Hardware ?

CoolTux

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

dt2510

Ich bräuchte was als USB oder LAN, da ich den Pi gerade erst durch einen NUC ersetzt habe

CoolTux

Dann das HMLan Gateway oder ein USB Cul. Musst Mal im Wiki und Forum suchen.
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

moonsorrox

ich habe noch den alten weissen USB Adapter am Intel NUC sitzen und in Reserve den HMLAN, falls der USB Adapter die klassische Grätsche macht...!
Ich weiß auch nicht ob es schon ein Ersatz USB gibt der den alten weissen ersetzt, glaube nicht.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

fireb

Hallo,

bei mir funktioniert das ganze mit meinen "Test- Fensterkontakten" Grundsätzlich einwandfrei, allerdings habe ich bei meinen richtigen Fensterkontakten ein kleines Problem mit den Device Namen in Verbindung mit dem erstellen des Notify's.

Meine Fensterkontakte habe ich wie folgt benannt: WZ.Fenster, SZ.Fenster, KU.Fenster usw.

Gibt es eine Möglichkeit, ausser die ganzen Device Namen zu ändern, um ein Notify anzulegen welches auf alle Devices reagiert welche mit .Fenster enden?

Versucht habe ich es bisher mit folgendem Befehl:

define SYS.OpenWindows notify *.Fenster:(open|tilted|closed) { CommandSet(undef,'HOME.OpenWindows ' . numberOfOpenWindows()) }

Allerdings erhalte ich hierbei immer "Bad regexp: starting with *" als Fehler.

Liebe Grüße
Manuel

CoolTux


define SYS.OpenWindows notify [A-Z].*.Fenster:(open|tilted|closed) { CommandSet(undef,'HOME.OpenWindows ' . numberOfOpenWindows()) }
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

mumpitzstuff

define SYS.OpenWindows notify .*\.Fenster:(open|tilted|closed) { CommandSet(undef,'HOME.OpenWindows ' . numberOfOpenWindows()) }

Ich glaube den Punkt muss man auch noch escapen.

D3ltorohd

#59
Zitat von: CoolTux am 31 März 2019, 00:19:50

define SYS.OpenWindows notify [A-Z].*.Fenster:(open|tilted|closed) { CommandSet(undef,'HOME.OpenWindows ' . numberOfOpenWindows()) }


Ich hänge mich hier auch mal mit an. Den Dummy und die Util hab ich erstellt. Nun sollte ich noch das Notify erstellen. Da es mein erstes ist bin ich mir nicht sicher. Sollte das so aussehen ?

define notifyoffeneFenster notify [A-Z].*_Sensor:(open|tilted|closed) { CommandSet(undef,'offeneFenster ' . numberOfOpenWindows()) }

Meine Sensoren liegen alle in der Gruppe Xiaomi und die Sensoren lauten wie folgt.

ZitatEsszimmer_Sensor
Buero_links_Sensor
usw.

Meine Util sieht so aus :
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.


1;
sub numberOfOpenWindows() {
      return devspec2array("group=Xiaomi:FILTER=STATE!=([Cc]lose?|geschlossen)")



EDIT: Ich sehe gerade, ich bekomme dann Probleme mit Türen und Garagentoren. Davon habe ich jeweils 2. Die würden dann die Zahl fälschen, ich würde das gerne auch für Tür und Tor anzeigen lassen. Muss ich diese jetzt umbenennen, oder kann man das noch irgendwie rausfiltern ? Oder ich müsste die umbenennen, FK_Buero,FK_Bad usw. dann TK_Haustuer, TK_Terrasse und das gleiche mit den Toren, GK_gross, und GK_klein. Wäre dann vllt einfacher zu filtern.

Ich müsste dann noch mal 2 Dummys anlegen und 2 weitere Notify's in die Utils muss ich auch noch was eintragen ?

P.S. Was passiert mit meinen Zusammenhängen, wenn ich die Namen ändere ? Ich habe die mit meinen Rollos verbunden zwecks ASC usw. Müsste ich die hier alle neu verbinden miteinander, bzw bei jedem Rollo vom Kontakt die Namen ändern ?

EDIT 2::
Also ich habe nun folgendes Notify, bei Dummy wird nun 0 angezeigt und ein TimeStamp. Aber wenn ich Fenster öffne oder schließe, passiert nichts. Es bleibt die 0 drin.

Zitat

Internals:
   CFGFN     
   DEF        .*\_Sensor:(open|tilted|close) { CommandSet(undef,'offeneFenster ' . numberOfOpenWindows()) }
   FUUID      5d55c242-f33f-fc62-5f86-2a5b2755d9bd3f56
   NAME       notifyoffeneFenster
   NR         806
   NTFY_ORDER 50-notifyoffeneFenster
   REGEXP     .*\_Sensor:(open|tilted|close)
   STATE      2019-08-15 22:36:39
   TRIGGERTIME 1565901399.68162
   TYPE       notify
   READINGS:
     2019-08-15 22:36:18   state           active
Attributes:
Base : Intel NUC Debian 9, FHEM aktuell || Zigbee (Coordinator FW Z-Stack 1.2 default Koenkk) || MaxCUL (culfw V 1.67 nanoCUL868) || SIGNALduino 433MHz (V 3.3.2.1-rc8 ) || Shelly s1

eurofinder

Ich habe das mit Monitoring gelöst wie https://forum.fhem.de/index.php?topic=68765.0 vorgeschlagen.

Gleich im ersten Post unter "Globale, flexible Fenster-/Tür-Offen-Meldungen (ähnlich wie im Forum beschrieben)" beschrieben.

Funktioniert bei mir zuverlässig.

Gruß
eurofinder
RPI3+; Raspbian Buster Lite; RPI-RF-MOD; piVCCU3, HMIP-eTRV-2, HmIP-SWDO, HmIP-SRH, HmIP-STHO, HmIP-SLO