In diesem Beitrag fange ich noch einmal von vor an und beschreibe wie ihr FHEM mit Debian Jessie und Busware SCC installieren könnt.
Zielsetzung:
- Debian Jessie installieren
- FHEM installieren
- FHEM erreichbar über Port 80
- Busware SCC installieren
- Sprachausgabe
- Sprachsteuerung über Apple iPhone und Watch (HomeKit)
Ich versuche die einzelnen Schritte so einfach wie möglich zu beschreiben. Für die folgenden Schritte benötigt ihr ca. eine Stunde.
Update: Ich habe mittlerweile aus Stabilitätsgründen Homebridge auf einem zweiten RPI installiert.
[asa]B00MW4CAZU[/asa]
Basis-Installation
Einfach das Image von https://github.com/debian-pi/raspbian-ua-netinst laden, entpacken und auf die SD-Karte kopieren. (https://github.com/debian-pi/raspbian-ua-netinst/releases)
Anschließend folgende zwei Dateien für die Installation erstellen:
installer-config.txt
release=jessie
preset=server
hostname=fhem
rootpw=passwort
packages=nano,rng-tools,sudo
bootsize=+128M
rootsize=
timeserver=time.nist.gov
ip_addr=192.168.x.y
ip_netmask=255.255.255.0
ip_network=192.168.x.0
ip_broadcast=192.168.x.255
ip_gateway=192.168.x.1
ip_nameservers=192.168.x.1
cmdline="dwc_otg.lpm_enable=0 console=tty1 elevator=deadline"
post-install.txt
# Root Partition
export D_ROOT=/rootfs
# Turn off Power LEDs
echo "Start configuring power leds"
echo "echo 0 | sudo tee /sys/class/leds/led0/brightness" >> /etc/rc.local
echo "echo 0 | sudo tee /sys/class/leds/led1/brightness" >> /etc/rc.local
echo "End configuring power leds"
# Configure Timezone
echo "Start configuring timezone"
echo "Europe/Berlin" > $D_ROOT/etc/timezone
chroot $D_ROOT dpkg-reconfigure -f noninteractive tzdata
echo "End configuring timezone"
# Configure Keyboard
echo "Europe/Berlin" > $D_ROOT/etc/timezone
echo "# KEYBOARD CONFIGURATION FILE" >> $D_ROOT/etc/default/keyboard
echo "# Consult the keyboard(5) manual page." >> $D_ROOT/etc/default/keyboard
echo 'XKBMODEL="pc105"' >> $D_ROOT/etc/default/keyboard
echo 'XKBLAYOUT="de"' >> $D_ROOT/etc/default/keyboard
echo 'XKBVARIANT="nodeadkeys"' >> $D_ROOT/etc/default/keyboard
echo 'XKBOPTIONS="terminate:ctrl_alt_bksp"' >> $D_ROOT/etc/default/keyboard
echo 'BACKSPACE="guess"' >> $D_ROOT/etc/default/keyboard
chroot $D_ROOT setupcon
# Configure Locale
echo "Start configuring locale"
sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' $D_ROOT/etc/locale.gen && \
sed -i -e 's/# nb_NO.UTF-8 UTF-8/nb_NO.UTF-8 UTF-8/' $D_ROOT/etc/locale.gen && \
sed -i -e 's/# de_DE ISO-8859-1/de_DE ISO-8859-1/' $D_ROOT/etc/locale.gen && \
sed -i -e 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' $D_ROOT/etc/locale.gen && \
sed -i -e 's/# de_DE@euro ISO-8859-15/de_DE@euro ISO-8859-15/' $D_ROOT/etc/locale.gen && \
sed -i -e 's/# en_US ISO-8859-1/en_US ISO-8859-1/' $D_ROOT/etc/locale.gen && \
sed -i -e 's/# en_US.ISO-8859-15 ISO-8859-15/en_US.ISO-8859-15 ISO-8859-15/' $D_ROOT/etc/locale.gen && \
sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' $D_ROOT/etc/locale.gen && \
echo 'LANG=en_US.UTF-8'> $D_ROOT/etc/default/locale && \
chroot $D_ROOT dpkg-reconfigure --frontend=noninteractive locales && \
chroot $D_ROOT update-locale LANG=en_US.UTF-8
echo "End configuring locale"
# Configure Random Number Generator
echo "Start configuring Random Number Generator"
echo "bcm2708-rng" >> $D_ROOT/etc/modules
echo "End configuring Random Number Generator"
# Configure inittab
echo "Start configuring inittab"
sed -i 's/\(^.*T0.*$\)/#\ \1/' $D_ROOT/etc/inittab
echo "End configuring inittab"
Nach der Installation
apt-get update
apt-get install rpi-update raspi-config raspi-copies-and-fills libdevice-serialport-perl libio-socket-ssl-perl libwww-perl libxml-simple-perl libjson-perl libjson-xs-perl libsoap-lite-perl libtime-hires-perl avahi-daemon telnet mplayer2 alsa-base alsa-utils pulseaudio mpg123 mp3wrap libavahi-compat-libdnssd-dev libkrb5-dev iptables apt-utils git build-essential gcc-avr avr-libc avrdude libcrypt-rijndael-perl
reboot
RPI Konfigurieren und Firmware aktualisieren
Anschließend können wir den RPI konfigurieren und die Firmware aktualisieren.
RPI Konfigurieren
raspi-config
Folgende Schritte ausführen
- Overclock = PI2
- Advanced Options -> Memory-Split = 2
- Advanced Options -> Audio = Force 3.5mm (headphone) jack
- Finish und Reboot
Firmware aktualisieren
rpi-update
Reboot
FHEM installieren
cd ~
wget http://fhem.de/fhem-5.6.deb && dpkg -i fhem-5.6.deb
cd /opt
chmod -R a+w fhem && usermod -a -G tty root && usermod -a -G tty fhem
Für den SCC können bereits jetzt in der Datei /etc/init.d/fhem im Start-Case (ca. Zeile 19) folgende Befehle vor „starting fhem“ eingefügt werden:
echo "resetting 868MHz extension..."
if test ! -d /sys/class/gpio/gpio17; then echo 17 > /sys/class/gpio/export; fi
if test ! -d /sys/class/gpio/gpio18; then echo 18 > /sys/class/gpio/export; fi
echo out > /sys/class/gpio/gpio17/direction
echo out > /sys/class/gpio/gpio18/direction
echo 1 > /sys/class/gpio/gpio18/value
echo 0 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio17/value
sleep 1
Soundkarte installieren
Soundkarte installieren
modprobe snd_bcm2835
echo 'snd_bcm2835' >> /etc/modules
nano /etc/asound.conf
pcm.!default {
type hw
card 0
}
ctl.!default {
type hw
card 0
}
Wer Probleme mit der Soundkarte hat, weil der Master-Kanal fehlt, der kann folgende Datei verwenden:
pcm.!default {
type plug
slave.pcm "softvol"
}
pcm.softvol {
type softvol
slave {
pcm "plughw:0,0"
}
control {
name "Master"
card 0
}
}
ctl.!default {
type hw
card 0
}
Zur Sicherheit sollte geprüft werden, ob die input.conf vorhanden ist, sonst wirft mplayer einen Fehler.
vi /root/.mplayer/input.conf
Als Nächstes muss noch folgendes in der globalen MPlayer-Konfiguration eingetragen werden:
/etc/mplayer/mplayer.conf
ao=alsa
really-quiet=1
Zur Sicherheit noch fhem in die Gruppe Audio einfügen.
sudo usermod -aG audio fhem
Anschließend sollte die Lautstärke erhöht werden, bei mir reichen 90%.
alsamixer
Damit FHEM eine Audiodatei abspielen kann, benötigt der Benutzer Zugriff. Um später auf Zugriff mit Homebridge zu haben, müssen die folgenden zwei Zeilen ergänzt werden.
nano /etc/sudoers
ALL ALL = NOPASSWD: /usr/bin/mplayer
fhem ALL=(ALL) NOPASSWD: ALL
Anschließend das System neu starten.
FHEM über Port 80
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8083
Damit die Einstellungen auch nach einem Neustart erhalten bleiben, muss iptables-persistent installiert werden.
mkdir /etc/iptables
iptables-save > /etc/iptables/rules.v4
apt-get install iptables-persistent
Anschließend das System neu starten.
Homebridge für Apple HomeKit installieren
Node JS 4.x installieren
(Version 5 scheint derzeit noch nicht zu funktionieren.)
cd ~
wget https://nodejs.org/dist/latest-v4.x/node-v4.2.2-linux-armv7l.tar.gz
tar -xvf node-v4.2.2-linux-armv7l.tar.gz
cd node-v4.2.2-linux-armv7l
sudo cp -R * /usr/local/
node -v
Homebridge und erforderliches FHEM-Modul installieren
npm install -g homebridge
npm install -g git+https://github.com/justme-1968/homebridge-fhem.git
Anschließend kurz den Befehl homebridge
ausführen, damit die entsprechenden Konfigurationsdateien und -verzeichnisse angelegt werden.
Konfiguration
Diese Konfiguration setzt voraus, dass FHEM und Homebridge auf einem System laufen. Alternativ könnt ihr die IP-Adresse einfach ändern.
nano ~/.homebridge/config.json
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "031-45-154"
},
"platforms": [
{
"platform": "FHEM",
"name": "FHEM",
"server": "127.0.0.1",
"port": "8083",
"filter": "room=Homekit",
"auth": {"user": "username", "pass": "passwort"}
}
],
"accessories": []
}
Start-Skripte für Homebridge anlegen
Dieses praktische Script ermöglicht das Starten von Homebridge.
Sollten Homebridge und FHEM auf einem Server laufen – so wie es bei mir der Fall ist – muss Homebridge über FHEM gestartet werden, da zuvor FHEM erreichbar sein muss, damit Homebridge die entsprechende Konfiguration einlesen kann.
Normalerweise könnte man „Default-Start: 2 3 4 5“ setzen.
nano /etc/init.d/homebridge
#!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start:
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time for homebridge
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
PID=`pidof homebridge`
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
echo "Homebridge is already running"
else
homebridge -U /root/.homebridge/ > /dev/null 2>&1 &
#homebridge -U /root/.homebridge/ &
echo "Homebridge starting"
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
echo "Homebridge is not running"
else
kill $PID
echo "Homebridge closed"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
homebridge -U /root/.homebridge/ > /dev/null 2>&1 &
echo "Homebridge starting"
else
kill $PID
echo "Homebridge closed"
homebridge -U /root/.homebridge/ > /dev/null 2>&1 &
echo "Homebridge starting"
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
echo "Homebridge is running PID $PID"
else
echo "Homebridge is not running"
fi
;;
*)
echo "Usage: /etc/init.d/homebridge {start|stop|status|restart}"
exit 1
;;
esac
exit 0
Jetzt noch die Rechte entsprechend setzen
chmod 755 /etc/init.d/homebridge
Und den Service registrieren
sudo update-rc.d homebridge defaults
Der Dienst kann über FHEM gestartet werden, in dem man im Notifier für Initialized folgenden Befehl absetzt:
system("sudo service homebridge start &");
Bei Shutdown sollte man ein entsprechendes Stop ausführen.
Fehlerbehebung
Wer folgende Fehlermeldung von Homebridge bekommt
Error: dns service error: unknown
hat kein AVAHI-Daemon installiert bzw. ein Problem mit AVAHI.
Lösung:
/etc/init.d/dbus restart
apt-get install –reinstall avahi-daemon
service avahi-daemon start
Sollte Homebridge nicht nach dem Systemstart erreichbar sein, hilft u. U. folgendes:
nano /etc/network/if-up.d/homebridge
#!/bin/sh
/etc/init.d/homebridge restart
chmod +X /etc/network/if-up.d/homebridge
Viel Spaß mit eurer frisch installierten Hausautomation!
Hallo
habe bisher erfolgreich nach einer früheren Anleitung von dir FHEM auf einem Raspi2 mit Busware-SCC laufen.
Bin nun auf Raspi4 mit Buster umgestiegen. FHEM läuft, aber der Busware-SCC kann nicht von FHEM initialisiert werden(logfile FHEM)
Ich hoffe, daß mehr Leute dasselbe Problem haben und es sich für dich lohnen würde, der Sache mal nachzugehen.
Grüße Rüdiger