Raspberry Pi
Beim Raspberry Pi handelt es sich um einen postkartengroßen Einplatinen-Computer, der von der Raspberry Pi Foundation entwickelt wird. Die Hardware basiert auf dem BCM 283x SoC (System-on-Chip) von Broadcom, einem ARM-Prozessor. Zu Hardwaredetails und den verschiedenen Modellen sowie Produktentwicklungen siehe Wikipedia. Dank der kleinen Abmessungen, dem recht geringen Energieverbrauch (bis ca. 4 Watt) sowie der günstigen Anschaffungskosten (ca. 30€) ist der Raspberry Pi eine attraktive Hardware für die Heimautomatisierung mit FHEM. Er ist dank dem Linux-Betriebssystem vollständig kompatibel zur aktuell vorhandenen und von FHEM unterstützen Hardware. Das derzeit empfohlene Standard-Image zum Betrieb des Raspberry Pi ist die auf Debian basierende Raspbian Distribution.
Installation / Setup
Betriebssystem
Vorbemerkung
Raspbian ist direkt bei raspberrybi.org unter https://www.raspberrypi.org/downloads/raspbian/ herunterladbar. Die folgende Anleitung gilt für die lite-Version ohne grafischen Desktop und für die Modelle für B, B+, B2, B3, B3+, Zero W. (Stand Juni 2018)
Alle in diesem Abschnitt verwendeten Code Blöcke benötigen root Rechte. Deshalb bitte immer am Besten im Kontext sudo su
ausführen. Man kann auch einzelne Befehle mit sudo davor ausführen, allerdings wird die Berechtigung bei Pipe Befehlen nicht durchgereicht.
Alle Dateien müssen im Linux Format (nur lf als Zeilenende) erzeugt/editiert werden! Unbedingt einen geeigneten Editor verwenden und auf das Format beim speichern achten!
SD Card vorbereiten
Die heruntergeladene Datei muss entpackt und auf die Speicherkarte geschrieben werden. Es gibt dazu verschiedene Tools je nach Betriebssystem. Für Windows ist windisk32imager zu empfehlen Projektseite [1].
Detaillierte Anleitungen zur Vorgehensweise finden sich für die Betriebssysteme Linux, Mac OS und Windows unter Writing an image to the SD card
Die SD Card enthält nun zwei Partitionen/Laufwerke, das erste Laufwerk ist unter alle Betriebssystemen lesbar. In diesem Laufwerk (/boot) müssen jetzt noch zwei Dateien erzeugt werden:
- eine leere Datei mit dem Namen ssh um den headless Zugriff per ssh zu ermöglichen.
- eine Textdatei im Linux Format mit Namen wpa_supplicant.conf und folgendem Inhalt wenn der Pi sofort mit wlan starten soll.
country=DE ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="FRITZ!Box 7490" psk="12345678901234567890"
- SD Karte auswerfen.
- SD Karte in Raspberry Pi stecken und booten.
Alternativ kann auch Monitor und Tastatur verwendet werden.
Anmeldung und Grundkonfiguration
Mit einem Terminal Programm verbindet man sich per ssh (z.B. Windows -> Putty) auf den Host raspberrypi
und meldet sich mit User pi und Passwort raspberry an.
- Unbedingt Passwort ändern! -> Dem Sicherheitshinweis folgen und
passwd
eingeben.
Jetzt muss noch Zeitzone, Sprache und Hostname angepasst werden.
Entweder Menügeführt mit sudo raspi-config
oder per Script / Shell Befehle:
# Zeitzone timedatectl set-timezone Europe/Berlin # Konfigurieren lokale Sprache deutsch sed -i -e 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen locale-gen localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE # Hostname hostnamectl set-hostname mymachine #Neustart reboot
Verwendung UART für Zusatzmodule
Einige Aufsteckmodule (z.B. HM-MOD-RPI-PCB) für den GPIO Port verwenden dort die serielle Schnittstelle UART. Der Zugriff auf diese serielle Schnittstelle erfordert eine modellabhängige Konfiguration.
Bei allen Modellen muss die Verwendung der seriellen Linux console an ttyAMA0 deaktiviert werden:
# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren systemctl stop serial-getty@ttyAMA0.service systemctl disable serial-getty@ttyAMA0.service systemctl mask serial-getty@ttyAMA0.service
Bei den Modellen mit Bluetooth muss die UART aktiviert und umkonfiguriert werden:
# serielle Schnittstelle aktivieren und mit BT Schnittstelle tauschen echo "enable_uart=1" >> /boot/config.txt echo "dtoverlay=pi3-miniuart-bt" >> /boot/config.txt echo "core_freq=250" >> /boot/config.txt
Um die Konfiguration abzuschließen ist ein Neustart erforderlich
#Neustart erforderlich reboot
Troubleshooting
Kontrolle der seriellen Schnittstelle
Der Befehl ls -l /dev/ttyAMA0
muss folgende Ausgabe liefern.
crw-rw---- 1 root dialout 204, 64 Jun 7 22:56 /dev/ttyAMA0
Sollte dies nicht der Fall sein, muss der Dienst serial-getty@ttyAMA0.service deaktiviert werden!
Kontrolle der Verlinkung von /dev/serial*
Der Befehl ls -l /dev/serial*
muss folgende Ausgabe liefern.
- Bei Modellen mit BT und richtiger Konfiguration
lrwxrwxrwx 1 root root 7 Jun 7 22:55 /dev/serial0 -> ttyAMA0 lrwxrwxrwx 1 root root 5 Jun 7 22:55 /dev/serial1 -> ttyS0
- Bei den Modellen ohne BT und richtiger Konfiguration
lrwxrwxrwx 1 root root 7 Jun 8 18:30 /dev/serial0 -> ttyAMA0
Sollte das nicht der Fall sein, sind die Einträge in der /boot/config.txt fehlerhaft.
Kontrolle Bluetooth
Die Funktion von Bluetooth kann mit dem hcitool überprüft werden. Mit hcitool dev
wird das interne BT Gerät mit MAC Adresse angezeigt. Mit hcitool scan
bzw. hcitool lescan
kann nach sichtbaren Geräten gesucht werden.
Weitergehende Informationen zur Anpassung der Konfiguration von Raspbian sind nachzulesen auf https://www.raspberrypi.org/documentation/configuration/.
FHEM
Die Installation von FHEM kann nach der Raspbian-Installation sehr einfach über das Debian-Repository [2] erfolgen.
- Es wird unbedingt empfohlen zur Grundinstallation zunächst keine Module, USB Sticks oder ähnliche Zusatzbaugruppen an den IO Ports des Raspberry gesteckt zu haben.
- Dieser Abschnitt beschreibt nur die Grundinstallation von FHEM auf einem Raspberry Pi mit Raspbian!
- Weitere Installationsschritte sind je nach verwendeten FHEM-Modulen notwendig.
- Informationen hierzu liefert üblicherweise die commandref zum jeweiligen Modul.
- Den weiteren Einstieg in FHEM findet man im Artikel Quick-Start
Der einfache Weg zum aktuellen System
Der folgende Befehlsblock ist die praktische Umsetzung der Beschreibung auf http://debian.fhem.de. Bitte unbedingt vor Installation rückversichern, ob es dort Aktualisierungen gab.
- Dieser Befehlsblock erfordert erhöhte Rechte also bitte als Erstes
sudo su
ausführen!
# von debian.fhem.de installieren - siehe aktuelle Anleitung dort https://debian.fhem.de/ wget -qO - http://debian.fhem.de/archive.key | apt-key add - echo "deb http://debian.fhem.de/nightly/ /" >> /etc/apt/sources.list apt-get update apt-get -y install fhem
Das offizielle Release
Alternativ kann FHEM mit dem Debian-Paket von fhem.de installiert werden. Dieser Weg führt zu einem offiziellen Release, welches aber unter Umständen erheblich vom aktuellen Versions- und Diskussionsstand im Forum abweicht.
Je nach Release Stand sind grundlegenden Perl-Pakete notwendig. Deshalb wird die Installation hier über die Auflösung von Abhängigkeiten beschrieben.
# fhem-X.Y.deb bitte mit der auf http://fhem.de/fhem.html#Download aktuellsten, stabilen Version ersetzen wget http://fhem.de/fhem-5.8.deb sudo apt-get update # Der nächste Schritt erzeugt einen zu erwartenden Fehler, erst mit dem letzten Schritt wird wirklich installiert sudo dpkg -i fhem-5.8.deb sudo apt-get install -f
Ein aktuelles FHEM System erhält man nur durch ein manuelles update
in der FHEM Umgebung - oder gleich nach dem Setup in der Kommandozeile des System.
# Ausführung des update Kommandos in FHEM ueber ein Shell Kommando /opt/fhem/fhem.pl 7072 "update"
Empfohlener Patch
Da gerade auf dem Raspberry die automatische Erkennung der USB Schnittstellen zu 100% CPU Last führt (FHEM träge und reagiert nicht), wird empfohlen sofort nach der Installation noch diesen "Patch" auszuführen. Sollte an dieser Stelle schon der USB Check beim automatischen Start von FHEM nach der Installation zum Problem geführt haben, hilft nach dem Patch ein einfacher reboot
des Systems.
# Den USB Check abschalten /opt/fhem/fhem.pl 7072 "attr initialUsbCheck disable 1" /opt/fhem/fhem.pl 7072 "save"
Deinstallation
Man kann FHEM auch wieder spurlos vom System entfernen und ganz von vorn beginnen. Allerdings sollte man sich im Klaren sein, damit ensteht kein jungfräuliches System!
sudo apt-get purge fhem sudo apt-get autoremove
Nützliche Zusatzpakete
Nachdem der Rpi eingerichtet ist, können weitere Pakete installiert werden. Keines davon ist zwingend erforderlich, um FHEM grundsätzlich betreiben zu können. Einige Pakete erhöhen aber den Bedienungskomfort oder sind zur Nutzung bestimmter FHEM-Module (siehe commandref) erforderlich. Hier eine Übersicht.
Beschreibung | Paketname | Kontext | Installieren |
---|---|---|---|
Zeitserver | ntpdate | Setzt die Systemzeit bei Start des RPi. Wird für FHEM benötigt, da es sonst nicht startet. | sudo apt-get install ntpdate
|
Perl JSON | JSON | Wird von einigen Modulen benötigt, z.B. harmony, iTunes | sudo apt-get install libjson-perl
|
Samba-Server | samba | Mittels Samba kann man z.B. den Ordner /opt/fhem als Share freigeben. Dieser Share kann z.B. im Windows-Explorer als Laufwerk verbunden werden, so dass die Bearbeitung von config- und Programmdateien bequem möglich ist. Hier eine hilfreiche Kurzanleitung aus der (wenn man auf einen speziellen user verzichtet) nur die Einträge für smb.conf gesetzt werden müssen. | sudo apt-get install samba cifs-utils
Danach muss der share definiert werden mittels
|
Mailversand | sendEmail (bzw. sendemail) | Wird benötigt, um Mails versenden zu können, bspw. für Alarm-Benachrichtigungen.
Nach Installation des Paketes benötigt man noch eine Routine in FHEM gemäß E-Mail senden#Raspberry Pi |
sudo apt-get install sendEmail bzw. sudo apt-get install sendemail
|
Wake-on-LAN | etherwake | Wird z.B. für das Modul WOL benötigt. | sudo apt-get install etherwake
|
Perl Telnet | telnet | Wurde vor Fritz!OS 6.2x z.B. für das Modul FRITZBOX benötigt, da es eine im Netzwerk vorhandene Fritzbox über deren Telnet-Port ansprach. Mittlerweile wird TR-64 und SOAP verwendet. | sudo apt-get install libnet-telnet-perl
|
Socat | socat | Kann verwendet werden, um auf anderen Rechnern im Netzwerk Linux-Befehle oder Skripts auszuführen. Auch können auf Slave-FHEM-Installationen Befehl ausgeführt werden, z.B. mit
1.2.3.4 muss natürlich durch die IP-Adresse des Zielrechners ersetzt werden. |
sudo apt-get install socat
|
Libcrypt | Libcrypt | Perl libcrypt, erforderlich falls Homematic-devices mit AES verwendet werden sollen. | sudo apt-get install libcrypt-rijndael-perl
|
libdatetime | libdatetime | Perl libdatetime, erforderlich für das Weather-Modul. | sudo apt-get install libdatetime-format-strptime-perl
|
Bekannte Probleme
Netzteil
Der RPi verwendet ein USB Netzteil als Spannungsversorgung. Gemessen kann der RPi allein bereits um die 900mA Strom fordern. Das bringt kleine Netzteile, besonders wenn noch CULs oder WLAN Sticks an USB hängen schnell an die Grenze. Die Fehler die daraus resultieren sind Abstürze, Netzwerkprobleme uvm. Daher bitte ein ausreichend starkes Netzteil mit mind. 2000mA oder einen aktiven USB-HUB für die Periperie verwenden.
Echtzeituhr
Der RPi hat keine Real-Time-Clock (RTC), das heißt, dass er nach einem Neustart keine gültige (im Sinne von aktuell) Systemzeit hat, sondern ein Datum in der Vergangenheit. Dieses Problem wird sinnvollerweise mit einer NTP-Konfiguration umgangen.
Dabei muss Sorge getragen werden, dass der ntpd schon einen Datums-/Zeitabgleich gemacht hat, bevor FHEM gestartet wird. Geschieht der Abgleich nicht vorher, sondern erst nachdem FHEM schon läuft, stellt FHEM die Logs zwar auf das nun aktuelle Datum um (die "alten" Logs mit dem eigentlich ungültigen Datum werden natürlich behalten), aber irgendetwas scheint FHEM dabei so zu belasten, dass es eine Last von über 0.8 bis 0.9 erzeugt. Diese Last besteht auf Dauer und verschwindet erst, wenn man das Ganze sauber durchkonfiguriert und FHEM neu gestartet hat. Die hohe Systemauslastung zeigt sich auch in einem sehr trägen Laden der FHEM-Webseiten in einem beliebigen Browser. (siehe Thema)
Last durch Backup (während update)
Bei einen Update von FHEM durch den Befehl update
kann durch Setzen des Attributs "attr global backup_before_update 1
" automatisch vorab ein Backup durchgeführt werden. Die (ggf. großen) Log-Dateien werden dabei ebenfalls archiviert. Während der Archivierung ist FHEM blockiert. Durch die beschränkte Leistungsfähigkeit des Raspberry Pi kann das Backup zudem lange dauern. Durch ein "attr global updateInBackground 1
" wird ein Backup im Hintergrund ausgeführt (Quelle: Thema).
Alternative Möglichkeiten:
- Backup ausschalten und manuell durchführen
- Backup-Befehl anpassen und so große Dateien bzw. Verzeichnisse (log/) nicht archivieren
Watchdog einrichten
Man kann den RPi alle halbe Stunde prüfen lassen, ob FHEM noch läuft und gegebenenfalls einen Neustart durchführen lassen. Eine mögliche Vorgehensweise ist in diesem Forumsthema beschrieben.
Interne Links
Externe Links
- Beitrag zum Umzug von Raspberry B auf Raspberry Pi 2
- Offizielle Webseite der Raspberry Pi Foundation
- Offizielle Downloads der Raspberry Pi Foundation