Autor Thema: MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic  (Gelesen 992 mal)

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25334
MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« am: 10 April 2022, 13:38:05 »
Ich habe die beiden Module erweitert, damit in der FHEMWEB Detailansicht das MQTT Verkehr direkt dargestellt werden kann, ohne den Umweg ueber rawEvents & EventMonitor.

Da die Implementation doch komplizierter wurde als erwartet, bin ich nicht sicher, dass ich nicht irgendwo Nebeneffekte eingebaut habe.
Anfassen musste ich ausser den beiden Modulen console.js und 01_FHEMWEB.pm, Letzteres nur leicht.
Gefällt mir Gefällt mir x 6 Liste anzeigen

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20797
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #1 am: 19 April 2022, 18:16:27 »
ich weiß nicht ob es ein Nebeneffekt ist - aber: der clearretain setter gibt bei mir einen Hash Wert zurück und bewirkt nichts. Eine Zwischenversion - also mit clearretain und ohne Show MQTT hatte ich nicht im Einsatz.

Das Show MQTT Traffic sieht gut aus - danke!
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25334
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #2 am: 19 April 2022, 19:33:22 »
Zitat
ich weiß nicht ob es ein Nebeneffekt ist - aber: der clearretain setter gibt bei mir einen Hash Wert zurück und bewirkt nichts.
Das war kein Nebeneffekt, es war schon "immer" so.
Danke fuer den Hinweis, habs gefixt.

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 20797
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #3 am: 25 April 2022, 22:18:52 »
Hallo Rudi,

der neue Effekt von clearretain: er gibt nichts mehr zurück - aber es tut immer noch nichts?

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25334
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #4 am: 26 April 2022, 11:22:46 »
Danke fuer den Hinweis, habs gefixt.

Offline Reinhard.M

  • Full Member
  • ***
  • Beiträge: 286
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #5 am: 15 Mai 2022, 09:22:21 »
Hallo Rudi,
ich beobachte seit einiger Zeit einen Effekt der eventuell mit der Änderung zusammenhängen könnte.
Ich habe ca. 30 Geräte über MQTT2 in FHEM eingebunden. Ich verwende MQTT2_SERVER, alles läuft perfekt. Sporadisch (sagen wir, alle paar Tage) bekommen aber meine Devices keine Verbindung mehr zum Broker. Das kann ich in der Weboberfläche der Devices sehen die alle auf Tasmota laufen. Die Einschränkungen reichen von mehreren Sekunden Verzögerung bis komplette Fehlfunktion (Device reagiert nicht). Das kann mehrere Stunden andauern. Dann ist dieses Verhalten genau so plötzlich wieder verschwunden wie es aufgetaucht ist und alles funktioniert problemlos. Bislang habe ich keine Systematik mit anderen Vorgängen auf meinem Raspi feststellen können, alles läuft vor, während und nach der Störung identisch.
Ich weiß nicht mehr wann ich es zum ersten Mal beobachtet habe, es ist aber noch nicht so lange her und kann zeitlich durchaus mit der Änderung von dir zusammenhängen. Hättest du eine Idee für mich wie ich im Fehlerfall vorgehe um brauchbare Logdaten hierfür zu erhalten? Z.B. welches Device mit welchem verbose Level.

Gruß Reinhard

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4110
  • ... wer sät, der erntet ...
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #6 am: 15 Mai 2022, 21:14:18 »
Wird es irgendwann mal die Möglichkeit geben den Verkehr in dem "Fenster" Show MQTT Traffic zu filtern, wie im Event-Monitor oder ist das was ganz anderes und nicht vergleichbar/umsetzbar ?

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25334
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #7 am: 16 Mai 2022, 10:07:11 »
Zitat
ich beobachte seit einiger Zeit einen Effekt der eventuell mit der Änderung zusammenhängen könnte.
Anhand der Problembeschreibung halte ich FHEM als Verursacher fuer unwahrscheinlich, und diese Aenderung noch viel weniger.
Aber man lernt ja nie aus.

