Update – Neuen Lilygo T-Echo mit aktueller Meshtastic Software ausstatten

Am Wochenende ist mein neuer Meshtastic-Client, der Lilygo T-Echo, angekommen. Grund genug, ihn heute mal mit aktueller Meshtastic Software zu versorgen.

Lilygo T-Echo

Beim T-Echo ist das Software-Update ganz einfach. Es muß kein Device-Install wie beim Heltec- oder beim T-Beam-Client durchgeführt werden. Es reicht, einfach nur den T-Echo Microcontroller über das USB-Datenkabel mit dem Arbeitsplatzrechner zu verbinden und dann den oberen linken Button links am T-Echo Gehäuse zweimal kurz hintereinander drücken.

Schon öffnet sich auf dem Desktop ein weiteres Laufwerk (heisst bei mir Techoboot). Beim Öffnen des neuen Laufwerks wird der Inhalt mit 3 Dateien angezeigt. Jetzt einfach nur aus einem anderen, bereits geöffneten Fenster mit den aktuellen Meshtastic-Binaries das richtige T-Echo Binary auswählen und ins Techoboot-Fenster ziehen.

Voila. Nach erfolgreichem Kopieren schließt sich das Techoboot-Fenster wieder und der Lilygoo T-Echo macht einen Reboot.

Kurze Zeit später meldet er sich wieder und läuft dann unter der jetzt aktuellen neuen Softwareversion.

Ab jetzt kann er sich mit den ebenfalls aktualisierten anderen Meshtastic-Microcontrollern unterhalten. Super Sache. Das war wirklich einfach.

LoRa Off-Grid Mesh Kommunikation

In den letzten Tagen habe ich mich mal etwas intensiver mit der Software Meshtastic beschäftigt. Die Software ist natürlich Open Source, läuft auf Microcontrollern mit LoRa Modem wie TTGO T-Beam und Heltec V20 und ermöglicht es, ein völlig autarkes Meshnetz auf LoRa-Basis aufzuspannen. Die Software gibt es als Windows-, Linux- und OSX-Version. Da ich auch Apple-User bin, habe ich die Install mal auf meinem Mac versucht.

Auf der Website https://meshtastic.org gibt es sehr ausführliche Doku zu diesem Projekt. Man kann die Software (Firmware für die Nodes) auf verschiede Weise installieren. Von den angebotenen Möglichkeiten Install über Webinterface, meshtastic-flasher und dem Install-Script device-install habe ich mich für den Flasher und auch dem Install-Script entschieden. Spezielle Hardware auf Basis von NRF53 (LilyGo T-Echo, RAK Wisblock 4631) lassen sich auch noch über einen Bootlader-Mode installieren. Andere Geräte wie der TTGO T-Beam unterstützen auch die Install mit Hilfe eines speziellen USB to Serial Adapters. Diese verschienenen Installationsarten sind alle ausführlich auf der meshtastic-Website beschrieben.

Nach einigen Stunden Tests mit den von mir ausgewählten Installationsarten hat sich für mich die Installation mit dem Installscript als geeignete Methode zum Versorgen der Nodes mit der nötigen Firmware erwiesen. Gerade beim häufigen Installieren der verschiedenen Alpha- und Beta-Versionen der Firmware. Jeder Wechsel der Firmware-Version erfordert die identische Installation auf allen Nodes. Das hält ganz ordentlich auf.

Eine Install per Console sieht etwas so aus:

./device-install.sh -f /Users/heiner/Downloads/firmware-1.2.60.ab959de/firmware-heltec-v2.0-1.2.60.ab959de.bin .

Ich habe mir alle verfügbaren Alpha- und Betaversionen der Firmware in ein gemeinsames Verzeichnis gepackt, so dass ich die verschiedenen Firmwareversionen jeweils mit allen verfügbaren Hardware-Platform-Versionen sofort auffindbar zur Verfügung habe.

Wenn alle Nodes mit dersselben Firmware-Version versorgt sind, können sie eingeschaltet werden. Die Firmware bringt eine sinnvolle Grundkonfiguration mit, so dass die Nodes dann gleich einsatzbereit sind.

Die eingeschalteten Nodes können dann bereits in der Console angezeigt werden.

Die Versorgung der Nodes mit Textnachrichten und Weiteres kann natürlich auch über die Console erfolgen:

meshtastic --sendtext "Broadcast an alle 2"

sinnvoller ist es aber, dafür eine App auf dem Handy oder wie bei mir auf dem iPad oder dem OSX-Rechner zu bemühen.

