IoT-Thermometer mit Python bauen: Kompletter Leitfaden
Komponenten und Zubehör
|
× | 1 | |||
![]() |
|
× | 1 | ||
![]() |
|
× | 1 | ||
![]() |
|
× | 1 | ||
![]() |
|
× | 1 | ||
|
× | 1 | |||
|
× | 1 | |||
![]() |
|
× | 1 | ||
![]() |
|
× | 1 |
Apps und Online-Dienste
![]() |
|
Über dieses Projekt

Die Zerynth App
Die Zerynth App ist eine mobile Anwendung für Android und iOS, die schnelles Prototyping von grafischen Oberflächen für Ihre IoT-Projekte ermöglicht.
Mit der Zerynth App verwandeln Sie jedes Smartphone in Controller und Display für intelligente Objekte und IoT-Systeme! Insbesondere können Sie mit Zerynth programmierte verbundene Geräte verwalten und steuern, wodurch ein bidirektionaler Kommunikationskanal zwischen diesen und Ihrem Mobilgerät entsteht.
In diesem Tutorial zeigen wir, wie man ein einfaches, aber leistungsstarkes IoT-Thermometer entwickelt, das einen mit Zerynth betriebenen Single-Board-Mikrocontroller nutzt und die Zerynth App als Remote-Display einsetzt.
Benötigte Materialien
Zunächst benötigen Sie ein Board. Sie können eines der von Zerynth unterstützten 32-Bit-Mikrocontroller-Geräte wählen. Wir haben das Flip&Click von Mikroelektronika gewählt, das viele Attribute der beliebten Arduino-Plattformen teilt, einschließlich des 32-Bit-AT91SAM3X8E von Microchip, dem Kern des Arduino Due.
Zur Temperaturmessung haben wir den Temp&Hum Click gewählt, der einen HTS221 Temperatur- und relativen Feuchtigkeitssensor trägt.
Für die Internetverbindung des Boards haben wir den WiFi PLUS Click gewählt, der das MRF24WB0MA-Modul von Microchip (2,4 GHz, IEEE 802.11-konform) sowie den MCW1001 Begleitcontroller mit On-Board TCP/IP-Stack und 802.11-Verbindungsmanager bietet.
Zusätzlich benötigen Sie:
- Zerynth Studio, unsere leistungsstarke IDE für eingebettete Programmierung in Python, die IoT ermöglicht. Download hier.
- Zerynth App. Download hier.
IoT-Thermometer zusammenbauen
Flip&Click ist Arduinos zweiseitiger Cousin. Auf der einen Seite ist es ein Arduino. Auf der anderen Seite finden Sie vier offene mikroBUS-Sockel für sogenannte „Click-Boards“. Im Wesentlichen sind das Add-on-Module, die Arduino-Shields ähneln, aber so geschrumpft sind, dass Sie mehrere gleichzeitig auf dem Flip & Click unterbringen können. Fügen Sie einfach den Temp&Hum- und den WiFi Plus-Click an den Board-Slots A und B hinzu.
IoT-Thermometer mit Python programmieren
Beispiel klonen
Nach Installation von Zerynth Studio und Erstellung eines Zerynth-Benutzerkontos können Sie das Beispiel „Zerynth App Oscilloscope“ klonen. Schauen Sie hier, um zu erfahren, wie man ein Beispiel klont.

