Raspberry Pi SQLite Datenbank

Eine SQLite Datenbank ist auf einem Raspberry Pi eine alternative zur gebräuchlichen MySQL Datenbank.

Vorteile

  • Die Daten werden in einfachen Textdateien gespeichert
  • Verbraucht weniger Speicher
  • Keine ständig laufenden Serverprozesse, die konfiguriert, gestartet oder gestoppt werden müssen
  • Replkation durch Kopieren der Datenbank Dateien
  • Unterstützt große Teile des SQL Standards

Installation

Die Installation der SQLite Datenbank gestaltet sich auf einem Raspberry Pi sehr einfach. Einfach folgenden Befehl ausführen:

sudo apt-get install sqlite3

Nach der Installation kann man Datenbanken mit dem Befehl sqlite3 verwalten. Der Befehl sqlite3 test.db erstellt eine neue Datenbank test.db, wenn diese noch nicht vorhanden ist, und öffnet die Verwaltungskonsole von sqlite3. Innerhalb dieser Konsole können Sie SQL-Befehl an die Datenbank senden.Wenn kein Pfad zur Datenbank angegeben wird, wird diese in dem Verzeichnis erstellt, in dem Sie sich gerade befinden.

Zum Testen kann man SQlite3 auch auf Windows installieren. Hierfür das sqlite-tools-win32-x86-… von der SQLite Download Seite herunterladen und in ein beliebiges Verzeichnis entpacken. In der Eingabeaufforderung in das Verzeichnis wechseln und den Befehl sqlite3 test.db aufrufen. Wenn man mit .quit das Programm wieder verlässt, sollte in dem Verzeichnis eine Datei test.db mit 0 Byte existieren.

SQLite SQL

Tabelle erstellen

sqlite> BEGIN;
sqlite> CREATE TABLE temperatursensor(id INTEGER PRIMARY KEY AUTOINCREMENT, datum TEXT, temperatur NUMERIC, luftfeuchtigkeit NUMERIC);
sqlite> COMMIT;

SQLIte3 hat keinen DATE Datentyp. Datumsangaben werden je nach Format in den Datentypen TEXT, REAL und INTEGER gespeichert. Da ich das Datum hier in der Form „YYYY-MM-DD H:i:s“ speichere, habe ich den Datentyp TEXT ausgewählt.

Daten einfügen

sqlite> BEGIN; 
sqlite> INSERT INTO temperatursensor(datum, temperatur, luftfeuchtigkeit) values(datetime('now'),22.4, 48);
sqlite> COMMIT;

Daten auslesen

sqlite> SELECT * FROM temperatursensor;

Die Ausgabe sollte in folgender Form erscheinen. 2|2018-11-13 10:10:34|22.4|48

SQlite und PHP

Um die Daten nun auf einem Webserver zu veröffentlichen, muß das PHP-Modul für SQLite installiert werden. Das geschieht mit folgendem Befehl:

sudo apt-get install php-sqlite3

Voraussetzung ist natürlich, dass PHP schon auf dem Raspberry Pi installiert ist. Hiermit werden die Module sqlite3 und pdo_sqlite3 für PHP installiert. Ich bevorzuge das PDO Modul, da ich dieses auch für MySQL nutze.

