Einrichtung des Raspberry und grundlegende Linux-Befehle
Im folgenden werden die Einrichtung des Raspberry und grundlegende Linux- Befehle z.T. stichpunktartig beschrieben.
1. Raspberry installieren (hier Raspberry 4)
Wichtig ist ein ausreichendes Netzteil (5V, mind. 3A). Gute Erfahrungen habe ich mit dem Original-Netzteil gemacht. Sind noch weitere Verbraucher mit 5V zu versorgen, empfiehlt sich evtl. ein Meanwell Schaltnetzteil für 5V bei 5A oder größer.
Das Betriebssystem (hier Raspberry Pi OS) kann zunächst auf eine MicroSD-Card installiert werden. Dies erfolgt meist mit dem Raspberry Pi Imager, der für alle gängigen Betriebssysteme von der Rasperry-Website angeboten wird.
Da die SD-Karten nicht für häufige Schreib-/Lesevorgänge ausgelegt sind, empfehle ich das Betriebssystem des Raspberry auf einen USB-Stick zu spielen. Derzeit sind 64GB-Sticks mit Lesegeschwindigkeiten von 100 MB/s recht günstig zu erhalten. Der Raspberry 4 kann direkt vom USB-Stick booten, man braucht nur das Raspberry Pi OS mit dem Imager auf dem USB-Stick zu speichern und vor dem Booten die SD-Card zu entfernen.
Dann führt das Betriebssystem den Benutzer durch die wenigen Konfigurationsschritte.
Ich empfehle die Schnittstellen SSH und VNC zu aktivieren (Hauptmenü – Einstellungen – RaspberryPi-Konfiguration). Dies erleichtert den Zugriff auf das Dateisystem.
Beim nächsten Neustart ist dann alles eingestellt.
Der Raspberry Pi 4 hat auch eine sehr komfortable Drucker-Konfiguration. Meinen alten HP-Deskjet 1220 hat er über die USB-Schnittstelle sofort erkannt und eingerichtet. Die Testseite wurde innerhalb einer halben Minute gedruckt, ohne weitere Probleme (wie oft bei anderen Betriebssystemen).
2. Grundlegende Linux-Befehle
Meiner Meinung nach kann man mit einem Raspberry nur sinnvoll arbeiten mit dem Betriebssystem Linux.
Grundsätzliches:
Jeder User ist mit Name und Passwort angemeldet.
Nur
der Systemverwalter(auch Root oder Superuser) hat alle
Berechtigungen. Er darf alles, auch ohne vorherige Rücksprache!
Beispiel: Der Befehl rm * löscht alle Dateien in diesem
Verzeichnis, ohne Rückmeldung!! Die sind dann weg.
Durch ein das vorangestellte Kommando sudo wird das Befehl mit Root-Rechten ausgeführt
User dürfen nur ihre eigenen Dateien schreiben(ändern), alle anderen nur anschauen(lesen). Sie dürfen auch nur bestimmte Ressourcen verwenden oder ändern. Beispiele: Sie dürfen den Rechner nicht ausschalten. Sie dürfen die Netzwerkkonfiguration nicht lesen oder ändern.
Ein Linux-Rechner sollte nie einfach ausgeschaltet werden. Er muss immer ordnungsgemäß heruntergefahren werden!
Einige Befehle für die Konsole (Terminal):
ls listet die Dateien im Verzeichnis auf
ls -l listet die Dateien im Verzeichnis in Langform auf
mkdir daten erstellt ein Unterverzeichnis daten
cd daten wechselt ins UV daten
cd .. wechselt ins übergeordnete Verzeichnis
cd / wechselt ins Wurzelverzeichnis (root)
cd ~ wechselt ins Homeverzeichnis des users
ip a zeigt die Netzwerkkonfiguration (z.B. IP-Adresse ) an
sudo init 0 fährt den Rechner ordnungsgemäß herunter
Kopieren von Dateien über eine ssh-Verbindung:
siehe auch: https://wiki.ubuntuusers.de/SSH/
Öffnen des Terminals: (bei Windows Eingabeaufforderung)
allgemein: scp [[user@]host1:]file1 ... [[user@]host2:]file2
scp test1.py pi@192.168.178.39:test1.py
Die Datei test1.py wird in das home-verzeichnis des Benutzers pi auf dem Raspberry (IP:192.168.178.39) mit dem Namen test1.py kopiert.
scp -r * pi@192.168.178.39:website
Kopiert alle Dateien (auch Unterverzeichnisse) auf den Rechner mit der angegebenen IP-Adresse in das Verzeichnis home/pi/website.
Editieren einer Textdatei mit nano (Texteditor)
öffnen der Datei: nano test1.py
Speichern der Datei: Strg O
Beenden: Strg X
Dateien, die nicht im Home-Verzeichnis des Users sind, können nur geändert werden, wenn man die Datei mit: „sudo nano test1“ öffnet.
3. Einrichten des Systems:
1-wire aktivieren
siehe: https://www.webnist.de/temperatur-sensor-ds18b20-am-raspberry-pi-mit-python/
sudo raspi-config
Interfacing options 1-wire enable
Neustart erforderlich
ins Unterverzeichnis wechseln:
cd /sys/bus/w1/devices
ls
die Kennungen der Sensoren z.B. 10-00803.. 10-00803.. werden aufgelistet
Ausführen eines Python Programmes:
normal: python time1.py
Programme, die in die Hardware des Raspberry eingreifen, müssen mit Systemverwalter-Rechten gestartet werden. Also:
sudo python temp_python411.py
Stoppen des Programms mit Strg C
Zeit einstellen bei Raspberry
Für die digitalen Betriebsarten ist eine genaue Systemzeit des Rechners Voraussetzung. Dazu installiert man den NTP-Client auf dem Raspberry. Dieser holt sich die aktuelle Zeit von einem verfügbaren Zeitserver.
Installation des NTP-Clients:
Geben Sie folgende Kommandos in einem Terminalfenster ein.
sudo apt-get install ntp
sudo apt-get install ntpdate
Die Systemzeit wird automatisch mit einem Time-Server im Internet synchronisiert. Natürlich nur wenn das Internet verfügbar ist .
Zur Kontrolle kann die aktuelle Zeit aus dem Internet im Browser angezeigt werden, wenn man als Adresse time.is eingibt. Dabei wird die Systemzeit synchronisiert. Vor allem kurz nach dem Starten des Rechners wird sich eine kleine Abweichung ergeben. Nach einigen Minuten stimmt aber die Systemzeit mit der aktuellen Zeit überein.
Das Kommando date in einem Terminalfenster zeigt die aktuelle Systemzeit an.
z.B.: Mo 13. Dez 20:56:59 CET 2021. So kann man Systemzeit und aktuelle Zeit miteinander vergleichen.
Quelle: https://www.logicals.com/de/support/forum/raspberry-pi/48-aktuelle-uhrzeit-aus-dem-internet-holen
Installation von WSJT-X und SparkSDR auf RaspberryPi
Stand: Dez/2021
Getestet wurde folgende Konfiguration:
Raspberry Pi 4B 8GB, Betriebssystem: Raspberry Pi OS(Legacy) with Desktop
WSJT-X 2.4.0, SparkSDR.2.0.7-4.linux-arm.deb
Mit dem derzeit aktuellen RaspberryPi OS konnte ich WSJT-X nicht installieren, daher benutzte ich das Raspberry Pi OS(Legacy), das auf dem herkömmlichen Raspbian- Betriebssystem basiert. Das Betriebssystem des Raspberry wird zunächst von der Website des Herstellers www.raspberrypi.org heruntergeladen und auf eine SD-Card mind. 8GB geflasht und nach dem Booten wird die Grundkonfiguration des Raspi durchgeführt.
Ich verwende statt der SD-Card immer einen USB-Stick als normalen Speicher des Raspi. USB-Sticks sind betriebssicherer und schneller als SD-Cards. Nach der Grundkonfiguration kopiere ich die SD-Card mit dem Programm SD-Card Copier (Hauptmenü-Zubehör) auf einen schnellen USB-Stick und stelle mit raspi-config die Boot-Reihenfolge auf USB und dann SD-Card um.
Dann erfolgt die Installation von WSJT-X. Die neueste Version 2.5.2 machte Schwierigkeiten, einige notwendige Bibliotheken waren nicht verfügbar. Daher verwendete ich eine „ältere Version“, nämlich 2.4.0( Mai 2021). Diese ist auf
https://sourceforge.net/projects/wsjt/files/ erhältlich. Passend ist die Datei wsjtx_2.4.0_armhf.deb.
Diese wird heruntergeladen und ist dann üblicherweise im Ordner Downloads. Zur Installation öffnet man ein Terminal und wechselt in das Unterverzeichnis Downloads und entpackt dann die Datei wsjtx_2.4.0_armhf.deb.
Bei
diesem Vorgang treten einige Fehler auf, da verschiedene Bibliotheken
fehlen. Mit dem Kommando sudo apt
-–fix broken install wird dies korrigiert. Ein erneuter
Aufruf von sudo dpkg -i
wsjtx_2.4.0_armhf.deb
installiert ohne weitere Fehlermeldung das Programm WSJT-X .
Das Programm WSJT-X kann mit sudo dpkg -P wsjtx wieder vollständig entfernt werden.
Die Installation von SparkSDR erfolgt etwas komfortabler. Auf www.sparksdr.com wird der Menüpunkt Downloads aufgerufen. Die Datei SparkSDR.2.0.7-4.linux.arm.deb herunterladen. Ein weiterer Klick entpackt5 die Datei und installiert sie.
Einrichten sqlite3 (einfache SQL-Datenbank)
http://vitech-blog.de/lm75-temperaturverlauf-aufzeichnen-und-visualisieren/
sudo apt-get update
sudo apt-get install sqlite3
sqlite3 mess1.db erzeugt eine Datenbank mit Namen mess1.db im Home-
Verzeichnis und öffnet zugleich die sqlite-Konsole.
sqlite> .quit Beenden der sqlite-Konsole
Erstellen einer Tabelle in der Datenbank:
Jeder Datensatz soll aus 4 Elementen bestehen, Temperatur 1 , Temperatur 2, Status des Kessels, aktuelle Zeit.
In der Datenbank wird wie in fast allen Datenbanken eine Tabelle angelegt:
temp1 |
temp2 |
st |
time |
Werte |
|
|
|
Dazu ist bei sqlite folgendes Kommando notwendig:
sqlite3 mess1.db Öffnen der Datenbank
sqlite> CREATE TABLE daten (temp1 REAL, temp2 REAL, st INT, time TEXT);
Damit wird eine Tabelle mit den Namen daten angelegt, die Datenfelder heißen z.B. temp1 vom Typ REAL usw. Es erscheint aber eine Fehlermeldung, „Die Datenbank ist nur im Lese-Modus geöffnet“. Es wurde also keine Tabelle angelegt.
Der Grund dafür ist im folgenden Bildschirmausdruck zu erkennen.
Nach dem Kommando ls -l werden die Dateien mit ihren Attributen angezeigt.
-rw-r--r-- 1 root root 0 Jun 15 21:19 mess1.db
rw-r—r--: Der Besitzer der Datei hat Lese-(r) u. Schreibrechte(w), die
Gruppe des Besitzers hat nur Leserechte (r--), alle anderen
haben auch nur Leserechte (r--)
1 Anzahl der Links (hier keine Bedeutung)
root root Der Besitzer ist root aus der Gruppe root
0 Größe der Datei (hier 0 Bytes)
Jun 15 .. Datum und Uhrzeit der letzten Änderung
mess1.db Dateiname
In die Datenbank mess1.db kann also nur der Besitzer, hier root, schreiben. Der normale User, hier pi, hat nur Leserechte!
Es müssen also die Zugriffsrechte der Datei geändert werden. Dies kann nur der Besitzer machen, also root.
Er benutzt das Kommando: sudo chmod 666 mess1.db
Mit chmod werden die Zugriffsrechte für Dateien oder Verzeichnisse geändert. Näheres: https://wiki.ubuntuusers.de/chmod/
Den Erfolg sieht man im Bildschirmausdruck, damit kann die Tabelle erstellt werden.
Das Kommando .schema daten zeigt den Aufbau der Tabelle.
Die Datenbank ist damit für den Eintrag von Werten vorbereitet. Im nächsten Schritt wird das Python-Programm erklärt, das die Sensoren ausliest und die Werte in die Datenbank schreibt.
4. Webserver lighttpd
links: https://www.elektronik-kompendium.de/sites/raspberry-pi/1905271.htm
https://www.elektronik-kompendium.de/sites/raspberry-pi/1905281.htm
Der Standard-Webserver ist der Apache2, dieser ist aber für unsere Zwecke etwas überdimensioniert. Daher nehmen wir den schlanken lighttpd-Server.
Die Installation erfolgt mit:
sudo apt-get install lighttpd
Das Webserver-Verzeichnis liegt standardmäßig in /var/www/html.
sudo groupadd www-data sudo usermod -G www-data -a pi sudo chown -R www-data:www-data /var/www/html sudo chmod -R 775 /var/www/html
Zunächst wird eine Benutzergruppe www-data angelegt.
usermod bearbeitet Benutzerkonten. Der Benutzer pi wird dieser Gruppe zugeordnet.
chown ändert den Eigentümer bzw. die Eigentümer-Gruppe einer Datei oder eines Verzeichnisses. Das Verzeichnis /var/www/html erhält den neuen Eigentümer hier: www-data aus der Gruppe www-data.
chmod ändert die Zugriffsrechte einer Datei oder eines Verzeichnisses.
-R ändert rekursiv, also auch für Unterverzeichnisse. 775 heißt: Alle dürfen lesen und ausführen, der Eigentümer darf auch schreiben. Das SetUID-Bit ist gesetzt, das Programm dieser Datei läuft immer mit den Rechten des Eigentümers.
Vor dem ersten Test sollte der Webserver neu gestartet werden.
sudo service lighttpd force-reload
Gibt man die IP-Adresse des Raspberry im Browser ein, hier 192.168.178.39, dann sollte die „Platzhalterseite“ erscheinen.
PHP-Unterstützung für Webserver lighttpd
Unser Webserver soll die Daten der Datenbank auf Anfrage über eine Webseite ausgeben können. Dies erfolgt oft mittels der Skriptsprache php. Unser muss also ein php-Skript verarbeiten können.
Installation:
sudo apt-get update sudo apt-get install php5-common php5-cgi php5 Es empfiehlt sich dass Fast-CGI-Modul für PHP zu aktivieren, im 3. Kommando wird er Webserver mit der neuen Konfiguration erneut gestartet. sudo lighty-enable-mod fastcgi sudo lighty-enable-mod fastcgi-php sudo service lighttpd force-reload
Der Test erfolgt mit einem kleinen php-Skript im Webserver-Verzeichnis /var/www/html. Mit dem Texteditor nano kann ein Einzeiler geschrieben werden.
nano phpinfo.php
<?php phpinfo(); ?>
Nach dem Speichern dieses Skripts kann der Erfolg mit einem Aufruf im Browser des PCs getestet werden.
http://192.168.178.39/phpinfo.php
Im Browser erscheint eine Seite mit aktuellen Informationen zur PHP-Version.
Wichtig: Eine Webseite, die ein php-Skript enthält, muss immer mit der Endung php aufgerufen werden.
Ein recht gute Zusammenfassung von grundlegenden Linux-Befehlen findet sich, allerdings in englischer Sprache auf:
www.raspberrypi.org/documentation/linux/