[98_monitoring] - Support Thread ab 2022

Begonnen von Beta-User, 01 März 2022, 15:16:59

Vorheriges Thema - Nächstes Thema

Beta-User

Thx für die Rückmeldung, bitte melden, falls ich vergesse, das irgendwann über die Festtage mal einzuchecken.
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

Miami

#31
Hallo,

ich habe folgende Zeile im Log, wenn ich FHEM neu starte:2023.01.15 13:36:13 1: PERL WARNING: \A* matches null string many times in regex; marked by <-- HERE in m/\A* <-- HERE .WINDOW_STATE:.open\z/ at ./FHEM/98_monitoring.pm line 337.
Probleme habe ich aber (bisher) nicht feststellen können.

Hier noch das List meiner Monitoring-Instanz: Internals:
   DEF        *.WINDOW_STATE:.open .*WINDOW_STATE:.closed
   FUUID      60038218-f33f-b9b4-7b85-c1454ae977f6d7e3
   NAME       Fenster_Monitoring
   NR         210
   NTFY_ORDER 50-Fenster_Monitoring
   STATE      active
   TYPE       monitoring
   READINGS:
     2023-01-15 10:33:55   allCount        0
     2023-01-14 09:31:18   error           
     2023-01-14 09:31:18   errorCount      0
     2023-01-15 13:36:13   state           active
     2023-01-15 10:33:55   warning         
     2023-01-15 10:33:55   warningCount    0
Attributes:
   blacklist  Heizung_Speisekammer
   errorReturn {return unless(@errors);
$_ = AttrVal($_, "alias", $_) foreach(@errors);
return("Das Fenster \"$errors[0]\" ist schon länger geöffnet.") if(int(@errors) == 1);
@errors = sort {lc($a) cmp lc($b)} @errors;
return(join("\n - ", "Die folgenden ".@errors." Fenster sind schon länger geöffnet:", @errors))
}
   errorWait  {my $temp=ReadingsNum('Wetter','temperature',0); $temp <= 0 ? 15*60 : $temp > 0 &&  $temp <10 ? 20*60 : $temp >= 10 && $temp <20 ? 30*60 : $temp >= 20  ? 40*60 : 0}
   group      Fenster Überwachung
   icon       fts_window_1w_open
   room       Test
   verbose    1
   warningReturn {return unless(@warnings);
$_ = AttrVal($_, "alias", $_) foreach(@warnings);
return("Das Fenster \"$warnings[0]\" ist geöffnet.") if(int(@warnings) == 1);
@warnings = sort {lc($a) cmp lc($b)} @warnings;
return(join("\n - ", "Die folgenden ".@warnings." Fenster sind  geöffnet:", @warnings))
}
   warningWait {my $temp=ReadingsNum('Wetter','temperature',0); $temp <= 0 ? 12*60 : $temp > 0 &&  $temp <10 ? 17*60 : $temp >= 10 && $temp <20 ? 27*60 : $temp >= 20  ? 35*60 : 0}


In der 98_monitoring.pm steht am Anfang:# $Id: 98_monitoring.pm 26892 2022-12-24 08:27:11Z Beta-User $

Und in Zeile 337:     my $addMatch = "$name:$event" =~ m{\A$addRegex\z}xms;

Beta-User

Die gezeigte "open"-DEF ist auch komisch....
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

Miami

Das liegt daran, dass die Info über Heiz-Gruppen der Homematik IP kommt. Da gibt es mehrere "Kanäle", die vorangestellt und mit einem Punkt abgetrennt werden.

Hier mal ein "Screenshot" vom Event monitor:
Events (Filter: Heizung_Buero.*)   FHEM log   ResetCreate/Modify Device
2023-01-16 10:58:47 HMCCUDEV Heizung_Buero devstate: ok
2023-01-16 10:58:47 HMCCUDEV Heizung_Buero hmstate: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 1.WINDOW_STATE: open
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero devstate: ok
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero hmstate: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 1.ACTUAL_TEMPERATURE: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero measured-temp: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 1.BOOST_MODE: false
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero devstate: ok
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero hmstate: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero devstate: ok


Hat jemand eine andere Idee als ein User-Reading (ohne Punkt) zu verwenden, um die Meldung im Log zu vermeiden?


Miami

