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 rootwechseln 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 *.debinstallieren. 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

  1. Uninstall unrar-free.

    $ sudo apt-get remove unrar-free
  2. 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
  3. Sync the apt database.

    $ sudo apt-get update
  4. Create a working directory and move into it. The unrar-nonfree command will be built in this directory.

    $ cd $(mktemp -d)
  5. Install the dependencies required by unrar-nonfree.

    $ sudo apt-get build-dep unrar-nonfree
  6. Download the unrar-nonfree sources and build the .deb package.

    $ sudo apt-get source -b unrar-nonfree
  7. Install the generated .deb package. Its name varies depending on the version of unrar-nonfree.

    $ sudo dpkg -i unrar*.deb
  8. 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?