Das ist aber z. B. auf den Apple-Geräten ein bisschen Tricky, weil die dort verfügbare Software noch Alpha ist und ausdrücklich nur für die Firmware-Versionen 1.3.X freigegeben ist. Meine Tests haben aber ergeben, dass ich mit der Firmware in der Betaserie 1.2.x am Besten zurecht komme. Aber auch diese älteren Firmware-Versionen lassen sich über die auf Apple-Geräten verfügbare meshtastic-Software administrieren. Leider stürzt diese Software zumindest bei mir auf den Apple-Geräten öfter ab. Und zwar immer in Verbindung mit der Blauzahn-Schnittstelle. Es hilft ein bisschen, die aktiven Geräte unter Systemeinstellungen/Bluetooth mal kurz aus der Konfiguration rauszuschmeissen. Beim nächsten Verbindungsaufbau sind sie dann wieder da.

Auf diesem Bild sind alle meine über Blauzahn angebundenen Nodes sichtbar. Ich kann jetzt einen davon auswählen, um ihn mit Textnachrichten auszustatten.
Hier habe ich einen Node ausgewählt.
Jetzt können Nachrichten verschickt werden. Entweder eine Broadcast an alle oder gezielt an einen bestimmen Node.

Ich hoffe, dass ich mit diesem kleinen Artikel mal ein bisschen die Neugier auf diese tolle Open Source Software gelenkt habe. Es gibt da noch viel zu entdecken. Ich habe sicher nur etwas an der Oberfläche gekratzt. Z. B. kann man noch eine Schnittstelle zu MQTT einrichten, um verschiedene Zellen miteinander zu verbinden. Ein Reichweitentest steht auch noch aus. Dann gibt es noch die Routerfunktionalität auf den Clients. Und das Webinterface. Und und und. Ich kann mir vorstellen, dass es dafür noch einen Folgeartikel gibt. Der muß auch nicht unbedingt von mir geschrieben werden. Viel Spaß beim Testen.

Erste Versuche mit LoRa (ohne WAN) und Node 2 Node Verbindungen

Im April hatte ich mich auf eins von der Fa. Thomas Krenn ausgelobten Developer Kits für IoT-Entwicklungen beworben. Diese Kits setzen sich zusammen aus jeweils zwei Boards mit ESP32-Mikrocontroller, LoRa-Modul, OLED-Display und WiFi-, Bluetooth- und Micro-USB-Interface sowie die passenden USB-Anschlusskabel. Weiterhin ist auch ein BME280 Sensor zum Messen von Temperatur, Luftdruck und Luftfeuchtigkeit dabei. Bei den 2 Microcontrollern handelt es sich um die bekannten Heltec Lora32 V2 Controller.

Wie sich herausstellen sollte, hatte ich diesmal Glück. Anfang Mai klingelte der Briefträger und überreichte mir eins dieser Kits. Vielen Dank dafür an dieser Stelle an die Firma Thomas Krenn. Ich habe mich sehr darüber gefreut.

TK_Box.jpg

Praktisch, dass Thomas Krenn auf ihrer Website auch eine Schritt-für-Schritt-Anleitung zur Installation und Programmierung mittels Arduino-IDE veröffentlicht hat. Selbst fertig vorbereitete Sketche sind dort verfügbar, jeweils einer für Transceiver und einer für den Receiver. Somit war es klar, dass ich gleich mal die Arduino IDE geladen und die Sketche auf die Heltec V2 Controller gespielt habe.

Beide Sketche funktionieren auf Anhieb. Der Transceiver liest den BME280 Sensor aus, zeigt die gemessenen Werte auf dem Display an und sendet sie in einem String per LoRa an den Receiver. Danach fällt der Transceiver in einen zweiminütigen Tiefschlaf.

Auf dem Receiver wird der String ausgepackt und auf dem Display angezeigt.

Bis zu diesem Punkt brauchte ich nicht eine Zeile Code schreiben. Es war alles zum Test vorbereitet.

Schnell kam bei mir aber der Wunsch auf, noch weitere Transceiver Microcontroller im neuen Haus zu verteilen, um einen Überblick über die Restfeuchte aus der Bauphase des Hauses zu bekommen. Natürlich sollten die Messwerte der einzelnen im Haus verteilten Sensoren auch in die bestehende NodeRED, Influx-DB und Grafana Umgebung aufgenommen werden.

Gesagt, getan.

Dafür schaute ich mir die Sketche etwas genauer an und merkte, dass es nur ein paar Erweiterungen bedurfte, damit der Receiver auch mehr als einen Transceiver erkennen und verarbeiten konnte.

Auf der sendenen Transceiver-Seite musste nur eine kleine Ergänzung (String „Wohnzimmer“) im LoRa Message-String aufgenommen werden, damit der empfangene Transceiver erkennen kann, wer die Daten geschickt hat.

Serial.print("Sending Complete Data: ");
  LoRaMessage = String(temperature) + "/" + String(humidity) + "/" + String(pressure) + "/" + String("Wohnzimmer");
  Serial.println(LoRaMessage);

Auf der empfangenen Receiver-Seite waren die Änderungen/Ergänzungen am Code schon etwas umfangreicher.

Dort musste das Script zuerst einmal um WiFI- und MQTT Fähigkeiten erweitert werden. Dann war auch noch eine Routine für das Erkennen des sendenden Nodes und eine Routine für die MQTT Client.Publish Befehle zu schreiben.


  // Hier wird der passende Raum-Bezeichner aus der Variable "feld4" (Location) ermittelt und dann der ganze MQTT-Aufruf zusammengesetzt

  String temp_PreFix1 = "sensors/BME280/Temperatur/";
  String ort1 = feld4;
  String myString1 = temp_PreFix1 + ort1;
  const char * msg1 = myString1.c_str ();

  String temp_PreFix2 = "sensors/BME280/Luftfeuchte/";
  String ort2 = feld4;
  String myString2 = temp_PreFix2 + ort2;
  const char * msg2 = myString2.c_str ();

  String temp_PreFix3 = "sensors/BME280/MBar/";
  String ort3 = feld4;
  String myString3 = temp_PreFix3 + ort3;
  const char * msg3 = myString3.c_str ();

  String temp_PreFix4 = "sensors/BME280/Ort/";
  String ort4 = feld4;
  String myString4 = temp_PreFix4 + ort4;
  const char * msg4 = myString4.c_str ();

  String temp_PreFix5 = "sensors/BME280/Quality/";
  String ort5 = feld4;
  String myString5 = temp_PreFix5 + ort5;
  const char * msg5 = myString5.c_str ();


  connectToMQTT();

  client.publish (msg1, String(feld1).c_str());
  client.publish (msg2, String(feld2).c_str());
  client.publish (msg3, String(feld3).c_str());
  client.publish (msg4, String(feld4).c_str());
  client.publish (msg5, String(rxquality).c_str());
  
}

Mit diesen Änderungen ist der Receiver Controller in der Lage, den jeweils sendenden Transceiver eindeutig zu erkennen und die übermittelt bekommenen Messwerte in die geweils zuständigen MQTT Topics zu versenden.

Diese hier beschriebene LoRa Umgebung läuft hier bei mir jetzt seit mehreren Tagen quasi fehlerfrei. Ab und an resettet der Receiver kurz (um diesen Fehler habe ich mich noch nicht gekümmert), ist dann aber nach ganz kurzer Zeit wieder zum Empfang von gesendeten LoRa Paketen bereit.

GIS-Daten in einem geographischen Informationssystem (GIS) darstellen

Die vor ein paar Tagen veröffentlichte Windkraftanlagen-Datei vom SH OpenData Portal (WKA-OpenData.csv) habe ich mal zum Anlaß genommen, mir auf meinem Rechner ein geographisches Informationssystem (GIS) zu installieren, welches für die Anzeige der GIS Daten erforderlich ist. Mein ausgewähltes Programm heißt QGIS und ist natürlich Open-Source.

Gesagt, getan. Die aktuelle OSX-Version 3.8.1 ist schnell von der Website https://qgis.org/de/site/ heruntergeladen und installiert.

„GIS-Daten in einem geographischen Informationssystem (GIS) darstellen“ weiterlesen

Smarte LoRaWAN Umweltstation in Arnis

Schon längere Zeit bin ich mit der Idee schwanger gegangen, im Garten in Arnis an der Schlei eine Umwelt- und Wetterstation zu errichten. Es wurde geplant und teilweise wieder verworfen, bis das Konzept am Ende rund war. Anfang des Jahres war es endlich soweit. Ich begann, mein Projekt umzusetzen.

Die Basis der Umweltstation sind 4 gebrauchte Paletten, die hochkant gegeneinander gestellt wurden. Oben und unten mit stabilen Winkeln versehen, werden sie die nächsten Jahre als stabile Basis für die Station und das eingebaute Hochbeet ihren letzten Dienst verrichten.

Hier ist das Hochbeet an den Seiten bereits mit Blumen bepflanzt. Oben im Gemüsebereich wachsen die Radienschen, die Wurzeln, der Schnittlauch und der Kohlrabi.
„Smarte LoRaWAN Umweltstation in Arnis“ weiterlesen
Datenschutz
, Inhaber: (Firmensitz: Deutschland), verarbeitet zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in der Datenschutzerklärung.
Datenschutz
, Inhaber: (Firmensitz: Deutschland), verarbeitet zum Betrieb dieser Website personenbezogene Daten nur im technisch unbedingt notwendigen Umfang. Alle Details dazu in der Datenschutzerklärung.