Sehen wir uns den Originalcode in der Datei „main.py“ an: Hier entwickeln Sie die Logik Ihres Python-Skripts. Wir starten vom Originalcode und passen das Skript für unser spezifisches Projekt an.
################################################################################
# IoT Thermometer
################################################################################
from wireless import wifi
# Dieses Beispiel basiert auf Particle Photon
# Folgende Zeile ändern, um anderen WiFi-Treiber zu nutzen
from broadcom.bcm43362 import bcm43362 as wifi_driver
import streams
import adc
# Zerynth APP Library importieren
from zerynthapp import zerynthapp
streams.serial()
sleep(1000)
print("STARTING...")
try:
# Device UID und TOKEN können im ADM Panel erstellt werden
zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", log=True)
# Mit WiFi-Netzwerk verbinden (SSID und Passwort unten eintragen)
wifi_driver.auto_init()
for i in range(0,5):
try:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
break
except Exception as e:
print("Can't link", e)
else:
print("Impossible to link!")
while True:
sleep(1000)
# Zerynth App Instanz starten!
# Denken Sie daran, ein Template mit den Dateien unter dem "template" Ordner zu erstellen,
# das Sie gerade geklont haben, es zum ADM hochzuladen und mit dem verbundenen Gerät zu verknüpfen
zapp.run()
# ADC lesen und Werte an ADM senden
while True:
sleep(1000)
x = (adc.read(A4)*100)//4096
zapp.event({"data":x})
if x > 95:
# Mobile Benachrichtigung senden
# (Limit: eine Benachrichtigung pro Minute pro Gerät in der ADM Sandbox)
zapp.notify("ALARM!", "The value is greater than 95!")
except Exception as e:
print(e)
In diesem einfachen Beispiel wird ein grafisches Oszilloskop in der Zerynth App mit Daten vom verbundenen Board visualisiert. Die Daten werden von einem analogen Sensor über den „analog“ Pin A4 erfasst.
Richtigen WiFi-Treiber und Sensor-Libraries importieren
Wie in den Kommentaren zu sehen, basiert dieses Beispiel auf dem Particle Photon Board und dessen WiFi-Treiber. Da wir den WiFi Plus Click nutzen wollen, müssen wir folgende Zeilen ändern:
from broadcom.bcm43362 import bcm43362 as wifi_driver
in
from microchip.mcw1001a import mcw1001a as wifi_driver
und
wifi_driver.auto_init()
in
wifi_driver.init(SERIAL2, D24) # Slot B
Dann wollen wir den Temperatursensor des Temp&Hum Click nutzen. Dazu fügen wir folgende Zeilen hinzu, um die Library zu importieren und den Sensor einzurichten (wie in der Dokumentation beschrieben):
# HTS221 Library importieren
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21) # Slot A
Zum Auslesen des Sensors schreiben Sie einfach folgende Zeile, wo nötig:
tmp, hum = temp_hum.get_temp_humidity() # Temp und Hum auslesen
SSID-Name und Passwort einrichten
Natürlich müssen Sie auch den SSID-Namen und das Passwort des WiFi-Netzwerks eintragen, mit dem sich das Board verbinden soll, indem Sie diese Zeile bearbeiten:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
Verbundenes Gerät erstellen und einrichten
Nun müssen wir ein „verbundenes Gerät“ erstellen und die „zerynthapp“-Instanz damit verknüpfen. Unten sehen Sie Screenshots mit den nötigen Schritten. Details finden Sie in dieser Dokumentation.

Die Geräte-Zugangsdaten (UID und TOKEN) können direkt aus Zerynth Studio (ADM Panel) kopiert und eingefügt werden. „IP“ ist die IP-Adresse des Zerynth ADM. Dieser Parameter wird verwendet, wenn der Netzwerktreiber keine Hostnamen-Auflösung unterstützt, wie in diesem Fall.

Template erstellen, hochladen und festlegen
Mit der Zerynth App können Sie wunderschöne, responsive grafische Benutzeroberflächen mit HTML, CSS und JavaScript betreiben. Kein Android- oder iOS-Code nötig!
Die grafische Oberfläche jedes Geräts wird auf der Zerynth ADM Sandbox gehostet und besteht aus HTML5-, JavaScript-, CSS- und Bilddateien, die in der App geladen und angezeigt werden. Durch Hinzufügen der ADM JavaScript Library zum Template kann die App mit dem verbundenen Gerät interagieren – sowohl Nachrichten empfangen als auch senden.
Templates können über das jeweilige „Plus“-Icon hinzugefügt werden.

Dann das Template aus dem dedizierten Ordner hochladen. Beachten Sie, dass die Datei, in der das Template definiert ist, „index.html“ heißt und beliebig bearbeitet werden kann. In diesem Fall können Sie es so belassen.