<?php try { // Datenbank öffen $db = new PDO('sqlite:temperatur.db'); //Daten auslesen und anzeigem $result = $db->query('SELECT * FROM temperatursensor'); foreach($result as $row) { print_r("<p>" . $row . "</p>"); } // Datenbankverbindung schließen $db = NULL; } catch(PDOException $e) { print 'Fehler: '.$e->getMessage(); } ?> ...  mehr lesen

Raspberry Pi 433 MHz – Teil 2

Einleitung

Im ersten Teil dieses Artikel habe ich gezeigt, wie man einen 433 MHz Temperatursensor einer Wetterstation auf dem Raspberry mit pilight auslesen kann. Doch nur das Auslesen mit dem Befehl pilight-receive ist ja nun nicht so richtig befriedigend. Wir wollen die Daten ja auch speichern und grafisch anzeigen lassen. Es existieren im Netz ein paar Beiträge zu diesem Thema, bei denen die Ausgabe des Befehls pilight-receive in einem Shellscript in eine Textdatei umgeleitet wird. Diese Script wird dann über einen Cron Job in definierten Zeitabständen aufgerufen. Die erzeugteTextdatei müsste man dann wiederum auslesen ,den Sensor mit den Werten identifizieren und die Daten z.B. in einer Datenbank oder einer CSV-Datei speichern.

Doch wozu dieser ganze Aufwand. Wir haben ja schließlich pilight installiert, welches einen inegrierten Webserver hat. In dem Abschnitt settings der Konfigurationsdatei /etc/pilight/config.json ist ein webserver-http-port angegeben. Sandardmäßig ist dieser 5001. Das bedeutet, dass Sie mit dem Aufruf http://ip-des-raspberry:5001 die Web-GUI des pilight Servers anspechen können. Und laut Dokumentation liefert der Aufruf http://ip-des-raspberry:5001/values die Werte der Sensoren. Dafür muss der Sensor aber im Abschnitt devices in der Konfigurationsdatei config.json eingetragen sein.

Sensordaten auslesen

Der Aufruf des Programms pilight-receive hat folgende Ausgabe erzeugt.

{
	"message": {
		"id": 2047,
		"temperature": 409.5
	},
	"origin": "receiver",
	"protocol": "alecto_wsd17",
	"uuid": "0000-b8-27-eb-5564a4",
	"repeats": 1
}
{
	"message": {
		"id": 1,
		"temperature": 18.1,
		"humidity": 21.0,
		"battery": 1
	},
	"origin": "receiver",
	"protocol": "alecto_ws1700",
	"uuid": "0000-b8-27-eb-5564a4",
	"repeats": 1
}

Wobei das der Abschnitt protocol = alecto_ws1700 die Werte des Temperatursensors beinhaltet. Dieser Abschnitt hat die id 1.

Nun fügen Sie folgenden Inhalt in den Bereich devices der config.json hinzu, so dass der Abschnitt devices folgendermaßen aussieht:

"devices": {
"Temperatursensor1": {
"protocol": [ "alecto_ws1700" ],
"id": [{
"id": 1
}],
"temperature": 20.7,
"humidity": 51.0,
"battery": 1
}
},
 ...  mehr lesen

Raspberry Pi 433 MHz – Teil 1

Hardware

Man kann mit dem Raspberry Pi 433 MHz Signale sowohl empfangen als auch senden. Je nach Anwendungsfall gibt es dafür verschiedene Bibliotheken. Die Hardware, die benötigt wird, besteht aus einen 433MHz Empfänger und einen 433MHz Sender. Beide sind zusammmen für ein paar Euro erhältlich sind. Zusätzlich habe ich mir einen Funksender für eine Wetterstation bei PEARL bestellt. Dieser kostet ca. 4,00 € zuzüglich Versand.

433MHz Sender und Empfänger

433MHz Sender und Empfänger

Funksender Wetterstation

Funksender Wetterstation

Die Empfänger und Sender kosten als Paar nur etwa 2,00€, sind aber dementsprechend mit Vorsicht zu geniesen. Ich habe hier mehrere davon und musste feststellen, dass sie mal mehr und mal weniger funktionieren. Bei dem einen Enpfänger zeigt pilight überhaupt keine Daten an, bei dem zweiten nur einen Teil der Daten, und bei einem baugleichen dritten Empfänger alle Daten. Daher beschäftige ich mich im zweiten Teil dieses Artikel mit alternativen Empfängern und Sendern.

Schaltplan

Schaltplan

Schaltplan

Software

Bei der Auswahl der Software kommt es darauf an, welche Aufgaben man lösen will. Für das Schalten von Funksteckdosen reicht die Bibliothek 433Utils von Ninjablocks. Das Schalten von Funksteckdosen habe ich in diesem Beitrag beschrieben.

Für das Auslesen von z.B. Temperatursensoren von einer Wetterstation ist die Bibliothek von ninjablocks nicht geeignet. Die Empfängersoftware kann diese Signale nicht auszulesen. Hierfür kann man die Software pilight benutzen. Pilght ist eine freie Hausautomationssoftware die aktuell ca. 60 Geräte unterstützt. Unter anderem auch den hier eingesetzen Funksender vom PEARL. Mancher könnte sagen, dass pilight etwas „overdressed“ ist, da es eine komplette Hausautomationssoftware ist. Aber die Sotware hat den Vorteil, dass sie die Signale des Funksenders gleich richtig als Temperatur darstellt. Ansonsten müsste man die übertragenen Signale selbst decodieren und in die entsprechende Temperatur umrechnen.

Pilight installieren

Für die Installation von pilight fügt man das pilight Repository zu den Quellen des Raspberry Pi hinzu.Hierfür wird die Datei /etc/apt/soueces.list editiert und folgende Zeile hinzugefügt.

deb http://apt.pilight.org/ stable main

Um das neue Repository verwenden zu können muss noch der Schlüssel heruntergeladen und geprüft werden. Danach wird ein Update des Pi gemacht.

sudo wget -O - http://apt.pilight.org/pilight.key | sudo apt-key add -
sudo apt-get -y update

Pilight mit folgendem Befehl installieren.

sudo apt-get -y install pilight

 

Konfiguration

Nach Abschluß der Installation wird die Datei /etc/pilight/config.json bearbeitet. Fügen Sie im  Bereich Hardware den 433 MHz Sender und Empfänger hinzu. In manchen Artikeln wird empfohlen den http Port auf 80 zu ändern. Das kann man machen, wenn nicht schon eine Apache Webserver auf dem Pi läuft. Ansonsten kommt es zu Konflikten. Die Datei sollte nicht bearbeitet werden, wenn der pilight Server läuft, da dieser beim Beenden die Datei überschreibt. Da kann man graue Haar bekommen, bevor man einen Fehler findet.

        "hardware": {},

ersetzen mit

        "hardware": {
                "433gpio": {
                        "sender": 0,
                        "receiver": 2
                }
        },

Weiterhin sind folgende Veränderungen in der config.json notwendig.

"standalone": 1,

ändern in

"standalone": 0,
"gpio-platform": "none"

ändern in

"gpio-platform": "raspberrypi3"

Die Änderung von stanalone von 1 auf 0 habe ich nicht wirklich begriffen, da er ja als nach meiner Logik als standalone ausgeführt werden soll. Fakt ist aber, dass wenn er als standalone 1 ausgeführt wird es zu folgender Fehlermeldung kommt, wenn man den Befehl pilight-receive ausführt:

no pilight ssdp connections found

Eventuell hat sich das der Programmierer mit 0 und 1 vertan. Bei der von mir eingesetzen Version 8.1.3. ist das jedenfalls der Fall.

Pilight starten

Zu ersten Test von pilight geben sie folgenden Befehl ein und prüfen sie die Ausgabe auf Fehlermeldungen

sudo pilight-daemon -D

Sollten keine Fehlermeldungen erscheinen können Sie in einem zweiten Shell Fenster den Befehl sudo pilight-receive eingeben. Nach einiger Zeit sollten Ergebnisse in folgender Form erscheinen.

{
"message": {
"id": 2047,
"temperature": 409.5
},
"origin": "receiver",
"protocol": "alecto_wsd17",
"uuid": "0000-b8-27-eb-5564a4",
"repeats": 1
}
{
"message": {
"id": 1,
"temperature": 18.1,
"humidity": 21.0,
"battery": 1
},
"origin": "receiver",
"protocol": "alecto_ws1700",
"uuid": "0000-b8-27-eb-5564a4",
"repeats": 1
}

 ...  mehr lesen

Raspberry Pi Zero: Raspbian installieren

Software herunterladen

Raspbian installieren – Raspbian ist das offizielle Betriebssystem von der Raspberry Pi Foundation und kann unter der Adresse http://www.raspberrypi.org/downloads herunter geladen werden. Die Datei ist eine ISO-Datei, die mit einer Software auf eine Micro-SD Karte geschrieben werden muss. Ein gutes Programm hierfür ist Etcher, welches man unter https://www.balena.io/etcher kostenlos herunter laden kann.

Micro-SD Karte beschreiben

Etcher

Etcher

Die Oberfläche ist sehr einfach gehalten.

1. Die ISO-datei auswählen, die Sie von raspberry.org herunter geladen haben.
2. Die Micor-SD Karte auswählen, die sie mit dem PC verbunden haben
3. Auf Flash! klicken

Nun wird das Raspbian Betriebssytem auf die SD-Karte geschrieben. Nachdem das Schreiben beendet ist, können Sie die SD-Karte entnehmen und in den Rasbperry Pi stecken.

Raspbian – erster Start

Ich empfehle, wenn Sie einen Raspberry Pi Zero verwenden wollen, die Karte zuerst in einen Raspberry Pi mit Netzwerkkarte zu stecken, da der Rasberry Pi Zero nur über WLAN verfügt. Slebst bei einer vernünftigen WLAN Anbindung ist das upgrade des Betriebssytems, was sie am Anfang unbedingt machen sollten, Ahf dem Raspberry Pi Zero fehlgeschlagen,  Also besser zuerst das Betriebssystem initialisieren und auf den neusten Stand bringen, bevor Sie die Karte in einen Raspberry Pi Zerso stecken.

Bei ersten Start des Betriebssystems wir das Land und ein Passwort für den Benutzer pi abgefragt. Anschließend versucht das System sich selbst zu aktualisieren. Wenn das wie oben erwähnt auf einem Raspberry Pi Zero fehl schlagen sollten, stecken Sie sie Karte in einen Raspberry Pi mit Netzwerkanschluß und führen Sie folgende Befehle aus:

sudo apt-get update
sudo apt-get upgrade

Der zweite Befehl kann eine ganze Weile dauern, da eine Reihe von Paketen aktualisert werden. Wenn alle Pakete aktualisert worden sind, erscheint die Ausgabe done. Nun können Sie den Raspberry Pi herunter fahren und die SD-Karte wieder in den Raspberry Pi Zero stecken und diesen starten. Das Betriebssystem ist nun auf dem neusten Stand.