Was macht mein Loxone Miniserver im Netzwerk?

Bei vielen Problemen mit dem Miniserver kann ein Troubleshooting im Netzwerk helfen, die Ursache von Problemen zu finden oder zumindest das Problem einzugrenzen. U.a. betrifft dies die folgenden Punkte:

  • Kommunikation des Miniservers über TCP/IP mit dem Internet, also Abfrage von Wetterdaten

  • Steuerung und/oder Abfrage von Geräten per UDP, Modbus/TCP, WakeOnLan

  • Kommunikation zwischen Intercom und SIP Providern als auch Intercom mit Miniserver

  • Analyse von Protokollen und Vergleich von "Soll" mit "Ist"

Was brauche ich dafür?

Ein sehr hilfreiches Tool für das Troubleshooting ist Wireshark. Mit diesem Tool kann man Pakete im Netzwerk aufzeichnen. Da die meiste Kommunikation im Netzwerk über Unicasts läuft, d.h. direkt zwischen den beiden beteiligten Geräten von einer IP-Adresse zu einer anderen IP-Adresse, sieht man mit Wireshark nur dann Pakete, wenn eines der beteiligten Geräte der PC oder Mac selbst ist. In den anderen Fällen, wenn man z.B. die Kommunikation zwischen Miniserver und Lüftungsanlage per Modbus/TCP oder zwischen Miniserver und Loxone mitschneiden möchte, dann muss man die Kommunikation auf einem Gerät "anzapfen", welches sich im Datenpfad zwischen den beiden Geräten befindet. Das kann z.B. eine Fritzbox sein oder ein Netzwerkswitch, der eine sogenannte Portspiegelung, auch SPAN oder Mirroring genannt, unterstützt.

Capture über den PC / Mac

Um Pakete über den eigenen Windows PC aufzuzeichnen zu können wird ein entsprechender Treiber benötigt, der im Installationspaket von Wireshark enthalten ist. Der aktuelle Treiber heisst Npcap und ist eine Weiterentwicklung von Winpcap. Früher gab es den Treiber Winpcap nur für Netzwerkkarten mit LAN Interface, aber nicht für WLAN. Für OS-X ist dieser Treiber nicht erforderlich. Häufig möchte man alle Pakete aufzeichnen und nicht nur die Pakete, die für den eigenen PC bestimmt sind. Dieser Modus nennt sich "promiscuous" und ist insbesondere erforderlich, wenn man über eine Porspiegelung auf einem Netzwerkswitch die Pakete aufzeichnet. Möglicherweise funktioniert dieser Modus nicht mit jeder Netzwerkkarte. 

Ein Hinweis noch am Rande für OS-X Anwender: Es gibt ein zusätzliches (kostenloses) Programm "Airtool" von Adrian Granados (https://www.adriangranados.com/apps/airtool), mit dem man sehr flexibel im WLAN Pakete aufzeichnen kann und z.B. Kanäle, Frequenzband wählen kann und sogar den WLAN Header und Steuerpakete im WLAN aufzeichnen kann. Für ein Aufzeichnen in Verbindung mit dem Miniserver braucht man das i.d.R. nicht.

Capture über Netzwerkswitch

Bei Netzwerkswitchen, die so eine Funktion unterstützen, wird häufig ein Port ausgewählt, der auf einen anderen Port gespiegelt wird. An dem Zielport schließt man dann den eigenen PC mit Wireshark an. Es ist sinnvoll, dass der PC eine zweite Schnittstelle, z.B. WLAN hat, um weiterhin den Miniserver oder andere Geräte steuern zu können. Für weitere Hinweise bitte im Handbuch des jeweiligen Switches nachlesen.

Capture über Fritzbox

Bei einer Fritzbox muss man sich über die URL https://fritz.box/html/capture.html anmelden und bekommt dann das nachfolgende Menü.

Je nach Problem kann man die passende Schnittstelle auswählen. Für die Kommunikation von und zum Internet bietet sich die Schnittstelle "Internetverbindung" an. Je nach Anbindung zum Internet gibt es evtl. eine dedizierte Schnittstelle für Daten und eine für VoIP, sofern der Provider diese Funktion mit dem Internetanschluss anbietet. Man sollte natürlich nicht gerade große Downloads starten, wenn man die Pakete aufzeichnen möchte, um die Datenmenge möglichst überschaubar zu halten. Wenn man die Kommunikation zwischen Miniserver und einem Gerät im LAN mitschneiden möchte, dann sollte eines der Geräte direkt an der Fritzbox angeschlossen sein bzw. werden. Dieses Interface "ethX" kann direkt ausgewählt werden. Alternativ kann man mit "lan" auch alle LAN Schnittstellen auswählen.

Das Aufzeichnen wird über die Taste "Start" gestartet und nach dem Ende mit "Stop" im Download Ordner gespeichert. Die Endung lautet i.d.R. .lan 

Tipp

Die Endung .lan sollte mit der Applikation Wireshark verknüpft werden, damit die Pakete nach einem Klick auf die Datei automatisch mit Wireshark geladen werden.

Schritt-für-Schritt-Anleitung

Die Anleitung enthält nur die wichtigsten Punkte. Je nach Art des Problems und dem individuellen Setup im Netzwerk können weitere Schritte erforderlich sein.

  1. Wireshark auf einem PC oder Mac installieren. Download über die offizielle Webseite von Wireshark

  2. Methode für Aufzeichnung wählen, z.B. Capture über Fritzbox, Portspiegelung auf Netzwerkswitch oder direkt auf dem PC bzw. Mac und den o.a. Hinweise folgen bzw. das Handbuch lesen

  3. Aufzeichnung starten und prüfen, ob die gewünschten Pakete aufgezeichnet werden.

  4. Pakete mit Wireshark analysieren

Allgemeine Tipps für die Aufzeichnung und Analyse mit Wireshark

Nachfolgend ist eine Sammlung von allgemeinen Hinweisen, die die Problemanalyse mit Wireshark vereinfachen. Die nachfolgenden Tipps enthalten die Namen der Menüs einer Installation auf einem Mac - Menüpunkte unter Windows können ggf. abweichend heissen.

Displayfilter

Displayfilter sind wahrscheinlich die effektivste Möglichkeit, die gewünschten Pakete aus der langen Liste der aufgezeichneten Pakete herauszufiltern. Folgende Filter sind hilfreich:

  • Name des Protokolls: z.B. tcp, udp, wol, sip

  • Bestimmte Anwendung über einen TCP Port: tcp.port==X (X ist der Port, z.B. 80 für HTTP)

  • Bestimmte IP-Adresse: ip.addr==1.2.3.4, wobei ip.addr für Quell- oder Zieladresse steht, die auch speziell über ip.src==1.2.3.4 oder ip.dst==1.2.3.4 gewählt werden können

  • Kombination von Bedingungen über ein logisches ODER oder UND:

    • (ip.addr==1.2.3.4) && (tcp.port==80) zeigt nur die Pakete von oder zu dieser IP-Adresse für das Protokoll HTTP

    • (ip.addr==1.2.3.4) || (ip.addr==2.3.4.5) zeigt alle Pakete von oder zu den beiden angegebenen IP-Adressen

  • Negierung der Bedingung: !(eth.src == 38:f9:d3:90:2c:00) zeigt nur Pakete, die nicht von dieser MAC Adresse kommen

  • Die gewünschten Displayfilter können entweder direkt eingegeben werden oder über einen Rechtsklick in die entsprechenden Felder des dekodierten Paketes zusammengestellt werden (Prepare a Filter)

  • Gefilterte Ansichten können über das Menü "Export specific packets ..." selektiv gespeichert werden, während über "Save As ..." immer alle Pakete als Datei gespeichert werden.

Capture Options

Über das Menü "Capture, Options..." oder das Icon mit dem Zahnrad kann die Schnittstelle, z.B. LAN oder WLAN, der "promiscuous" Modus und ggf. noch ein Capture-Filter ausgewählt werden. Sofern die Datenmenge nicht sehr groß wird, ist es i.d.R. einfacher später einen Displayfilter zu wählen, als einen Capture-Filter, der eine andere (simplere) Syntax verwendet.

Tipps für die Aufzeichnung und Analyse bestimmter Protokolle, Applikationen

Nachfolgend ist eine Sammlung von Hinweisen oder Hilfen, um bestimmte Probleme besser erkennen zu können. Gerne kann die Sammlung erweitert werden!

Broadcasts, z.B. Wake on LAN

Broadcasts, wie sie z.B. bei Wake on LAN versendet werden, können sehr einfach mitgeschnitten werden. Da Broadcasts nur im gleichen IP-Subnet bzw. VLAN versendet werden, ist es lediglich erforderlich, dass sich er Aufzeichnungspunkt im lokalen Netz befindet. 

Das o.a. Beispiel enthält den Displayfilter "wol" der gezielt nur die Wake on LAN Pakete anzeigt.  

Kommunikation der Loxone App mit Loxone

Die Loxone App prüft bei jedem Start, ob es eine neuere Version des Miniservers gibt und kommuniziert dabei unverschlüsselt über HTTP mit update.loxone.com. Dieser Name wird per DNS in den eigentlichen Namen loxone-updateserver.s3-website.eu-central-1.amazonaws.com und dann in die IP-Adresse 52.219.73.90 aufgelöst.

Im o.a. Mitschnitt kann man erkennen, dass Loxone sowohl die Seriennummer des Miniservsers, als auch die installierte Version und die Version der App übermittelt. Zusätzlich werden vom mobilen Smartphone automatisch der Typ und die Version des OS mitgesendet. Diese Angaben mögen für Loxone hilfreich sein, allerdings ist die Übermittlung der Seriennummer des Miniservers für einen Updatecheck nicht erforderlich. Anhand der Seriennummer kann Loxone feststellen, wann der Miniserver verkauft wurde, evtl. sogar den Besitzer, sofern der sich bei Loxone registriert hat.

Dann werden ca. 56 KB XML Daten übermittelt, die u.a. die aktuelle Test- Beta- und Release Software für den Miniserver mit Download-URL beinhalten. Anschließend noch die URLs für weitere Loxone Produkte und Air bzw. Tree Komponenten.

Kommunikation der Loxone App mit Türsteuerung / Video

Die Loxone App ruft das Videobild bzw. den Videostream von der Türsteuerung über die konfigurierte URL ab. Nachfolgend ist beschrieben, wie man aus dem Mitschnitt ein JPEG Bild extrahiert. Nach der Aufzeichnung der relevanten Daten, filtert man im Display Filter zunächst die relvanten Daten heraus. Dies kann man z.B. über den TCP Port mit tcp.port==8080 machen, wenn der Webserver der Türsteuerung auf diesem Port läuft. Im nachfolgenden Beispiel liefert die Software MPEG-Streamer, die auf einem Raspberry mit angeschlossener Kamera läuft, die Bilder für die Türsteuerung.

Man kann den Port auch mit der IP-Adresse kombinieren, z.B. mit "tcp.port==8080 && ip.addr==192.168.128.40. Falls der Webserver auf einem Nicht-Standard Port läuft, muss man vorher noch über den Befehl "Decode as ..." diesen Port als HTTP zu interpretieren.

Man wählt dann die Zeile aus, wo die URL per HTTP GET abgefragt wird. Mit der Funktion "Follow TCP Stream" kann man einen einzelnen TCP Stream herausfiltern.

Man kann auf diese Weise gut den HTTP GET Request und die Antwort des Webservers sehen, was z.B. in dem vorherigen Screenshot nicht so einfach ist, denn Wireshark zeigt die Antwort nicht als HTTP dekodiert an, sondern nur als TCP, weil direkt nach dem HTTP Header das Bild im Format image/jpeg folgt. 

Um die Antwort des Servers mit den Bilddaten zu speichern, wählt man zunächst die Richtung vom Server an den Client (anhand der IP-Adressen und des Ports) und als Format "raw" aus und dann "save as..." und speichert die Antwort z.B. als "bild.jpeg" aus.

Da die Antwort vom Server am Anfang noch den HTTP Header enthält, muss dieser zunächst noch mit einem Hex-Editor entfernt werden. Hierfür markiert man den Header, der mit "HTTP" beginnt und mit RETURN (0D 0A) ended und entfernt diesen mit der "Entf" Taste. Das Beispiel ist vom Hex-Editor 0xED für Mac.

Das Ergebnis ist die JPEG Datei, sofern von der Kamera einzelne JPEG Bilder nacheinander abgefragt werden. 

Wenn es Probleme mit der Loxone App auf einem Smartphone oder Tablet gibt, dann kann man die Metadaten des Bildes z.B. auf https://www.profi-fotos-online.com/content/exif-jpg-meta-daten-auslesen-online-exif-viewer/ überprüfen. Mit diesen Angaben kann Loxone evtl. Problem bei der Anzeige feststellen.

Modbus/TCP Kommunikation zwischen Gerät und MS

In diesem Beispiel geht es um die Kommunikation zwischen einer Wärmepumpe (Stiebel Eltron ISGweb, 10.1.1.33) und dem MS (10.1.1.5) via Modbus/TCP. Mit Wireshark kann man die einzelnen Modbus/TCP Befehle, das Timing analysieren und zielgerichtet die Konfiguraiton anpassen. Als Display-Filter eignet sich “tcp.port==502” oder “modbus”, der ggf. mit der IP-Adresse des Gerätes kombiniert werden kann.

Im o.a. Screenshot kann man gut erkennen, dass die Werte ungefähr alle 5 sek vom MS abgefragt werden und das Gerät innerhalb von ca. 0,5 msek antwortet. Technisch handelt es sich beim ISGweb von Stiebel Eltron um einen ca. 10 Jahre alter “SoC” (System on a Chip), welches binär kompatibel zum Raspberry-PI ist. Bei der Abfrage in Paket Nr. 409 handelt es sich um ein anderes Register, welches in einem abweichenden Intervall abgefragt wird.

Um ein passendes Timeout in Loxone Config einstellen zu können, ist es sehr hilfreich, wenn man durchschnittliche und maximale Antwortzeiten des Modbus/TCP Servers kennt. Hohe Timeouts können u.U. bei vielen abzufragenden Registern zu einem längeren Abfrageintervall führen, als es in Loxone Config einstellt wurde.

Um das Timing einfach und effizient zu überprüfen, kann man eine eigene Spalte mit der Zeitdifferenz zum vorherigen angezeigten Paket hinzufügen. Dafür klickt man mit der sekundären Maustaste in die Zeile mit den Überschriften der einzelnen Spalten:

Im nachfolgend dargestellten Dialogfenster kann man zusätzliche Spalten mit dem Button “+” hinzufügen und in der Spalte “Type” das entsprechende Feld hinzufügen:

Verwandte Artikel