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 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.

 

 

Raspberry Pi Apache Webserver

Der Raspberry Pi kann in lokalen Netzen hervorragend als lokaler Raspberry Apache Webserver genutzt werden. Besonders im Zusammespiel mit PHP kann man so über einen Webbrowser z.B. Funksteckdosen oder Bewässerungssysteme schalten. Folgende Schritte sind notwendig um den Apache Webserver auf einem Raspberry Pi zu installieren.

sudo apt-get update
sudo apt-get install apache2 -y

Beim Aufruf von http://localhost sollte nun folgende Seite im Webbrowser erscheinen.

Starseite des Apache Webservers

Starseite des Apache Webservers

Damit ist der APache Webserver auf dem PI installiert und läuft.

Raspberry Pi PHP

Wer auf seinem Raspberry eine Webserver betreibt, muss über kurz oder lang dynamische Seiten erstellen. Dafür wird eine Scriptsprache wie PHP benötigt. In diesem Artikel erkläre ich, wie man auf einem Raspberry Pi PHP installiert. Viele Benutzer verwenden den Raspberry Pi und Sachen zu schalten. Dafür möchten Sie eine Website auf dem Raspberry aufrufen, über die Sie den Status z.B. einer Funksteckdose sehen und diese auch schalten können. Dafür kann man PHP nutzen.

Installation

Bevor PHP und das Apache Modul von installiert werden, sollte der Apache Webserver bereits auf dem Pi installiert sein. Wenn das so ist, können Sie PHP mit folgendem Befehl installieren.

sudo apt-get install php libapache2-mod-php -y

Prüfen

Wenn der Befehl ohne Fehlermeldungen durchgelaufen ist, kann man mit einer einfachen php Datei prüfen, ob PHP auch läuft. Das Verzeicnis des Apache Webserver, aus dem er die angeforderten Dateien ausließt lautet /var/www/html. Erstellen Sie in diesem Verzeichnis eine neue Datei test.php mit folgendem Inhalt.

<?php phpinfo(); ?>

Diese Seite kann mit der URL http://localhost/test.php vom Raspberry Pi im Webbrowser aufrufen. Wenn Sie die Seite von einem externen Rechner aufrufen wollen, müssen Sie die IP-Adresse des Raspberry anstatt localhost eingeben. Die IP-Adresse des Raspberry erfahren Sie mit dem Befehl ifconfig. Wenn folgende Informationsseite erscheint, läuft PHP als Apache Modul auf dem Raspberry Pi.

Ausgabe PHP Info auf Raspberry Pi

Ausgabe PHP Info auf Raspberry Pi

Konfiguration

Um Befehle auf dem Rasberry mit den Funktionen exec() und shell_exec() ausführen zu können und damit GPIOs zu schalten, müssen Sie noch Berechtigungen anpassen. Die PHP Scripte werden unter dem Benutzer www-data ausgeführt.  Unter Raspbian Jessie (bei anderen Versionen weiß ich nicht, wie es konfiguriert ist) sind bestimmte Rechte notwendig, um GPIOs anzusprechen. Der Benutzer muss in der Gruppe gpio sein. Daher muss man dn Benutzer www-data noch der Gruppe gpio hinzufügen.

sudo usermod -aG gpio www-data

Wenn man shell Scripte aufrufen will, muss man auf die Berechtigungen achten. So kann der Benutzer www-data keine Scripte aufrufen, die vom Benutzer pi erstellt wurden und das Recht 744 haben. Auch den Befehl sudo in einem Shell Script zu benutzen, das man mit PHP ausführt, kann zu Komplikationen führen. Der Benutzer www-data hat per default keine Berechtigungen diesen Befehl zu nutzen. Dies kann man umgehen, in dem man den Benutzer www-data zur Gruppe sudo hinzufügt.

sudo usermod -aG sudo www-data

 

Beispiel

In diesem Beispiel wollen wir nun eine einfache LED am Raspberry per Webserver und PHP schalten. Die Schaltung mit dem Raspberry Pi sieht folgendermaßen aus.

Legen Sie nun eine Datei led.php mit folgendem Inhalt im Verzeichnis /var/www/html an.

<html>
<head>
<title>LED</title>
</head>
<body>
LED schalten:
<form method="get" action="led.php">
<input type="submit" value="ON" name="on">
<input type="submit" value="OFF" name="off">
</form>
<?php
shell_exec("/usr/local/bin/gpio -g mode 17 out");
if(isset($_GET['on'])){
shell_exec("/usr/local/bin/gpio -g write 17 1");
echo "LED ist an";
}
else if(isset($_GET['off'])){
shell_exec("/usr/local/bin/gpio -g write 17 0");
echo "LED ist aus";
}
?>
</body>
</html> ...  mehr lesen