Zitat von: Miami am 16 Januar 2023, 11:50:53
Das liegt daran, dass die Info über Heiz-Gruppen der Homematik IP kommt. Da gibt es mehrere "Kanäle", die vorangestellt und mit einem Punkt abgetrennt werden.

Hier mal ein "Screenshot" vom Event monitor:
Events (Filter: Heizung_Buero.*)   FHEM log   ResetCreate/Modify Device
2023-01-16 10:58:47 HMCCUDEV Heizung_Buero devstate: ok
2023-01-16 10:58:47 HMCCUDEV Heizung_Buero hmstate: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 1.WINDOW_STATE: open
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero devstate: ok
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero hmstate: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 1.ACTUAL_TEMPERATURE: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero measured-temp: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 1.BOOST_MODE: false
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero devstate: ok
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero hmstate: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero devstate: ok


Hat jemand noch eine andere Idee als ein User-Reading (ohne Punkt) zu verwenden, um die Meldung im Log zu vermeiden?

Beta-User

Zitat von: Miami am 16 Januar 2023, 11:50:53
Das liegt daran, dass die Info über Heiz-Gruppen der Homematik IP kommt. Da gibt es mehrere "Kanäle", die vorangestellt und mit einem Punkt abgetrennt werden.

Hier mal ein "Screenshot" vom Event monitor:
Events (Filter: Heizung_Buero.*)   FHEM log   ResetCreate/Modify Device
2023-01-16 10:58:47 HMCCUDEV Heizung_Buero devstate: ok
2023-01-16 10:58:47 HMCCUDEV Heizung_Buero hmstate: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 1.WINDOW_STATE: open
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero devstate: ok
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero hmstate: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 1.ACTUAL_TEMPERATURE: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero measured-temp: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero 1.BOOST_MODE: false
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero devstate: ok
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero hmstate: 20.9
2023-01-16 10:58:48 HMCCUDEV Heizung_Buero devstate: ok


Hat jemand eine andere Idee als ein User-Reading (ohne Punkt) zu verwenden, um die Meldung im Log zu vermeiden?
Der erste Stern ist jedenfalls immer noch komisch...

Statt:
   DEF        *.WINDOW_STATE:.open .*WINDOW_STATE:.closed
fände ich weiter sowas logischer:
   DEF        .*WINDOW_STATE:.open .*WINDOW_STATE:.closed
Oder eben unter Berücksichtigung der Frage, ob ein NOTIFYDEV ermittelt werden kann, und unterstellt, dass alles mit "Heizung_" beginnt:
   DEF        Heizung_.*:..WINDOW_STATE:.open Heizung_.*:..WINDOW_STATE:.closed

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

Miami

#36
Zitat von: Beta-User am 16 Januar 2023, 13:11:17
Der erste Stern ist jedenfalls immer noch komisch...

Oh, ich habe jetzt erst gesehen, dass ich *. statt .* eingegeben hatte.   :-[

Habe das nun in .*WINDOW_STATE:.open .*WINDOW_STATE:.closed geändert und Fhem neu gestartet. Habe keine Meldung mehr im Log.  :)
Die Fenster aufreißen, um die Funktion zu testen, darf ich aber gerade nicht, das wird bis morgen warten müssen.

Mucki

Hallo zusammen,

Zitat von: Beta-User am 05 Februar 2024, 22:23:14
Zitat von: Beta-User am 29 November 2022, 15:21:58Neuer support-Thread für das Modul wäre hier zu finden (siehe MAINTAINER.txt): https://forum.fhem.de/index.php/topic,126515.0.html..
[...]
Feedback bitte möglichst im neuen Thread.
Gilt immer noch...

@Beta-User vielen Dank dafür, dass Du den alten Threat noch beobachtest und sorry, dass ich dort geschrieben hatte. Asche auf mein Haupt. Hier meine Frage von dort.
Zitat von: Mucki am 05 Februar 2024, 21:52:59Guten Abend zusammen,

funktioniert das Monitoring-Modul auch dann, wenn ein Device den Wert 0 erhält?

Ich möchte mit dem monitoring-Modul zählen,
  • wie viele Rollläden offen (state 100) sind
  • und mit einem zweiten Modul zählen, wie wiele Rollläden geschlossen (state 0) sind.

Hierzu habe ich zwei Monitoring-Devices erstellt. (Ich kann nicht durch die Gesamtanzahl der Rollläden minus Anzahl der offenen Rollläden auf die Anzahl der geschlossenen Rollläden schließen, da es auch Zwischenstände gibt.)