Im Problemfall wuerde ich:
- mit "mosquitto_pub -h <FHEMHOST> -i TESTDEV -t Hello -m World" schauen, ob eine Verbindung zum MQTT2_SERVER moeglich ist. Wenn ja, dann wird ein neues MQTT2_DEVICE mit dem Namen ..._TESTDEV angelegt.
- "attr global verbose 5" setzen, und im Log nach Merkwuerdigkeiten suchen (lassen).
- pruefen, ob ein FHEM-Restart das Problem behebt.
Ist FHEMWEB in dieser Zeit erreichbar?

Zitat
Wird es irgendwann mal die Möglichkeit geben den Verkehr in dem "Fenster" Show MQTT Traffic zu filtern, wie im Event-Monitor oder ist das was ganz anderes und nicht vergleichbar/umsetzbar ?
Der Code verwendet nicht die gleiche Funktion, wie das Event-Monitor, d.h. ich muesste es erneut implementieren.
Wenn noch jemand den Wunsch danach aeussert, werde ich es einbauen.

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4110
  • ... wer sät, der erntet ...
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #8 am: 16 Mai 2022, 11:24:26 »
Ich brauchs mittlerweile nicht mehr und wenn es auch noch (mehr) Arbeit macht auch nicht darauf pochen, bin aber der Meinung das Feature würde FHEM gut "stehen" und bei einem MQTT-Neuling/Anwender mit keinem Bezug zu MQTT zum schnelleren Verständnis beitragen (mir hätte es damals geholfen) und auch die ein oder andere Frage würde sich automatisch erübrigen, das es für die (beruflichen) Entwickler unnötig ist steht ausser Frage.

(Wenns irgendwann mal kommt -> ein Button zum erstellen einer Textdatei (mit den geloggten Daten) zum hier anhängen bei Fragen fänd ich auch gut <-   ::) ich weiß für "Entwickler" unnötig )


Offline xenos1984

  • Developer
  • Full Member
  • ****
  • Beiträge: 462
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #9 am: 16 Mai 2022, 15:31:08 »
Ich würde mich dem anschließen, dass eine Funktion, den MQTT-Traffic gefiltert anzuzeigen, hilfreich wäre (wenn auch nicht unbedingt von mir momentan gebraucht). Vielleicht wäre es in der Form sinnvoll, dass man als "Filter" eine Topic-Wildcard (also ein Topic mit ggf. + und #) eingeben könnte und dann nur Nachrichten bekommt, die zu dem Topic passen. Oder das Format topic:message bzw. cid:topic:message, das in der gleichen Form in readingList von MQTT2_DEVICE benutzt wird. So sieht man genau den Traffic, auf den ein Reading reagiert.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18068
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #10 am: 16 Mai 2022, 15:43:52 »
Hmm, also...

Habe im Moment keine explizite Meinung dazu, als Gewohnheitstier schaue ich sowieso "von außen" (mit Linux-Kommandozeilen-Tools) auf den jeweiligen MQTT-Server, weswegen ich auch mit "rawEvents" nicht die große Erfahrung gesammelt habe. Falls das letztere eigentlich alle Features bietet, um den ein- und ausgehenden Verkehr anzuzeigen, ist es m.E. unnötige Doppelarbeit, und die User, die nicht sowieso wissen, wie es geht, muss man dann eh' coachen.

Andererseits hat der Ansatz "ein Tool an zentraler Stelle" auch was für sich (wenn es einfach zu benutzen ist).
Tendenziell würde ich auch die "MQTT-like" Notation bevorzugen, wenn es als MQTT-Tool zu interpretieren sein soll.

Bedarf für das Sichtbarmachen vom Traffic an sich ist jedenfalls gegeben (v.a., weil eine bei vielen beliebte Handy-App wohl nicht mehr kostenlos angeboten/aktualisiert wird, und man diesen Nutzerkreis nicht wirklich gut auf die Kommandozeile verweisen kann...), von daher nochmal ein ausdrückliches Danke für das Tool an sich!
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline xenos1984

  • Developer
  • Full Member
  • ****
  • Beiträge: 462
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #11 am: 16 Mai 2022, 17:43:41 »
Ich benutze normalerweise auch die Kommandozeile, insbesondere mosquitto_sub, um den Verkehr anzuzeigen - damit hat man dann automatisch die Möglichkeit, nach Topic zu filtern.

Was bei der Kommandozeilen-Methode bzw. konkret bei mosquitto_sub aber wohl nicht geht ist die Client-ID des Absenders einer Nachricht anzuzeigen oder danach zu filtern - was im MQTT2_SERVER aber vermutlich gehen sollte.

Unabhängig von der Filter-Frage: Wäre es möglich (und sinnvoll), unter "Show MQTT traffic" die Client-ID mit anzuzeigen?

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25334
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #12 am: 17 Mai 2022, 22:18:16 »
Ich habe die Traffic-Anzeige etwas erweitert:
- MQTT2_SERVER zeigt statt RCVD die clientID an
- es gibt eine Reset-Moeglichkeit, analog zum Event-Monitor
- es gibt einen Filter, der den Inhalt der ganzen Zeile als Regexp filtert.
- wenn das Message ein JSON ist, dann kann man die Daten mit draufklicken formatiert anzeigen.
Gefällt mir Gefällt mir x 4 Liste anzeigen

Offline xenos1984

  • Developer
  • Full Member
  • ****
  • Beiträge: 462
Antw:MQTT2_CLIENT / MQTT2_SERVER: Show MQTT traffic
« Antwort #13 am: Gestern um 08:31:57 »
Edit: Kommando zurück, alles funktioniert wie gewünscht. Ich musste nur das JavaScript mit Strg+F5 neu laden. Super!

Ich habe gerade ein Update gemacht (FHEM komplett), allerdings komme ich noch nicht ganz mit den neuen Funktionen klar:

- MQTT2_SERVER zeigt statt RCVD die clientID an

Sieht gut aus. Allerdings meine ich, dass vorher nach jeder Nachricht ein Zeilenumbruch war, der jetzt nicht mehr da ist - ersteres fand ich übersichtlicher.

Zitat
- es gibt eine Reset-Moeglichkeit, analog zum Event-Monitor
- es gibt einen Filter, der den Inhalt der ganzen Zeile als Regexp filtert.

Wo sich die versteckt haben, konnte ich noch nicht herausfinden...

Zitat
- wenn das Message ein JSON ist, dann kann man die Daten mit draufklicken formatiert anzeigen.

Kann es sein, dass man das Encoding anders einstellen muss als den "alten" Standardwert (ich erinnere mich da an eine lange Diskussion rund um Unicode). Bei mir sieht das Ergebnis etwas unschön aus und klicken lässt sich nichts. Vorher sah das JSON normal aus. Die Daten werden im Beispiel von mosquitto_pub gesendet, aber mit JSON von einem Arduino mit PubSubClient sieht es genau so aus.

["","status/meter/water/cold","{\u0022media\u0022:\u0022cold water\u0022,\u0022meter\u0022:\u0022multical21\u0022,\u0022name\u0022:\u0022cold\u0022,\u0022id\u0022:\u002276522329\u0022,\u0022total_m3\u0022:19.463,\u0022target_m3\u0022:19.238,\u0022max_flow_m3h\u0022:0,\u0022flow_temperature_c\u0022:127,\u0022external_temperature_c\u0022:127,\u0022current_status\u0022:\u0022\u0022,\u0022time_dry\u0022:\u0022\u0022,\u0022time_reversed\u0022:\u0022\u0022,\u0022time_leaking\u0022:\u0022\u0022,\u0022time_bursting\u0022:\u0022\u0022,\u0022timestamp\u0022:\u00222022-05-18T06:22:29Z\u0022,\u0022device\u0022:\u0022rtl433[]\u0022,\u0022rssi_dbm\u0022:999}"]
« Letzte Änderung: Gestern um 08:38:09 von xenos1984 »