in ,

DIY (mini) BigData Hygrometer – Part 1

Foto von Harrison Broadbent auf unsplash.com

Raspberry Pi und Sensor

Was ist das Ziel unseres Projekts?

Mit einem Raspberry Pi sollen alle 5 Minuten Daten von einem BME280 Sensor ausgelesen werden und in einer MySQL/MariaDB abgespeichert werden.

Anschließend sollen die Daten in ein Excel geladen werden, um Diagramme erstellen zu können.

Der verwendete Sensor BME280 kann Temperatur, Luftfeuchtigkeit und Druck auslesen – bei der Bestellung des Sensors wurde darauf geachtet, dass es zumindest eine einfache Installationsanleitung sowie eine verfügbare Demo für das Auslesen der Daten gibt.

Schritt 1 – Raspberry Pi OS installieren und einrichten

Die Installation des Raspberry Pi OS ist relativ simpel, einfach den Installer von der Homepage runterladen, installieren und ausführen lassen.

Als Operating System verwenden wir Pi OS 32Bit in der Lite Version (da wir keine grafische Oberfläche benötigen) mit einer 64GB Speicherkarte.

Unter den Einstellungen setzen wir den Hostname, aktivieren SSH und setzen Benutzername und Passwort.

Zusätzlich lassen wir den Raspberry Pi mit unserem WLAN verbinden und setzen Zeitzone und Tastaturlayout:

Nachdem das Pi OS auf die microSD Karte geschrieben wurde, schieben wir es in den Raspberry Pi microSD Slot – und nach ein bisschen warten, ist der erste Bootvorgang inkl. automatischer Einrichtung abgeschlossen.

Mittels ssh können wir uns nun auf die IP des Raspberry Pi verbinden und erstmal Updates installieren:

ssh pi@192.168.42.50

sudo apt-get update

sudo apt-get dist-upgrade

Mit Y bestätigen, nach erfolgreicher Installation der Updates rebooten mit:

sudo reboot

 

MariaDB-Server installieren und einrichten:

sudo apt-get install mariadb-server

sudo mysql_secure_installation

Enter current password for root (enter for none): <Enter>
Enter current password for root (enter for none): Y
Change the root password? [Y/n] Y
New password: <password>
Re-enter new password: <password>
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

 

MariaDB über das Netzwerk erreichbar machen:

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

bind-address = 127.0.0.1 à bind-address = 0.0.0.0

sudo systemctl restart mariadb

 

Kontrollieren mit netstat:

sudo netstat -tulpen |grep 3306

Mit MariaDB verbinden:

sudo mysql -uroot -p

Datenbank und Tabelle anlegen:

create database bme280;

use bme280;

CREATE TABLE wohnzimmer (Messzeit DATETIME NULL, Temperatur DECIMAL(6 , 2)  NULL,  Druck DECIMAL(6 , 2)  NULL, Luftfeuchtigkeit DECIMAL(6 , 2 ) NULL, PRIMARY KEY (Messzeit) );

desc wohnzimmer;

User anlegen und testen:

CREATE USER ‚bme280‘ IDENTIFIED BY ‚bme280‘;
GRANT ALL ON bme280.* TO ‚bme280‘;
flush privileges;
exit

Verbindung testen:

mysql -ubme280 -pbme280 -Dbme280

Schritt 2 – BME280 mit dem Raspberry Pi verbinden und testen

Den BME 280 Sensor verbinden wir über I2C mit den entsprechenden Pin’s des Raspberry Pi:

I2C interface
BME280 PIN Raspberry
VCC 3.3V (PIN 1)
GND GND (PIN 6)
SDA SDA (PIN 3)
SCL SCL (PIN 5)
ADDR nicht verbunden
CS nicht verbunden

 

i2c und spi aktivieren:

sudo raspi-config
→ Interface Options  →I4 SPI bzw. I5 SPI → <YES>

Mit <Finish> beenden und rebooten à nach dem Neustart sollten wir die Module sehen:

lsmod |grep -E ‚i2c_bcm|spi_bcm‘

 

I2C Tools installieren und den Sensoren suchen:

sudo apt-get install i2c-tools

i2cdetect -y 1

Der Sensor meldet sich mit Adresse 77 und sollte somit funktionstüchtig sein.

Schritt 3 – Daten auslesen und in die MariaDB Tabelle schreiben

Für unseren Sensor verwenden wir einen frei verfügbaren Demo Code, passen diesen aber noch etwas an, damit wir die Daten in csv Form erhalten.

Zusätzlich benötigen wir noch das Tool WiringPi, welches wir runterladen und mit dpkg installieren:

wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

Nach dem kompilieren des Programmes können wir es mit ./bme280 starten und bekommen Temperatur, Druck und Luftfeuchtigkeit als Output:

Mit einem einfachen Shellscript können wir nur die Daten per cronjob alle 5 Minuten abfragen, in einer Datei speichern und angereichert mit Datum und Uhrzeit in die MariaDB schreiben:

bme280.sh
#!/bin/bash
/home/pi/bme280 |sed „s/^/$(date ‚+%Y-%m-%d %H:%M‘);/g“ > /tmp/wohnzimmer.csv
sleep 1
cat /tmp/wohnzimmer.csv >> /home/pi/wohnzimmer_all.csv
mysqlimport –lines-terminated-by=’\n‘ –fields-terminated-by=‘;‘ –verbose –local -hlocalhost -ubme280 -pbme280 bme280 /tmp/wohnzimmer.csv

cronjob

Den letzten Datensatze können wir mit dem Befehl abfragen:
mysql -ubme280 -pbme280 -Dbme280 -e „select * from wohnzimmer order by Messzeit desc limit 1“;

Somit ist unser erster Teil fertig – wir lesen uns die Daten vom Sensor aus und schreiben diese in eine MariaDB.

Im nächsten Schritt werden wir uns per ODBC mit der MariaDB verbinden, in Excel einbinden und uns ein paar Diagramme für unsere Daten überlegen.

Jira für Nicht-Techniker – Teil 2: Automatisierte Taskerstellung

Foto von Harrison Broadbent auf unsplash.com

DIY (mini) BigData Hygrometer – Part 2