Nun zu meinem Problem. Meine Rolladen Devices werden bei allen beliebigen Werten in die warning/error Liste aufgenommen bzw. aus ihr gelöscht - ABER NICHT, wenn der Wert 0 ist.

Zum Testen habe ich ein einfaches Dummy erstellt,
define r11 dummy
attr r11 userattr rolllaeden rolllaeden_map structexclude
attr r11 room TestRollladen
#   FUUID      65a64e2f-f33f-3989-0701-4cd43d71d97947e2
#   NAME       r11
#   NR         266
#   STATE      0
#   TYPE       dummy
#   eventCount 33
#   READINGS:
#     2024-02-05 21:22:12   state           0
#
setstate r11 0
setstate r11 2024-02-05 21:22:12 state 0

roll_zu soll die geschlossenen Läden zählen. Die Aufnahme in die Warning Liste bei r11=0 funktioniert nicht. Löschen funktioniert bei jedem beliebigen Wert !=0.
define roll_zu monitoring r11:0|r12:0|r13:0 r11:.*|r12:.*|r13:.*
attr roll_zu errorWait 5
attr roll_zu room TestRollladen
#   CFGFN     
#   DEF        r11:0|r12:0|r13:0 r11:.*|r12:.*|r13:.*
#   FUUID      65c12fba-f33f-3989-edce-ea8961d0ebd547de
#   NAME       roll_zu
#   NOTIFYDEV  r12,r11,global,r13
#   NR         302
#   NTFY_ORDER 50-roll_zu
#   STATE      active
#   TYPE       monitoring
#   eventCount 16
#   READINGS:
#     2024-02-05 21:20:41   allCount        0
#     2024-02-05 21:20:41   error          
#     2024-02-05 21:20:41   errorCount      0
#     2024-02-05 21:21:07   state           active
#     2024-02-05 21:19:55   warning        
#     2024-02-05 21:19:55   warningCount    0
#
setstate roll_zu active
setstate roll_zu 2024-02-05 21:20:41 allCount 0
setstate roll_zu 2024-02-05 21:20:41 error
setstate roll_zu 2024-02-05 21:20:41 errorCount 0
setstate roll_zu 2024-02-05 21:21:07 state active
setstate roll_zu 2024-02-05 21:19:55 warning
setstate roll_zu 2024-02-05 21:19:55 warningCount 0

roll_offen soll die geschlossenen Läden zählen. Die Aufnahme in die Warning Liste bei r11=100 funktioniert, Löschen funktioniert bei jeden Wert von r11, aber nicht bei r11=0
define roll_offen monitoring r11:100|r12:100|r13:100 r11:.*|r12:.*|r13:.*
attr roll_offen errorWait 5
attr roll_offen room TestRollladen
#   DEF        r11:100|r12:100|r13:100 r11:.*|r12:.*|r13:.*
#   FUUID      65c107a1-f33f-3989-83a2-d68c271edae6eb47
#   NAME       roll_offen
#   NOTIFYDEV  r13,r11,global,r12
#   NR         301
#   NTFY_ORDER 50-roll_offen
#   STATE      error add: r11
#   TYPE       monitoring
#   eventCount 62
#   READINGS:
#     2024-02-05 21:22:10   allCount        1
#     2024-02-05 21:22:10   error           r11
#     2024-02-05 21:22:10   errorCount      1
#     2024-02-05 21:22:10   state           error add: r11
#     2024-02-05 21:22:09   warning        
#     2024-02-05 21:22:09   warningCount    0
#
setstate roll_offen error add: r11
setstate roll_offen 2024-02-05 21:22:10 allCount 1
setstate roll_offen 2024-02-05 21:22:10 error r11
setstate roll_offen 2024-02-05 21:22:10 errorCount 1
setstate roll_offen 2024-02-05 21:22:10 state error add: r11
setstate roll_offen 2024-02-05 21:22:09 warning
setstate roll_offen 2024-02-05 21:22:09 warningCount 0


Hat jemand eine Idee für mich?
Vielen Dank und viele Grüße


Zitat von: Beta-User am 05 Februar 2024, 22:23:14Eigentlich sind das keine Zahlenvergleiche, die monitoring da macht, sondern reine regex-Operationen. Von daher sollte das schon klappen, ich habe aber grade kein geeignetes Testsystem, um das nachzustellen.
Im anderen Thread dann bitte noch ausführen, wie du den state setzt, es gibt bei deinem dummy ja keine readingList/setList.

