|
|
Beispiel 1: Temperatur-Messwerte des Sensirion-Sensors publizieren
Der Sensirion SHT31 ist ein billiger und vielseitig einsetzbarer digitaler Temperatur- und Feuchtigkeitssensor hoher Präzision mit einer I2C-Schnittstelle. Um die Temperatur mir MQTT zu übertragen, baut man eine einfache Anlage, die aus einem micro:bit, einen ESP32 Microcontroller und einem Sensirion-Sensor besteht. Da man für den Microcontroller und Sensor je eine I2C-Buchse braucht, muss man einige weitere Bauteile verwenden, wobei man folgende zwei Anschlussmöglichkeiten hat.
![]() |
![]() |
![]() |
Der micro:bit ist mit einem PinBit-Stecker auf einem Breadboard befestigt. Am Grove-Anschluss (GND, 3V, sda, scl) werden zwei I2C Schnittstellen aufgebaut.
|
Die Temperatur-Messwerte werden alle 10 Sekunden unter dem Topic "/ch/sensirion/" publiziert und können mit einem Smartphone oder PC abgeholt werden.
# Sensirion1.py import mqtt from microbit import * from sht31 import * host = "broker.hivemq.com" topic = "/ch/sensirion" def show(temp): s = "%.1f" % temp a = " : : " for c in s: a += c + " " display.show(a) sht = SHT31() mqtt.connectAP("mySSID", "myPassword") mqtt.broker(host) mqtt.connect() while True: temp, humi = sht.getValues() show(temp) mqtt.publish(topic, "Temperature: %.1f degC" %temp) delay(5000) |
Erklärungen zum Programmcode:
| topic = "ch/sensirion": Die Messdaten werden unter dem Topic "ch/sensirion" publiziert | |
| temp, humi = sht.getValues() xx | |
| def show(temp): Formatiert die Temperatur-Anzeige zum Ausschreiben auf dem Display als Scrolltext. s ist die auf 1 Dezimalstelle gerundete Temperatur. Daraus wird eine String gebildet, der mit zwei Doppelpunkten beginnt und wo die Ziffern folgen (mit einer Lücke zwischen den Zeichen) |