Events abschalten für Device:reading

Begonnen von sn0000py, 27 Dezember 2022, 12:34:07

Vorheriges Thema - Nächstes Thema

sn0000py

da ich gerade am perf tunen bin, frage ich mich wie ich Events für ein reading abschalten kann das ich nicht brauche?

Bei readings die sich nicht ändern gehts es ja mit dem "attr name timestamp-on-change-reading .*"
Aber wie mache ich es bei readings die sich ändern?

Habe zwei Fälle.
1. das unifi device
5fb4f94b8f3c49010e0560f9_last_seen 2022-12-27 12:30:29 2022-12-27 12:30:38
5fb4f94b8f3c49010e0560f9_snr 40 2022-12-27 12:30:38
5fb4f94b8f3c49010e0560f9_uptime 633600 2022-12-27 12:30:38

Bis auf das snr ändern sich die daten natürlich für alle WLAN Geräte ständigst und ich bringe diese Events nicht weg die ich nicht brauche.

2. Für die WEtterstation habe ich einen SysLog Server Device das generiert mir jedesmal ein reading mit MSG_ESP-0948FC.localdomain mit den JSON Daten drinnen die dann entjsont werden  die result werte kann ich dann wieder schön beschränken das ist kein problem mehr.


sn0000py

hmmm so ganz check ich das noch nicht.
hätte nun probiert
attr SyslogServer event-on-change-reading (?!MSG_ESP-0948FC.localdomain).*

aber der Wert von dem MSG_ESP-0948FC.localdomain wird nun gar nicht mehr geändert - ich dachte es wird nur kein Event mehr ausgelöst dafür?
Meine auffassung war das das event-on-change-reading NUR dafür da ist ob ein Event ausgelöst wird (im EventMonitor sichtbar dann) und keinen Einfluss darauf hat dass das Reading den Wert hat oder nicht?

bartman121

Woran machst du fest, dass der wert nicht mehr geändert wird? Die anzeige im Frontend basiert auf websockets und Events. Damit wird der neue wert erst sichtbar, wenn du  Seite mit F5 reloadest, dann sollte der neue wert sichtbar sein.

Aber du schriebst, dass einzelne Teile aus dem json dann extrahiert werden. Wenn du das beispielsweise Event-basiert machst, dann klappt das nicht mehr.


Meine Antwort bezog sich übrigens nur auf deinen 1.punkt, genau beim unifi-controller hab ich das auch gebraucht.

sn0000py

Ja ich habe natürlich F5 gedrückt, und es kam dann keine neuen Werte mal rein.
Das extrahieren erfolgt hier per Userreadings
aussentemperatur { my $w=ReadingsVal($name,"MSG_ESP-0948FC.localdomain",0) ;; $w =~ s/.*"w_temperatur".*?"value":"([+-]?\d*[\.\d]\d*)".*/$1/ ;; $w },
gefuehlte_temperatur { my $w=ReadingsVal($name,"MSG_ESP-0948FC.localdomain",0) ;; $w =~ s/.*"w_windchill".*?"value":"([+-]?\d*[\.\d]\d*)".*/$1/ ;; $w },
taupunkt_temperatur { my $w=ReadingsVal($name,"MSG_ESP-0948FC.localdomain",0) ;; $w =~ s/.*"w_taupunkt".*?"value":"([+-]?\d*[\.\d]\d*)".*/$1/ ;; $w },

aber so weit war ich noch gar nicht, sonder das reading selbst wurde anscheinend nicht mehr aktualisiert.

Aber eventuell hat es da was mit dem Modul SysLog Server zu tun, den da funktioniert es anders - mit dem Attr makeEvent no, genau so wie ich es haben möchte - es war halt nur komisch

bartman121

Du hattest ja Probleme mit der Performance, deine userreadings haben keine Trigger und werden damit bei jedem Event des devices ausgelöst, das ist wenig sinnvoll. Je nach Anzahl der Events/anderen readings kann das unnötig ausgeführt werden.

alanblack

Zitat von: sn0000py am 27 Dezember 2022, 12:34:07
da ich gerade am perf tunen bin, frage ich mich wie ich Events für ein reading abschalten kann das ich nicht brauche?

[...]

Habe zwei Fälle.
1. das unifi device

Ich habe hier nach Hin- und Herprobieren mich für eine Positivliste entschieden:
attr <Unificontroller> event-on-change-reading [A-Za-z0-9-]+,-UC_.*
-UC_.* ist zur Überwachung der Funktion an sich und
[A-Za-z0-9-]+ liefert Events für alle Readings ohne "_", d.h. <client>:(connected|disconnected)

Grüße
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

sn0000py

aber nur die Events bzw notify abschalten geht hier gar nicht?

Ich möchte das sich zumindest einige Readings aktualisieren, aber brauche bzw will keine Events