Bislang habe ich die Devices nur auf meinem Testrechner erstellt. Den state setze ich hier einfach in der Eingabezeile mit "set r11 0" oder "set r11 100".

Auf dem Hauptrechner sind es später nicht drei Dummy's, sondern 18 Geräte vom TYPE Tronferno. Die werden per at, doif oder manuell gesetzt z.B. mit "set r11 down". Tronferno erzeugt dann z.B "state 0", sobald die Rollade geschlossen ist.

passibe

#38
Löst jetzt nicht unbedingt das Problem mit dem Modul, aber was genau willst du am Ende eigentlich realisieren? Vielleicht reicht ja auch ein einfaches
count TYPE=Tronferno:FILTER=STATE=0
Edit: Bzw. in Perl (geht vielleicht auch besser? Bin aber kein Profi):
devspec2array("TYPE=Tronferno:FILTER=STATE=0")

Mucki

Zitat von: passibe am 06 Februar 2024, 22:53:27was genau willst du am Ende eigentlich realisieren?
In meiner ftui-Darstellung möchte ich neben der Kachel, wie viele Fenster offen sind, auch eine Kachel bzgl. der Rollläden haben. Die Monitoring-Beispiele aus der Commandref für Meldungen offener Fenster und leerer Batterien funktionieren super, nur hier scheitere ich (noch).

Zitat von: passibe am 06 Februar 2024, 22:53:27count TYPE=Tronferno:FILTER=STATE=0
Das ist eine gute Idee und ermittelt auch die richtige Anzahl, aber es ist statisch und wird nicht getriggert, sprich es wird nicht aktualisiert, wenn sich der Zustand einer Rolllade ändert. Das ist im Monitoring-Modul schon eingebaut. Aber vielleicht erstelle ich einfach ein notify, das auf jede Rollladenänderung reagiert.


Marcel_R

Grüezi,
Gemäss commandref: The waiting time can be set for each device via userattr "winOpenTimer"

