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...

Dienstag, 30. April 2013

Exif Daten im Batch ändern

Ich war am WE mit meinen Kindern und einer defekten EOS350 auf der IGS in Hamburg. Dort habe ich viele Bilder mit dem iPhone, Filme mit dem iPad und Bilder mit der defekten EOS gemacht (defekt deshalb, weil der AF nicht funktioniert).

Zu Hause sammle ich alle Bilder im iPhoto, wo diese natürlich in der zeitlichen Reihenfolge dargestellt werden, wenn alle Uhren richtig gestellt sind. Dies war bei der EOS  nicht der Fall, denn die Uhr ging eine Dreiviertelstunde nach.

Ich habe also im Internet ein Programm gesucht, welches die EXIF Daten im Batch Verfahren ändern kann. Ich habe dann auf einer Webseite das Programm JHEAD gefunden.

Dieses ist ein Kommandozeilen Tool, welchem man Parameter übergibt um entsprechende Informationen der EXIF Daten zu ändern.

Der endgültige Aufruf war dann relativ einfach:

jhead -model EOS -ta+0:45:00 /Volumes/EOS_DIGITAL/DCIM/215CANON/*.JPG

Diese hat dann alle Bilder auf der Speicherkarte in die richtige Zeit geändert, die zeitliche Reihenfolge im iPhoto ist nun wieder hergestellt.

Donnerstag, 18. April 2013

Openmediavault auf voyage Linux

Fertige NAS Systeme sind mir zu frickelig - entweder gut und zu teuer oder günstig mit schlechter Software. Deshalb dachte ich mir, baust du mal eines selbst. Die 2x 1.5TB hatte ich ja noch liegen, ein ATOM-Board günstig bekommen.

Das voyage Linux bekommst du hier. Für die Installation von OMV 0.3x sollte es die Version 0.85 sein, da es bei der Installation einer höheren Version Probleme mit dem Modul php5-pam gibt. Den Ärger kann man sich sparen und dann später auf Version 0.4x updaten.

openmediavault

Wenn das OS installiert ist, muss zunächst in der /etc/apt/sources.list der Eintrag für OMV hinzugefügt werden:



# deb Multimedia
deb http://www.deb-multimedia.org squeeze main non-free
deb-src http://www.deb-multimedia.org sid main
# OpenMediaVault
deb http://packages.openmediavault.org/public omnius main

Nun die folgenden Zeilen eingeben:

apt-get update
apt-get install deb-multimedia-keyring  openmediavault-keyring postfix openmediavault  locales dialog console-data console-common

Nun werden eine ganze Menge Pakete (u.a. auch für openmediavault) installiert, das kann ein wenig dauern. Es wird dann auch das Keyboard installiert, du kannst es hier auf "deutsch" oder deine bevorzugte Sprache einstellen. Jetzt wird der Server rebooted, es kann sein dass nun der SSH-Deamon nicht läuft. Dazu in der Konsole am Server einloggen und den Dienst starten:

       servie ssh start

Danach ist das System wieder erreichbar (bzw. sollte sein.) Wenn der Webserver ein "500-Internal Server error" liefert, liegt das daran, dass das System schreibgeschützt startet. Dann muss  auf der Konsole ein "remountrw" eingegeben werden.

Nun fehlt noch die Konfiguration der locales, was mit einem

apt-get install locales
dpkg-rekonfigure locales

nachgeholt wird.

Um einen dauerhaften Zugriff auf das ro-Filesystem zu ändern, wird in der

        /etc/default/voyage-util

der Eintrag von

VOYAGE_SYNC_DIRS=""

nach

VOYAGE_SYNC_DIRS="/var/lib etc/openmediavault etc/samba"

geändert.

sshd

Ist der Server nach der Installation nicht zu erreichen, kann das in GUI von OMV mittels aktivieren nachgeholt werden. Alternativ natürlich auf der Kommandozeile.


minidlna

Für den Medienserver wird eigentlich das Paket openmediavault-minidlna benötigt und mittels


          apt-get install openmediavault-minidlna

installiert. Da der Updateweg etwas kompizierter geworden ist, folgt die Beschreibung der Installation etwas weiter unten.

Updates von 0.3x -> 0.4x ->05.x

Mit der oben genannten Installationsanleitung ist nun die Grundlage geschaffen worden, das OMV von Version 0.3.xx auf die aktuelle Version 0.5.xx upzudaten ohne in das PHP-Problem zu laufen. Das geht am besten mit diesem Hinweis von der OMV Seite.  Also: In der Datei 


/etc/apt/sources.list.d/openmediavault.list 
den Eintrag
deb http://packages.openmediavault.org/public fedaykin main
hinzufügen und danach ein 


apt-get update 
apt-get dist-upgrade 
          reboot

durchführen. Nun ist das OMV auf der 0.4.3x und kann nun mittels
omv-release-upgrade
auf den aktuellsten Stand der Version 0.5x gehoben werden.

Probleme bei der Installation

Nach dem omv-release-upgrade auf die 0.5x wurde die Netzwerkkonfig in 
/etc/network/interfaces
überschrieben und das lokale interface eth0 darin entfernt. Dieses Problem kann mit einem Backup der Datei VOR dem Upgrade  umgangen werden, in dem nach dem restart die Config wieder zurückgespielt und der Netzwerkservice restarted wird:
service networking restart

Installation der OMV-Plugins