FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: mähschaf am 11 September 2023, 18:39:26

Titel: [GELÖST] MQTT2_SERVER Attribut ignoreRegexp - Anregung für die CommandRef
Beitrag von: mähschaf am 11 September 2023, 18:39:26
Hallo und guten Abend,

Ich habe versucht, die Fülle der Messages im Reading RETAINED mit Hilfe des Attributes ignoreRegexp zu begrenzen.

ZitatignoreRegexp
if $topic:$message matches ignoreRegexp, then it will be silently ignored. For general purpose servers, it is a good idea to set it e.g. to

    homeassistant/[^:"]+/config|tasmota/discovery/[^/:]+/(config|sensors)

and also include the topics used to send commands towards your MQTT clients.

Das hat bei mir zunächst überhaupt nicht geklappt. Ich bin unsicher, aber ich vermute, das hat zwei Ursachen:

1. Die Slashes "/" müssen maskiert werden?! *wegduck*
2. "$topic:$message" hat immer einen Doppelpunkt und wird von dem Beispiel-Regex nicht gematched.

In der MQTT2_SERVER.pm findet sich folgender Ausdruck:
Zitatmy $ir = AttrVal($serverName, "ignoreRegexp", undef);
  return if(defined($ir) && "$tp:$val" =~ m/$ir/);

Ich vermute nach etwas Testen, der Ausdruck =~ m/$ir/ wird nur dann wahr, wenn die ganze Zeile zutrifft?

EDIT: Nein, eigentlich sollte das nicht notwendig sein, das folgende Appendum :.* an die regular expression sollte als obsolet sein. Sorry...

Mein Vorschlag - falls ich mich nicht irre (möglich) UND das hier überhaupt der richtige Ort für solche Vorschläge ist - wäre daher:

ZitatignoreRegexp
if $topic:$message matches ignoreRegexp, then it will be silently ignored. For general purpose servers, it is a good idea to set it e.g. to

    homeassistant\/[^:"]+\/config:.*|tasmota\/discovery\/[^\/:]+\/(config|sensors):.*

and also include the topics used to send commands towards your MQTT clients.

Falls ich ganz daneben liegen sollte oder der Vorschlag unangemessen ist, haut mich ruhig. Aber ich dachte, ich traue mich jetzt einfach mal :-)

Viele Grüße (und sorry, falls ich falsch liege und Eure Zeit verschwendet habe),
Martin
Titel: Aw: [GELÖST] MQTT2_SERVER Attribut ignoreRegexp - Anregung für die CommandRef
Beitrag von: rudolfkoenig am 11 September 2023, 20:05:09
Trauen ist richtig :), trotzdem:
- Slash (/) muss nicht geschuetzt werden, weil es in einer Variable daherkommt. Wenn es ein Problem waere, dann muesste im Log eine Fehlermeldung zu sehen sein.
- der Regexp trifft auch nur ein Teil der Zeile, da ^ und $ fehlen. Deswegen ist die Spezifikation des Wertes im Regexp (samt Doppelpunkt) optional.