Hauptmenü

Problem mit Userreading

Begonnen von Wolle02, 10 März 2022, 17:54:32

Vorheriges Thema - Nächstes Thema

Wolle02

Hallo zusammen, bestimmt habe ich mal wieder ein Brett vor dem Kopf, aber ich verstehe nicht wo das Problem liegt.
Ich habe hier folgendes monitoring-Device:

Internals:
   DEF        .*:open .*:closed
   FUUID      5e85d7db-f33f-bf2d-6d1f-c52d30b51cfa00da
   FVERSION   98_monitoring.pm:0.256460/2022-02-07
   NAME       Fenster_allg
   NR         97
   NTFY_ORDER 50-Fenster_allg
   STATE      Anzahl geöffneter Fenster: 2
   TYPE       monitoring
   READINGS:
     2022-03-10 17:30:21   allCount        2
     2022-03-10 17:30:21   error           F_EG_Kueche,F_EG_WZ_Nord_re
     2022-03-10 17:30:21   errorCount      2
     2022-03-10 17:30:21   state           error remove: F_UG_Gaestezimmer
     2020-04-19 08:25:48   warning         
     2020-04-19 08:25:48   warningCount    0
   hmccu:
Attributes:
   appOptions {"panel": {"status": ["allCount:0:geschlossen:100:success", "allCount::%n Fenster geöffnet:50:warning"], "btn": "mdi-chevron-right", "link": "/devices/group=Fenster"},"name":"Fenster" }
   blacklist  .*_RK R_.* global Rollladen_alle Alarm_.* Eingang_.* Fenster_schliessen_.*
   errorReturn {return unless(@errors);
$_ = AttrVal($_, "alias", $_) foreach(@errors);
return("Das Fenster \"$errors[0]\" ist geöffnet.") if(int(@errors) == 1);
@errors = sort {lc($a) cmp lc($b)} @errors;
return(join("\n - ", "Die folgenden ".@errors." Fenster sind geöffnet:", @errors))
}
   errorWait  0
   room       Steuerungen
   stateFormat Anzahl geöffneter Fenster: allCount
   warningReturn {return unless(@warnings);
$_ = AttrVal($_, "alias", $_) foreach(@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))
}
   whitelist  F_.*


Im Reading allCount steht die aktuelle Anzahl an Fenstern, die geöffnet sind. Ich möchte den Wert dieses Readings nun gerne auch in einem anderen Device haben. Dazu habe ich in folgendem Device ein Userreading erstellt, das mir mittels ReadingsNum (ich habe auch ReadingsVal ausprobiert) den Wert "rüberziehen" soll:

Internals:
   ATTR       Fenster
   CHANGEDCNT 4104
   DEF        Fenster F_.*
   DEVSPECDEF 1
   FUUID      6096a167-f33f-bf2d-f935-c96dba01991f8b20
   FVERSION   98_structure.pm:0.249990/2021-09-21
   NAME       Fenster_alle
   NOTIFYDEV  global,F_EG_Flur,F_OG_Bad,F_DG_West,F_OG_Kinderzimmer_Nord,F_OG_Schlafzimmer_Ost,F_OG_Kinderzimmer_West,F_EG_WZ_Ost,F_OG_Schlafzimmer_Nord,F_UG_HWR,F_UG_Bad,F_EG_WZ_Nord_re,F_EG_WZ_Nord_Mitte,F_UG_Buero,F_UG_Gaestezimmer,F_EG_Kueche,F_UG_Flur,F_OG_Ankleide,F_EG_WZ_West,F_DG_Ost,F_EG_WZ_Nord_li,F_DG_Nord
   NR         425
   NTFY_ORDER 50-Fenster_alle
   STATE      undefined
   TYPE       structure
   READINGS:
     2022-03-10 17:30:21   Anzahl_Fenster_offen 3
     2022-03-10 17:30:21   LastDevice      F_UG_Gaestezimmer
     2022-03-10 17:30:21   LastDevice_Abs  F_UG_Gaestezimmer
     2022-03-10 17:30:21   state           undefined
   hmccu:
Attributes:
   alias      Fenster
   appOptions {"panel": {"status": ["state:closed:geschlossen:100:success", "state::teilweise geöffnet:50:warning"], "btn": "mdi-chevron-right", "link": "/devices/group=Fenster"},"name":"Fenster" }
   room       FhemApp
   userReadings Anzahl_Fenster_offen {ReadingsNum("Fenster_allg","allCount",0)}


Im Reading Anzahl_Fenster_offen steht jetzt allerdings 3, obwohl im Reading allCount eine 2 steht. Öffne ich nun ein Fenster so steht im Reading allCount jetzt eine 3, allerdings in meinem Userreading eine 2. Schließe ich das Fenster wieder ist es wieder andersrum. Wenn ich alle Fenster schließe, dann steht im Reading allCount eine 0 und in meinem Userreading eine 1.
Also kurz gesagt in meinem Userreading steht immer der vorherige Wert vom Reading allCount.

Warum ist das so und wie bekomme ich den aktuellen Wert in das Userrreading?

Beta-User

Zitat von: Wolle02 am 10 März 2022, 17:54:32
Hallo zusammen, bestimmt habe ich mal wieder ein Brett vor dem Kopf, aber ich verstehe nicht wo das Problem liegt.
[...]
Warum ist das so und wie bekomme ich den aktuellen Wert in das Userrreading?
Das ist nicht die Kategorie "Brett"...
Es handelt sich einmal mehr um ein Reihenfolge-Problem bei der Abarbeitung von Event-Handlern, wobei hier noch die "Spezialität" dazukommt, dass einer mit gesetztem NOTIFYDEV mit einem ohne kombiniert wird.
Vielleicht reicht es aus, wenn du das "monitoring"-Gerät durch umbenennen "vor" die structure bringst (die Abarbeitungsreihenfolge kann man aus "NTFY_ORDER" ablesen, und da kommt halt am Ende das "e" vor dem "g"). Vielleicht musst du das monitoring zusätzlich so ändern, dass es ein NOTIFYDEV gesetzt bekommt.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wolle02

Vielen Dank für deine Erklärung. Ich werde das mit der Abarbeitungsreihenfolge mal ausprobieren.

ZitatVielleicht musst du das monitoring zusätzlich so ändern, dass es ein NOTIFYDEV gesetzt bekommt.

Kann ich das irgendwo nachlesen wie das geht, das sagt mir nämlich gar nix.

Beta-User

Zitat von: Wolle02 am 14 März 2022, 17:03:36
Kann ich das irgendwo nachlesen wie das geht, das sagt mir nämlich gar nix.
Bin auch erst dabei, mich da einzudenken, was monitoring angeht und bin nicht sicher, ob das mit der akutellen svn-Version überhaupt funktioniert. Vielleicht magst du mittesten: https://forum.fhem.de/index.php/topic,126515.0.html

Zu den Hintergründen zu NOTIFYDEV allg. siehe z.B. https://forum.fhem.de/index.php/topic,125381.0.html
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wolle02

Alles klar, den Test schaue ich mir mal an. Dazu muss ich erstmal wieder mein Testsystem aktivieren.

Bei dem Thread über Notifydev braucht ich mal ne ruhige Minute. Ich versteh da ziemlich viel nicht.

Beta-User

Zitat von: Wolle02 am 15 März 2022, 16:59:43
Bei dem Thread über Notifydev braucht ich mal ne ruhige Minute. Ich versteh da ziemlich viel nicht.
Schwerer Stoff, schon klar. Quintessenz: Wenn möglich dafür sorgen, dass NOTIFYDEV gesetzt ist. Für monitoring in der jetzigen Fassung wäre dafür das whitelist-Attribut passend zu füllen (das ist im einfachsten Fall eine simple Geräteliste).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors