vor einigen Tagen habe ich mir einen weiteren Raspberry Pi 3 aufgesetzt. Ursprünglich war geplant, auch hier das Betriebssystem wieder auf eine USB-Festplatte zu installieren. Allerdings machte mir das Raspbian-Betriebssystem einen Strich durch die Rechnung. Ganz am Anfang hatte ich noch eine ältere Dektopversion des Raspbian-Systems auf der Festplatte. Dieses lief auch ohne Probleme. Daher führte ich die üblichen Updatebefehle "update" und "upgrade" aus. Nach einem Neustart erkannte Raspbian allerdings Maus und Tastatur nicht mehr. Daher lud ich mir dann das Minimal-Linux, ohne Desktop herunter. Hier lief alles. Ich konnte mit der Tastatur arbeiten und installierte daher per Kommandokonsole die Desktopumgebung "LXDE". Der Installationsprozess verlief ordnungsgemäß. Nach dem Neustart überraschte mich allerdings erneut, die Nicht-Erkennung von Maus und Tastatur. Da ich vermutete, dass die USB-Festplatte zusammen mit Maus und Tastatur zu viel Strom ziehen (Festplatte allein bei 1 Ampere), versuchte ich noch eine andere Festplatte mit 750mA Stromverbauch. Auch hier luden Maus und Tastatur beim Start der grafischen Oberfläche nicht. Letzter Akt der Verzweiflung: Ich nahm mir eine unbenutzte 32GB Micro-SD-Karte und installierte auch hier die grafische Raspbian-Version. Zu meiner Überraschung, lief alles auf Anhieb problemlos.
Somit machte ich mich bei, mir das Raspbian einzurichten und PostgreSQL zu installieren:
Zunächst wurde die Datenbanksoftware, sowie zusätzliche Komponenten installiert
Code: Alles auswählen
sudo apt-get install postgresql libpq-dev postgresql-client postgresql-client-commonCode: Alles auswählen
sudo apt-get install pgadmin3Code: Alles auswählen
sudo leafpad /etc/postgresql/9.6/main/postgresql.confCode: Alles auswählen
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;Code: Alles auswählen
sudo leafpad /etc/postgresql/9.6/main/pg_hba.confCode: Alles auswählen
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 0.0.0.0/0 md5Damit ist nun der Weg frei, um über einen Windowscomputer und PgAdmin3 (gibt es auch für Windows), sowie dem lokalen Netzwerk, sich mit der Datenbank zu verbinden.
Als nächstes folgt die Installation von PHP. Derzeit ist PHP7.0 für den Raspberry Pi3 aktuell. Installiert wird es mittels:
Code: Alles auswählen
sudo apt-get install phpCode: Alles auswählen
sudo apt-get install php7.0-pgsqlEin erstes, einfaches Script, welches prüft, ob die Datenbank erreichbar ist, ist das Folgende:
Code: Alles auswählen
<?php
$host = "host=localhost";
$port = "port=5432";
$dbname = "dbname=postgres";
$credentials = "user=postgres password=Passwort";
$db = pg_connect("$host $port $dbname $credentials");
$result = pg_query($db, 'SELECT * FROM people');
if (!$result) {
echo "Ein Fehler ist aufgetreten.\n";
exit;
}
?>Zum experimentieren habe ich mir in meiner Tabelle "people" zwei Spalten namens "Name" und "Company" angelegt, und dort über die Linux.Kommandokonsole Daten eingegeben. Um diese Daten abzufragen, nutze ich nun dieses Script:
Code: Alles auswählen
<?php
$host = "host=192.168.1.17";
$port = "port=5432";
$dbname = "dbname=postgres";
$credentials = "user=postgres password=Passwort";
$db = pg_connect("$host $port $dbname $credentials");
$result = pg_query($db, 'SELECT * FROM people');
if (!$result) {
echo "Ein Fehler ist aufgetreten.\n";
exit;
}
echo "Datenausgabe in Tabellenform <br><br>";
echo "<table border=1>";
echo "<tr>";
echo "<td align=center>Name</td>";
echo "<td align=center>Firma</td>";
echo "</tr>";
while ($row = pg_fetch_row($result)) {
echo "<tr>";
echo "<td align=center>$row[0]</td>";
echo "<td align=center>$row[1]</td>";
echo "</tr>";
}
echo "</table>";
?>Und natürlich können per PHP in diese Tabelle auch Daten hinzugefügt werden:
HTML-Abfrage-Formular:
Code: Alles auswählen
<!DOCTYPE html>
<head>
<title>Insert data to PostgreSQL with php - creating a simple web application</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
li {
list-style: none;
}
</style>
</head>
<body>
<h2>Bitte tragen Sie Ihre Daten ein:</h2>
<ul>
<form name="insert" action="insert.php" method="post" >
<li>Name:</li><li><input type="text" name="name" /></li>
<li>Firma:</li><li><input type="text" name="company" /></li>
<li><input type="submit" /></li>
</form>
</ul>
</body>
</html>
Code: Alles auswählen
<?php
$db = pg_connect("host=192.168.1.17 port=5432 dbname=postgres user=postgres password=Passwort");
$query = "INSERT INTO people VALUES ('$_POST[name]','$_POST[company]')";
$result = pg_query($query);
echo "Daten gesendet --- '$_POST[name]','$_POST[company]'";
?>
Wozu mache ich das?
Nun, zum einen möchte ich mich weiter entwickeln. Mir im Selbststudium neues Wissen aneignen. Und ich überlege, ob ich meine Wetterstation auf Datenbank umstelle. Derzeit läuft sie mit einem CSV ähnlichen Speichersystem. Die Daten werden mit einem Semikolon als Trennzeichen, in einer Textdatei abgelegt und von dort von meiner Stationssoftware ausgelesen und weiter verarbeitet. Würde ich auf Datenbank umstellen, könnte ich die Datenbanksysteme auf dem Homepageserver (MySQL) nutzen und die Daten dort ablegen. Hier bräuchte ich dann PHP-Kenntnisse um Auswertescripte für die Homepage zu schreiben. Die Nutzung einer direkt auf dem Homepageserver liegenden Datenbank hätte den Vorteil, dass ich PHP-Scripte schreiben kann, welche dem Seitenbesucher die Auswahl bestimmter meteorologischer Auswahlkriterien ermöglicht. Es könnten dann beispielsweise alle Tage mit Tagesmaximum < 0°C angezeigt werden. Oder mit Windgeschwindigkeiten > 40km/h. Auch würden alle Wetterdaten eines Jahres in einer einzigen Datenbank Platz finden. Und es wären noch viele, viele weitere Möglichkeiten machbar. Vor allem mache ich es aber, um mich für meine berufliche Zukunft weiter zu bilden, so dass ich potenziellen, zukünftigen Arbeitgebern auch etwas bieten kann.
So, genug geschrieben für heute Abend.
Ich wünsche allen Lesern einen angenehmen Abend.