meshtastic message aus eigenem mqtt

meshtastic message aus eigenem mqtt

Lange habe ich mich eingelesen wie mit einem eigenen MQTT-Server Meldungen an Meshtastic übergeben werden können. Erfolgreich war ich erst mit umfangreichem Monitoring des seriell angebundenen Nodes.

Ziel war die bequeme Eingabe von Meldungen in einen privaten, verschlüsselten Family-channel den wir uns angelegt hatten. Ich wollte nicht jedesmal das Handy zur Hand nehmen und schreibe einfach auf der Tastatur am Laptop viel schneller. Zudem war das Ziel, dass meine Skripte und Sensoren die bisher im Telegram-channel Meldung machen, das nun über lora verteilen und den Family-channel oder den neuen smart-channel dafür nutzen. Damit könnte ich über mqtt und lora-wan auch den Batteriespeicher meiner Tochter und im Gästehaus bei niedrigem Strompreis zur Aufladung vom Netz freigeben. Was damit noch alles geht überlasse ich eurer Phantasie.

so in etwa ist mein Setup

Reine Textmessages können auch über das CLI von meshtastic eingegeben werden:
meshtastic –ch-index 1 –sendtext ‚CLI-Message in den privaten Channel‘

Da ich in Python programmiere ist es leichter die bestehenden Skripte an meinen MQTT-Server Mosquitto unbeaufsichtigt publishen zu lassen. Dazu fehlte mir die Syntax und alle gefundenen Beispiele haben nicht funktioniert.

Hier meine Syntax:

  • Ihr ruft erstmal den publish für den MQTT-Server an der genannten -h Hostadresse auf. 
  • Wählt das -t Topic unter dem published werden soll. Dies habt ihr vorher in den Geräteeinstellungen im Node eingestellt. Erkläre ich weiter unten genauer.
  • Dann formatiert ihr als json die -m Mesagebedingungen {…}
    • die Channel Nummer, private Channel sind >0
    • als payload den Meldungstext
    • der type muss sendtext sein
    • Absender from ist eure Node-ID, bei mir vom T-Beam, der schickt ins meshtastic.

Fallstricke in der Kommandozeile sind:

  • -t topic muss mit einem / aufhören
  • achtet auf die einfachen ‚ und doppelten “ Hochkomma

Damit dieses Vorgehen funktioniert müsst ihr am Node in den Geräteeinstellungen so vorgehen:

  • MQTT-Config: MQTT enabled: true
    • IP eintragen und wenn notwendig user und passwort 
    • Encryption enabled: false
    • JSON output enabled: true
    • TLS enabled: false
    • Root topic: msh/hotzenwald (bei mir so. Aber ohne /2 oder json/ oder mqtt)

Firmware war bei mir 2.5.15

Ihr braucht 2 Geräte/nodes, denn meshradio listet die gesendeten MQTT Messages nicht im message log. Der andere Node oder die anderen Nodes zeigen diese aber im Channel an. Deshalb werde ich einfach einen alten node als „Telex“ Gerät nutzen.

Im privaten „Family“-Channel habe ich eingestellt:

  • uplink enabled: on
  • downlink enabled: on
  • position enabled: off
  • precise location: off

Ihr müsst am „Telex“-Node, also der Node der die MQTT-Meldungen dann vom Rechner übernimmt und wegschickt, einen zusätzlichen Channel mit dem Namen mqtt anlegen. Dort wird der uplink:disabled und der downlink:enabled.

Die lora-Settings am „Telex“-Node: 

  • ok to MQTT: ON
  • ignore MQTT: off

Hinweis

die ID die ihr im „from“ eintragt findet ihr mit meshtastic –info. Gleich die erste Ausgabe ist:

Owner: (mit eurem Nodename und Kurzform)
My info: { „myNodeNum“: 12345678

Wenn ihr sehen wollt was beim Senden einer MQTT Message vor sich geht:

könnt ihr mit einem

mosquitto_sub -t ‚msh/hotzenwald/#‘ -v 

diese Info bekommen: 

und mit CLI:

meshtastic –noproto –debug –listen

Beispiel python mit paho_mqtt

python Quellcode als Bild, passt euer „from“ und den topic an.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..