FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: Papaloewe am 21 Januar 2021, 17:09:47

Titel: [gelöst] MQTT2-Device: Topic mit $SYS/broker empfangen
Beitrag von: Papaloewe am 21 Januar 2021, 17:09:47
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
Titel: Antw:MQTT2-Device: Topic mit $SYS/broker empfangen
Beitrag von: Beta-User am 21 Januar 2021, 17:14:01
Ungetestet:
[$]SYS/broker[/]?.*:.* "sys-mqtt"
(die capturing groups verwendest du ja nicht, daher kannst du das mAn. auch plain text schreiben).
Titel: Antw:MQTT2-Device: Topic mit $SYS/broker empfangen
Beitrag von: rudolfkoenig am 21 Januar 2021, 17:21:44
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
Titel: Antw:MQTT2-Device: Topic mit $SYS/broker empfangen
Beitrag von: Papaloewe am 21 Januar 2021, 17:23:55
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.
Titel: Antw:MQTT2-Device: Topic mit $SYS/broker empfangen
Beitrag von: Papaloewe am 21 Januar 2021, 17:44:23
Ah, jetzt ja!  ;)

Beide Tipps zusammen brachten dann auch prompt den Erfolg.
Vielen Dank.
Titel: Antw:MQTT2-Device: Topic mit $SYS/broker empfangen
Beitrag von: Papaloewe am 21 Januar 2021, 17:53:27
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
Titel: Antw:MQTT2-Device: Topic mit $SYS/broker empfangen
Beitrag von: Beta-User am 21 Januar 2021, 18:08:13
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
Titel: Antw:MQTT2-Device: Topic mit $SYS/broker empfangen
Beitrag von: Papaloewe am 21 Januar 2021, 18:11:29
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.
Titel: Antw:MQTT2-Device: Topic mit $SYS/broker empfangen
Beitrag von: rudolfkoenig am 21 Januar 2021, 21:01:06
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 }
Titel: Antw:MQTT2-Device: Topic mit $SYS/broker empfangen
Beitrag von: Papaloewe am 22 Januar 2021, 12:31:38
Ich jetzt auch.

Besten Dank.