Innerhalb meines 10" - Netzwerkschrank möchte ich die Temperaturen überwachen, damit ich nach Bedarf meine Lüfter im Schrank an- und ausschalten kann.

Dazu nutze ich folgende Hardware:

Um die Temperatur auszulesen und zu verarbeiten nutzen wir in diesem Beispiel Node.js.

Hardware

Zuerst muss ich auf dem Raspberry PI das i2c aktivieren.

raspi-config

Unter dem Punkt 3 Interface Options -> P5 I2C.

Im nächsten Schritt i2c auf enabled setzen.

Verwendete Pins

Quelle: raspberrypi.org

Der I2C-Pins sind der Pin 3 (GPIO 2, SDA) und Pin 5 (GPIO 3, SCL). Der Stromversorgung erfolg über Pin 4 und Pin 6. Einfach die jeweiligen Pins des Sensor verbinden.

Software

Bevor wir unser Script erstellen müssen eine aktuellere Node.JS Version installieren. Wir installieren die aktuellste LTS (Long term support) Version mit folgendem Befehl.

sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt update
sudo apt install nodejs

Als Nächstes wechseln wir in einen Ordner, wo wir das Script laufen lassen wollen.

mkdir /home/pi/temperatur
cd /home/pi/temperatur

Nach dem wir das Node-Module bme280 geladen haben, um die Daten auszulesen können wir unser Script erstellen.

npm install bme280

Jetzt erstellen wir unser Script in der Datei temperatur.js:

const bme280 = require('bme280');

// siehe Abschnitt: Hilestellung: Die richtige i2c-Adresse finden.
bme280.open({"i2cAddress":0x76}).then(async sensor => {
    
  let data = await sensor.read();
  await sensor.close();
    
  // Temperatur in die Console ausgeben
  console.log(data.temperature);
    
}).catch(console.log);
Ausgabe der Temperatur

Ich sende meine Daten an eine InfluxDB, um langzeit Reporting zu haben. Wie das geht könnt ihr hier nachlesen: Temperatur von Raspberry PI 4 visualisieren in einem Web-Interface (jsx.red)

Hilfestellung: Die richtige i2c-Adresse finden

Die im Script verwendete Adresse 0x76 trifft meinen Sensor zu. Allerdings heißt es nicht, dass es bei allen gleich ist.

Um die richtige Adresse zu finden kann man i2c-tools installieren, um alle zu Verfügung stehende Adressen aufzulisten.

sudo apt-get install i2c-tools
sudo i2cdetect -y 1

In meinem Fall gibt mir i2cdetect drei mögliche Kandidaten raus.
Ich habe die 3 alle durchprobiert bis ich die Temperatur bekommen habe.

Ausgabe i2c - Adressen

Cheers,
Jörg