Zusatzmaterial für den IoT Kurs an der ALP in Dillingen, 15./16. Juli 2024
H. Högl, <Hubert.Hoegl@tha.de>
, 17. Juli 2024
Links | Buchtipps | WSL2 | Micropython | mpremote | Mosquitto MQTT Broker | Python Kurs
WSL2 installieren (WSL = Windows Subsystem for Linux). Obwohl es hier im Kurs bei WSL2 zu etlichen Problemen kam, ist meine Erfahrung mit WSL über die letzten Jahre durchwegs positiv. Es eignet sich sehr gut dazu, Windows Benutzern mit geringer Hürde Linux zu zeigen. Sollte es im Kurs nicht geklappt haben, dann probieren Sie es doch zu Hause einfach nochmal aus.
Zwei Artikel aus der c’t zu WSL: ct.2021.25.WSL.pdf, ct.2023.02.WSL.pdf
Bauteileliste für den Kurs
Ein paar E-Technik Fakten an der Tafel (drauf klicken)
Heltec LoRa ESP32 V3
Micropython auf Heltec LoRa ESP32 V3
esp32_demo.py - Der Zweck dieses Micropython Programms ist es, die Funktion der für den LoRaWAN Versuch bereits angeschlossenen Bauteile (LED, Taster, Poti an Analogeingang) zu überüfen. Für den LoRaWAN Versuch muss das Heltec Board natürlich dann mit der Arduino (Platformio) Anwendung geflasht werden.
LoRaWAN Demo auf dem Heltec LoRa ESP32 V3
Die Demo findet man im git repo unter
ttn_workshop/heltec_v3
. Darin ist eine
README.md
in der beschrieben ist wie man das Programm auf
der Linux Kommandozeile unter Platformio kompiliert und auf das Heltec
Board flasht. Man kann immer nur eine Anwendung auf das Heltec Board
flashen, in unserem Fall entweder LoRaWAN oder Micropython.
Hier ist nochmal der Link auf das Repo: https://gitlab.com/huberthoegl/ttn_workshop
Einstellungen in der TTN Konsole für Heltec LoRa ESP32 V3.
Bitte nicht meine Einstellungen nehmen, sondern eigene erzeugen!
Wähle LoRaWAN 1.1.0! In den “General Settings” des Device muss bei den “Join Settings” angeklickt sein: “Resets join nonces” [✔]“.
Payload Formatter für die LoRaWAN Demo (auch im git Repo unter
ttn_workshop/formatter
). Diese Formatter sind bei der
angelegten Application einzutragen.
Curl - “WWW auf der Kommandozeile”
Mit Curl kann man zum Beispiel für die Gemeinschaft frei zugängliche Daten abfragen (“Open Data”).
Ein kleines Beispiel: Ich hole mir von dem freien Wetter-API https://open-meteo.com die
aktuellen Daten für Temperatur und Windgeschwindigkeit. Die Werte werden
vom Server im JSON-Format ausgeliefert und mit jq
formatiert. Dazu gibt man folgende Kommandozeile ein (nur eine lange
Zeile):
curl "https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41¤t=temperature_2m,wind_speed_10m&dayly=temperature_2m,relative_humidity_2m,wind_speed_10m" | jq .
Andere offene APIs zum Experimentieren sind z.B.
MQTT
Experimente mit dem Mosquitto MQTT Broker: mosquitto.html
Den MQTT Subscriber für die Kommandozeile
mosquitto_sub
installiert man mit
sudo apt install mosquitto-clients
.
Das MQTT Client Python Modul installiert man mit
pip install paho-mqtt
.
Wer mit MQTT in einem grafischen Tool arbeiten möchte kann die freien Programme MQTTX oder MQTT Explorer verwenden:
“MQTTX is a cross-platform MQTT 5.0 client tool open sourced by EMQ, which can run on macOS, Linux and Windows, and supports formatting MQTT payload.”
mqttx-cli
)MQTT Explorer von Thomas Nordquist (unter CC BY-ND Lizenz)
Ein “altbewährter” Artikel zu MQTT aus der Zeitschrift c´t von Jan Mahn (06/2018)
LoRaWAN und Node-RED
Links
Was ist LoRaWAN?
The Things Network (TTN)
TTN Community Augsburg: https://www.thethingsnetwork.org/community/augsburg und meine Notizen dazu.
Konsole (Login erforderlich): https://www.thethingsnetwork.org/console
Wir haben es zwar im Kurs nicht gemacht, trotzdem hier ein Link
auf das Kommandozeilenwerkzeug ttn-lw-cli
, mit dem man
alles was man in der TTN Konsole im Web-Browser per Klick machen kann
auch lokal auf dem Rechner auf der Kommandozeile erledigen kann.
https://www.thethingsindustries.com/docs/the-things-stack/interact/cli/installing-cli/
Ich habe im Kurs öfter den freien The Things “Network Server” genannt. Es ist eine ziemlich grosse Anwendung die in Go geschrieben ist unter Apache 2.0 Lizenz. Wenn man sie auf dem eigenen Server betreibt, kann man sein individuelles LoRaWAN Netzwerk eröffnen. Das Projekt ist auf Github an folgendem Link:
https://github.com/TheThingsNetwork/lorawan-stack
Wer sich für die Architektur des Netzwerkservers interessiert, findet viele weiterführende Informationen unter
Weltkarte der Gateways https://www.thethingsnetwork.org/map. Gibt es eines in Ihrer Nähe? Wenn nicht, stellen Sie doch eines auf!
JSON
JQ (“commandline JSON processor”)
sudo apt install jq
Platformio - Freies Meta-Framework zur Embedded Programmierung
Homepage https://platformio.org
Zum Autor Ivan Kravets: https://www.ikravets.com/about-me
What is PlatformIO? https://docs.platformio.org/en/latest/what-is-platformio.html
Vortrag von Damien P. George: MicroPython & the Internet of Things • GOTO 2016.
Wer sein Heltec ESP32 Board mit einem Web-Server ausstatten will, der in Micropython programmiert ist, der kann sich folgende Links ansehen:
Rui und Sara Santos, ESP32/ESP8266 MicroPython Web Server – Control Outputs
https://randomnerdtutorials.com/esp32-esp8266-micropython-web-server/
ESP32 MicroPython Web Server – Sensor Data on Webpage, 2022
Ein anderer IoT Workshop, von Kurt Albrecht, Hochschule Bregenz
https://htlb-atk.github.io/schilf-iot-MAX31865
Dieser Workshop verwendet das “LoPy” Modul von der Firma pycom.io. Es sieht so aus (Stand 7-2024) dass es diese Firma nicht mehr gibt. Auch die Module sind nicht mehr lieferbar. Anscheinend wurde pycom.io im November 2022 von einer anderen Firma gekauft. Die LoPy Modul sind auch mit einem ESP32 ausgestattet. Auch LoRa und LoRaWAN kann komplett in Python programmiert werden.
Die Dokumentation findet man aber noch im Netz: https://docs.pycom.io/datasheets/development/lopy/
Die Dokumentation zu diesem Workshop ist trotzdem sehr interessant und bietet eine Fülle an Informationen. Der LoPy IoT Knoten misst mit Hilfe eines MAX31865 Messverstärkers den Widerstandwert eines Pt100 Temperatursensors und liefert die Daten in die “Thingspeak” Cloud (https://thingspeak.com, gehört zu MathWorks/Matlab).
Buchtipps
Charles Bell, MicroPython for the Internet of Things. A Beginner’s Guide to Programming with Python on Microcontrollers. Apress 2024.
Vedat Ozan Oner, Developing IoT Projects with ESP32 Packt 2023 (2. Auflage).
https://learning.oreilly.com/library/view/developing-iot-projects/9781803237688
Code: https://github.com/PacktPublishing/Developing-IoT-Projects-with-ESP32-2nd-edition
Renaldi Gondosubroto, Internet of Things from Scratch, Packt 2024
https://learning.oreilly.com/library/view/internet-of-things/9781837638543/
Code: https://github.com/PacktPublishing/IoT-Made-Easy-for-Beginners
Andy King, Programming the Internet of Things, O’Reilly 2021.
https://learning.oreilly.com/library/view/programming-the-internet/9781492081401
Website: https://labbenchstudios.com/programming-the-iot-book
Code (MIT Lizenz): https://github.com/programming-the-iot
Jacob Beningo, MicroPython Projects, Packt 2020.
https://learning.oreilly.com/library/view/micropython-projects/9781789958034/
Nicholas H. Tollervey, Programming with MicroPython, O’Reilly 2017.
https://learning.oreilly.com/library/view/programming-with-micropython/9781491972724/
Charles Bell, Beginning MicroPython with the Raspberry Pi Pico: Build Electronics and IoT Projects, Apress 2022.
https://link-springer-com.ezproxy.hs-augsburg.de/book/10.1007/978-1-4842-8135-2