Sonntag, 30. März 2014

fhem auf dem Raspberry PI

Im zweiten Teil erkläre ich die Installation und Konfiguration von FHEM auf dem Raspiberry PI, dessen Systeminstallation ich bereits hier vorgenommen habe.

Zur verwendeten Hardware möchte ich noch einige Worte verlieren. Der Raspberry PI dient hier als Steuerrechner mit dem aufgesetzten AddOn Board. Zusätzlich habe ich noch einen CUL für die Kommunikation mit FS20-Komponenten am USB-Port installiert. Der CUL auf dem AddOn Board steuert meine drei HomeMatic Heizungsventile HM-CT-RD-DN.  Es sollen demnächst noch die Fenster-Offen-Kontakte dazukommen.

Dann betreibe ich (momentan) einen FS20 S4A-2 Taster, der einige Intertechno Funksteckdosen ein- und ausschaltet. Diese werden ja mit 433 MHz betrieben und sind recht preisgünstig. Soviel noch zu meiner Hardware, aber kommen wir zur

Softwareinstallation

Zunächst wird fhem, das eigentliche Softwarepaket installiert. Dies geschieht auf dem PI mit
sudo wget http://fhem.de/fhem-5.5.deb && sudo dpkg -i fhem-5.5.deb
recht einfach. Danach ist fhem auf dem PI unter der URL (du brauchst nun die IP-Adresse des PI)
http://URL:8083/fhem
aufzurufen.

Definition der Devices

Da fhem nun erreichbar ist, werden die einzelnen Komponenten eingerichtet. Dazu wird in der Eingabezeile oben nun Schritt für Schritt der entsprechende Befehl eingegeben.

CUL_0 und CUL_FS

Für den Betrieb der Funkkomponenten muss zuerst das interne CUL auf dem AddOn Board, das Device welches mit den Komponenten "redet", erstellt werden. Ich habe das in Anlehnung an die Betriebsanleitung vom AddOn Board mittels
define CUL_0 CUL /dev/ttyAMA0@38400 1034
vorgenommen. Dieser Eintrag ist später in der /opt/fhem/fhem.cfg wiederzufinden.

Der CUL für die Kommunikation mit den FS20-Komponenten am USB-Port folgt dann analog:
define CUL_FS CUL /dev/ttyACM0@38400 2345
Überhaupt - alle in der Eingabezeile  vorgenommenen Einträge landen später in dieser zentralen Konfigurationsdatei. Man kann also auch gleich in dieser Datei die Konfiguration der Komponenten vornehmen. Einsteigern empfehle ich aber diesen Weg, da Fehler über das Webinterface gleich zurückgegeben werden.

wird fortgesetzt ...



Freitag, 14. März 2014

Raspberry PI Addon Board

Ich betreibe auf einem Raspberry PI die Software FHEM mit dem Addon Board für Raspberry PI, einer Erweiterungsplatine welches ein Display, Temperatursensor, Luftdrucksensor, Helligkeitssensor auf dem internen I2C-Bus und einem CUL mit 868 MHz bereitstellt.

In diesem ersten Teil beschreibe ich die Installation der Softwarekomponenten von fhem auf dem Raspberry Pi für den Betrieb mit genau diesem Erweiterungsboard.

Es soll zur Vermittlung der Installation und Anpassung dienen und bietet keine Gewähr auf Vollständigkeit, da diese auf meinem eigenen Erfahrungen beruhen.

Installation des OS

Für die Installation habe ich eine 8GB Speicherkarte von SanDisk mit der Class 10 genommen und darauf ein Debian Wheezy mit dem Datum vom 7. Januar 2014 installiert. Die Quellen dazu findest du hier.

Um das Image auf die Karte zu bekommen verwende ich unter OSX  das Programm "Pi Filler", unter Windows gibt es den "Win32DiskImager" welches auch in einer VM recht schnell funktioniert. Dazu muss in einer Windows VM auf dem Mac ein Kartenleser genommen werden, da der SD-Kartenport im Windows (okay, ich habe XP darin laufen und kein 7) nicht untertstützt wird.

Mehr ist zur Installation des Images eigentlich nicht zu sagen, ausser dass die erforderlichen Installationen nach der ersten Inbetriebnahme wie immer durchzuführen sind (IP-Adresse, Password, locale usw...), aber das beschreibe ich hier nicht weiter im Detail.

Konfiguration des System

Nachdem das Image auf der Karte ist, müssen weitere Pakete installiert und das System konfiguriert werden. Im folgenden beschreibe ich kleine Shellkommandos, welche die Anpassung des Systems vornehmen.

Wer genau wissen möchte was ich damit mache, sollte sich das Handbuch zum "Addon Board für Raspberry PI" herunterladen und durchlesen - meine Anpassungen sind nämlich genau darauf bezogen.

Systemanpassungen

Folgende Pakete werden nun mittels "apt-get" nachinstalliert, was einige Zeit dauern kann:
sudo apt-get install vim libdevice-serialport-perl libdevice-serialport-perl libio-socket-ssl-perl libwww-perl i2c-tools libgd-text-perl libimage-librsvg-perl libi2c-dev python-smbus  owserver ow-shell libgd-text-perl libimage-librsvg-perl fbi automake gcc-4.7 libxml-simple-perl -y
die Installation später aber deutlich vereinfacht.  Und dann entferne ich "nano", diesem komischen Editor - "vi" ist mir da doch lieber:
sudo apt-get remove nano -y
Nachdem die ersten Grundlagen für die Installation vorgenommen sind, werden zunächst die boot-Parameter angepasst:
echo "dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait" > /boot/cmdline
Die Debug Konsole wird mit
sed -i "/^T0:23/s/^\(.*\)/#\1/g" /etc/inittab
abgeschaltet. Dann werden eingetragene Module deaktiviert:
sed -i "/^blacklist spi-bcm2708/s/^\(.*\)/#\1/g" /etc/modprobe.d/raspi-blacklist.conf
und neue udev-Regeln für die I2C-Devices (kommen später über die Weboberfläche im fhem dazu) erstellt:
echo "i2c-dev" >> /etc/modprobe.d/raspi-blacklist.conf
echo "SUBSYSTEM==\"i2c-dev\", MODE=\"0666\" " > /etc/udev/rules.d/98_i2c.rules

OW Server

Es folgt die Konfiguration des OW (OneWire) Servers. Die bestehende Konfig (durch die Installation des Paketes "owserver" - siehe oben in der apt-get-Zeile) wird für die lokalen Bedürfnisse angepasst: 
cp /etc/owfs.conf /etc/owfs.conf.bak
cat << EOF>/etc/owfs.conf
server: device = /dev/i2c-1 
ftp: port = 2120
server: port = localhost:4304
EOF

I2C-Support

Die I2C-Komponenten auf dem Board werden beim Systemstart initialisiert. Damit das passiert, muss in der /etc/modules der Eintrag
echo "i2c-bcm2708" >> /etc/modules
echo "i2c-dev" >> /etc/modules
vorgenommen werden um die Module beim booten zu laden.

HIPI-Tools 

Die Installation der hipi-tools (Sammlung von Perl-Modulen für den Raspi) geht recht einfach, dauert nur etwas:
wget http://raspberry.znix.com/hipifiles/hipi-install
sudo perl hipi-install

System aktualisieren

REPO-URI Support

Herunterladen und installieren:
sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update 
sudo REPO_URI=https://github.com/notro/rpi-firmware rpi-update
 Danach einen restart durchführen:
sudo shutdown -r now

Linux Framebuffer Device Support 

Für das Display (SPI) wird der Linux Framebuffer Support benötigt. Das wird mittels
sudo REPO_URI=https://github.com/notro/rpi-firmware rpi-update afe7e2abbf5cd7b8a25931e0eb2ca52a42bab7f6
installiert und durch den dauerhaften Eintrag
echo "fbtft_device name=sainsmart18" >> /etc/modules
in der /etc/modules gestartet. Für die Ansteuerung des kleinen tft wird übrigens das Debian-Paket "fbi" benötigt, was aber oben bereits schon installiert wurde.

Wiring PI

Für die Ansteuerung der GPIO-Pins wird "Wiring PI", eine Library für den Zugriff auf die GPIO-PINs, benötigt. Die Installation ist recht einfach, dauert jedoch etwas:

git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
Ein erster Test mit der Hintergrundbeleuchtung des kleinen framebuffer-tft isplay kann danach sofort  vorgenommen werden. Zuerst wird der GPIO-Pin 4 in der cmd-Shell als Ausgabedevice deklariert:
gpio mode 4 out
und kann damm mittels
gpio write 4 1  # eingeschaltet
gpio write 4 0  # ausgeschaltet 
 werden. Cool, oder?

Im zweiten Teil geht es nun um die Installation und Konfiguration von fhem...