Realtime Dashboards in Power BI – Teil 1: Sensorbasierte Datensammlung mit dem Raspberry Pi

Robert: Die Realtime Dashboard Funktion in Power BI kann dazu verwendet werden, um Sensordaten in Echtzeit zu visualisieren und damit ein Monitoring in einem Internet-of-Things (IoT) Szenario zu implementieren. Diese Blogbeitragsserie schließt thematisch an diesen Blogpost aus dem Jahr 2015 an, in dem aus einem Temperatur-Datenlogger manuell ein CSV-File heruntergeladen werden mußte und daher nur historische Auswertungen möglich waren. Toni Kerschbaummayr zeigt in diesem ersten Blogpost der Beitragsserie, wie die Sensor-Hardware konfiguriert und verbunden wird.


Anton: in diesem Blogbeitrag zeige ich in 4 Schritten, wie mit einem Raspberry Pi und einem BME280 Sensor Temperatur- und Feuchtigkeitsmesswerte gesammelt und wie diese mit einem Programm in Echtzeit an den Cloud Service Azure IoT Hub gesendet werden. Dazu zeigt eine rot leuchtende LED jede erfolgreiche Datenübertragung an, sodaß die Funktionstüchtigkeit des Systems auch am Gerät leicht überprüft werden kann.

Schritt 1: Sensor mit dem Raspberry Pi verbinden ("Hardware vorbereiten")

Folgende Komponenten werden benötigt:

Raspberry Pi 3 Model B ("Computer")

SparkFun Atmospheric Sensor Breakout - BME280 ("Sensor")

Steckbrett (zum Verbinden der Kabel)

LED (zur Funktionsanzeige)

Verbindungskabel (Neuftech 40x 20cm „female female“ „male female“ „male male“ jumper wire kabel Steckbrücken für Arduino Raspberry pi, 3er Set)

Micro-SD Karte (zur Installation des Betriebssystems für den Raspberry Pi)

Lötkolben (um den BME280 Sensor mit den Verbindungskabeln zu verbinden)

Nun muss der BME280 Chip und die LED mit dem Raspberry Pi anhand der folgenden Tabelle und anschließenden Abbildung verbunden werden. Die Kabel wurden mit den Kontakten des BME280 Chips verlötet.

Start (Sensor & LED)Ende (Raspberry Pi Pin)Kabelfarbe
VDD (Pin 5G)
3.3V PWR (Pin 1)weiß
GND (Pin 7G)GND (Pin 6)braun
SDI (Pin 10G)I2C1 SDA (Pin 3)rot
SCK (Pin 8G)I2C1 SCL (Pin 5)orange
LED VDD (Pin 18F)GPIO 24 (Pin 18)weiß
LED GND (Pin 17F)GND (Pin 20)schwarz

Nachdem alle Komponenten miteinander verbunden wurden, sollten die Hardware in etwa folgenden Aufbau haben:

Schritt 2: Raspberry Pi in Betrieb nehmen

2.1 Installation des Betriebssystems Raspbian auf der SD-Karte

1. Das Betriebssystem Raspbian herunterladen:
Download Raspbian Stretch (hier die .zip Datei herunterladen).
WICHTIG: Es muss unbedingt die Version raspbian-2017-07-5 verwendet werden, da in den neuere Versionen von Raspian zu Problemen bei der Verwendung von Wiring-Pi Node kommt.

2. Entpacken der .zip Datei auf dem Computer.

3. Um das Betriebssystem Raspbian auf der SD-Karte zu installieren, wird folgende Software benötigt:
Etcher SD card burner utility herunterladen und installieren

4. Etcher starten und das entpackte Image aus Schritt 2 wählen.

5. Klick auf "Flash" um den Installationsvorgang zu starten:

6. Nach dem erfolgreichen Flash-Vorgang kann die SD-Karte aus dem Computer entfernt und in den Raspberry Pi eingesetzt werden.

2.2 Konfiguration des Raspberry Pi

1. Verbinden Sie Ihren Raspberry Pi mit einer Tastatur (via USB), einer Maus (via USB) und einem Bildschirm (via HDMI).

2. Starten Sie den Raspberry Pi indem Sie ihn an eine micro-USB Stromquelle anschließen (hier kann ein altes Smartphone Ladegerät verwendet werden).

3. Loggen Sie sich mit dem Benutzernamen
pi
und dem Passwort
raspberry
ein.

4. Klicken Sie links oben auf das Raspberry Symbol und wählen Sie Preferences > Raspberry Pi Configuration

5. Setzen Sie auf dem Tab Interfaces die Einstellungen I2C und SSH auf Enable und klicken Sie OK.

6. Klicken Sie rechts oben am Desktop auf das Netzwerk- Symbol um den Raspberry Pi mit dem WLAN zu verbinden. Alternativ könnte auch per Netzwerkkabel ein LAN angeschlossen werden.

Schritt 3: Sensorsoftware in Betrieb nehmen

3.1 Installation der Sensorsoftware

1. Öffnen Sie die Shell auf dem Raspberry Pi:

2. Überprüfen Sie Ihre Node.js Version indem Sie folgendes Kommando in der Shell tippen:
node -v
Falls eine Version kleiner 10.x verwendet wird oder Node.js gar nicht installiert ist, dann führen Sie folgende Befehle zum Installieren aus:
url -sL https://deb.nodesource.com/setup_10.x | sudo -E bash sudo apt-get -y install nodejs

3. Klonen des Sensorensoftware Beispielprojekts von github (lädt den Quellcode von github.com und speichert ihn auf dem Raspberry Pi) :
git clone https://github.com/Azure-Samples/iot-hub-node-raspberrypi-client-app

