FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Rampler am 13 Dezember 2022, 11:26:00

Titel: [gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Rampler am 13 Dezember 2022, 11:26:00
Hallo zusammen,
ich möchte bestimmte Readings unterdrücken.
Ich wiki steht:

Falls ein Reading namens "unwanted" KEINE Events erzeugen soll, lässt sich das mit
    attr <device> event-on-change-reading (?!unwanted).*
unterdrücken


Ich habe nun folgendes Reading:
Aussentemperatur:0.2,(?!Warmwassertemperatur.*),.*
jedoch wird das Reading immer noch geschrieben.

Was mache ich falsch ?

VG  Klaus
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Otto123 am 13 Dezember 2022, 11:29:40
Hallo Klaus,

event-on-change-reading unterdrückt die events, nicht das schreiben des Readings.

Gruß Otto
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Beta-User am 13 Dezember 2022, 11:32:39
und wenn ganz am Ende ",.*" steht, ist das möglicherweise auch nicht im Sinne des Erfinders...

Wie immer: Ohne kompletten Input und sinnvolle Beschreibung des eigentlichen Schmerzes kann man schlecht beurteilen, wie der Schmerz beseitigt werden könnte.
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: betateilchen am 13 Dezember 2022, 11:37:23
Zitat von: Otto123 am 13 Dezember 2022, 11:29:40
event-on-change-reading unterdrückt die events nicht das schreiben des Readings.

und wenn Otto jetzt auch noch ein Komma an die richtige Stelle gesetzt hätte, wäre sein Text erheblich einfacher zu verstehen  8)
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Otto123 am 13 Dezember 2022, 11:43:48
Zitat von: betateilchen am 13 Dezember 2022, 11:37:23
und wenn Otto jetzt auch noch ein Komma an die richtige Stelle gesetzt hätte, wäre sein Text erheblich einfacher zu verstehen  8)
Meine große Schwäche  ;D
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Rampler am 13 Dezember 2022, 11:50:30
Zitat von: Otto123 am 13 Dezember 2022, 11:29:40
Hallo Klaus,

event-on-change-reading unterdrückt die events, nicht das schreiben des Readings.

Gruß Otto

Hi Otto,
ja sorry, war etwas schwammig beschrieben...
Das Reading Warmwassertemperatur wird immer verändert, das will und kann ich auch nicht unterbinden.
Jedoch möchte ich den einen Event "Warmwassertemperatur" unterdrücken. Alle anderen Readings sollen Events erzeugen, deswegen, ".*" am Schluss.

Gruß Klaus
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Wernieman am 13 Dezember 2022, 11:57:53
Sorry aber ich verstehe Dich nicht ..

ZitatDas Reading Warmwassertemperatur wird immer verändert, das will und kann ich auch nicht unterbinden.
Jedoch möchte ich den einen Event "Warmwassertemperatur" unterdrücken

Willst Du jetzt Warmwassertemperatur haben (erster Satz) oder nicht (zweiter Satz)?
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Rampler am 13 Dezember 2022, 12:06:34
Zitat von: Wernieman am 13 Dezember 2022, 11:57:53
Sorry aber ich verstehe Dich nicht ..
Willst Du jetzt Warmwassertemperatur haben (erster Satz) oder nicht (zweiter Satz)?

So, wie Otto bereits geschrieben hat, die  Readingsaktualisierung kann nicht verhindert werden.
Mit dem event-on-change-reading  wird bestimmt ob man für bestimmte Readings auch Events bei Veränderung erzeugen will.
Von daher möchte ich das Event unterdrücken..
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Beta-User am 13 Dezember 2022, 12:09:15
...ist es denn sooooo schwer?

Aussentemperatur:0.2,(?!Warmwassertemperatur).*

EDIT: Langform...

