Aus Raspberry Pi Geek 07/2023

Überwachung eines Bienenstocks und Visualisierung der Messwerte mit Grafana (Seite 2)

ESP32

Die Hardware unseres Sensors besteht im Wesentlichen aus einem ESP32 Dev-Board [6] und einem DHT22/AM2302 Sensor [7]. Zusätzlich sorgt ein 10-µF-Kondensator dafür, dass das Flashen des Controllers sicher funktioniert. Zur Spannungsversorgung nutzen wir ein einfaches USB-Netzteil. Die Komponenten sind, wie auf Abbildung 2 zu sehen, auf einer Lochraster-Platine verlötet. Den dazu gehörigen Schaltplan zeigt Abbildung 3.

Abbildung 2: Die fertig montierten Komponenten sind auf einer Lochraster-Platine verlötet.

Abbildung 2: Die fertig montierten Komponenten sind auf einer Lochraster-Platine verlötet.

Abbildung 3: Schaltplan für den Aufbau des ESP32 Dev-Boards.

Abbildung 3: Schaltplan für den Aufbau des ESP32 Dev-Boards.

Da sich mit Python einfach Programme erstellen lassen, verwenden wir Micropython auf dem ESP32. Der Artikel “Kleine Schlange” [8] aus Raspberry Pi Geek, Ausgabe 06/2022, erklärt, wie Sie Micropython darauf installieren.

Die Anwendung verbindet sich mit dem WLAN, liest den DHT22-Sensor aus und schickt die Messwerte per HTTP-Request an die API. Achten Sie darauf, die URL im Request an Ihren Server anzupassen. Der Request sendet die Variable hive mit an die Schnittstelle. Sie dient als eindeutiger Identifizierter für den Bienenstock. Mithilfe dieser Variablen verbinden Sie beliebig viele Sensoren mit dem Webservice.

Das Programm läuft in einer großen Endlosschleife. Falls ein Fehler auftritt, ignoriert es ihn und beginnt von vorn. Wir haben dieses Verfahren gewählt, damit der Sensor nicht wegen einer harmlosen Störung im Netzwerk abstürzt. Die Anwendung heißt main.py, was bewirkt, dass das Programm sofort nach dem Einschalten des Controllers startet (Listing 4). Um das Programm abzubrechen, verwenden Sie innerhalb der Thonny-Konsole [Strg]+[C].

Listing 4

main.py

import network
import time
import socket
import dht
import machine
import sys
import urequests
ssid = "<YOUR-SSID>"
key  = "<YOUR-PASSWORD>"
hive = 1
while True:
  try:
    station = network.WLAN(network.STA_IF)
    station.active(True)
    while True:
      print ("Connecting .",end="")
      while not station.isconnected():
        time.sleep(1)
        print (".",end="")
        station.connect(ssid, key)
      d = dht.DHT22(machine.Pin(19))
      print(d.measure())
      print(d.temperature())
      print(d.humidity())
      req="http://<YOUR-SERVER>:8000/bee?tmp="+str(d.temperature())\
        +"&hum="+str(d.humidity())+"&hive="+str(hive)
      print (req)
      response = urequests.get(req)
      time.sleep(300)
  except KeyboardInterrupt:
    print ("interrupt")
    sys.exit(0)
  except:
    pass

Grafana

Anschließend gilt es, Grafana mit der Datenbank zu verbinden und unser erstes Dashboard zu erstellen. Nach der Installation von Grafana müssen Sie den Server mit dem Kommando sudo systemctl start grafana-server manuell starten. Danach erreichen Sie die Grafana-Oberfläche im Browser über den Port 3000, etwa http://127.0.0.1:3000. Für das erste Login verwenden Sie den User admin mit dem Passwort admin. Danach sollten Sie als zunächst das Passwort ändern.

Danach gelangen Sie auf die Hauptseite (Abbildung 4) des Grafana-Servers. Auf der linken Seite befindet sich die Hauptnavigation, über die Sie alle Funktionen erreichen – beispielsweise, um direkt zu den DATA SOURCES zu wechseln. Unter diesem Punkt legen Sie die Datenquelle fest, derer sich Grafana bedienen soll. Dieser Schritt ist essentiell, um Daten mit Grafana zu visualisieren.