4. Installieren der Pakete die nötig sind um den Quellcode später laufen zu lassen (Die Installation beinhaltet die Pakete Azure IoT device SDK, BME280 Sensor library, und Wiring Pi library).
cd iot-hub-node-raspberrypi-client-app
sudo npm install

3.2 Konfiguration der Sensorsoftware

1. Öffnen Sie die Konfigurations- Datei mit folgendem Kommando:
nano config.json

2. interval: definiert in welchen Abständen (Millisekunden) Sensorenwerte erfasst und gesendet werden sollen. Der Standardwert von 2.000 Millisekunden (= 2 Sekunden) muss auf 12.000 Millisekunden (= 12 Sekunden) erhöht werden, da der Gratisplan des IoT Hubs maximal 8.000 Werte pro Tag verarbeiten kann.

Schritt 4: Intervallbasierte Datensammlung starten

Im Teil 2 dieser Blogserie wird gezeigt, wie der Azure IoT Hub konfiguriert wird und wie der Primary Connection String zur Authentifizierung der Hardware am Cloud Service erstellt wird:

Die Sensorsoftware wird mit nachfolgendem Befehl gestartet, als Parameter wird der Primary Connection String des Azure IoT Device (siehe oben) eingesetzt:

sudo node index.js '<IHRE AZURE IoT GERÄT VERBINDUNGSZEICHENFOLGE>'

Wenn alles geklappt hat und das Programm gestartet hat, werden im definierten Zeitintervall die Sensordaten an den IoT Hub gesendet. Die rote LED auf der Steckplatte leuchtet bei jeder erfolgreichen Datenübermittlung auf und zeigt somit auch auf Hardwareebene, ob das System funktioniert:

Im IoT-Hub kann beispielsweise die Total Number of messages used im Bereich Metrics ausgewertet werden und so die Aktivität der Sensordatenübermittlung beobachtet werden:

Kritische Evaluierung

Mit dem Raspberry Pi steht ein Mini-Computer um knappe EUR 40 zur Verfügung, der hervorragend zur sensorbasierten Massendatensammlung in einer IoT-Infrastruktur geeignet ist. Dennoch sind einige kritische Punkte anzumerken:

  1. Das Sensorprogramm ist fehleranfällig
    Sobald ein x-beliebiger Fehler am Raspberry Pi auftritt, beendet sich das Sensorprogramm. Ich habe versucht, mit try/catch Blöcken alle Fehler abzufangen, doch ist das nicht gelungen (bzw. bedürfte es hier noch weiterer intensiverer Forschungsarbeit). Deshalb habe ich auf dem Raspberry Pi einen sogenannten cron-Task eingerichtet, der den Raspberry Pi einmal pro Stunde neu bootet. Damit ist sichergestellt, daß ein Ausfall maximal 1 Stunde dauert.
    Grundsätzliche Anleitung zum Anlegen eines cron- Tasks findet man hier:
    https://www.raspberrypi.org/documentation/linux/usage/cron.md
    Eintrag zum stündlichen reboot (0 steht für Minute 0, also jedes mal wenn die in der Uhrzeit die Minute = 0 ist, dann wird der reboot ausgeführt, bspw. 09:00): 0 * * * * /sbin/shutdown -r now
  2. Der Raspberry Pi ist empfindlich bezüglich der Stromversorgung
    Der USB-Stecker am anderen Ende des micro-USB darf nicht an einen Laptop angeschlossen werden, sondern muss mit einem Steckdosenadapter mit Strom versorgt werden, sonst stimmt die Betriebsspannung nicht und der Raspberry Pi startet nicht.
    Aber es funktioniert auch nicht jeder (alte Handy-)Adapter, wir hatten einen Effekt, daß mit einem Steckdosenadapter der Raspberry Pi und auch die Sensordatenübertragung funktioniert hat, aber kein HDMI-Signal an den Monitor gesendet werden konnte.
    Weiters hatten wir Probleme bei der Stromversorgung des Sensors, diese dürfte unterbrochen werden, wenn der micro-USB nicht richtig sitzt (bzw. abgenützt ist) -> der Raspberry Pi funktioniert ganz normal, aber der Sensor bekommt keinen Strom mehr.
  3. Die Verkabelung des Raspberry Pi mit der Steckerplatte und dem Sensor ist fragil.
    Das ist auch auf den Abbildungen hier im Blogbeitrag zu sehen, im Rahmen dieses Experiments ist das kein Problem, bei Wackelkontakten liefert das Sensorprogramm einen Hardwarefehler und muß neu gestartet werden. Für den Praxiseinsatz muss hier also noch in die Robustheit der Hardware investiert werden.

Wie bei jeder neuen Materie muss hier also eine Lernkurve aufgebaut werden, um die Eigenheiten des Systems und die häufigsten Fehlerursachen handhaben zu können.

Quellen

https://www.hackster.io/xin-shi/data-visualization-in-power-bi-with-bme280-raspberry-pi-0fce0c

https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-raspberry-pi-kit-node-get-started

Robert: in den nächsten beiden Teilen dieser Blogserie werden wir sehen, wie die gesammelten Sensordaten mit Microsoft Azure gestreamt und in Power BI in Echtzeit ausgewertet werden können.

Power BI Camp - Präsenztrainings in Wien und Nürnberg!

DAX & Datenmodellierung, Power Query und Dashboarding mit Power BI - als einzelnes Modul oder als ganze Trainingswoche!

Nürnberg 20. bis 24. April 2020
Wien 04. bis 08. Mai 2020
Early Bird!
Share on linkedin
Share on twitter
Share on facebook

Leave a Replay

Kostenlos zum Newsletter anmelden

Ihre Anfrage

Schicken Sie uns Ihre Fragen und Anregungen!