Raspberry Pi Heimtemperaturmonitor mit MCP9808, InfluxDB & Grafana bauen
Nach dem Erwerb eines Raspberry Pi und der Lektüre von Eben Uptons Raspberry Pi User Guide – besonders der GPIO-Abschnitte – startete ich mein erstes Projekt: ein Heimtemperatur-Überwachungssystem. Dieser Beitrag beschreibt die initiale Iteration mit einem Raspberry Pi, einem Adafruit MCP9808 Breakout, einem alten Mac Mini, InfluxDB, Grafana, Python und dem runit Process Supervisor.
Sensor-Hardware
Für den Temperatursensor wählte ich das MCP9808 Breakout Board von Adafruit. Meine Wahl wurde getrieben durch:
- Natives I²C-Interface – die GPIO-Pins 3 (SDA) und 5 (SCL) des Pi unterstützen den erforderlichen Bus.
- Breiter Spannungsbereich (2,7 V–5,5 V) – kompatibel mit den 3,3 V und 5 V Rails des Pi.
- Kosteneffektiv – unter 5 USD, ideal für ein erstes Anfängerprojekt.
Schaltungsaufbau
Das MCP9808 Board kommt größtenteils vormontiert; das einzige Löten ist das Anbringen des 8-Pin-Headers. Ich nutzte einen GPIO-Breakout und ein Breadboard, um den Pi mit dem Sensor zu verbinden, was die Verdrahtung vereinfacht und zukünftige Anpassungen erleichtert. Die essenziellen Verbindungen sind:
- Stromversorgung (VDD)
- Masse (GND)
- Daten (SDA)
- Takt (SCL)
Die verbleibenden Pins – für Adressauswahl und Alerting – blieben bei diesem Single-Device-Setup unverbunden.
Datenspeicher
Das Erfassen von Daten über Zeit ermöglicht Trendanalyse und Korrelation mit externen Ereignissen. Ich wählte InfluxDB für seinen Time-Series-Fokus und die intuitive Abfragesprache. Die Datenbank läuft auf einem frühen 2009 Mac Mini (OS X 10.10) unter Homebrew:
brew install influxdb
InfluxDB-Datenbank konfigurieren
Nach der Installation erstellte ich eine Datenbank und einen dedizierten Benutzer über die Webkonsole (Standardport 8083). Ich richtete auch eine Datenbank namens mcp9808_test ein, um die Sensormesswerte zu speichern.
Raspberry Pi Konfiguration
I²C aktivieren
Der Pi lädt I²C-Module nicht standardmäßig. Fügen Sie diese Zeilen zu /etc/modules hinzu und starten Sie neu:
i2c-bcm2708
i2c-dev
Prüfen Sie, ob der Sensor erkannt wird mit:
sudo i2cdetect 1
Sensor-Software
Ich nutzte Adasfruit’s MCP9808 Python Wrapper, der auch die I²C-Abstraktionsschicht einbindet.
Build-Abhängigkeiten installieren
sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus
Adafruit MCP9808 Wrapper installieren
cd ~/Downloads
git clone https://github.com/adafruit/Adafruit_Python_MCP9808
cd Adafruit_Python_MCP9808
sudo python setup.py install
Auslesen, Melden, Wiederholen
Unten ist das poll.py Skript, das jede Minute die Temperatur ausliest und den Wert in InfluxDB schreibt:
#!/usr/bin/python
import time
import Adafruit_MCP9808.MCP9808 as MCP9808
from influxdb import InfluxDBClient
# Payload für InfluxDB vorbereiten
def temperature_data(degrees_c):
return [{
'points': [[c_to_f(degrees_c)]],
'name': 'Temperature Readings',
'columns': ['degrees_f']
}]
# Celsius in Fahrenheit umrechnen
def c_to_f(c):
return c * 9.0 / 5.0 + 32.0
# Sensor initialisieren
sensor = MCP9808.MCP9808()
sensor.begin()
# Erfassungsintervall in Sekunden
capture_interval = 60.0
# Mit InfluxDB verbinden (Platzhalter durch echte Werte ersetzen)
influxClient = InfluxDBClient('', 8086, 'mcp9808', '', 'mcp9808_test')
# Endlosschleife
while True:
temp_c = sensor.readTempC()
print('Temperature {0:0.3} F'.format(c_to_f(temp_c)))
influxClient.write_points(temperature_data(temp_c))
time.sleep(capture_interval)
Führen Sie das Skript als root aus, um auf GPIO-Pins zuzugreifen:
sudo python /path/to/poll.py
Prozessüberwachung mit runit
Um sicherzustellen, dass poll.py über Neustarts und Stromzyklen hinweg am Leben bleibt, konfigurierte ich runit als Process Supervisor. Detaillierte Setup-Schritte finden sich in der ursprünglichen Projektdokumentation.
Zusammenfassung
Mit Sensor, Datenbank und Monitoring-Stack an Ort und Stelle verfügen Sie nun über einen zuverlässigen, kostengünstigen Heimtemperatur-Logger. Nutzen Sie Grafana zur Visualisierung der Daten, zum Setzen von Alarmen und zur Gewinnung actionabler Einblicke in Ihre Umgebung.
Herstellungsprozess
- Raspberry Pi Temperaturlogger mit 5 $ I2C Sensor bauen
- Präzises Raspberry Pi Temperaturprofiling mit Python, SQLite und LabVIEW
- Mehrere DS18B20 1-Wire Sensoren an Raspberry Pi anschließen für präzises Temperaturmonitoring
- Raspberry Pi Temperatur- & Feuchtigkeits-Netzwerkmonitor – DIY Setup Guide
- Temperatur mit DS18B20 am Raspberry Pi 2 auslesen
- Professionelle Temperaturüberwachung mit Raspberry Pi und DS18B20
- Temperaturmessung mit Maxim 1-Wire Sensoren und DS2482 I2C-Bridge am Raspberry Pi
- TMP006 Infrarot-Temperatursensor mit Raspberry Pi: Python Library & Setup Guide
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Raspberry Pi Wetterstation bauen, die tägliche Wetterdaten per E-Mail sendet