Temperaturerfassung mit Raspberry Pi und I²C

Aus Port23Wiki
Wechseln zu: Navigation, Suche

Hier entsteht die Dokumentation einer Server- / 19"-Rack Temperaturüberwachung mit einem Raspberry Pi und mehreren I²C Sensoren. Basierend auf einer Raspbian Jessie Installation wird ein lighthttp Webserver aufgesetzt, der mittels PHP eine handvoll Webseiten ausliefert um den Zustand eines Serverracks zu zeigen. Die Temperaturwerte werden in eine RRD geschrieben und mittels rrd graph visualisiert. Ein konfigurierter Schwellwert soll die Administratoren informieren, wenn die Temperaturen zu hoch sind.

Inhaltsverzeichnis

Stückliste

Nachfolgend die benötigten Bauteile:

  • Raspberry Pi 2 Modell B
  • Stromversorgung 5V 1,2A min. Micro-USB
  • Speicherkarte microSD mind. 8 GB (Class 4 oder besser)
  • Raspi I²C Hat
  • 19" Rackwinkel + Deckel für Raspberry Pi
  • gew. Anzahl I²C Sensorplatinen mit LM75 oder HIH6030. Die Sensoren können mit einem Telefonkabel (RJ11, 6p4c) hintereinander geschaltet werden.
  • 19" Rackwinkel für Sensorplatine
  • div. Schrauben, Muttern, Kabel

Elektronik

  • (thumbnail)
    Hat & Sensorplatine von oben
  • (thumbnail)
    Hat & Sensorplatine von unten
  • (thumbnail)
    Hat und Raspberry Pi im Rackwinkel montiert
  • (thumbnail)
    Sensorplatine im Rackwinkel montiert

Boot Image

  • Zum Booten wird das aktuelle Raspbian Debian Jessie von Raspberry Pi Foundation (1,3 GB) verwendet. Das in Planung befindliche "Lite" sollte ebenfalls funktionieren, steht aber im Moment noch nicht zur Verfügung.
  • Nach dem ersten Boot müssen auch hier die "üblichen" Schritte getan werden. Raspbian Jessie bootet standardmäßig in die graphische Oberfläche - da in dieser Anwendung kein Monitor verwendet wird, kann darauf verzichtet werden. Die nötigen Einstellungen nimmt man in "raspi-config" vor:
    • das Dateisystem erweitern,
    • den Hostnamen setzen,
    • die Ländereinstellungen vornehmen,
    • boot-optionen -> text console einstellen.
  • System aktualisieren
    • apt-get update
    • apt-get upgrade
    • rpi-update

In /boot/config.txt das Kommentarzeichen in der Zeile dtparam=i2c_arm=on entfernen:

# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

Zur Abfrage der Sensoren kann man sensors.c compilieren:

wget http://hackdaworld.org/~hunz/raspi_i2c/boards/sensors.c
gcc sensors.c -o sensors
./sensors /dev/i2c-1
pi@celsius ~/celsius $ ./sensors /dev/i2c-1
HIH6030: status: 1 humidity:  51% temp:  24°C
LM75-0 : temp:  24°C
pi@celsius ~/celsius $

Konfiguration

Zum Abspeichern der Sensorwerte werden RRD Dateien angelegt:

  • pro Sensor eine rrd anlegen.
#!/bin/bash

#
# Anlegen einer RRD zur Speicherung von Temperaturmessdaten
# 

rrdtool create $1 --step 60 \
           DS:temperature:GAUGE:120:U:U  \
           RRA:AVERAGE:0.5:1:2160  \
           RRA:AVERAGE:0.5:5:2016  \
           RRA:AVERAGE:0.5:15:2880 \
           RRA:AVERAGE:0.5:60:8760 \
           RRA:MIN:0.5:1:2160  \
           RRA:MIN:0.5:5:2016  \
           RRA:MIN:0.5:15:2880 \
           RRA:MAX:0.5:1:2160  \
           RRA:MAX:0.5:5:2016  \
           RRA:MAX:0.5:15:2880


#!/bin/bash

#
# Anlegen einer RRD zur Speicherung von Luftfeuchtigkeitsmessdaten
# 

rrdtool create $1 --step 60 \
           DS:luftfeuchtigkeit:GAUGE:120:U:U  \
           RRA:AVERAGE:0.5:1:2160  \
           RRA:AVERAGE:0.5:5:2016  \
           RRA:AVERAGE:0.5:15:2880 \
           RRA:AVERAGE:0.5:60:8760 \
           RRA:MIN:0.5:1:2160  \
           RRA:MIN:0.5:5:2016  \
           RRA:MIN:0.5:15:2880 \
           RRA:MAX:0.5:1:2160  \
           RRA:MAX:0.5:5:2016  \
           RRA:MAX:0.5:15:2880
Meine Werkzeuge