event-on-change-reading ist eine POSITIVLISTE, nur was dort gelistet wird, erzeugt überhaupt noch Events (es sei denn, man nimmt ergänzend (!) event-on-update-reading" zu Hilfe). ".*" bedeutet: Alles, aber nur bei Veränderung, die andere Fassung ist dann "alles, außer xy".
Und es wird der Reihe nach abgearbeitet, also die erste Angabe mit dem Threshold nur, wenn dieser überschritten ist (oder die max-Zeit überschritten wird, falls angegeben).
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Rampler am 13 Dezember 2022, 12:18:20
Wie gesagt im Wiki steht:
Falls ein Reading namens "unwanted" KEINE Events erzeugen soll, lässt sich das mit
    attr <device> event-on-change-reading (?!unwanted).*
unterdrücken


Deshalb meine Frage ...
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Beta-User am 13 Dezember 2022, 12:20:43
JA. ABER: ohne das Komma! Siehe die konkrete Fassung vom letzten Post. Sonst gibt es am Ende der Liste IMMER einen match, nämlich ".*"...
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Rampler am 13 Dezember 2022, 14:17:29
So, jetzt habe ich es endlich auch gecheckt..
Danke nochmal !!
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: bartman121 am 13 Dezember 2022, 15:34:06
Zitat von: Beta-User am 13 Dezember 2022, 12:09:15
...ist es denn sooooo schwer?

Aussentemperatur:0.2,(?!Warmwassertemperatur).*

EDIT: Langform...

event-on-change-reading ist eine POSITIVLISTE, nur was dort gelistet wird, erzeugt überhaupt noch Events (es sei denn, man nimmt ergänzend (!) event-on-update-reading" zu Hilfe). ".*" bedeutet: Alles, aber nur bei Veränderung, die andere Fassung ist dann "alles, außer xy".
Und es wird der Reihe nach abgearbeitet, also die erste Angabe mit dem Threshold nur, wenn dieser überschritten ist (oder die max-Zeit überschritten wird, falls angegeben).

Naja, eine Positivliste besagt doch nur, dass alles herangezogen wird, was auf den Regexp-matched ....

Wann zum Beispiel im Fall vom unifi-controller unmengen an Readings hat, deren Name sich unterscheidet, aber manche readings (bestimmte Suffixe) nicht will, dann geht auch sowas:
.*^((?!last_seen|uptime|snr|lastUpdate|utilization).)*$
Titel: Antw:event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Beta-User am 13 Dezember 2022, 15:55:27
Zitat von: bartman121 am 13 Dezember 2022, 15:34:06
Naja, eine Positivliste besagt doch nur, dass alles herangezogen wird, was auf den Regexp-matched ....
...oder eben auch, dass alles nicht herangezogen wird, was nicht matcht. Und genau das ist der Sinn der Negativ-regexp. Dass man diese erweitern kann, versteht sich eigentlich von selbst, aber da so viele daran scheitern, ist das Beispiel m.E. vielleicht hilfreich.

Würde aber über die Syntax nochmal nachdenken...
Zitat
.*^((?!last_seen|uptime|snr|lastUpdate|utilization).)*$
Wo ist der funktionale Unterschied zu dem hier:
^(?!last_seen|uptime|snr|lastUpdate|utilization).*$
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: bartman121 am 13 Dezember 2022, 17:26:06
nunja, merkste selbst?

bei meinem Beispiel kann die ausgeschlossene Zeichenkette irgendwo im String stehen, bei deinem Beispiel nur am Anfang.

Es geht bei mir um den Suffix an einem Reading-Namen....
  2022-12-13 17:23:49   6300a13c46e0fb0018e86735 connected
     2022-12-13 17:23:49   6300a13c46e0fb0018e86735_accesspoint AP-FLUR
     2022-12-13 17:23:49   6300a13c46e0fb0018e86735_essid not_used_24
     2022-12-13 17:23:49   6300a13c46e0fb0018e86735_hostname 192.168.2.63
     2022-12-13 17:23:49   6300a13c46e0fb0018e86735_last_seen 2022-12-13 17:23:49
     2022-12-13 17:23:49   6300a13c46e0fb0018e86735_snr 54
     2022-12-13 17:23:49   6300a13c46e0fb0018e86735_uptime 655072
     2022-12-13 17:23:49   6300a48c46e0fb0018e86800 connected
     2022-12-13 17:23:49   6300a48c46e0fb0018e86800_accesspoint AP-FLUR
     2022-12-13 17:23:49   6300a48c46e0fb0018e86800_essid not_used_24
     2022-12-13 17:23:49   6300a48c46e0fb0018e86800_hostname 192.168.2.8
     2022-12-13 17:23:49   6300a48c46e0fb0018e86800_last_seen 2022-12-13 17:23:49
     2022-12-13 17:23:49   6300a48c46e0fb0018e86800_snr 29
     2022-12-13 17:23:49   6300a48c46e0fb0018e86800_uptime 1484548
     2022-12-13 17:23:49   6300aac846e0fb0018e869de disconnected
     2022-12-13 17:23:49   6300aac846e0fb0018e869de_accesspoint unknown
     2022-12-13 17:23:49   6300aac846e0fb0018e869de_essid UNDEFINED
     2022-12-13 17:23:49   6300aac846e0fb0018e869de_hostname Unknown
     2022-12-13 17:23:49   6300aac846e0fb0018e869de_last_seen 2022-10-17 19:29:29
     2022-10-18 04:56:35   6300aac846e0fb0018e869de_snr 37
     2022-10-18 04:56:35   6300aac846e0fb0018e869de_uptime 46767
     2022-12-13 17:23:49   6300bfb646e0fb0018e881e0 disconnected
     2022-12-13 17:23:49   6300bfb646e0fb0018e881e0_accesspoint unknown
     2022-12-13 17:23:49   6300bfb646e0fb0018e881e0_essid UNDEFINED
     2022-12-13 17:23:49   6300bfb646e0fb0018e881e0_hostname Unknown
     2022-12-13 17:23:49   6300bfb646e0fb0018e881e0_last_seen 2022-12-12 22:51:38
     2022-12-13 05:33:04   6300bfb646e0fb0018e881e0_snr 57
     2022-12-13 05:33:04   6300bfb646e0fb0018e881e0_uptime 21
     2022-12-13 17:23:49   6300c00046e0fb0018e8827b disconnected
     2022-12-13 17:23:49   6300c00046e0fb0018e8827b_accesspoint AP-FLUR
     2022-12-13 17:23:49   6300c00046e0fb0018e8827b_essid not_used_24
     2022-12-13 17:23:49   6300c00046e0fb0018e8827b_hostname 192.168.2.82
     2022-12-13 17:23:49   6300c00046e0fb0018e8827b_last_seen 2022-12-13 15:03:00
     2022-12-13 17:23:49   6300c00046e0fb0018e8827b_snr 39
     2022-12-13 17:23:49   6300c00046e0fb0018e8827b_uptime 10
     2022-12-13 17:23:49   6300c03f46e0fb0018e8833b disconnected
     2022-12-13 17:23:49   6300c03f46e0fb0018e8833b_accesspoint AP-FLUR
     2022-12-13 17:23:49   6300c03f46e0fb0018e8833b_essid not_used_24
     2022-12-13 17:23:49   6300c03f46e0fb0018e8833b_hostname 192.168.2.76
     2022-12-13 17:23:49   6300c03f46e0fb0018e8833b_last_seen 2022-12-13 05:59:02
     2022-12-13 17:23:49   6300c03f46e0fb0018e8833b_snr 37
     2022-12-13 17:23:49   6300c03f46e0fb0018e8833b_uptime 13
     2022-12-13 17:23:49   6300c06a46e0fb0018e88470 disconnected
     2022-12-13 17:23:49   6300c06a46e0fb0018e88470_accesspoint unknown
     2022-12-13 17:23:49   6300c06a46e0fb0018e88470_essid UNDEFINED
     2022-12-13 17:23:49   6300c06a46e0fb0018e88470_hostname Unknown
     2022-12-13 17:23:49   6300c06a46e0fb0018e88470_last_seen 2022-12-13 01:19:07
     2022-12-13 05:33:04   6300c06a46e0fb0018e88470_snr 41
     2022-12-13 05:33:04   6300c06a46e0fb0018e88470_uptime 30


Es geht auch nicht darum, dass ich es besser kann als du, ich habs nämlich zusammengeklaut und ein bisschen probiert. Ihr könnt das definitiv besser
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Beta-User am 13 Dezember 2022, 18:53:47
Na ja, unabhängig von diesem etwas überraschenden Ergebnis: Das "^" zwischendrin kann eigentlich nicht stimmen, das sollte eigentlich den Anfang markieren, ist vermutlich hier nur mehr oder weniger komplett wirkungslos, weil fhem.pl da sowieso was ergänzt. Wäre mir das nicht ins Auge gestochen hätte ich dazu auch nichts geschrieben, so ist es halt einfach nur sehr "seltsam"...

Ohne diese "Garnitur" für Anfang und Ende wäre es dann:
.*(?!last_seen|uptime|snr|lastUpdate|utilization).*
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Wernieman am 13 Dezember 2022, 20:10:49
Würde ich auch so sehen. Eigentlich ein "Bug", das es funktioniert mit einem ^ mittendrin ... zum Glück aktuell nur ein "Schönheitsfehler".

Nur sollte man sich so einen "Schwachsinn" nicht angewöhnen!
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: bartman121 am 13 Dezember 2022, 21:03:26
ich lasse mich gern belehren ....

Dann bitte doch mal die korrekte Syntax dafür empfehlen, bisher bekomme ich außer "ist unfug" nichts korrektes zu lesen, zumindest wenn ich regex101.com glauben darf.

Schaut euch doch die Screenshots an ....

Für mich jedenfalls funktioniert der Schwachsinn....
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Wernieman am 13 Dezember 2022, 21:09:37
y aber eine Lösung wurde Dir schon geschrieben. Und ja .. auch regex101.com arbeitet "nur" mit fertigen Libarys, welche genau so etwas wahrscheinlich ausbügeln.

P.S. Rate mal, warum ich "Schwachsinn" in "" gesetzt habe ...
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Damian am 13 Dezember 2022, 21:13:48
Vieles wird klar, wenn man weiß, dass Routinen vom Rudi ^ am Anfang und $ am Ende der Regex hinzufügen. DOIF macht das z. B. nicht.
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: bartman121 am 13 Dezember 2022, 21:15:21
wo wurde mir denn eine fertige Lösung geboten?

ich will einfach nur XXX_<auf gar keinen fall das oder dies oder ....>.... haben ...

Ich kenne die Namen von XXX nicht ....
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Wernieman am 13 Dezember 2022, 22:29:23
#15
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: bartman121 am 14 Dezember 2022, 06:11:07
okay, regex101 zeigt mir aber, dass #15 trotzdem auf alles matched...  (siehe Screenshot oben)

Kann das jetzt Jemand verifizieren?
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Beta-User am 14 Dezember 2022, 07:12:28
Wirklich interessantes Thema...

Für regex101:
^(?!.*(?:last_seen|uptime|snr|lastUpdate|utilization)).*$

Im Attribut dann ohne die Anfangs-/End-Markieungen:
(?!.*(?:last_seen|uptime|snr|lastUpdate|utilization)).*
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: bartman121 am 14 Dezember 2022, 21:14:24
okay .... klappt nicht :/
Argument (?!.*(? for attr unificontroller event-on-change-reading is not a valid regexp: Sequence (?$...) not implemented in regex; marked by <-- HERE in m/^(?!.*(?$ <-- HERE / at fhem.pl line 3186.


Hat Jemand eine Idee?
Titel: Antw:[gelöst] event-on-change-reading für bestimmte Readings unterdrücken
Beitrag von: Beta-User am 15 Dezember 2022, 00:28:58
Argh... - der Threshold-Trenner "Doppelpunkt" ist ja nochmal eine "Spezialität" in diesem Zusammenhang. Dann klappt das hier nicht mit dem Vermeiden der capture group, aber ohne akzeptiert es FHEM:
(?!.*(last_seen|uptime|snr|lastUpdate|utilization)).*