[gelöst] MQTT2-Device: Topic mit $SYS/broker empfangen

Begonnen von Papaloewe, 21 Januar 2021, 17:09:47

Vorheriges Thema - Nächstes Thema

Papaloewe

Hallo,
ich habe gesehen, dass der mosquitto-Server fleissig Werte unter $SYS/broker published.
Ich bin leider nicht der regex-Experte und habe es damit versucht als bridgeRegex-Attribut:
\$(SYS)/(broker)[/]?.*:.* "sys-mqtt"

Funktioniert aber leider nicht.
Kann mir jemand bitte den entscheidenden Tipp geben?

Danke & Gruß
Thomas

Beta-User

Ungetestet:
[$]SYS/broker[/]?.*:.* "sys-mqtt"
(die capturing groups verwendest du ja nicht, daher kannst du das mAn. auch plain text schreiben).
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

rudolfkoenig

Der Haken mit dem $SYS Topic ist, dass man es es explizit bestellen muss: MQTT2_CLIENTs default is #, da kommt aber erst mal nichts, erst nach "attr m2c subscriptions # $SYS/#"  entsteht bei mir sowas:
Attributes:
   IODev      m2c
   readingList m2c:\x24SYS/broker/uptime:.* uptime
m2c:\x24SYS/broker/load/messages/received/1min:.* 1min
m2c:\x24SYS/broker/load/messages/sent/1min:.* 1min
m2c:\x24SYS/broker/load/publish/sent/1min:.* 1min
m2c:\x24SYS/broker/load/bytes/received/1min:.* 1min
m2c:\x24SYS/broker/load/bytes/sent/1min:.* 1min
m2c:\x24SYS/broker/load/sockets/1min:.* 1min
m2c:\x24SYS/broker/load/connections/1min:.* 1min
m2c:\x24SYS/broker/load/messages/received/5min:.* 5min
m2c:\x24SYS/broker/load/messages/sent/5min:.* 5min
m2c:\x24SYS/broker/load/publish/sent/5min:.* 5min
m2c:\x24SYS/broker/load/bytes/received/5min:.* 5min
m2c:\x24SYS/broker/load/bytes/sent/5min:.* 5min
m2c:\x24SYS/broker/load/sockets/5min:.* 5min
m2c:\x24SYS/broker/load/connections/5min:.* 5min
m2c:\x24SYS/broker/load/messages/sent/15min:.* 15min
m2c:\x24SYS/broker/load/publish/sent/15min:.* 15min
m2c:\x24SYS/broker/load/bytes/received/15min:.* 15min
m2c:\x24SYS/broker/load/bytes/sent/15min:.* 15min
m2c:\x24SYS/broker/store/messages/bytes:.* bytes
m2c:\x24SYS/broker/heap/current:.* current
m2c:\x24SYS/broker/messages/sent:.* sent
m2c:\x24SYS/broker/publish/messages/sent:.* sent
m2c:\x24SYS/broker/bytes/sent:.* sent
m2c:\x24SYS/broker/publish/bytes/sent:.* sent

Papaloewe

Probiere ich gleich aus.

So sehen die Topics im MQTTExplorer aus:
$SYS/broker/uptime
$SYS/broker/load/publish
$SYS/broker/subscriptions/count


nur ein paar Beispiele.

Papaloewe

Ah, jetzt ja!  ;)

Beide Tipps zusammen brachten dann auch prompt den Erfolg.
Vielen Dank.

Papaloewe

Das MQTT2-Device wurde automatisch angelegt, aber es sind keine Readings da?

Internals:
   CID        sys-mqtt
   DEF        sys-mqtt
   DEVICETOPIC MQTT2_sys_mqtt
   FUUID      6009b0a0-f33f-0e14-99dc-ab56d4c4d856d1e6
   IODev      MQTT2_mosquito_docker
   NAME       MQTT2_sys_mqtt
   NR         62958
   STATE      ???
   TYPE       MQTT2_DEVICE
   READINGS:
     2021-01-21 17:51:15   associatedWith  MQTT2_esp_bridge2
Attributes:
   IODev      MQTT2_mosquito_docker
   readingList \x24SYS/broker/uptime:.* uptime
\x24SYS/broker/load/messages/received/1min:.* 1min
\x24SYS/broker/load/messages/sent/1min:.* 1min
\x24SYS/broker/load/publish/received/1min:.* 1min
\x24SYS/broker/load/publish/sent/1min:.* 1min
\x24SYS/broker/load/bytes/received/1min:.* 1min
\x24SYS/broker/load/bytes/sent/1min:.* 1min
\x24SYS/broker/load/messages/received/5min:.* 5min
\x24SYS/broker/load/messages/sent/5min:.* 5min
\x24SYS/broker/load/publish/received/5min:.* 5min
\x24SYS/broker/load/publish/sent/5min:.* 5min
\x24SYS/broker/load/bytes/received/5min:.* 5min
\x24SYS/broker/load/bytes/sent/5min:.* 5min
\x24SYS/broker/load/messages/received/15min:.* 15min
\x24SYS/broker/load/messages/sent/15min:.* 15min
\x24SYS/broker/load/publish/received/15min:.* 15min
\x24SYS/broker/load/publish/sent/15min:.* 15min
\x24SYS/broker/load/bytes/received/15min:.* 15min
\x24SYS/broker/load/bytes/sent/15min:.* 15min
\x24SYS/broker/messages/received:.* received
\x24SYS/broker/messages/sent:.* sent
\x24SYS/broker/publish/messages/received:.* received
\x24SYS/broker/publish/messages/sent:.* sent
\x24SYS/broker/bytes/received:.* received
\x24SYS/broker/bytes/sent:.* sent
\x24SYS/broker/publish/bytes/received:.* received
\x24SYS/broker/publish/bytes/sent:.* sent
\x24SYS/broker/store/messages/bytes:.* bytes
   room       MQTT2_DEVICE

Beta-User

Hmm, dass da gar nichts ist, finde ich komisch, aber ggf. müßte man den Verkehr auf MQTT-Ebene mal ansehen. (habe  grade nur keinen mosquitto am laufen und kann daher schlecht mitreden...).

Aber dass die diversen Zweige alle jeweils im gleichen Reading landen würden, ist selbstredend eine andere Sache, die du dir dann mal ansehen solltest. Eher dann (z.B.) so:
\x24SYS/broker/load/messages/received/1min:.* 1min_r_messages
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

Papaloewe

Zitat von: Beta-User am 21 Januar 2021, 18:08:13
Aber dass die diversen Zweige alle jeweils im gleichen Reading landen würden, ist selbstredend eine andere Sache, die du dir dann mal ansehen solltest.

Ja, das ist mir auch schon aufgefallen, aber ich dachte zumindest für die Eindeutigen sollten Readings angelegt werden.

rudolfkoenig

Mit folgende fhem.cfg kriege ich relativ verstaendliche Readings:
define w FHEMWEB 8083 global
define ac autocreate

define m2c MQTT2_CLIENT localhost:1883
attr m2c autocreate 1
attr m2c subscriptions # $SYS/#

define MQTT2_m2c MQTT2_DEVICE m2c
attr MQTT2_m2c readingList\
  .*SYS/broker/.+:.* { $TOPIC=~m,SYS/broker/(.*),;; my %h;; $h{$1}=$EVENT;; \%h }

Papaloewe