Der Raspberry
Raspberry mit Betriebssystem ausstatten
Benötigt wird hierbei ein Mac oder Linux Computer, der Pi und eine microSD Karte. Das Betriebssystem kann hier gedownloaded werden. "Raspbian with Desktop" ist ausreichend, oder wenn gar keine grafische Oberfläche benötigt wird am besten die "Lite" Version verwenden. Das heruntergeladene Zip sollte nun entpackt werden.
Nach Download des OS, wird die SD-Karte mit dem Computer verbunden und ein Terminal geöffnet. Mit dem Befehl diskutil list
wird eine Liste der angeschlossenen Datenträger angezeigt, und die SD-Karte sollte sich unter dem Bezeichner disk2
finden. Mit dem Befehl: diskutil unmountDisk /dev/disk2
wird die Karte nun ausgeworfen, damit sie neu bespielt werden kann. Nun kann das OS auf die Karte übertragen werden, mit dem Befehl: sudo dd if=Downloads/2019*.img
sollte ein Fehler erscheinen, ist höchstwahrscheinlich der Benutzer nicht berechtigt das Programm sudo
zu verwenden. Um dies zu umgehen wird zu erst der Befehl: su superuser
eingeben und mit dem Administrator Passwort quittiert. Danach ein sudo su
und der Administrator ist angemeldet, nun noch mal ein dd if=Downloads/2019*.img of=/dev/rdisk2 bs=1m
. Nach dem Fertigstellen des Befehls, sollte nun das Administrator-berechtigte Fenster geschlossen werden.
Die bespielte SD-Karte kann nun in den Pi eingesteckt werden. Wenn ein Raspbian mit Desktop installiert wurde, empfiehlt sich die Einrichtung über einen HDMI Monitor mit Hilfe einer Tastatur und Maus (min. 2.5 A Netzteil benötigt).
ssh
Der Standard Login für den Pi lautet: pi:raspberry
(Hier ist zu beachten das die Standart Tastatur einstellungen qwerty sind!). Als erstes sollte der Zugang über ssh aktiviert werden. Dafür wird auf dem Pi ein Terminal geöffnet und dann der Befehl sudo raspi-config
eingegeben. Unter Punkt 1 sollte als erstes das passwort für den User pi geändert werden. Unter Punkt 4 kann danach die Sprache und Tastatur Layout angepasst werden.
Nun unter Punkt 5 "Interfacing Options" wird der ssh-Zugang aktiviert. Jetzt kann der Bildschirm wieder entfernt werden, durch Anschluss eines LAN-Kabels erhält der Pi nun eine IP und kann wie unter diesem Abschnitt (link) beschrieben, im Netzwerk identifiziert werden. Anschließend kann über einen Client die ssh Verbindung hergestellt werden (mit ssh pi@192.168.2.X
).
Systemsoftware des Raspberry aktualisieren
Nach dem Zugriff über ssh
(link erklärung) wird über den Befehl:
sudo apt update
der Paketindex des Programmes apt
aktualisiert. Anschließend werden mit:
sudo apt upgrade -y
alle veralteten Pakete automatisch aktualisiert (dies schließt aber keine manuell installierten Pakete mit ein, zum Beispiel Python Pakete).
Einen DHCP Server auf dem Raspberry installieren
Um dafür zu sorgen, dass der Raspberry die IP-Adressen aushändigt, muss eine Software namens isc-dhcp-server
mit Hilfe von sudo apt install isc-dhcp-server
installiert werden. Die Konfiguration dieser Software ist relativ aufwendig und kompliziert, da sie sich über mehrere Dateien erstreckt. Der Server sollte nach der pivCCU (link) installiert werden, auf keinen Fall davor.
Zuerst wird die IPv6 Funktionalität des Pi deaktiviert in dem mit dem Befehl sudo nano /etc/sysctl.conf
eine Zeile: net.ipv6.conf.all.disable_ipv6 = 1
unten angefügt wird. Dann wird die Konfiguration mit sudo sysctl -p
neu eingelesen.
Nun wird mit sudo /etc/default/isc-dhcp-server
der dortige IPv6 Eintrag komplett gelöscht und hinter IPv4 wird eth0
eingetragen: INTERFACESv4="eth0"
.
HomeMatic CCU oder piVCCU
Ein Paket namens piVCCU
ermöglicht die Installation einer virtuellen CCU auf einem Raspberry. Zu finden ist es auf der Github-Webseite. Die Installation ist relativ aufwendig und sollte stets exakt nach Anleitung ausgeführt werden.
Um sie zu updates reicht ein simples sudo apt update
und sudo apt upgrade -y
, da während der Installation von piVCCU
die entsprechenden Paketquellen zur Paketliste hinzugefügt werden.
Während der Installation muss unbedingt darauf geachtet werden, bei Schritt 7 die IP-Adresse statisch zu definieren. Hier wird folgendes eingetragen:
auto br0
iface br0 inet static
bridge_ports eth0
address IP-RASPBERRY
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 1.1.1.1 8.8.8.8
Nach der Installation ist die CCU im Netzwerk erreichbar. Um ihre IP herauszufinden einfach eine der folgenden Methoden ausführen. Falls ihre IP-Adresse manuell gesetzt werden soll, einfach den Befehl sudo nano /var/lib/piVCCU/userfs/etc/config/netconfig
ausführen und die entsprechenden Zeilen anpassen:
MODE=MANUAL
CURRENT_IP=GEWÜNSCHTE IP
CURRENT_NETMASK=255.255.255.0
CURRENT_GATEWAY=192.168.2.1
CURRENT_NAMESERVER1=1.1.1.1
CURRENT_NAMESERVER2=8.8.8.8
IP=GEWÜNSCHTE IP
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
NAMESERVER1=1.1.1.1
NAMESERVER2=8.8.8.8
Die CCU funktioniert nicht ohne entsprechende Hardware. Um die CCU an einem Raspberry zu verwenden wird folgendes Modul verwendet: HM-MOD-RPI-PCB.
Auslastung des Raspberry überwachen
Die Auslastung des Raspberrys kann auf vielfältige Art und Weise erkundet werden. Einmal über das Programm htop
das CPU und RAM Auslastung aller Prozesse in echtzeit auflistet. Dann kann ebenfalls das Netzwerk mit sudo iftop
betrachtet werden und schlussendlich die Festplatten (bzw. SD-Karten) Auslastung mit: sudo iotop
. Sollte eines der Programme fehlen, kann es ganz einfach über sudo apt install PROGRAMM
nachinstalliert werden.
IP-Adressen aller Geräte herausfinden
Die Ansicht im Speedport sollte nicht zur Rate gezogen werden, da der Raspberry statische DHCP-leases (sozusagen IP-Adressen Tickets) verteilt und der Speedport keinen Einfluss darauf nehmen kann. Stattdessen eignet sich die App Lanscan
auf dem Mac und Fing
auf einem mobilen Endgerät, um zuverlässig hostnamen, IP's und MAC-Adressen zu ermitteln.
Einem Gerät eine statische IP-Adresse zuweisen
Da der Speedport diese Funktion nicht unterstützt (lediglich hostnamen können vergeben werden, diese funktionieren aber nicht in einigen Integrationen von Hass) verteilt der Pi die IP-Adressen mit Hilfe eines DHCP-Servers (Dynamic Host Configuration Protocol, dynamisches Host Konfigurations-Protokoll). Dieser wird mit Hilfe dieser Anleitung installiert. Nach dem er installiert wurde, kann mit Hilfe des Befehls: nano /etc/dhcp/dhcpd.conf
die IP-Adresse, MAC und Hostname eingetragen werden. Um die MAC Adresse des Geräts zu ermitteln, siehe diesen Eintrag. Die Auflistung für ein Gerät sieht dann zum Beispiel so aus:
Host rgb-licht {
hardware ethernet 44:11:ff:11:32:ab;
fixed-address 192.168.2.121;
}
Nun erhält das Gerät mit der entsprechenden MAC-Adresse (ethernet) immer die selbe IP.
Sicherungskopie für wichtige Dateien erstellen
Lorem Ipsum
Zugriffsrechte von Dateien
Um die derzeitigen Zugriffsrechte und Besitzer einer Datei anzuzeigen, wird der Befehl ls -la
ausgeführt.
drwxr-xr-x 6 pi pi 4096 Apr 9 21:18 Desktop
Das Verzeichnis Desktop
gehört den Benutzer pi
und der Gruppe pi
. Die Buchstaben am Anfang stehen für die Zugriffsrechte. r = read, also lesen, w = write, schreiben, x = execute, ausführen. Wie zu sehen ist, gibt es drei Blöcke der Buchstaben. Der erste Block aus drei Buchstaben beschreibt die Rechte des Eigentümers. Die nächsten beiden stehen für die Gruppe normalen Benutzer, und die letzten Buchstaben für benutzer denen das verzeichnis nicht gehört und nicht der Gruppe angehören (öffentlich).
Um nun die Zugriffsrecht zu ändern wird zum Beispiel folgendes ausgeführt:
chmod +x test.sh
Dies fügt dem shellscript test.sh
die Ausführungsrechte hinzu, dass heißt das Script kann nun ausgeführt werden. Um den Besitzer einer Datei zu ändern wird folgendes gemacht:
chown majuss:majuss test.sh
Dies ändert den Besitzer zu majuss
und der Gruppe majuss
.
Dateien und Verzeichnisse erstellen, bewegen, kopieren, entfernen
Die einfachste Datei-Manipulation geht mit dem Programm touch
von statten.
touch test.txt
Erstellt einfach eine leere Datei mit dem entsprechenden Namen.
Um ein Verzeichnis zu erstellen wird folgendes ausgeführt:
mkdir test123
mkdir
also "make directory" erstellt ein leeres Verzeichnis mit dem entsprechenden Namen. Um nun das wd
(working directory) also das "Arbeitsverzeichnis" in das eben erstellte zu wechseln, wird: cd test123
ausgeführt. Der Pfad zum derzeitigen Arbeitsverzeichnis kann mit pwd
(path working directory) eingesehen werden.
Um eine Datei zu bewegen wird der derzeitige Pfad zu Datei/ Verzeichnis und der zukünftige benötigt: mv test.txt Desktop/
.
Das Kopieren erfolgt analog mit dem Programm cp
: cp test.txt test2.txt
. Für ein Verzeichnis wird hier jedoch der Parameter -r
(recusrive) benötigt: mv -r test123 Desktop/
Das Löschen sollte mit größter Sorgfalt verwendet werden, gelöschte Dateien sind nicht wiederherstellbar (da Flashspeicher ihre freien Blöcke bereinigen). rm test.txt
löscht eine Datei, wobei rm -rf test123
ein Verzeichnis löscht.
Textdateien direkt im Terminal editieren
Um beliebige Textdateien wie zB. .yaml
oder .txt
Dateien auf dem Raspberry zu editieren wird am besten der Editor nano
verwendet. Um ihn zu verwenden wir er einfach aufgerufen und als Parameter der Pfad zur Datei angegeben. zB.:
nano /home/pi/meineDatei.txt
Im Editor selbst kann nur die Tastatur und die Pfeiltasten zu Navigation eingesetzt werden. Um ihn zu verlassen und die Datei zu speichern, wird ctrl + x
gedrückt und danach y
um zu bestätigen, dass die Datei überschrieben werden soll. Sollte eine Meldung erscheinen, dass die Permissions / Zugriffsrechte nicht ausreichen sind sollte der Editor mit Hilfe von sudo gestartet werden.
Befehle als Administrator ausführen
Um nicht jedes mal den Benutzer auf root
wechseln zu müssen, wird das Programm sudo
verwendet. Es führt dazu, dass der folgende Befehl mit Administratorrechten ausgeführt wird. zB.:
sudo nano /etc/amazon-dash.yaml
Dies ist immer dann notwendig, wenn Dateien editiert werden sollen, die dem Nutzer pi
nicht gehören. Oder wenn Programme ausgeführt werden sollen, die generell administrative Rechte benötigen, zB. das Programm shutdown
.
Datein mit einer grafischen Oberfläche editieren
Dateien die dem Benutzer pi
gehören (Besitzrechte können mit ls -la
überprüft werden) können auch komfortabel mit Visual Studio Code
und Forklift
editiert werden. Hierzu wird Forklift
geöffnet und in der Favoritenleiste links der Raspberry ausgewählt. Nun kann auf dem Raspberry Dateisystem erkundet werden. Um Dateien mit Visual Studio Code
zu öffnen, empfiehlt es sich die Datei recht zu klicken und dann unter dem "Öffnen mit"-Menü, Visual Studio Code
auszuwählen. Nun wird die Datei in ein temporäres Verzeichnis kopiert und kann editiert werden. Beim speichern, kopiert Forklift
die Datei automatisch wieder auf den Raspberry, vorausgesetzt der Benutzer pi
besitzt die entsprechenden Schreibrechte.
Kommandozeilenzugriff auf den Raspberry mit ssh
Der Raspberry wird über die Kommandozeile gesteuert. Dies erfolgt über das Programm ssh
(secure shell). Es basiert auf ein schlüsselbasiertes Kryptographieverfahren und gehört zu den sichersten Anwendungen der Welt. Beim erzeugen der Authentifizierungsschlüssel mit ssh-keygen
wird ein sogenannter privater und öffentlicher Schlüssel im Verzeichnis /home/pi/.ssh/
erzeugt. Der private Schlüssel in der Datei id_rsa
sollte niemals herausgegeben oder verschickt werden, da er das einloggen in alle Geräte ermöglicht wo der öffentliche Schlüssel aus der Datei id_rsa.pub
(pub für public) hinterlegt ist. Um sich nun sicher auf ein Gerät einzuloggen wird ssh pi@192.168.1.55
ausgeführt. Wenn noch kein Schlüssel hinterlegt wurde, bzw. die Einstellungen noch relativ unsicher sind, wird er nun nach dem Passwort für den Benutzer pi
fragen. Nachdem es eingegeben und mit Enter bestätigt wurde, kann nun nano ausgeführt werden um den öffentlichen Schlüssel des Clients (Mac) einzutragen.
nano .ssh/authorized_keys
In einem anderen Terminal Fenster auf dem Client Gerät sollte nun cat .ssh/id_rsa.pub
ausgeführt werden. Der erscheinende Schlüssel im Format: ssh-rsa AAAABHIUGDFIHEOWIJREWIUHWEFQOWIEHGZTRZOIHJKBHVGCDRZE
sollte nun vollständig kopiert werden. Zurück zum Fenster mit geöffneten nano
wird der Schlüssel hier einfach eingefügt und die Datei gespeichert.
Einen VPN-Server einrichten
Mit dem Befehl: curl -L https://install.pivpn.io | bash
wird das Installationsprogramm für openVPN auf dem Pi heruntergeladen und ausgeführt. Die Einrichtung ist relativ simpel und es kann eigentlich fast alles mit enter bestätigt werden. Lediglich die IP-Adresse sollte auf die DynDNS geändert werden. Nach der Installation muss der Pi neugestartet werden.
Danach wird mit: pivpn add
ein Profil hinzugefügt und entsprechend der Name des Clients und ein Passwort vergeben. Das erstelle Profil befindet sich dann in /home/pi/ovpns/
es wird einfach mit Hilfe von Forklift
kopiert und dann mit Visual Studio Code
geöffnet und Zeile vier wird geändert:
remote yourDYNDNS.ddnss.de PORT
Der Port sollte auf etwas wie 50700
geändert werden, um zu verhindern, dass Fremde online das VPN leicht aufspüren können. Nun wird der Port im Router weitergeleitet, dazu im Routermenü auf Internet -> Portfreischaltung -> Port-Umleitungen und Port-Weiterleitungen
dort auf das Plus und die Weiterleitung benennen und den Pi auswählen. Nun wird der UDP Port 50700
auf den lokalen Port 1194
weitergeleitet.
Automatischen Neustart von Programm einrichten
Bei einige Programmen empfiehlt es sich einen automatisierten Neustart zu programmieren. Die Prozessorbelastung durch amazon-dash
wird zB. mit der Zeit immer höher, höchstwahrscheinlich weil eine Variable nicht korrekt deklariert wird. HomeAssistant sollte zB. einmal in der Woche neu gestartet werden, um dies zentralisiert und korrekt zu tun, sollten sogenannte crontabs
angelegt werden. Hierzu einfach sudo crontab -e
aufrufen (beim ersten Aufruf wird nach dem Editor gefragt, einfach nano
mit der 1
bestätigen). Hier werden nun unten folgende Zeilen hinzugefügt:
0 3 * * * service amazon-dash restart
0 3 * * 1 systemctl restart home-assistant@homeassistant.service
Die genaue Syntax der Cron-Notation kann in einem Online-Rechner nachvollzogen werden.
Drucker mit cups einrichten (AirPrint)
Cups ist eine Art Vermittler-Software die beliebige Drucker über das Netzwerk freigibt, damit diese direkt über zB. iOS ausgewählt werden können. Der Server wird mit Hilfe von sudo apt install cups
installiert. Danach kann auf das Webinterface des Servers über einen Browser zugegriffen werden: 192.168.2.X:631
das X
durch die eigentliche IP-Adresse des PIs ersetzen.
MEGAcmd
Zuerst MEGAcmd hier downloaden (von der offiziellen mega.nz Seite). Es sollte das Raspbian .deb Paket gewählt werden. Anschließend den Download link kopieren und auf dem Raspberry mit wget
herunterladen oder per Forklift vom Client auf den Pi kopieren und anschließen mit dpkg -i *.deb
installieren. Nun sind sämtliche MEGAcmd command line Programme installiert. Mit dem Aufruf von mega-login 'email' 'password'
einloggen. Danach mit mega-sync 'LOKALER_PFAD' 'MEGA_PFAD'
eine neue Synchronisationsregel erstellen.
Neustart beschleunigen
Oftmals wird der Neustart durch das warten auf die Beendigung einiger Dienste verzögert. Dies kann beschleunigt werden, indem das TimeOut verringert wird.
sudo nano /etc/systemd/system.conf
DefaultTimeoutStopSec=5s
Install unrar-nonfree
Uninstall
unrar-free
.$ sudo apt-get remove unrar-free
Make sure you have a source repository by editing
/etc/apt/sources.list
.$ cat /etc/apt/sources.list # Default repository deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi # Source repository to add deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi
Sync the apt database.
$ sudo apt-get update
Create a working directory and move into it. The
unrar-nonfree
command will be built in this directory.$ cd $(mktemp -d)
Install the dependencies required by
unrar-nonfree
.$ sudo apt-get build-dep unrar-nonfree
Download the
unrar-nonfree
sources and build the.deb
package.$ sudo apt-get source -b unrar-nonfree
Install the generated
.deb
package. Its name varies depending on the version ofunrar-nonfree
.$ sudo dpkg -i unrar*.deb
The working directory you have created in step 4 will be removed at next boot; there is no use to delete it.
Liste der Software auf dem Raspberry
Die folgende Liste gibt einen Überblick welche Software auf dem Raspberry läuft:
Cups Druckserver
HomeAssistant
piVCCU
amazon-dash
isc-dhcp-server
piVPN
Last updated
Was this helpful?