Skript hochladen (Uplink)
Nach einigen Anpassungen sollte der Code wie folgt aussehen:
################################################################################
# IoT Thermometer
################################################################################
from wireless import wifi
from microchip.mcw1001a import mcw1001a as wifi_driver
import streams
import adc
streams.serial()
# Zerynth APP Library importieren
from zerynthapp import zerynthapp
# HTS221 Library importieren
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21) # Slot A
sleep(1000)
print("STARTING...")
try:
# Device UID und TOKEN können im ADM Panel erstellt werden
zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", ip="178.22.65.123", log=True)
# Mit WiFi-Netzwerk verbinden (SSID und Passwort unten eintragen)
wifi_driver.init(SERIAL2, D24) # Slot B
for i in range(0,5):
try:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
break
except Exception as e:
print("Can't link", e)
else:
print("Impossible to link!")
while True:
sleep(1000)
# Zerynth App Instanz starten!
# Template mit Dateien unter "template" Ordner erstellen,
# zum ADM hochladen und mit verbundenem Gerät verknüpfen
zapp.run()
# Sensor auslesen und Werte an ADM senden
while True:
sleep(1000)
tmp, hum = temp_hum.get_temp_humidity() # Temp und Hum auslesen
print("Temp is:", tmp, "Humidity is:", hum)
try:
zapp.event({"data": tmp})
except Exception as e:
print(e)
if tmp > 30:
# Mobile Benachrichtigung senden
# (Limit: eine Benachrichtigung pro Minute pro Gerät in der ADM Sandbox)
try:
zapp.notify("ALARM!", "High Temperature!")
except Exception as e:
print(e)
except Exception as e:
print(e)
Denken Sie daran, dass „DEVICE UID“, „DEVICE TOKEN“, „SSID“ und „PASSWORD“ an Ihre eigenen Parameter angepasst werden müssen.
An diesem Punkt können Sie das Skript in Ihr Gerät hochladen (Uplink).
IoT-Thermometer-Dashboard in der Zerynth App anzeigen
Wie in diesem kurzen Tutorial beschrieben, müssen Sie lediglich die Zerynth App öffnen, sich einloggen und das spezifische Gerät auswählen, um Ihr IoT-Thermometer-Dashboard zu sehen. Schließlich kann die Zerynth App auch Push-Benachrichtigungen von verbundenen Geräten empfangen. In diesem Fall erscheint eine Benachrichtigung, wenn die Temperatur den Schwellenwert überschreitet!

Bei Fragen zögern Sie nicht, eine Diskussion im Zerynth Community Forum zu eröffnen.
Viel Spaß!
Code
IoT Thermometer Python
################################################################################
# Zerynth App Oscilloscope
################################################################################
from wireless import wifi
from microchip.mcw1001a import mcw1001a as wifi_driver
import streams
import adc
streams.serial()
# Zerynth APP Library importieren
from zerynthapp import zerynthapp
# HTS221 Library importieren
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21) # Slot A
sleep(1000)
print("STARTING...")
try:
# Device UID und TOKEN können im ADM Panel erstellt werden
zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", ip="178.22.65.123", log=True)
# Mit WiFi-Netzwerk verbinden (SSID und Passwort unten eintragen)
wifi_driver.init(SERIAL2, D24) # Slot B
for i in range(0,5):
try:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
break
except Exception as e:
print("Can't link", e)
else:
print("Impossible to link!")
while True:
sleep(1000)
# Zerynth App Instanz starten!
zapp.run()
# Sensor auslesen und Werte an ADM senden
while True:
sleep(1000)
tmp, hum = temp_hum.get_temp_humidity()
print("Temp is:", tmp, "Humidity is:", hum)
try:
zapp.event({"data": tmp})
except Exception as e:
print(e)
if tmp > 30:
try:
zapp.notify("ALARM!", "High Temperature!")
except Exception as e:
print(e)
except Exception as e:
print(e)
Schaltpläne
Herstellungsprozess
- Das Thermometer: Von Galileos Thermoskop zu modernen digitalen Sensoren
- TMP006 Infrarot-Temperatursensor mit Raspberry Pi: Python Library & Setup Guide
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- PSoC 6 Pioneer Board mit IoT Add-On Shield meistern: Entwickler-Leitfaden
- Wie IoT den Alltag revolutioniert
- Python und PyCharm unter Windows installieren: Schritt-für-Schritt-Anleitung
- Dateien und Verzeichnisse in Python mit os.rename() umbenennen – Schritt-für-Schritt-Anleitung
- Facebook-Login mit Python und Selenium automatisieren: Schritt-für-Schritt-Anleitung
- Durchschnitt berechnen in Python: Praktischer Leitfaden
- E-Mails mit Python und SMTP versenden: Schnellstart






