Zum Hauptinhalt springen

Meshtastic Smart-Home-Integration, kostenlos und Open Source

Meshtastic-Integration für Gladys Assistant

Meshtastic-LoRa-Mesh: Knoten, Akku, Telemetrie, empfangene und gesendete Textnachrichten.

Bringt dein Meshtastic-LoRa-Mesh in Gladys: ein Gerät pro Knoten (online, zuletzt gehört, Signal, Hops, Akku, Spannung, Entfernung von zu Hause, Temperatur, Luftfeuchtigkeit, Luftdruck), ein Szenen-Auslöser bei jeder empfangenen Textnachricht und eine Szenen-Aktion zum Senden.

Ohne LoRa-Hardware entwickelt: getestet mit der offiziellen Firmware meshtasticd im simulierten Funkmodus, über TCP und über MQTT. Rückmeldungen im Gladys-Forum sind willkommen.

Was du bekommst​

  • Geräte: Jeder Knoten, den dein Knoten kennt, wird im Tab „Erkennung“ angeboten, benannt wie im Mesh (langer Name, ID !xxxxxxxx). Füge die hinzu, die dich interessieren. Jeder bekommt:
    • Online (innerhalb der gewählten Frist gehört) und Zuletzt gehört (Datum und Uhrzeit);
    • Signal (direkter Empfang): 0 bis 5, aus dem SNR des letzten direkt gehörten Pakets (ohne Relais);
    • Hops entfernt: über wie viele Relais das letzte Paket kam;
    • Akku und Akkuspannung, wenn der Knoten sie meldet (ein Knoten am Netz zeigt 100 %);
    • Entfernung von zu Hause in km, wenn der Knoten seine Position teilt und dein Gladys-Haus verortet ist;
    • Temperatur, Luftfeuchtigkeit, Luftdruck, wenn der Knoten einen Umweltsensor hat.
  • Szenen-Auslöser „Nachricht empfangen“: Eine Textnachricht kam auf einem Kanal oder direkt an deinem Knoten an. Filtere nach Kanal (oder „Direktnachricht“) und nach Absenderknoten; Text, Name des Absenders, seine ID und der Kanal stehen als Variablen für die nächsten Aktionen bereit (per Telegram weiterleiten, vorlesen…).
  • Szenen-Aktion „Nachricht senden“: sendet einen Text auf einem Kanal oder direkt an einen Knoten. Auf 200 Bytes gekürzt, die Grenze des Funks.
  • Widget „Meshtastic-Mesh“: deine Knoten mit Akku und zuletzt gehört, die letzte empfangene Nachricht und eine Taste Nachricht senden.
  • Taste Verbindung prüfen auf der Seite der Integration.

Die Integration ändert nie die Konfiguration deines Funkgeräts.

Voraussetzungen​

  • Gladys Assistant 5.2.0 oder neuer.
  • Entweder ein im Netz erreichbarer Knoten auf TCP-Port 4403: ein ESP32-Board über WLAN oder Ethernet mit aktiver Netzwerk-API oder ein Linux-Rechner mit meshtasticd;
  • oder ein lokaler MQTT-Broker, an den das MQTT-Modul eines Knotens sendet, mit aktiver JSON-Ausgabe (mqtt.json_enabled). JSON gibt es nicht auf nRF52-Boards (RAK4631, T-Echo…): Nutze TCP mit einem anderen Knoten oder einen ESP32-Knoten als Gateway.
  • USB-Seriell wird nicht unterstützt: Die Integration läuft in einem Container ohne Zugriff auf die USB-Ports.

Installation​

  1. Öffne in Gladys Integrationen → Von GitHub installieren und gib https://github.com/guim31/gladys-meshtastic ein.
  2. Öffne die Integration, wähle die Verbindung, fülle ihre Felder aus und speichere.
  3. Drücke Verbindung prüfen, öffne dann den Tab Erkennung und füge deine Knoten hinzu.

Gladys fragt bei der Installation nach dem Standort deines Hauses: Er dient nur der Entfernung und verlässt dein Gladys nie.

Konfiguration​

