EBUS: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Dieser Artikel beschreibt die Ankopplung von Heizungssysteme mit EBUS-Interface an FHEM. Der EBUS ist eine bei vielen Heizungssystemen vorhandene serielle Sch…“) |
Keine Bearbeitungszusammenfassung |
||
Zeile 32: | Zeile 32: | ||
EBUSD_OPTS="--acquiretime 6000 -l All -d /dev/ttyUSB0" | EBUSD_OPTS="--acquiretime 6000 -l All -d /dev/ttyUSB0" | ||
==Watchdog== | ==Watchdog== | ||
Es empfiehlt sich, den ebusd kontinuierlich zu überwachen und ggf. neu zu starten. | Es empfiehlt sich, den ebusd kontinuierlich zu überwachen und ggf. neu zu starten. Mit der nachfolgenden Beschreibung wird alle 5 Sekunden die Existenz des Programms abgefragt und dieses bei einem versagenden test neu gestartet. | ||
Dazu wird auf dem | |||
Dazu wird auf dem Raspberry nach überall erhältlichen Anleitungen der Watchdog Timer installiert und die | |||
Datei /etc/watchdog.conf mit den beiden Parametern | |||
test-timeout = 10 | |||
interval = 5 | |||
besetzt. Ferner wird die Datei /etc/watchdog.d/ebusd angelegt mit dem Inhalt | |||
#!/bin/sh | |||
# description: watchdog helper file for ebusd | |||
case "$1" in | |||
'test') | |||
#--- Test for ebusd | |||
if [ -s /var/run/ebusd.pid ] ; then | |||
RUN=`ps -ef | grep ebusd.*USB0 | grep -v grep` | |||
if [ "$RUN" != "" ] ; then | |||
#echo "ebusd is already running" | |||
exit 0 | |||
else | |||
echo "ebusd defunct at "`date` | |||
exit 1 | |||
fi | |||
else | |||
echo "ebusd not running, return 1 at "`date` | |||
exit 1 | |||
fi | |||
;; | |||
'repair') | |||
#-- Restarting ebusd | |||
echo "ebusd restarting at "`date` | |||
/etc/init.d/ebusd start | |||
RETVAL=$? | |||
exit 0 | |||
;; | |||
*) | |||
exit 0 | |||
;; | |||
esac | |||
[[Kategorie:Other Components]] | [[Kategorie:Other Components]] | ||
[[Kategorie:Heizungssteuerung]] | [[Kategorie:Heizungssteuerung]] | ||
[[Kategorie:Interfaces]] | [[Kategorie:Interfaces]] |
Version vom 29. November 2014, 12:48 Uhr
Dieser Artikel beschreibt die Ankopplung von Heizungssysteme mit EBUS-Interface an FHEM.
Der EBUS ist eine bei vielen Heizungssystemen vorhandene serielle Schnittstelle mit zwei Leitungen. Verwendet werden dabei 2400 Baud als Geschwindigkeit und die beiden Signalpegel
- logisch 1: 15–24 V
- logisch 0: 9–12 V
Eine direkte Ankopplung des EBUS an FHEM via Pegelwandlung und serielle Schnittstelle ist nicht empfehlenswert, weil der EBUS mehrere (bis zu 25) Master-Devices erlaubt, die wiederum mehreren Slave-Devices (bis zu 228) Befehle geben. Erforderlich ist also eine Bus-Arbitration, d.h., jedes Master-Device muss sich mit den anderen über die Benutzung des Bus verständigen. Dieses relativ aufwändige Protokoll würde FHEM eine erhebliche Last aufbürden.
Stattdessen wurde der Weg beschritten, einen separaten Raspberry Pi (Modell B) an den EBUS zu koppeln und darauf die Software ebusd laufen zu lassen. Diese wird dann in einer beliebigen FHEM-Instanz als ECMD-Device definiert und somit per telnet abgefragt.
Achtung: es hat sich als nicht praktikabel erwiesen, den EBUS mit einem Pegelwandler direkt an den seriellen GPIO-Port des Raspberry Pi anzuschließen. Die ständig einlaufenden Synchronisationssignale auf dem EBUS, sowie die interne Verarbeitung der GPIO-Signale im Raspberry führen zu einer intolerablen Latenz, d.h., die EBUS-Signale kommen verspätet bei der Software ebusd an (bis zu 90 Minuten wurden beobachtet). Stattdessen sollte grundsätzlich ein Seriell-USB-Konverter verwendet werden und der Raspberry Pi über einen USB-Port mit dem EBUS verbunden werden.
Interface
Eigenbau
Hierbei wird ein kommerziell für ca. 6,00 € erhältliches USB-Modul mit ein paar Zusatzbauteilen im Wert von ca. 5,00 € versehen. Das Interface hat die folgenden Eigenschaften:
- Verpolungssicherer EBUS-Anschluss
- Galvanische Trennung zwischen EBUS und USB
Die Bauteile sind unkritisch und können durch äquivalente Teile ersetzt werden. Allerdings sollte bei der Zenerdiode auf eine Belastbarkeit mit 1,3 W geachtet werden, und beim USB-Modul darauf, dass dieses einen FTDI-Chip enthält.
Kommerzielles Interface
Ein kommerziell erhältliches Interface EBUS/USB findet man hier
Software
Als Software kommt auf dem Raspberry Pi der ebusd = EBUS-Dämon zum Einsatz (aktuell im Dezember 2014 die Version 0.5). 'Achtung, diese Software befindet sich aktuell in der Weiterentwicklung, unerwünschte Effekte können nicht ausgeschlossen werden.
Der ebusd wird auf dem Raspberry Pi nach der beiliegenden Anleitung übersetzt und installiert. Wichtigste Bestandteile der Installation sind
- ebusd - das eigentliche Programm zur Kommunikation mit dem EBUS
- ebusctl - ein Programm zur lokalen Ansteuerung des ebusd
- Das Verzeichnis /etc/ebusd => Alle hier liegenden Dateien im CSV(Comma Separated Value)-Format werden beim Start des ebusd eingelesen und als Kommandos für das Heizungsystem verwendet.
- Die Datei /etc/default/ebusd mit Startoptionen für den ebusd.
# Default settings for ebusd. This file is sourced by /bin/sh from # /etc/init.d/ebusd. # Options to pass to ebusd EBUSD_OPTS="--acquiretime 6000 -l All -d /dev/ttyUSB0"
Watchdog
Es empfiehlt sich, den ebusd kontinuierlich zu überwachen und ggf. neu zu starten. Mit der nachfolgenden Beschreibung wird alle 5 Sekunden die Existenz des Programms abgefragt und dieses bei einem versagenden test neu gestartet.
Dazu wird auf dem Raspberry nach überall erhältlichen Anleitungen der Watchdog Timer installiert und die Datei /etc/watchdog.conf mit den beiden Parametern
test-timeout = 10 interval = 5
besetzt. Ferner wird die Datei /etc/watchdog.d/ebusd angelegt mit dem Inhalt
#!/bin/sh # description: watchdog helper file for ebusd case "$1" in 'test') #--- Test for ebusd if [ -s /var/run/ebusd.pid ] ; then RUN=`ps -ef | grep ebusd.*USB0 | grep -v grep` if [ "$RUN" != "" ] ; then #echo "ebusd is already running" exit 0 else echo "ebusd defunct at "`date` exit 1 fi else echo "ebusd not running, return 1 at "`date` exit 1 fi ;; 'repair') #-- Restarting ebusd echo "ebusd restarting at "`date` /etc/init.d/ebusd start RETVAL=$? exit 0 ;; *) exit 0 ;; esac