Habe dieses usereattr gebildet (dies wird in den Attributes als "userattr winOpenTimer" angezeigt. So weit so gut.

Sobald ich bei einem Fenster dem unter "device userattr" angezeigten "winOpenTimer" den Wert von "60*2" zuweise (angezeigt wird das weitere Attribut "winOpenTimer 60*2"), wird beim Öffnen das Fenster nicht mehr der Warning Liste zugefügt sondern unverzüglich der Error liste.

Was mache ich falsch?

Danke
Marcel
FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /

Beta-User

Zitat von: Marcel_R am 29 Februar 2024, 10:46:33Grüezi,
Gemäss commandref: The waiting time can be set for each device via userattr "winOpenTimer"

Habe dieses usereattr gebildet (dies wird in den Attributes als "userattr winOpenTimer" angezeigt. So weit so gut.

Sobald ich bei einem Fenster dem unter "device userattr" angezeigten "winOpenTimer" den Wert von "60*2" zuweise (angezeigt wird das weitere Attribut "winOpenTimer 60*2"), wird beim Öffnen das Fenster nicht mehr der Warning Liste zugefügt sondern unverzüglich der Error liste.

Was mache ich falsch?

Danke
Marcel
Kannst du mal ein "copy for forum" von dem Fenster zeigen? Deine Beschreibung klingt so, als hättest du eventuell das userAttr "winOpenTimer" mit Inhalt gefüllt, sondern ein weiteres userAttr hinzugefügt, aber vermutlich verstehe ich da was falsch.
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

ChrisH

Ich habe den gleichen Effekt: Fenster auf, direkt in ERROR. Meine notifications greifen und schicken dann direkt die "Alarme" raus.

Hier ein Forum copy:

define Fenster_monitoring monitoring Fensterkontakt_.*:open Fensterkontakt_.*:closed
attr Fenster_monitoring errorReturn {return if !@errors;;\
 $_ = AttrVal($_, 'alias', $_) for @errors;;\
 return("Das Fenster \"$errors[0]\" ist schon länger geöffnet.") if(int(@errors) == 1);;\
 @errors = sort {lc($a) cmp lc($b)} @errors;;\
 return(join("\n - ", "Die folgenden ".@errors." Fenster sind schon länger geöffnet:", @errors))\
}
attr Fenster_monitoring errorWait { AttrVal($name, 'winOpenTimer', 60*10) }
attr Fenster_monitoring room Info
attr Fenster_monitoring verbose 5
attr Fenster_monitoring warningReturn {return if !@warnings;;\
 $_ = AttrVal($_, 'alias', $_) for @warnings;;\
 return("Das Fenster \"$warnings[0]\" ist seit kurzem geöffnet.") if(int(@warnings) == 1);;\
 @warnings = sort {lc($a) cmp lc($b)} @warnings;;\
 return(join("\n - ", "Die folgenden ".@warnings." Fenster sind seit kurzem geöffnet:", @warnings))\
}
#   DEF        Fensterkontakt_.*:open Fensterkontakt_.*:closed
#   FUUID      65d114ad-f33f-b392-c7f0-1d47a7a5857a0ca4
#   NAME       Fenster_monitoring
#   NOTIFYDEV  global,Fensterkontakt_.*
#   NR         279
#   NTFY_ORDER 50-Fenster_monitoring
#   STATE      error add: Fensterkontakt_Duschbad
#   TYPE       monitoring
#   eventCount 11
#   READINGS:
#     2024-02-29 10:41:56   allCount        1
#     2024-02-29 10:41:56   error           Fensterkontakt_Duschbad
#     2024-02-29 10:41:56   errorCount      1
#     2024-02-29 10:41:56   state           error add: Fensterkontakt_Duschbad
#     2024-02-20 20:47:38   warning         
#     2024-02-20 20:47:38   warningCount    0
#
setstate Fenster_monitoring error add: Fensterkontakt_Duschbad
setstate Fenster_monitoring 2024-02-29 10:41:56 allCount 1
setstate Fenster_monitoring 2024-02-29 10:41:56 error Fensterkontakt_Duschbad
setstate Fenster_monitoring 2024-02-29 10:41:56 errorCount 1
setstate Fenster_monitoring 2024-02-29 10:41:56 state error add: Fensterkontakt_Duschbad
setstate Fenster_monitoring 2024-02-20 20:47:38 warning
setstate Fenster_monitoring 2024-02-20 20:47:38 warningCount 0



Eines der Fenster sieht so aus:


define Fensterkontakt_Duschbad MQTT2_DEVICE zigbee_clio
attr Fensterkontakt_Duschbad userattr winOpenMaxTrigger winOpenTimer winOpenTimer2 winOpenType:Fenster,Türe winOpenName
attr Fensterkontakt_Duschbad alias Dachfenster Duschbad
attr Fensterkontakt_Duschbad devStateIcon open:fts_window_1w_open@red closed:fts_window_1w@green
attr Fensterkontakt_Duschbad devicetopic zigbee2mqtt/Kontakt_Fenster_Duschbad
attr Fensterkontakt_Duschbad event-on-change-reading state
attr Fensterkontakt_Duschbad eventMap true:closed false:open
attr Fensterkontakt_Duschbad jsonMap contact:state
attr Fensterkontakt_Duschbad model zigbee2mqtt_ContactSensor
attr Fensterkontakt_Duschbad readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr Fensterkontakt_Duschbad room DuschBad,Info,MQTT2_DEVICE
attr Fensterkontakt_Duschbad winOpenTimer 00:35:00
#   CID        zigbee_clio
#   DEF        zigbee_clio
#   FUUID      6293d87d-f33f-b392-c43a-c4a407a47295113c
#   IODev      myBroker
#   LASTInputDev myBroker
#   MSGCNT     50
#   NAME       Fensterkontakt_Duschbad
#   NR         204
#   STATE      open
#   TYPE       MQTT2_DEVICE
#   eventCount 5
#   myBroker_MSGCNT 50
#   myBroker_TIME 2024-02-29 10:41:56
#   JSONMAP:
#     contact    state
#   READINGS:
#     2024-02-27 19:16:39   IODev           myBroker
#     2022-05-29 22:34:23   attrTemplateVersion 20210301
#     2024-02-29 10:41:56   battery         100
#     2024-02-29 10:41:56   device_temperature 23
#     2024-02-29 10:41:56   linkquality     65
#     2024-02-29 10:41:56   power_outage_count 68
#     2024-02-29 10:41:56   state           false
#     2024-02-29 10:41:56   temperature     26
#     2024-02-29 10:41:56   voltage         3005
#
setstate Fensterkontakt_Duschbad open
setstate Fensterkontakt_Duschbad 2024-02-27 19:16:39 IODev myBroker
setstate Fensterkontakt_Duschbad 2022-05-29 22:34:23 attrTemplateVersion 20210301
setstate Fensterkontakt_Duschbad 2024-02-29 10:41:56 battery 100
setstate Fensterkontakt_Duschbad 2024-02-29 10:41:56 device_temperature 23
setstate Fensterkontakt_Duschbad 2024-02-29 10:41:56 linkquality 65
setstate Fensterkontakt_Duschbad 2024-02-29 10:41:56 power_outage_count 68
setstate Fensterkontakt_Duschbad 2024-02-29 10:41:56 state false
setstate Fensterkontakt_Duschbad 2024-02-29 10:41:56 temperature 26
setstate Fensterkontakt_Duschbad 2024-02-29 10:41:56 voltage 3005


Marcel_R

Das gewünschte:
define FKUGSaunaxy HMCCUCHN KEQ0018413:1
attr FKUGSaunaxy userattr winOpenTimer
attr FKUGSaunaxy devStateIcon open:10px-kreis-rot .*tilted:10px-kreis-gelb .*closed:10px-kreis-gruen
attr FKUGSaunaxy fp_ug 16,289,0,FKUGSaunaxy,
attr FKUGSaunaxy room Homematic
attr FKUGSaunaxy winOpenTimer 60*2
#   DEF        KEQ0018413:1
#   FUUID      63355927-f33f-8502-a20a-3dfbb8f445bcbd19
#   IODev      rasp_ccu
#   NAME       FKUGSaunaxy
#   NR         64
#   STATE      open
#   TYPE       HMCCUCHN
#   ccuaddr    KEQ0018413:1
#   ccudevstate active
#   ccuif      BidCos-RF
#   ccuname    FKUGSaunaxy:1
#   ccurolestate ROTARY_HANDLE_SENSOR
#   ccusubtype HM-Sec-RHS
#   ccutype    HM-Sec-RHS
#   chntype    ?
#   eventCount 91
#   firmware   2.0
#   readonly   no
#   READINGS:
#     2024-02-20 07:13:56   ERROR           NO_ERROR
#     2024-02-19 23:14:15   IODev           rasp_ccu
#     2024-02-29 14:13:53   LOWBAT          ok
#     2024-02-29 14:13:53   STATE           open
#     2024-02-20 07:13:56   activity        alive
#     2024-02-20 07:13:56   battery         ok
#     2024-02-29 14:13:53   devstate        ok
#     2024-02-29 14:13:53   hmstate         open
#     2024-02-20 07:13:56   rssidevice      N/A
#     2024-02-20 07:13:56   rssipeer        N/A
#     2024-02-20 07:13:56   sign            off
#     2024-02-29 14:13:53   state           open
#   hmccu:
#     channels   1
#     detect     0
#     devspec    KEQ0018413:1
#     nodefaults 1
#     role       1:ROTARY_HANDLE_SENSOR
#     setDefaults 0
#     cmdlist:
#       get       
#       set       
#     control:
#     dp:
#       0.AES_KEY:
#         VALUES:
#           NVAL       0
#           SVAL       off
#           VAL        0
#       0.CONFIG_PENDING:
#         VALUES:
#           NVAL       0
#           SVAL       false
#           VAL        0
#       0.LOWBAT:
#         VALUES:
#           NVAL       0
#           SVAL       ok
#           VAL        0
#       0.RSSI_DEVICE:
#         VALUES:
#           NVAL       N/A
#           SVAL       N/A
#           VAL        -65535
#       0.RSSI_PEER:
#         VALUES:
#           NVAL       N/A
#           SVAL       N/A
#           VAL        -65535
#       0.STICKY_UNREACH:
#         VALUES:
#           NVAL       0
#           SVAL       false
#           VAL        0
#       0.UNREACH:
#         VALUES:
#           NVAL       0
#           SVAL       alive
#           VAL        0
#       1.ERROR:
#         VALUES:
#           NVAL       0
#           SVAL       NO_ERROR
#           VAL        0
#       1.LOWBAT:
#         VALUES:
#           NVAL       0
#           SVAL       ok
#           VAL        0
#       1.STATE:
#         VALUES:
#           NVAL       2
#           ONVAL      0
#           OSVAL      closed
#           OVAL       0
#           SVAL       open
#           VAL        2
#     roleChannels:
#       ROTARY_HANDLE_SENSOR 1
#     roleCmds:
#       get:
#       set:
#     state:
#       chn        1
#       dpt        STATE
#
setstate FKUGSaunaxy open
setstate FKUGSaunaxy 2024-02-20 07:13:56 ERROR NO_ERROR
setstate FKUGSaunaxy 2024-02-19 23:14:15 IODev rasp_ccu
setstate FKUGSaunaxy 2024-02-29 14:13:53 LOWBAT ok
setstate FKUGSaunaxy 2024-02-29 14:13:53 STATE open
setstate FKUGSaunaxy 2024-02-20 07:13:56 activity alive
setstate FKUGSaunaxy 2024-02-20 07:13:56 battery ok
setstate FKUGSaunaxy 2024-02-29 14:13:53 devstate ok
setstate FKUGSaunaxy 2024-02-29 14:13:53 hmstate open
setstate FKUGSaunaxy 2024-02-20 07:13:56 rssidevice N/A
setstate FKUGSaunaxy 2024-02-20 07:13:56 rssipeer N/A
setstate FKUGSaunaxy 2024-02-20 07:13:56 sign off
setstate FKUGSaunaxy 2024-02-29 14:13:53 state open

Wenn ich dies richtig sehe, gibt ChrisH als wesentlichen Unterschied in seinem funktionierenden Beispiel den winOpenTimer nicht in Sekunden, sondern in Std:min:sek an.

Oder übersehe ich etwas?
Gruss Marcel
FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /

Marcel_R

und der Vollständigkeit halber:
define Fenster_monitoring monitoring FK.*:(open|tilted) FK.*:closed
attr Fenster_monitoring errorFuncAdded {DebianMail('fhem@beispiel.com','FHEM Fenster '.$name,'<html>Das Fester ist seit längerer Zeit offen</html>','')}
attr Fenster_monitoring errorReturn {return if !@errors;;\
 $_ = AttrVal($_, 'alias', $_) for @errors;;\
 return("Das Fenster \"$errors[0]\" ist schon länger geöffnet.") if(int(@errors) == 1);;\
 @errors = sort {lc($a) cmp lc($b)} @errors;;\
 return(join("\n - ", "Die folgenden ".@errors." Fenster sind schon länger geöffnet:", @errors))\
}
attr Fenster_monitoring errorWait {AttrVal($name, "winOpenTimer", 60*10)}
attr Fenster_monitoring warningReturn {return if !@warnings;;\
 $_ = AttrVal($_, 'alias', $_) for @warnings;;\
 return("Das Fenster \"$warnings[0]\" ist seit kurzem geöffnet.") if(int(@warnings) == 1);;\
 @warnings = sort {lc($a) cmp lc($b)} @warnings;;\
 return(join("\n - ", "Die folgenden ".@warnings." Fenster sind seit kurzem geöffnet:", @warnings))\
}
#   CFGFN     
#   DEF        FK.*:(open|tilted) FK.*:closed
#   FUUID      65e03274-f33f-8502-4266-1520adaf5db0f18a
#   NAME       Fenster_monitoring
#   NR         124
#   NTFY_ORDER 50-Fenster_monitoring
#   STATE      warning remove: FKO1ElternO
#   TYPE       monitoring
#   eventCount 45
#   READINGS:
#     2024-02-29 15:42:45   allCount        3
#     2024-02-29 15:02:14   error           FKEGBalkonx,FKUGRaxxxxO,FKUGSaunaxy
#     2024-02-29 15:02:14   errorCount      3
#     2024-02-29 15:42:45   state           warning remove: FKO1ElternO
#     2024-02-29 15:42:45   warning         
#     2024-02-29 15:42:45   warningCount    0
#   hmccu:
#
setstate Fenster_monitoring warning remove: FKO1ElternO
setstate Fenster_monitoring 2024-02-29 15:42:45 allCount 3
setstate Fenster_monitoring 2024-02-29 15:02:14 error FKEGBalkonx,FKUGRaxxxxO,FKUGSaunaxy
setstate Fenster_monitoring 2024-02-29 15:02:14 errorCount 3
setstate Fenster_monitoring 2024-02-29 15:42:45 state warning remove: FKO1ElternO
setstate Fenster_monitoring 2024-02-29 15:42:45 warning
setstate Fenster_monitoring 2024-02-29 15:42:45 warningCount 0

FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /