FHEM: Making of CUL V3

Ich habe vor einiger Zeit meinen COC für den Raspberry PI an einen Kumpel verkauft und hatte mich eigentlich damit abgefunden, dass ich keine Funkverbindungen in meinem FHEM anbinden möchte. Das hat sich nun geändert und so habe ich über das FHEM-Forum einen CUL gekauft. Auf meiner ersten Suche in der Suchmaschine meines Vertrauens kam auch ein „Making of“ Video des CUL heraus, welches ich hier kurz einbinden möchte.
FHEM: Making of CUL V3 weiterlesen

FHEM update – Wie funktionieren Updates für Fehlerkorrekturen in FHEM?

Soeben habe ich mich gefragt, wie man eigentlich an die Fehlerkorrekturen (für FHEM) der FHEM-Developer kommt. Das Lesen des commandref von FHEM hat mich schließlich darauf gebracht, dass ab FHEM 5.3 eine update-Funktionalität zur Verfügung steht.
FHEM update – Wie funktionieren Updates für Fehlerkorrekturen in FHEM? weiterlesen

Extend devStateIcon in FHEM kurz erläutert

Gerade eben hatte ich mir vorgenommen, meine Fenstersensoren in FHEM Floorplan zu visualisieren. Dazu brauchte ich verschiedene Icons pro Schaltzustand. Um dies zu erreichen, gibt es den Link „Extend devStateIcon“ am Fuße jeder Detailseite eines Gerätes.
Extend devStateIcon in FHEM kurz erläutert weiterlesen

Stromverbrauch des Raspberry Pi

Heute habe ich mir die Frage nach dem Stromverbrauch des Raspberry Pi gestellt, da ich zumindest einen im Dauerbetrieb für FHEM betreiben möchte. Ein schneller Blick in die Spezifikationen hilft hier weiter:

  • Raspberry Pi Model A: max. 2,5W (5V, 500 mA)
  • Raspberry Pi Model B: max. 3,5W (5V, 700mA)

Ich habe gerade mal nachgemessen: Beim hochfahren hatte er ~3,2W verbraucht, danach ist er nun bei ~2,8W. Das macht dann übers Jahr rund 25kW, was ich in Ordnung finde:

Raspberry Pi Stromverbrauch
Raspberry Pi Stromverbrauch

Installation des Busware COC auf dem Raspberry Pi für die Nutzung mit FHEM

Momentan beschäftige ich mich ein wenig mit Heimautomation. Da ich zur Miete wohne, kommt es leider nicht in Frage ein KNX/EIB-System zu installieren, da alle Teile wieder abnehmbar sein müssen. Daher muss ich eine Funklösung her. Als Software verwende ich FHEM, einen in Perl geschrieben Server, welcher die Verwaltung der Geräte übernimmt. Als Funk-Sender & -Empfänger kommt bei mir ein Busware COC zum Einsatz. Auf der Wiki-Seite von Busware wird wunderbar erläutert, wie man diese Einrichtung vollzieht, ich rate auf jeden Fall dazu, dort immer die aktuellsten Schritte nachzuvollziehen. Das folgende Tutorial ist auf dem Stand vom 09.05.2013.

Zunächst starte ich mit einem Raspbian auf dem ich das fhem-Debian-Paket installiere. Für die folgende Schritte wechsle ich auf den User „root“! Die folgenden Schritte sind natürlich auf eigene Gefahr!

Nachdem man die ersten Schritte auf dem System getan hat (SSH-Server einschalten usw.) kommt man dann zur Einrichtung des COC. Zunächst sollte man zuvor avrdude installieren, da man ohne dieses Tool nichts flashen kann:

apt-get install avrdude

Nun muss man zunächst einen Seriellen Port freimachen. Dazu muss man zunächst /etc/inittab editieren und die folgenden Zeilen mit einem Kommentar versehen:

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Sodass diese so aussieht:

# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Anschließend muss man alle Einträge mit ttyAMA0 aus der Datei /boot/cmdline.txt entfernen. Meine Zeile sah vorher so aus:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Und danach dann so:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Jetzt einmal rebooten und nach dem Boot wieder zu User „root“ wechseln! Anschließend sollte man FHEM erstmal stoppen:

/etc/init.d/fhem stop

Dann wird die Firmware geflashed. Dazu muss man zunächst wissen, ob man einen COC mit 1-Wire oder ohne gekauft hat. Hat man einen mit, so muss man diese Datei herunterladen (COC.hex) andernfalls diese Datei (COC.radio_only.hex). Da ich keine 1-Wire-Extension gekauft hatte, nehme ich letztere:

wget "http://culfw.svn.sourceforge.net/viewvc/culfw/trunk/culfw/Devices/COC/COC.radio_only.hex?revision=HEAD" -O COC.radio_only.hex

Nun muss man den COC mit ein paar Kommandos ansteuern um den Bootloader anzusprechen:

echo "calling COC bootloader..."
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 0 > /sys/class/gpio/gpio18/value
echo 0 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio18/value

Und nun wird die Firmware geflashed (Achtung Dateiname am Ende bei dem anderen Gerätetyp tauschen!):

avrdude -p atmega1284p -P /dev/ttyAMA0 -b 38400 -c avr109 -U flash:w:COC.radio_only.hex

Dies sieht wie folgt aus:

COC-Firmware
COC-Firmware

Abschließend muss man nun noch die Datei /etc/init.d/fhem ein wenig abändern. Suche:

start)

Ersetze durch:

start)
	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

Dies initialisiert die COC-Erweiterung bei jedem Start von FHEM. Wenn man nun noch möchte, kann man einen Watchdog-Prozess installieren, welcher den Raspberry bei dauerhafter hoher CPU-Last durchpustet. Dies ist auf der Busware-Seite ganz unten beschrieben. Dort findet sich auch, wie man die Ansteuerung der 1-Wire und RTC Module vornimmt.