alanblack

Zitat von: sn0000py am 29 Dezember 2022, 13:15:46
aber nur die Events bzw notify abschalten geht hier gar nicht?

Ich möchte das sich zumindest einige Readings aktualisieren, aber brauche bzw will keine Events
Anscheinend verstehe ich Dein Anliegen nicht. Wenn ich das lese, möchte ich antworten, dass die Readings beim Unifi-Controller doch alle immer wieder aktualisiert werden - bzw. soweit die Clients mit seinem Netzwerk verbunden sind -, aber dass die Events mit den genannten Möglichkeiten reduziert werden können. Oder wenn Du möchtest mit
attr <unifi-controller> event-on-change-reading ist_aus
komplett deaktiviert werden.

Das scheint aber nicht Dein Problem zu sein. Was genau meinst Du mit "das sich zumindest einige Readings aktualisieren"?

Grüße
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

Beta-User

Zitat von: sn0000py am 29 Dezember 2022, 13:15:46
aber nur die Events bzw notify abschalten geht hier gar nicht?

Ich möchte das sich zumindest einige Readings aktualisieren, aber brauche bzw will keine Events
Na ja, mit (Info ohne code-Tags aus #1...!?!)
attr DEVICE timestamp-on-change-rading .*
werden eben auch alle Zeitstempel nur dann aktualisiert, wenn sich das zugehörige Reading ändert. Wenn du das für einzelne Readings nicht so haben willst, wäre das wieder diese "alle nicht, bis auf ..."-Konstruktion, die hier schon gezeigt wurde ((?!bla).*).

Da es um MQTT geht: LWT-Event auf "offline" oä. funktioniert nicht zur Überwachung? (Darum ging es doch eigentlich, oder?)
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

sn0000py

Ok dann machen wir mal eines nach dem anderen.

Beim Unifi DEvice
define Unifi Unifi
attr Unifi event-on-change-reading -.*
attr Unifi room UnifiSwitch
attr Unifi timestamp-on-change-reading .*
#   DEF        10.0.0.95 8443 crypt:5e50005c crypt:5d4d377a641c0211075d
#   FUUID      5d43f628-f33f-1e88-b9ee-f7c4566f282dfbcb
#   FVERSION   74_Unifi.pm:0.235000/2021-01-09
#   LASTInputDev Unifi
#   MSGCNT     2406158
#   NAME       Unifi
#   NOTIFYDEV  global
#   NR         82
#   NTFY_ORDER 50-Unifi
#   STATE      connected
#   TYPE       Unifi
#   UC_VERSION 7.3.76
#   Unifi_MSGCNT 2406158
#   Unifi_TIME 2022-12-29 17:02:22
#   VERSION    3.5.2
#   eventCount 1671425


Bekomme ich nun für die -.* die notify und auch die readings werden geändert - so wie es sein sollte.

Aber zB.:
wz_tv-2529_last_seen 2022-12-29 17:00:04 2022-12-29 17:00:18
wz_tv-2529_snr 38 2022-12-29 16:57:10
wz_tv-2529_uptime 169107 2022-12-29 17:00:18


da ändert sich der uptime Wert nun nicht mehr und auch der timestamp nicht mehr
sobald ich den attr Unifi event-on-change-reading .* setze wird der wieder aktualisiert
wz_tv-2529_last_seen 2022-12-29 17:05:47 2022-12-29 17:06:26
wz_tv-2529_snr 37 2022-12-29 17:06:26
wz_tv-2529_uptime 169450 2022-12-29 17:06:26


Das sollte ja nicht das Verhalten sein oder?

Beta-User

Hast du denn Readings, die mit einem Bindestrich beginnen? Afaik werden die Regexe in diesen Attributen  "Rudi-typisch" jeweils als "ganzer Ausdruck" ausgewertet (also mit  ^ und $ ergänzt) ;) .
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

sn0000py

Ja genau das war der Test das die Readings die mit - beginnen
zb den hier, der wird dann auch geändert, und der timestamp aktualisiert und ich bekomme ein event
-AP_GARTEN_utilization 48,7 2022-12-29 17:24:11

aber eben der hier
wz_tv-2529_uptime 169107 2022-12-29 17:00:18
wird nicht mehr geändert (habe natürlich auch F5 gedrückt usw.)
Da würde ich eben gerne wollen, das der Wert natürlich sich ändert, auch der timestamp aber KEIN event/notify ausgelöst wird

Beta-User

...dann sollte wohl die regex in tocr passend gewählt werden... "Alles" passt m.E. nicht.
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

sn0000py

aber verstehe ich es falsch?

ich dachte der Wert selbst beim Reading sollte trotzdem aktualisiert werden (und dann mit einem druck auf F5 auch sichtbar werden?)