FeldZweck
VerbindungTCP zu einem Knoten (empfohlen: vollständige Knotenliste, Kanalnamen, Direktnachrichten) oder MQTT-Broker (JSON).
Adresse des Knotens (TCP)IP-Adresse oder Hostname des Knotens, z. B. 192.0.2.40. Port 4403, falls nicht geändert.
Adresse des Brokersmqtt://host:1883 oder mqtts://host:8883, mit Benutzername und Passwort, falls vorhanden.
Root-TopicDas Root-Topic des MQTT-Moduls des Knotens, standardmäßig msh. Die Firmware hängt die Region an (msh/EU_868/2/json/…).
Sendeknoten (MQTT)ID (!a1b2c3d4) des Knotens, der deine Nachrichten über MQTT sendet. Leer: der zuletzt gehörte Knoten.
Offline nachEin Knoten, der so lange nicht gehört wurde, gilt als offline (standardmäßig 2 Stunden; Knoten senden ihre Telemetrie standardmäßig alle 30 Minuten).
Sprache der TexteSprache der Funktionsnamen und der Meldungen der Integration.

TCP​

Schalte auf dem Knoten WLAN oder Ethernet in den Netzwerkeinstellungen ein (die Netzwerk-API hört auf Port 4403). Ein Knoten nimmt nur einen TCP-Client gleichzeitig an: Solange Gladys verbunden ist, kann sich die Meshtastic-App nicht über WLAN mit demselben Knoten verbinden (Bluetooth geht weiterhin). Nach einer Unterbrechung verbindet sich die Integration alle 15 Sekunden von selbst neu.

MQTT​

Auf dem Gateway-Knoten: MQTT-Modul an, Adresse deines lokalen Brokers, JSON-Ausgabe an und Uplink auf den zu verfolgenden Kanälen aktiv. Die Integration abonniert <root>/# und liest die Topics …/2/json/…; verschlüsselte Pakete werden ignoriert. Verbinde sie nicht mit dem öffentlichen Broker mqtt.meshtastic.org: Er trägt die ganze Welt.

Zum Senden über MQTT braucht das Gateway einen Kanal namens mqtt mit aktivem Downlink (sein Schlüssel ist egal) und danach einen Neustart; so nimmt die Firmware JSON-Nachrichten zum Senden an. Trag seine ID unter Sendeknoten ein, wenn mehrere Knoten an den Broker senden.

Geräte und Funktionen​

Eine Funktion erscheint nur, wenn der Knoten sie beim Hinzufügen schon gemeldet hat (Akku, Position, Umweltsensor). Kommt sie später, zeigt Gladys im Tab „Erkennung“ neben dem Knoten Aktualisieren.

  • Das Signal ist das des letzten Pakets, das dein Knoten direkt gehört hat: Ein Knoten, der immer über Relais kommt, hat keinen Wert. Skala: 5 ab 5 dB SNR, 4 ab 0 dB, 3 ab -5 dB, 2 ab -10 dB, 1 darunter.
  • Hops entfernt zählt die Relais des letzten Pakets (0: direkt gehört).
  • Der Knoten, mit dem du über TCP verbunden bist, ist online, solange die Verbindung steht.
  • Nach einem Neustart gilt ein noch nicht gehörter Knoten erst nach Ablauf der Frist als offline.

Szenen​

Nachricht empfangen​

Löst einmal pro Nachricht aus, auch wenn sie mehrfach gehört wird (Relais, mehrere MQTT-Gateways). Filter:

  • Kanal: eine Kanalnummer (0 ist der primäre Kanal) oder Direktnachricht;
  • Absenderknoten: eines deiner Knotengeräte.

Variablen: Nachrichtentext, Name des Absenders (sein Name in Gladys, wenn du ihn hinzugefügt hast, sonst im Mesh), Knoten-ID des Absenders, Kanal (0…7 oder direct). Nachrichten, die du aus Gladys sendest, lösen ihn nicht aus.

Nachricht senden​

Felder: die Nachricht, der Kanal (Nummer auf deinem Knoten) und optional ein Knoten für eine Direktnachricht. Ausgaben: Gesendet, Auf 200 Bytes gekürzt, Satz (z. B. „Nachricht auf Kanal 0 gesendet.“). Die Aktion schlägt mit einer klaren Meldung fehl, wenn der Text leer oder das Mesh nicht verbunden ist.

Widget​

Meshtastic-Mesh zeigt die hinzugefügten Knoten (online zuerst, mit Akku und seit wann sie nicht gehört wurden), die letzte empfangene Nachricht und eine Taste Nachricht senden, die ein kleines Formular öffnet (Text und Kanal). Jeder Block lässt sich in den Widget-Einstellungen ausblenden: Letzte Nachricht anzeigen, Sendetaste anzeigen, Offline-Knoten ausblenden.