Abbildung 4: Die Hauptseite des Grafana-Servers platziert alle wichtigen Komponenten in einer Oberfl&auml;che.

Abbildung 4: Die Hauptseite des Grafana-Servers platziert alle wichtigen Komponenten in einer Oberfläche.

Klicken Sie jetzt auf DATA SOURCES und wählen Sie MySQL aus, das zu MariaDB kompatibel ist. Abbildung 5 zeigt die notwendigen Einstellungen, um die MariaDB als Datenquelle einsetzen zu können. Speichern Sie die Einstellungen mithilfe eines Klicks auf Save &Test. Passt alles soweit, kehren Sie mit einem Klick auf das Grafana-Logo oben links zur Hauptseite zurück. Daraufhin wenden Sie sich den DASHBOARDS zu.

Abbildung 5: Um eine Verbindung zu MariaDB herzustellen gen&uuml;gt es, die erforderlichen Credentials einzugeben.

Abbildung 5: Um eine Verbindung zu MariaDB herzustellen genügt es, die erforderlichen Credentials einzugeben.

Den Hauptbestandteil eines Dashboards bildet das Panel. Fügen Sie Ihrem Dashboard ein Panel hinzu, und wählen Sie innerhalb dessen die Datenbank, Tabelle und die einzelnen Spalten aus, die Sie in Ihrem Chart abbilden möchten. Beachten Sie dabei, dass eine Tabellenspalte mit einem Zeittypen automatisch für die X-Axchse (horizontal) verwendet wird. Sobald Sie auf Run query klicken, entsteht aus den vorhandenen Daten das Chart (Abbildung 6).

Allerdings scheint Grafana in Verbindung mit MariaDB die Zeitzonen nicht korrekt zu verarbeiten – Egal was Sie in der Datenquelle einstellen, es hat keinerlei Auswirkungen. Deswegen müssen Sie hier auf einen kleinen Trick zurückgreifen, um die richtigen Zeiten in unserem Chart angezeigt zu bekommen. Dazu wechseln Sie vom Builder- in den Code-Modus, um das SQL für die Datenextraktion manuell anzupassen. Sie ändern das SQL-Statement wie in Listing 5 gezeigt.

Listing 5

SQL-Statement anpassen

#### Ursprüngliches SQL-Statement
SELECT m_time, hum, tmp FROM bee.beeData LIMIT 50
#### Modifiziertes SQL-Statement
SELECT DATE_SUB(m_time, INTERVAL 1 HOUR), hum, tmp FROM bee.beeData

Siehe da – Die Messwerte erscheinen nun zu dem Zeitpunkt im Chart, den wir erwarten (Abbildung 7). Wundern Sie sich nicht über die vielen Messwerte, der Sensor wurde zum Testen auf ein Minutenintervall gestellt. Um das Panel im Dashboard zu speichern, klicken Sie oben rechts auf Save.

Es fällt nicht schwer, mit Grafana Messwerte zu visualisieren. Wir haben für unser Beispiel die meisten Einstellungen auf dem Stand des Auslieferungszustands belassen. E gibt jedoch zahlreiche Möglichkeiten, das Chart rechts über die Einstellungen an Ihre spezifischen Anforderungen anzupassen.

Abbildung 6: Grafana Chart verwendet ohne Modifikationen am Code eine falsche Zeitzone.

Abbildung 6: Grafana Chart verwendet ohne Modifikationen am Code eine falsche Zeitzone.

Abbildung 7: Grafana Chart mit SQL-Workaround f&uuml;r die Zeitzone.

Abbildung 7: Grafana Chart mit SQL-Workaround für die Zeitzone.

Zu guter Letzt möchten wir Ihnen noch einige Tipps für den Betrieb des Grafana-Servers mit auf den Weg geben. In der Tabelle “Grafana-Server steuern” finden Sie die Kommandos, um den Server gegebenenfalls neu zu starten oder ihn als Service im System einzurichten.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben