Arduino UNO Q - Echtzeit-Temperaturüberwachung im Webbrowser
Das Arduino UNO Q kann Live-Temperaturmessungen in Echtzeit über WebSocket an jeden Browser übertragen — keine Abfrage, kein Neuladen der Seite. Das STM32-MCU liest den DS18B20-Sensor jede Sekunde und teilt den Wert über Bridge. Die Qualcomm Linux-MPU führt eine Python-App aus, die den integrierten Socket.IO-Server der WebUI Brick nutzt, um eine neue Messung an jeden verbundenen Browser zu übertragen, sobald sie ankommt. Keine zusätzliche Hardware oder Cloud-Service erforderlich.
In diesem Tutorial erfahren Sie:
- Wie Sie den DS18B20-1-Leiter-Temperatursensor an das Arduino UNO Q-MCU-Modul anschließen
- Wie Sie Echtzeit-Temperaturdaten vom MCU zur Linux-MPU über Bridge verfügbar machen
- Wie Sie eine Thermometer-Webseite von der Arduino UNO Q Linux-MPU mit der WebUI Brick bereitstellen
- Wie Sie ui.on_message() und ui.send_message() verwenden, um Live-Temperatur-Updates über WebSocket an den Browser zu übertragen
- Wie Sie WebSocket-Nachrichten im Browser mit Socket.IO empfangen und das Canvas-Thermometer aktualisieren, ohne es neu zu laden
- Wie Sie von jedem Gerät im gleichen Wi-Fi-Netzwerk auf die Live-Temperaturseite zugreifen

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Kaufhinweis: Viele DS18B20-Sensoren auf dem Markt sind von geringer Qualität. Wir empfehlen dringend den Kauf des Sensors von der Marke DIYables über den obigen Link. Wir haben ihn getestet und er funktionierte gut.
Über DS18B20 und den Webserver
DS18B20-Sensor: Ein 1-Leiter-Digital-Temperatursensor (−55 °C bis +125 °C, ±0,5 °C Genauigkeit). Erfordert einen 4,7-kΩ-Pull-up-Widerstand zwischen DATA und VCC — Sensoren mit Adaptern enthalten diesen bereits. Siehe das Arduino UNO Q DS18B20 Temperatursensor-Tutorial für Verdrahtungs- und Bibliothekdetails.
WebUI Brick: Die WebUI - HTML Brick betreibt einen Webserver auf Port 7000, der Ihre HTML-Dateien bereitstellt und Socket.IO-WebSocket-Verbindungen verwaltet. Ihr Python-Code verwendet ui.on_message() zum Empfangen von Browser-Ereignissen und ui.send_message() zum Zurückschreiben von Daten. Jedes Gerät im gleichen Wi-Fi kann auf die Seite unter http://<board-ip>:7000/ zugreifen.
Echtzeit-Flow: Der Browser verbindet sich über Socket.IO und fordert die Temperaturkonfiguration und die erste Messung an. Ein Python-Hintergrund-Thread liest den Sensor jede Sekunde über Bridge und sendet jede Aktualisierung an alle verbundenen Browser. Das Canvas-Thermometer wird bei jedem Push neu gezeichnet — keine Abfrage, kein Neuladen.
Neu bei WebSocket? Wenn Sie Socket.IO auf dem Arduino UNO Q noch nicht verwendet haben, beginnen Sie mit dem Arduino UNO Q - WebSocket-Tutorial — es zeigt das gleiche Muster mit einem einfachen LED-Steuerungsbeispiel ohne Sensor.
Verdrahtungsdiagramm
- Steckbrett-Verdrahtung (mit Pull-up-Widerstand):

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- Verdrahtungsdiagramm mit Adapter (kein zusätzlicher Widerstand erforderlich):

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wir empfehlen den Kauf eines DS18B20-Sensors mit Verdrahtungsadapter. Dieser Adapter macht die Verbindung einfach, da er einen Widerstand enthält, sodass Sie keinen zusätzlichen benötigen.
| DS18B20-Anschluss | Arduino UNO Q-Anschluss |
|---|---|
| GND | GND |
| VCC | 5V |
| DATA | D4 |
Arduino UNO Q-Code
Das Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:
- Das STM32-MCU liest den DS18B20-Sensor jede Sekunde und macht den Wert über eine Bridge-Funktion namens get_temperature verfügbar.
- Die Qualcomm-MPU führt eine Python-App aus, die die WebUI Brick zum Bereitstellen der Thermometer-Seite auf Port 7000 nutzt und Live-Temperatur-Updates über WebSocket an jeden Browser sendet.
MCU-Code
Python-Code
HTML (assets/index.html)
Platzieren Sie diese Datei im Ordner assets/ Ihrer App. Sie lädt den Socket.IO-Client von assets/libs/socket.io.min.js und zeichnet ein Live-Canvas-Thermometer, das bei jedem Server-Push neu gezeichnet wird:
Schnelle Schritte
- Verdrahten Sie den Sensor: Schließen Sie den DS18B20 wie im Abschnitt Verdrahtungsdiagramm an das Arduino UNO Q an.
- Mit Wi-Fi verbinden: Stellen Sie sicher, dass das Arduino UNO Q mit Ihrem Wi-Fi-Netzwerk verbunden ist. Verwenden Sie das Netzwerksymbol in Arduino App Lab zum Verbinden.
- Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihr Arduino UNO Q erkennt.
- Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.

- Geben Sie der App einen Namen, zum Beispiel: TemperatureWS
- Klicken Sie zum Bestätigen auf Erstellen.

- Fügen Sie die MCU-Skizze ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Fügen Sie den Python-Code ein: Öffnen Sie python/main.py. Wählen Sie den gesamten vorhandenen Inhalt aus und löschen Sie ihn, dann fügen Sie den Python-Code oben ein.
- Fügen Sie die HTML-Datei hinzu: Im Ordner assets/ öffnen Sie (oder erstellen) index.html und fügen Sie den HTML-Code oben ein.
- Fügen Sie den Socket.IO-Client hinzu: Im Ordner assets/ erstellen Sie einen libs/-Unterordner. Laden Sie socket.io.min.js herunter und speichern Sie es als assets/libs/socket.io.min.js.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for DallasTemperature created by Miles Burton
, Tim Newsome , Guil Barros , Rob Tillaart and click the Install button.
- Search for OneWire created by Jim Studt, Tom Pollard, Robin James, Glenn Trewitt, Jason Dangel, Guillermo Lovato, Paul Stoffregen, Scott Roberts, Bertrik Sikken, Mark Tillotson, Ken Butcher, Roger Clark, Love Nystrom and click the Install button.
- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Fügen Sie die WebUI Brick hinzu: Klicken Sie auf die Schaltfläche Brick hinzufügen in der Seitenleiste des Editors, um den Brick-Katalog zu öffnen.

Finden Sie WebUI - HTML in der Liste und wählen Sie es aus, folgen Sie dann allen Konfigurationsanforderungen.

Arduino App Lab fügt den Brick-Eintrag automatisch zu Ihrer app.yaml-Datei hinzu — bearbeiten Sie diesen Eintrag nicht manuell.
※ Notiz:
Die WebUI - HTML Brick verwaltet sowohl HTTP-Dateibereitstellung als auch Socket.IO-WebSocket in einem einzelnen Service auf Port 7000. Das Socket.IO-Client-Skript muss sich unter assets/libs/socket.io.min.js befinden — der Brick stellt nicht automatisch eine kompatible Version bereit. Weitere Informationen finden Sie unter About Bricks.
- Hochladen: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab zum Kompilieren und Hochladen.

- Öffnen Sie einen Webbrowser auf Ihrem Telefon oder PC und navigieren Sie zu:
Ersetzen Sie <ARDUINO_UNO_Q_IP> durch die IP-Adresse, die in der Python-Konsole angezeigt wird.
App Lab-Konsolenausgabe
Browser-Ausgabe
Öffnen Sie http://<ARDUINO_UNO_Q_IP>:7000/ in einem beliebigen Browser im gleichen Netzwerk. Sie sehen eine Live-Thermometer-Seite mit einer WebSocket-Verbindungsstatusleiste oben:

Die Seite zeigt an:
- Ein Canvas-Thermometer mit einer Quecksilbersäule, die über WebSocket-Push in Echtzeit auf und ab geht
- Der aktuelle Temperaturwert und die Einheit (°C) in der Kugel, aktualisiert bei jedem Server-Push (jede 1 s)
- Skalierungsmarkierungen von −10 °C bis 50 °C (konfigurierbar über MIN_TEMP und MAX_TEMP im Python-Code)
- Eine Verbindungsstatusleiste — das Thermometer-Quecksilber wird grau, wenn WebSocket getrennt ist
WebSocket-Ereignisse
Der Browser und der Python-Server kommunizieren mit den folgenden Socket.IO-Ereignissen:
| Richtung | Ereignis | Nutzlast | |||
|---|---|---|---|---|---|
| Browser → Server | get_config | {} | |||
| Server → Browser | temperature_config | {"minValue" | -10, "maxValue" | 50, "unit" | "°C"} |
| Browser → Server | subscribe | {} | |||
| Server → Browser | temperature_update | {"value" | 24.6} |
OpenClaw
You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino Uno Q - OpenClaw Tutorial
Projektideen
Die Live-Temperatur-Webseite ist eine Grundlage für viele praktische Projekte auf Arduino UNO Q:
- Raumklima-Monitor: Fügen Sie einen DHT22 oder BMP280 zum MCU hinzu und erweitern Sie die Python-API um einen /api/humidity-Endpunkt — die Webseite zeigt Temperatur und Luftfeuchtigkeit nebeneinander, aktualisiert jede Sekunde
- Kühlschrank- oder Gefriererschrank-Warnung: Legen Sie einen Schwellenwert im Python-Skript fest — wenn get_temperature einen Wert über dem Schwellenwert zurückgibt, sendet das Skript eine Telegram-Nachricht, die Sie benachrichtigt, dass die Kühlschranktür möglicherweise offen ist
- Temperatur-Datenlogger: Hängen Sie jede Messung an eine CSV-Datei auf der Linux-Seite an — fügen Sie einen /api/history-Endpunkt hinzu, der die letzten 100 Zeilen zurückgibt, und zeigen Sie sie als Diagramm mit Chart.js auf einer zweiten Registerkarte an
- Gewächshaus-Monitor: Montieren Sie das Arduino UNO Q in einem Gewächshaus mit zwei DS18B20-Sensoren (innen und außen) und machen Sie beide über separate Bridge-Funktionen verfügbar — die Webseite zeigt beide Messungen in einem geteilten Thermometer-Layout
- Serverraum-Monitor: Montieren Sie die Platine in einem Serverregal — eine einfache Webseite mit einem roten/grünen Statusbanner ermöglicht es dem IT-Personal, die Temperatur von jedem Gerät im Netzwerk zu überprüfen, ohne eine App zu installieren
Stellen Sie sich selbst Herausforderungen
Bereit, den Temperatur-Web-Monitor auf Arduino UNO Q weiter zu nutzen? Versuchen Sie diese Herausforderungen:
- Einfach: Ändern Sie den Thermometer-Bereich und das Farbschema in index.html — legen Sie den Bereich auf 0–100 °C fest und machen Sie den Quecksilberverlauf abhängig von der aktuellen Messung von blau (kalt) bis rot (heiß).
- Mittel: Fügen Sie ein zweites Diagramm-Panel zur Webseite mit Chart.js hinzu — zeichnen Sie die Temperaturhistorie als Liniengraph, der sich über die erste Minute ausfüllt, unter Verwendung von Messwerten in einem JavaScript-Array, das bei jedem temperature_update-WebSocket-Ereignis wächst.
- Fortgeschrittene: Fügen Sie ein set_threshold-Socket.IO-Ereignis zum Python-Skript hinzu, das der Browser mit { "min": 18, "max": 28 } ausgibt — speichern Sie den Bereich in Python und überprüfen Sie ihn in der Push-Schleife; senden Sie ein temperature_alert-Ereignis, wenn die Messung außerhalb des Bereichs liegt, damit die Webseite ein Warnung-Banner zeigt, das sich automatisch von grün zu rot ändert.