Grenzen​

  • Ohne LoRa-Hardware entwickelt und getestet, mit meshtasticd im simulierten Funkmodus: Rückmeldungen willkommen.
  • Kein USB-Seriell, kein Bluetooth: nur TCP oder MQTT.
  • Über MQTT siehst du nur, was ein Gateway als JSON veröffentlicht; keine Kanalnamen, und eine Direktnachricht geht nur raus, wenn das Gateway den Knoten erreicht.
  • Wegpunkte, Traceroutes, Nachbarinfos und andere Module werden nicht angezeigt.
  • Ein Text ist auf 200 Bytes begrenzt (etwa 200 Buchstaben ohne Umlaute, weniger mit Umlauten oder Emoji).

Datenschutz und Netzwerk​

Alles bleibt in deinem lokalen Netz: Die Integration spricht nur mit deinem Knoten oder deinem Broker. Empfangene Nachrichten bleiben im Speicher (die letzten 20, für das Widget) und werden nie auf die Festplatte geschrieben. Die MQTT-Client-ID liegt in /data. Das Passwort des Brokers steht nie in den Logs.

Fehlerbehebung​

  • „Der Meshtastic-Knoten antwortet nicht über TCP“: Prüfe die Adresse, ob WLAN oder Ethernet aktiv ist und ob die Meshtastic-App nicht gleichzeitig über WLAN mit dem Knoten verbunden ist.
  • Über MQTT verbunden, aber kein Knoten: Prüfe das Root-Topic und ob die JSON-Ausgabe aktiv ist (mqtt.json_enabled).
  • „Noch kein Gateway über MQTT gehört“: Die Integration lernt das Sende-Topic aus dem Verkehr; warte auf ein erstes Paket.
  • Eine Nachricht geht über MQTT nicht raus: Das Gateway braucht einen Kanal namens mqtt mit aktivem Downlink und danach einen Neustart.
  • Ausführliche Logs: Starte die Integration mit LOG_LEVEL=debug.

Danksagung​

Meshtastic® ist eine eingetragene Marke von Meshtastic LLC. Diese Integration ist weder mit Meshtastic LLC verbunden noch von ihr unterstützt. Die Integration liest die öffentliche Client-API (Protobuf-Feldnummern von meshtastic/protobufs) und das JSON-Format der Firmware, ohne deren Code zu übernehmen.

Konfigurationseinstellungen​

Diese Einstellungen fragt Meshtastic in seinem Konfigurationsbildschirm in Gladys ab.

EinstellungTypPflichtfeldBeschreibung
Verbindung zum MeshsectionNeinEntweder per TCP zu einem Knoten über WLAN oder Ethernet (oder meshtasticd) oder über das JSON seines MQTT-Moduls. USB-Seriell wird nicht unterstützt.
VerbindungselectJa
Adresse des Knotens (TCP)stringNeinIP-Adresse oder Hostname des Knotens mit aktiver Netzwerk-API. Der Knoten nimmt nur einen TCP-Client gleichzeitig an.
TCP-PortnumberNein
MQTT-BrokersectionNeinNur mit der MQTT-Verbindung: ein lokaler Broker, an den das MQTT-Modul des Knotens sendet, mit aktiver JSON-Ausgabe (nicht auf nRF52-Boards).
Adresse des BrokersstringNein
BenutzernamestringNein
PasswortsecretNein
Selbstsigniertes Zertifikat akzeptieren (mqtts)booleanNein
Root-TopicstringNeinDas Root-Topic des MQTT-Moduls des Knotens (standardmäßig msh); die Firmware hängt die Region an.
Sendeknoten (MQTT)stringNeinID des Knotens mit einem Kanal namens mqtt und aktivem Downlink, zum Senden. Leer: der zuletzt über MQTT gehörte Knoten.
OptionensectionNein
Offline nachselectNeinEin Knoten, der so lange nicht gehört wurde, wird als offline angezeigt. Knoten senden ihre Telemetrie standardmäßig alle 30 Minuten.
Sprache der TexteselectNeinSprache der Funktionsnamen und der Texte der Integration.

So installierst du Meshtastic in Gladys​

  1. Öffne in Gladys Integrationen: Meshtastic erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
  2. Klicke auf Installieren. Gladys lädt das Docker-Image (ghcr.io/guim31/gladys-meshtastic:1.0.0) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration).
  3. Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
  4. Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/guim31/gladys-meshtastic.

Meshtastic benötigt Gladys >=5.2.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.

Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.

Über externe Integrationen​

Meshtastic ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von guim31 veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.

Abonniere den Newsletter von Gladys Assistant

Ein paar E-Mails im Monat zu neuen Releases und Neuigkeiten aus dem Projekt. Verschickt von Pierre-Gilles Leymarie, dem Gründer des Projekts. Jederzeit abbestellbar 🙂