EBUS: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(70 dazwischenliegende Versionen von 10 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Randnotiz|RNTyp=r|RNText=Die Verwendung des EBUS zur ''Ansteuerung'' eines Heizungssystems kann dieses bei unsachgemäßer Anwendung beschädigen. Für unmittelbare oder mittelbare Folgen, die sich aus dem Nachbau des Interfaces oder der Verwendung der hier zur Verfügung gestellten Information ergeben, übernimmt der Autor keine Haftung.}}ACHTUNG: | |||
Der | Dieses Wiki beschreibt die alten Adapter 1.x, welche technisch gesehen andere Anforderungen und Konfigurationen voraussetzen. Bei den neuen Adaptern ab Version 2.x bitte diese [https://adapter.ebusd.eu/ Seiten für Informationen] nutzen. Die Beispieldateien sollten aber auch alle für die neuen Adapter gelten. | ||
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 1: 15–24 V | ||
*logisch 0: 9–12 V | *logisch 0: 9–12 V | ||
[[Datei:EBUS-Adapter-aufgebaut.png|thumb|left|alt=eBus Platine]] | |||
Fertig aufgebaute eBus Platine, bereit für den Einsatz mit eBusd! | |||
<div style="clear:both;"></div> | |||
=Interface= | =Interface= | ||
== | ==Schaltung== | ||
[[Datei: | [[Datei:EBUS_Interface_Schaltung.png|thumb|left|alt=eBus-USB Interface]] | ||
Eine direkte Ankopplung des eBus an FHEM via Pegelwandlung und serielle Schnittstelle ist nicht empfehlenswert, 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. | |||
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: | 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 | *Verpolungssicherer eBus-Anschluss | ||
*Galvanische Trennung zwischen | *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. | 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. | ||
'''''Achtung:''' Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur die lesende Hälfte des Interfaces nachzubauen und sich auf ein passives Lauschen auf dem EBUS zu beschränken. Dazu einfach den Zweig mit Darlington-Transistor aus der Schaltung nicht einbauen.'' | |||
Die Schaltung des eBus von Prof. Dr. Peter A. Henning ist eine bewährte Schaltung die von zahlreichen Anwendern bereits nachgebaut wurde. | |||
<div style="clear:both;"></div> | |||
==Eigenbau (Lochrasterplatine)== | |||
[[Datei:EBUS_Adapter_Lochrasterplatine.png|thumb|left|alt=Platine]] | |||
Hier ein Beispiel eines Aufbaues auf einer Lochrasterplatine. | |||
<div style="clear:both;"></div> | |||
==Platine== | |||
Auf Basis der oben genannten Schaltung, wurde im {{Link2Forum|Topic=46098|LinkText=FHEM Forum}} ein Platinenlayout erstellt und produziert. Die dazu benötigten Gerberfiles können {{Link2Forum|Topic=45127|Message=370647|LinkText=hier}} heruntergeladen werden. Der Autor des Layouts hat dies mit der Freeware Version von EAGLE erstellt, d.h. die Files können bei allen Platinenherstellern eingereicht werden (keine Lizenz eines bestimmten Herstellers notwendig). | |||
[[Datei:EBUS_Adapter_Platine.png|thumb|left|alt=Platine]] | |||
Diese Beschreibung sollte hauptsächlich für Personen dienen, bei denen es nicht das tägliche Brot ist elektronische Schaltungen in Betrieb zu nehmen. Ich setze hier voraus, dass der Umgang mit einem Lötkolben klar ist. Wer noch nie gelötet hat, sollte besser einen Bekannten ersuchen der das schon gemacht hat. | |||
Nachfolgend wird beschrieben, wie eine Platine mit den Bauteilen bestückt wird. | |||
Am einfachsten ist es einen fertigen Adapter zu kaufen. | |||
Siehe dazu auch den {{Link2Forum|Topic=46098|LinkText=Link aus dem Forum}}: | |||
<div style="clear:both;"></div> | |||
===Platine bestücken=== | |||
[[Datei:EBUS_Adapter_Bestueckung.png|thumb|left|alt=Platine bestücken]] | |||
Bei der Bestückung sollte darauf geachtet werden mit den niedrigsten Bauteilen zuerst zu beginnen, sonst fallen sie beim verlöten ständig heraus. Wer die Farbcodes der Widerstände nicht auswendig kennt sollte diese vorher mit einem Meßgerät (Ohmmeter) messen. Nach den Dioden und Widerständen können die IC Sockel eingelötet werden, hier sollte lediglich auf die Einkerbung laut Bestückungsaufdruck geachtet werden. Zum Schluß noch die restlichen Bauteile. Nach einer genauen Sichtkontrolle (verbogene Beinchen des IC, Kurzschlüsse beim Löten, richtige Polung) können noch die ICS eingesetzt werden. Diese können auf einer flachen Unterlage etwas vorgebogen werden, damit sie leichter in den Sockel passen. | |||
<div style="clear:both;"></div> | |||
'''''Achtung''': der IC 4011 ist ein Cmos Schaltkreis und ist empfindlich gegen statische Aufladungen, daher die Beinchen nicht mit dem Finger berühren, bzw. ein Antistatikband am Arm verwenden.'' | |||
<div style="clear:both;"></div> | |||
Bestückung der Widerstände bei Platine V1.6 | |||
R1 = 3k3 | |||
R2 = 1k0 | |||
R3 = 20k Poti | |||
R4 = 10k (auf der Platine nicht beschriftet, links neben R2) | |||
R5 = 470 | |||
R6 = 22k | |||
R7 = 100k (auf der Platine nicht beschriftet, links unten liegt quer) | |||
[https://secure.reichelt.de/index.html?&ACTION=20&AWKID=1170007&PROVID=2084 Warenkorb der benötigten Bauteile von Reichelt] | |||
<div style="clear:both;"></div> | |||
===Platine Messpunkte=== | |||
Der Schaltplan mit den Messpunkten wurde entfernt, da er etwas missverständlich formuliert war und bei einigen Anwendern Verwirrung auslöste. | |||
===Poti abgleichen=== | |||
Zur ersten Justierung des Potis, wird der eBusd Dienst genutzt. Das Vorgehen sieht wie folgt aus: | |||
1) '''eBus Dienst stoppen''' - Das kann mit der folgenden Kommandozeile bewerkstelligt werden: | |||
service ebusd stop | |||
2) '''eBus Dienst''', jedoch mit minimalen Parametern und ohne eBusd Konfigurationsdateien (CSV-Files), mit der folgenden Kommandozeile erneut starten: | |||
'''''Hinweis:''' <DEVICE> Muss zuvor durch den entsprechenden USB-Port (siehe [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]) z.B. /dev/ttyUSB0 ersetzt werden.'' | |||
ebusd -f -c /tmp --logareas bus --loglevel info -d <DEVICE> | |||
3) Der eBusd Dienst läuft nun im '''Vordergrund'''. | |||
4) '''Einem zweiten Terminal öffnen''' und den folgenden Befehl ausführen: | |||
ebusctl raw | |||
Mit dem Befehl erhält man im Terminalfenster die empfangenen Bytes als Hex, die wie folgt aussehen: | |||
<syntaxhighlight lang="php"> | |||
2015-12-24 12:07:16.955 [bus notice] <aa | |||
2015-12-24 12:07:17.001 [bus notice] <aa | |||
2015-12-24 12:07:17.047 [bus notice] <aa | |||
2015-12-24 12:07:17.093 [bus notice] <aa | |||
2015-12-24 12:07:17.097 [bus notice] <10 | |||
2015-12-24 12:07:17.102 [bus notice] <50 | |||
2015-12-24 12:07:17.107 [bus notice] <b5 | |||
2015-12-24 12:07:17.111 [bus notice] <04 | |||
</syntaxhighlight> | |||
Wenn gerade kein Gerät den Bus nutzt, dann sollten ca. 20 Zeilen pro Sekunde ausgegeben werden und zwar mit "<aa" (im Beispiel die oberen 4 Zeilen). | |||
Sobald ein Gerät den eBus nutzt, tauchen neben "<aa" auch andere HEX Werte auf (im Beispiel die unteren 4 Zeilen). Diese Werte können ignoriert werden. | |||
Wichtig bei der Poti Einstellung ist, dass vor allem die regulären "aa"s zu sehen sind. Tauchen die "aa"s auf, dann kann davon ausgegangen werden, dass der Poti korrekt eigestellt ist. Ist dies der Fall, dann kann der eBusd Dienst regulär gestartet werden. | |||
Dabei muss der im Vordergrund laufende eBusd Prozess (siehe Punkt 2) mit der Tastenkombination STRG+C abgebrochen und der folgende Befehl in der Kommandozeile ausgeführt werden: | |||
service ebusd start | |||
Anschließend erscheint eine Meldung, die einen erfolgreichen Start des Dienstes signalisiert. | |||
[ ok ] Starting ebusd: ebusd. | |||
===Bekannte Fehler=== | |||
Das Logfile ist zur Inbetriebnahme unerlässlich und kann (z.B. mit [[#PSPad|PSPad]]) ausgelesen werden. | |||
<syntaxhighlight lang="php"> | |||
2015-12-22 16:27:34.195 [bus notice] signal acquired | |||
2015-12-22 16:28:12.029 [bus error] signal lost | |||
2015-12-22 16:28:12.339 [bus notice] signal acquired | |||
2015-12-22 16:28:14.006 [bus error] signal lost | |||
2015-12-22 16:28:16.372 [bus notice] signal acquired | |||
2015-12-22 16:28:18.023 [bus error] signal lost | |||
2015-12-22 16:28:18.729 [bus notice] signal acquired | |||
2015-12-22 16:28:20.458 [update notice] update myCustom Status01: 43.0;41.0;8.000;41.0;38.0;ok | |||
2015-12-22 16:28:26.460 [update notice] update bc Mode QQ=10: standby | |||
2015-12-22 16:28:30.436 [update notice] update myCustom Status01: 41.0;40.0;8.000;41.0;38.0;ok | |||
2015-12-22 16:28:32.458 [update notice] update broadcast vdatetime QQ=10: 16:24:52;22.12.2015 | |||
2015-12-22 16:28:32.696 [update notice] update myCustom2 Pumpenstatus: ok | |||
2015-12-22 16:28:36.452 [update notice] update bc Mode QQ=10: standby | |||
2015-12-22 16:28:40.478 [update notice] update myCustom Status01: 40.0;39.0;7.750;41.0;38.0;ok | |||
2015-12-22 16:28:42.482 [update notice] update myCustom1 Status11: nosignal;41;5;18;-;-;-;-;8.000 | |||
2015-12-22 16:28:42.753 [update notice] update myCustom Status02: auto;60;70.0;70;54.0 | |||
</syntaxhighlight> | |||
Hier ein typisches Log wenn das Poti noch nicht oder '''falsch kalibriert''' wurde. | |||
Ab dem Eintrag 16:28:20.458 war dann die richtige Stellung gefunden. Das Poti soll daher zunächst ganz nach links (Transistor der Platine ist dann rechts unten) gedreht werden und dann vorsichtig auf etwa 2:00 Uhr. Bei knapp 2:00 Uhr ist bei der Testplatine dann die ideale Stellung. Der Stellbereich ist sehr klein (etwa 1-2 mm), daher einen Schraubendreher verwenden der sehr exakt passt und gleichzeitig mit dem Laptop abfragen starten. Zur Kontrolle dann das Log (var/log/ebusd.log) abfragen. | |||
<syntaxhighlight lang="php"> | |||
2015-11-29 06:26:55.271 [update notice] update myCustom1 Status11: nosignal;40;0;15;-;-;-;-;-0.188 | |||
2015-11-29 06:26:55.541 [update notice] update myCustom Status02: auto;60;70.0;70;54.0 | |||
2015-11-29 06:26:59.293 [update notice] update bc Mode QQ=10: standby | |||
2015-11-29 06:27:03.323 [update notice] update myCustom Status01: 53.0;45.0;-0.438;47.0;46.0;error | |||
2015-11-29 06:27:05.268 [update notice] update broadcast outsidetemp QQ=10: -3.188 | |||
2015-11-29 06:27:09.344 [update notice] update bc Mode QQ=10: standby | |||
2015-11-29 06:27:11.934 [bus error] send to 08: ERR: read timeout, retry | |||
2015-11-29 06:27:11.981 [bus error] send to 08: ERR: read timeout, retry | |||
2015-11-29 06:27:12.025 [bus error] send to 08: ERR: read timeout, retry | |||
2015-11-29 06:27:12.069 [bus error] send to 08: ERR: read timeout | |||
</syntaxhighlight> | |||
In diesem Fall liegt ein Fehler bei jedem Sendeversuch vor. Ein "bus error" mit timeout sollte nicht (zu oft) zu finden sein. Gut zu sehen sind schon die Broadcast Meldungen, die selbständig über den Bus laufen und vom Konverter schon richtig interpretiert werden. Sollten wie in diesem Fall, die Meldungen nicht mit Texten zu lesen sein fehlen noch die Konfigurationfiles (csv) im Verzeichnis /etc/ebusd. Welche Files hier verwendet werden sollen ist natürlich von der Therme und dem Zubehör abhängig. | |||
'''''Achtung''': Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur lesend auf die Schnittstelle zugreifen.'' | |||
==Kommerzielles Interface== | ==Kommerzielles Interface== | ||
Ein | Ein kommerzielles Interface für die Umsetzung eBus->USB ist hier erhältlich: | ||
[https://www.eservice-online.de/produkte/ebus/ eBus Koppler USB] | |||
=Software= | =Software= | ||
Als Software kommt auf dem Raspberry Pi der [https://github.com/ | Als Software kommt auf dem Raspberry Pi der [https://github.com/john30/ebusd ebusd] = eBus-Dämon zum Einsatz (aktuell im Januar 2016 die Version 2.0). | ||
Der ebusd wird auf dem System (z.B Raspberry Pi) nach der beiliegenden Anleitung übersetzt und installiert. | |||
Wichtigsten Bestandteile (Komponenten) der Installation sind: | |||
*''ebusd'' - das eigentliche Programm zur Kommunikation mit dem EBUS | *''ebusd'' - das eigentliche Programm zur Kommunikation mit dem EBUS | ||
*'' | *''ebusd-configuration - Dateien im CSV(Comma Separated Value)-Format, die beim Start des eBusd eingelesen und als Kommandos (Befehle) für das Heizungsystem verwendet werden.'' | ||
Nachfolgend wird die Installation der zwei Komponenten beschrieben. | |||
# | |||
==eBusd Installation per Debian Package== | |||
===Voraussetzungen=== | |||
wget (ist in der Regel auf vielen Distributionen bereits installiert). Die Installation kann mit der folgenden Kommandozeile nachträglich durchgeführt werden: | |||
sudo apt-get install wget | |||
===eBusd installieren=== | |||
Das entsprechende eBusd Debian Package kann [https://github.com/john30/ebusd/releases vom GitHub ebusd] bezogen werden. | |||
Die Installation (''Stand Januar 2016 - Version 2.0'') wird wie folgt durchgeführt: | |||
EBUSDPACKAGE=ebusd-2.0_armhf.deb # <--- Version kann bei Bedarf hier angepasst werden. | |||
wget https://github.com/john30/ebusd/releases/download/v2.0/$EBUSDPACKAGE | |||
sudo dpkg -i --force-overwrite $EBUSDPACKAGE | |||
'''''Hinweis:''' Die eBusd wird dauernd aktualisiert. Aus diesem Grund sollte vor der Installation geprüft werden (siehe den o.g. Link), ob bereits eine neuere Version zur Verfügung steht. Der Name des Debian Packages muss, vor der Ausführung der o.g. Kommandozeilen, an der entsprechenden Stelle angepasst werden.'' | |||
===eBusd Konfigurationsdateien (CSV-Files)=== | |||
Das entsprechende eBusd Konfigurations Debian Package kann [https://github.com/john30/ebusd-configuration/releases vom GitHub ebusd-configuration] bezogen werden. | |||
Die Installation (''Stand Januar 2016 - Version 2.0.5aa482c'') wird wie folgt durchgeführt: | |||
EBUSDCFGPACKAGE=ebusd-configuration-2.0.5aa482c-de_all.deb # <--- Version kann bei Bedarf hier angepasst werden. | |||
wget https://github.com/john30/ebusd-configuration/releases/download/v2.0.1/$EBUSDCFGPACKAGE | |||
sudo dpkg -i --force-overwrite $EBUSDCFGPACKAGE | |||
===eBusd starten=== | |||
Nach der erfolgreichen Installation des eBusd und der eBusd Konfigurationsdateien kann nun der Dienst gestartet werden. | |||
Zuvor muss jedoch der USB-Port des eBus Adapters überprüft werden (siehe auch [[#USB Device und Port unter Linux ermitteln|USB Device und Port unter Linux ermitteln]]). Sollte der USB-Port von dem Standardwert "/dev/ttyUSB0" abweichen, dann muss die Konfiguration "/etc/default/ebusd" angepasst werden. | |||
Andernfalls kann nun der Dienst mit der folgenden Kommandozeile gestartet werden: | |||
service ebusd start | |||
Anschließend erscheint eine Meldung: | |||
[ ok ] Starting ebusd: ebusd. | |||
die einen erfolgreichen Start des Dienstes signalisiert. | |||
===eBusd und Konfigurationsdateien deinstallieren=== | |||
Nachfolgend wird die Deinstallation des eBusd und der eBusd Konfigurationsdateien beschrieben. | |||
Zunächst muss der eBusd Dienst beendet werden, dies erfolgt mit der folgenden Kommandozeile: | |||
service ebusd stop | |||
Anschließend erscheint eine Meldung: | |||
[ ok ] Stopping ebusd: ebusd. | |||
die einen erfolgreichen Stop des Dienstes signalisiert. | |||
Anschließend wird zunächst das Debian Konfigurations Package deinstalliert. | |||
'''''Achtung:''' Bei der Deinstallation werden alle Konfigurationsdateien (CSV-Files) unwiderruflich gelöscht!'' | |||
Die Deinstallation erfolgt mit der folgenden Kommandozeile: | |||
sudo dpkg -r --force-overwrite ebusd-configuration | |||
Das eBusd Debian Package wird mit der folgenden Kommandozeile deinstalliert: | |||
sudo dpkg -r --force-overwrite ebusd | |||
'''Tipp:''' Mit der folgenden Kommandozeile: | |||
dpkg -l | grep 'ebusd' | |||
können die installierten eBusd Debian Packages überprüft werden. | |||
Liefert der Befehl kein Ergebnis, dann kann davon ausgegangen werden, dass kein eBusd Debian Package mehr installiert ist. | |||
==eBusd Installation Build Prozess== | |||
Möchte man eine aktuelle Entwicklungsversion von eBusd nutzen, weil ein Fehler behoben wurde und für diese Version noch kein Debian Package vorhanden ist, dann kann der eBusd manuell kompiliert werden. Nachfolgend werden die dafür notwendigen Schritte beschrieben. | |||
===Voraussetzungen=== | |||
Zunächst müssen die notwendigen Werkzeuge auf dem System installiert werden. Dies erfolgt mit der nachfolgenden Kommandozeile: | |||
apt-get -y install git && apt-get -y install autoconf && apt-get -y install automake && apt-get -y install g++ && apt-get -y install make | |||
Weiterführende Informationen findet man auch direkt im eBusd [https://github.com/john30/ebusd/wiki/1.-Build-and-install Wiki]! | |||
===eBusd kompilieren === | |||
Nachdem alle Voraussetzungen erfüllt sind, kann der eBusd auf dem lokalen System kompiliert und installiert werden. | |||
Dafür sind folgende Schritte notwendig: | |||
'''eBusd auschecken''' | |||
=== | git clone https://github.com/john30/ebusd.git | ||
'''Den Kompilierungsvorgang starten''' | |||
<syntaxhighlight lang="bash"> | |||
cd ebusd | |||
sudo ./autogen.sh --prefix=/usr | |||
sudo make | |||
sudo make install | |||
sudo cp contrib/debian/default/ebusd /etc/default/ebusd # Konfigurationsdatei für eBusd Startoptionen. | |||
</syntaxhighlight> | |||
Dieser Vorgang kann je nach Geschwindigkeit des Systems ca. 20 Minuten dauern. | |||
Wurde der Vorgang erfolgreich durchgeführt, dann kann mit der folgenden Kommandozeile die Version abgefragt werden: | |||
ebusd -V | |||
===Autostart von eBusd konfigurieren=== | |||
Damit die Austostartroutine auch nach einem Neustart des Systems funktioniert, muss das Dämonstartfile in das entsprechende Verzeichnis kopiert werden. | |||
Die Konfiguration wird mit der folgenden Kommandozeile durchgeführt: | |||
sudo cp contrib/debian/init.d/ebusd /etc/init.d/ebusd # (Dämonstartfile kopieren) | |||
Der eBusd Dienst kann, wie [[#eBusd starten|hier]] beschrieben, gestartet werden. | |||
===eBusd Logrotate=== | |||
Logrotate ist ein logischer Ablauf was mit dem Logfile geschehen soll. Man kann damit das File täglich komprimieren und das 7 Tage lang, dann erst wieder beginnen es zu überschreiben. Dies ist besonders wichtig, denn sonst würde irgendwann das Logilfe bis zu einer extremen Größe anwachsen. | |||
<syntaxhighlight lang="bash"> | |||
/var/log/ebusd.log { | |||
rotate 7 | |||
copytruncate | |||
compress | |||
missingok | |||
notifempty | |||
daily | |||
} | |||
</syntaxhighlight> | |||
Das Logfile kann in '''/etc/logrotate.d/ebusd''' konfiguriert werden. | |||
In diesem Beispiel wird alle 7 Tage rotiert und die Datei komprimiert, das aktuelle Tagesfile ist unkomprimiert und mit einem Editor lesbar. | |||
Das Ergebnis aus der oben dargestellten Definition sieht wie folgt aus: | |||
[[Datei:EBUS_Logfile_logrotate.png|thumb|left|alt=Logfile Ansicht]] | |||
<div style="clear:both;"></div> | |||
=Systemüberwachung= | |||
Aufgrund unterschiedlicher Ursachen kann es vorkommen, dass der eBus Dämon seinen Dienst einstellt. Die hätte zufolge, dass der Lese- und Schreibzugriff nicht mehr möglich wäre. Nachfolgend werden zwei Möglichkeiten beschreiben wie eine Überwachung des Systems realisiert und im Störungsfall die Funktionalität wiederhergestellt, werden kann. | |||
==Mithilfe von FHEM== | |||
In FHEM kann man ein Notify einrichten, um bei einem Verbindungsabbruch mehrere Versuche zum Reconnect durchzuführen | |||
<syntaxhighlight lang="php"> | |||
# fhem.cfg | |||
define EBUS.N notify (EBUS.*DISCONNECTED.*)|(HK.Hz:A.Temp.*err) { EBUSrecover("notify EBUS.N",0)} | |||
attr EBUS.N group deviceDetector | |||
attr EBUS.N room Alarm | |||
</syntaxhighlight> | |||
Das dabei aufgerufene Perl-Programm besteht nur aus wenigen Zeilen und muss in die [[99 myUtils anlegen|99_myUtils.pm]] kopiert/erweitert werden: | |||
<syntaxhighlight lang="perl"> | |||
# 99_myUtils.pm | |||
sub EBUSrecover($$) | |||
{ | |||
my ($evt,$num) = @_; | |||
Log 1,"[EBUS] Recover triggered from $evt, attempt No. $num"; | |||
if(Value("EBUS") ne "opened"){ | |||
if( $num < 7){ | |||
=== | $num++; | ||
fhem("set EBUS reopen"); | |||
fhem("delete EBUSrecoverdly") if($defs{"EBUSrecoverdly"}); | |||
fhem("define EBUSrecoverdly at +00:00:05 {EBUSrecover('EBUSrecover',$num)}"); | |||
}else{ | |||
fhem("set Device.warn EBUS") | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
==Mithilfe von Watchdog== | |||
Es empfiehlt sich auch, 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. | Es empfiehlt sich auch, 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 System nach überall erhältlichen Anleitungen der Watchdog Timer installiert und die Datei /etc/watchdog.conf mit den beiden Parametern | ||
test-timeout = 10 | test-timeout = 10 | ||
interval = 5 | interval = 5 | ||
besetzt. Ferner wird die Datei /etc/watchdog.d/ebusd angelegt mit dem Inhalt | besetzt. Ferner wird die Datei /etc/watchdog.d/ebusd angelegt mit dem Inhalt | ||
<syntaxhighlight lang="bash"> | |||
#!/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 | |||
</syntaxhighlight> | |||
=Visualisierung und Steuerung= | |||
==Mit MQTT2 in FHEM== | |||
Das MQTT Protokoll wurde komplett in Fhem mit den Modulen [https://forum.fhem.de/index.php/topic,91394.0.html MQTT2_SERVER] , MQTT2_Client und [https://forum.fhem.de/index.php/topic,91394.0.html MQTT2 DEVICE] integriert. | |||
Eine detailierte Anleitung mit einigen Praxisbeispielen zur Konfiguration in Fhem findet man [[EBUS-MQTT2|hier in eBus MQTT2]]. | |||
==Mit ECMD in FHEM== | |||
Eine einfache aber sichere Anbindung des eBusd an FHEM kann mit [[ECMD]] durchgeführt werden. Es ist egal ob eBusd auf dem selben Raspberry wie FHEM läuft oder ein eigener Raspberry dafür verwendet wird. Die gezeigten Beispiele sind nur eine der Möglichkeiten die zum Ziel führen, sollen aber sicher und schnell zu den ersten Erfolgen führen. | |||
Eine detailierte Anleitung zur Konfiguration findet man [[EBUS-ECMD|hier in eBus ECMD]]. | |||
==GAEBUS== | |||
GAEBUS ist ein Perl Modul welches es in FHEM ermöglicht sämtliche Daten des eBus bequem zu konfigurieren. | |||
Das Protokoll ist ebenso wie bei ECMD Telnet, aber die Einrichtung unterscheidet sich sehr stark und wird von den meisten Anwendern einfacher empfunden. Allerdings ist im derzeitigen Entwicklungsstand der GAEBUS noch nicht so flexibel wie ECMD. Das betrifft vor allem die Datenfilterung und Datenformatierung. | |||
Eine genaue Installations- und Einrichtungsanleitung kann aus diesem {{Link2Forum|Topic=46098|Message=381580|LinkText=Forums-Thread}} entnommen werden. | |||
Den Diskussionsthread des Autors findet man {{Link2Forum|Topic=41064|Message=332654|LinkText=hier}}. | |||
==FHEM Tablet UI (FTUI)== | |||
Die [http://forum.fhem.de/index.php/board,71.0.html Tablet-UI] ist ein ansprechendes HTML Frontend welches durch intensive Betreuung des Autors sehr gepflegt wird. Mit sogenannten Widgets kann hier auch für ungeübte schnell ein optisch ansprechendes Ergebnis erzielt werden. Die Tablet-UI stellt mit ihren Widgets direkt die Verbindung zu den Readings in FHEM her. Alle Messwerte die hier dargestellt werden sollen, müssen daher vorher in FHEM bereits definiert werden. | |||
[[Datei:EBUSD_FTUI.png|thumb|left|alt=eBus Platine]] | |||
<div style="clear:both;"></div> | |||
Der komplette Demo-Code der abgebildeten Seite kann hier downgeloadet werden: {{Link2Forum|Topic=46098|Message=383071|LinkText=Tablet-UI}} | |||
=Tipps & Tricks= | |||
==eBusd Bedeutung der Telegramme== | |||
Der ebusd wird entweder über ''ebusctl'' oder über ''telnet'' durch Klartextkommandos abgefragt, die lauten z.B. ''read -c broadcast outsidetemp''. | |||
*In CSV-Dateien in /etc/ebusd wird festgelegt, in welche bzw. aus welcher binären Folge ein Kommando übersetzt wird. Konkret handelt es sich z.B. bei ''read -c broadcast outsidetemp'' um die Außentemperatur, die im Heizungssystem zyklisch als Broadcast gesendet wird und vom ebusd einfach mitgelesen wird. | |||
*Für unterschiedliche Heizungssysteme werden unterschiedliche CSV-Dateien benötigt. | |||
Für die Übersetzung der binären Daten in den Klartext ist es notwendig die entsprechenden Konfigurationsdateien(CSV-Files) zu installieren. | |||
Den aktuellen Stand dieser Dateien findet ihr im [https://github.com/john30/ebusd-configuration/releases GIT von John]. | |||
Desweiteren kann der eBusd gestartet werden, und zwar mit den Optionen -f (läuft im Vordergrund) und --loglevel debug (alles wird geloggt). Diese Optionen produzieren Unmengen an Daten und damit werden auch alle empfangenen Telegramme protokolliert, z.B. | |||
10feb5160301f00d44 | |||
Hierin bedeutet | |||
{| | |||
|Byte | |||
|Bedeutung | |||
|hier | |||
|- | |||
|0x10 | |||
|Adresse des Senders | |||
|Zentrale | |||
|- | |||
|0xfe | |||
|Adresse des Empfängers | |||
|Alle Geräte | |||
|- | |||
|0xb5 | |||
|Herstellercode | |||
|Vaillant | |||
|- | |||
|0x16 | |||
|Klasse des Kommandos | |||
|Broadcast | |||
|- | |||
|0x03 | |||
|Anzahl Datenbytes | |||
|3 | |||
|- | |||
|0x01 | |||
|Bedeutung des Wertes | |||
|outsidetemp = Außentemperatur | |||
|- | |||
|0xf0 | |||
|LSB des Wertes | |||
|240 | |||
|- | |||
|0x0d | |||
|MSB des Wertes | |||
|12 | |||
|- | |||
|0x44 | |||
|CRC | |||
| | |||
|} | |||
Damit ergibt sich in diesem Falle eine Außentemperatur von (12*256 + 240)/256 = 12,9375 Grad Celsius. In der zugehörigen CSV-Datei wird dem ebusd diese Übersetzung mitgeteilt durch eine Zeile der Form | |||
u,broadcast,outsidetemp,Außentemperatur,,FE,B516,01,temp2,m,D2B,,°C,Temperatur | |||
Diese CSV-Dateien können z.B. mit OpenOffice aus einem Spreadsheet generiert werden, indem dieses als CSV-Datei mit Separator "," gespeichert wird. | |||
*Bei einem vollkommen unbekannten Heizungssystem sollte man den Hersteller fragen, welche Codes er verwendet | |||
*Für Vaillant- und Wolf- Heizungssysteme liegen in dem oben genannten Verzeichnis ein paar Beispiele vor, die man als Ausgangspunkt nehmen kann. | |||
==Serieller Konverter== | |||
[[Datei:EBUS_RS232_Konverter.png|thumb|left|alt=eBus Platine]] | |||
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. | |||
<div style="clear:both;"></div> | |||
==USB Device und Port unter Linux ermitteln== | |||
Die einfachste Art den USB Device zu ermitteln erfolgt direkt am Raspberry Pi mit dem Befehl "lsusb". | |||
pi@raspberry2 ~ $ lsusb | |||
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. | |||
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub | |||
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. | |||
Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC | |||
in diesem Beispiel ist das der Device 004, dieser FT232 lauscht am eBus und ist mit dem eBus-Konverter verbunden. | |||
Der USB Port kann mit der folgenden Kommandozeile ermittelt werden: | |||
sudo dmesg | grep -i tty | |||
Die Ausgabe sieht wie folgt aus: | |||
[553999.530995] usb 1-1.3: FTDI USB Serial Device converter now attached to '''ttyUSB0''' | |||
==eBusd== | |||
===Prüfen der eBusd Konfigurationsdateien=== | |||
Mit dem Parameter "'''--checkconfig --scanconfig'''" kann die Installation der benutzten CSV Dateien am Raspberyy Pi überprüft werden. Vor allem wird hier angezeigt wieviele Messages übersetzt werden. | |||
<syntaxhighlight lang="php"> | |||
pi@raspberry2 ~ $ ebusd --checkconfig --scanconfig | |||
2016-01-22 17:14:12.619 [main notice] Performing configuration check... | |||
2016-01-22 17:14:19.336 [main notice] found messages: 4440 (416 conditional on 89 conditions, 2 poll, 64 update) | |||
pi@raspberry2 ~ $ ebusctl info | |||
version: ebusd 2.0.0ea7efc | |||
signal: acquired | |||
symbol rate: 24 | |||
masters: 3 | |||
messages: 426 | |||
address 03: master #3 | |||
address 08: slave #3, scanned "MF=Vaillant;ID=BAI00;SW=0518;HW=7401", loaded "vaillant/08.bai.HW7401.csv" | |||
address 10: master #6 | |||
address 15: slave #6, scanned "MF=Vaillant;ID=43000;SW=0215;HW=2002", loaded "vaillant/15.430.csv" | |||
</syntaxhighlight> | |||
Info hingegen zeigt genau welche CSV Dateien geladen worden sind und ihre Soft- und Hardewareversion. | |||
===Bedeutung von "unknown MS" in der eBusd Logdatei=== | |||
Der Autor des eBus Dämons ist ständig bemüht die Geräte der unterschiedlichen Hersteller alle zu erfassen und so die Konfigurationsdateien zu ergänzen. Je nach Hard- und Softwarekonfiguration können Broadcast Meldungen vom eBus kommen die in der _broadcast.csv noch nicht übersetzt werden. | |||
<syntaxhighlight lang="php"> | |||
2015-12-30 21:48:57.662 [update notice] unknown MS cmd: 1008b5110101 / 09404210004a620000ff | |||
2015-12-30 21:48:59.670 [update notice] unknown BC cmd: 10feb516080001492130120315 | |||
2015-12-30 21:48:59.923 [update notice] unknown MS cmd: 1008b512020064 / 00 | |||
2015-12-30 21:49:01.711 [update notice] unknown MS cmd: 1008b5100900003c7affff00ff00 / 0101 | |||
</syntaxhighlight> | |||
Diese Meldungen haben in der Regel für den weiteren Verlauf der Kommunikation über den eBus keinen Einfluß und ist keine Fehlfunktion der Schaltung oder Platine! | |||
===Bedeutung von "signal lost"=== | |||
<syntaxhighlight lang="php"> | |||
pi@raspberrypi /etc/init.d $ sudo ebusd -f -c /tmp --logareas bus --loglevel info -d /dev/ttyUSB0 | |||
2016-01-18 22:38:56.348 [bus notice] signal acquired | |||
2016-01-18 22:38:56.477 [bus notice] new master 10, master count 2 | |||
2016-01-18 22:38:56.481 [bus notice] new master 3f, master count 3 | |||
2016-01-18 22:39:02.051 [bus error] signal lost | |||
</syntaxhighlight> | |||
Bei dieser Meldung verliert der USB Konverter nach 20-Sekunden die Verbindung zum Raspberry Pi und produziert dann den Logeintrag. | |||
{{Link2Forum|Topic=46098|Message=394313|LinkText=Lösungvorschlag}} | |||
===ERR: unable to load=== | |||
2016-01-17 19:04:03.961 [main error] unable to load scan config 08: no file from /etc/ebusd/vaillant with prefix 08. matches ID "bai00", SW0604, HW5502 | |||
Ebusd wird gestartet, findet aber ein Konfigurations File (CSV) nicht. | |||
Die eBusd Konfigurationsdateien könne nach [[#eBusd Konfigurationsdateien (CSV-Files)|diesem]] Vorgehen installiert werden. | |||
Die Konfigurationsdateien aus dem Git neu laden und installieren. | |||
{{Link2Forum|Topic=46098|Message=394270|LinkText=Lösungvorschlag}} | |||
===ERR: duplicate Entry=== | |||
===ERR: End of input reached=== | |||
Die CSV Dateien wurden [http://forum.fhem.de/index.php/topic,46098.msg383450/topicseen.html#msg383450 fehlerhaft installiert] oder sind defekt! | |||
Eine Neuinstallation dieser Dateien ist erforderlich! | |||
Error reading "/etc/ebusd/vaillant/05.vd3.csv" line 1 field 1 value "05.vd4.csv": ERR: end of input reached | |||
Erroneous item is here: | |||
05.vd4.csv | |||
^ | |||
Error reading "/etc/ebusd/vaillant/15.hep.csv" line 1 field 1 value "15.sdr_p.csv": ERR: end of input reached | |||
Erroneous item is here: | |||
15.sdr_p.csv | |||
^ | |||
===BUS ERR send to 15=== | |||
<syntaxhighlight lang="php"> | |||
2016-01-16 19:20:28.575 [bus notice] new master 03, master count 4 | |||
2016-01-16 19:20:28.575 [update notice] unknown MS cmd: 1008b513020508 / 00 | |||
2016-01-16 19:20:29.413 [update notice] unknown MS cmd: 100ab504010d / 054201008037 | |||
2016-01-16 19:20:32.398 [bus error] send to 08: ERR: read timeout, retry | |||
2016-01-16 19:20:33.005 [bus error] send to 08: ERR: read timeout, retry | |||
2016-01-16 19:20:33.613 [bus error] send to 08: ERR: read timeout, retry | |||
2016-01-16 19:20:34.859 [bus error] send to 08: ERR: read timeout | |||
2016-01-16 19:20:34.859 [main error] scan config 08 message: ERR: read timeout | |||
2016-01-16 19:20:37.017 [main notice] read common config file /etc/ebusd/vaillant/scan.csv | |||
2016-01-16 19:20:37.019 [main notice] read common config file /etc/ebusd/vaillant/broadcast.csv | |||
</syntaxhighlight> | |||
Diese Fehlermeldung (read timeout) kann verschiedene Ursachen haben, meist liegt der Fehler in einer fehlerhaften Verkabelung. | |||
{{Link2Forum|Topic=46098|Message=393547|LinkText=Lösungsvorschlag}} | |||
=Systemarchitektur / Systemdesign= | |||
Es muss sich jeder vorher überlegen, ob man für den eBus einen eigenen Rechner Raspberry Pi nimmt, oder auf der bestehenden FHEM Installation laufen lassen will. Eine Trennung bietet mehrere Vorteile die dann speziell im Testbetrieb den normalen Smart-Home Betrieb nicht beinflussen. | |||
[[Datei:EBUS_Konfiguration.png|thumb|left|alt=eBus Konfiguration]] | |||
Hier eine Konfiguration von FHEM und das Zusammenspiel mit eBusd via ECMD. Das soll aber jeder so handhaben wie es am Besten in das eigene Konzept passt. | |||
<div style="clear:both;"></div> | |||
=Werkzeuge / Tools= | |||
==PSPad== | |||
[http://www.pspad.com/de/ Pspad] ist ein besonders auf Programmierer zugeschnittener unicode-fähiger Editor für Microsoft Windows, welcher in der Lage ist auch per FTP die Dateien direkt zu editieren und zu schreiben ohne den Umweg sie vorher kopieren zu müssen! Besonders wichtig ist neben einem Syntaxhighlighter das er Linuxkonform ist und die Steuerzeichen am Zeilenende richtig interpretiert. | |||
Hier zwei wichtige Infos zur Einrichtung des PSPad. | |||
[[Datei:EBUS_PSPad_FTP.png|thumb|left|alt=eBus Platine]] | |||
Im Tab "'''FTP'''" unten mit der rechten Maustaste auf die weiße Fläche klicken und in dem neu geöffneten Fenster "FTP verbinden" wählen. | |||
[[Datei:EBUS_PSPad_FTP2.png|thumb|left|alt=eBus Platine]] | |||
Es öffnet sich ein Fenster mit den Verbindungsdaten des FTP Servers. Nicht vergessen, das unten markierte Häckchen "'''Verbindung halten''' ..." zu markieren. Es wird dann alle 60 Sekunden ein NOOP Signal gesendet und die Verbindung wird nach einem Timeout nicht jedes Mal beendet. | |||
<div style="clear:both;"></div> | |||
==Filezilla== | |||
Ebenso wie PSPad wird es für viele Arbeiten am Raspberry und eBusd eine Erleichterung sein manche Dateien direkt zu kopieren oder am PC zu sichern. | |||
[https://filezilla-project.org/ Filezilla] beherrscht ebenfalls das '''FTP Protokoll''' und speichert die Verbindungsdaten in einem Profil. | |||
[[Datei:EBUS_Filezilla_FTP.png|thumb|left|alt=eBus Platine]] | |||
Links oben öffnet man den Servermanager und wählt (links unten) "neuer Server". Man gibt die Verbindungsdaten des Raspberry ein und drückt "speichern". Das Verbindungs Profil steht nun im Servermanager als "Raspberry" zur Verfügung und die Verbindung kann nun mit einem Doppelklick geöffnet werden. Dateien können nun durch einfaches Drag & Drop zwischen linken (lokales Laufwerk am PC) und rechten Dateifenster (in diesem Fall Raspberry) bequem kopiert werden. | |||
<div style="clear:both;"></div> | |||
==Putty== | |||
[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] ist ein SSH Client welcher neben Secure Shell auch Telnet, Remote login und eine serielle Schnittstelle enthält. Als Tipp sei hier erwähnt, dass hier einige sehr nützliche Features zur Verfügung stehen: | |||
* '''rechte Maustaste''' = Zwischenablage wird ins Terminalfenster kopiert | |||
* '''Text mit Maus markieren''' = in Zwischenablage kopieren | |||
* '''Pfeiltasten Auf/Ab''' = die letzten Befehle wiederholen, durch die Liste steppen | |||
[[Datei:EBUS_Putty.png|thumb|left|alt=eBus Platine]] | |||
Ebenso können mit Putty mehrere Terminalfenster parallel geöffnet werden. Diese Methode ist bei der Kalibrierung des Potis im Raw-Modus sehr von Vorteil. | |||
<div style="clear:both;"></div> | |||
=Weiterführende Links= | |||
Diskussionsthread aus dem Forum: | |||
*{{Link2Forum|Topic=46098|LinkText=eBus Schaltung in Betrieb nehmen!}} | |||
*{{Link2Forum|Topic=29737|LinkText=Läuft: Heizung mit eBus-Schnittstelle}} | |||
[[Kategorie:Other Components]] | [[Kategorie:Other Components]] | ||
[[Kategorie:Heizungssteuerung]] | [[Kategorie:Heizungssteuerung]] | ||
[[Kategorie:Interfaces]] | [[Kategorie:Interfaces]] |
Aktuelle Version vom 7. November 2023, 12:22 Uhr
ACHTUNG:
Dieses Wiki beschreibt die alten Adapter 1.x, welche technisch gesehen andere Anforderungen und Konfigurationen voraussetzen. Bei den neuen Adaptern ab Version 2.x bitte diese Seiten für Informationen nutzen. Die Beispieldateien sollten aber auch alle für die neuen Adapter gelten.
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
Fertig aufgebaute eBus Platine, bereit für den Einsatz mit eBusd!
Interface
Schaltung
Eine direkte Ankopplung des eBus an FHEM via Pegelwandlung und serielle Schnittstelle ist nicht empfehlenswert, 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.
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.
Achtung: Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur die lesende Hälfte des Interfaces nachzubauen und sich auf ein passives Lauschen auf dem EBUS zu beschränken. Dazu einfach den Zweig mit Darlington-Transistor aus der Schaltung nicht einbauen.
Die Schaltung des eBus von Prof. Dr. Peter A. Henning ist eine bewährte Schaltung die von zahlreichen Anwendern bereits nachgebaut wurde.
Eigenbau (Lochrasterplatine)
Hier ein Beispiel eines Aufbaues auf einer Lochrasterplatine.
Platine
Auf Basis der oben genannten Schaltung, wurde im FHEM Forum ein Platinenlayout erstellt und produziert. Die dazu benötigten Gerberfiles können hier heruntergeladen werden. Der Autor des Layouts hat dies mit der Freeware Version von EAGLE erstellt, d.h. die Files können bei allen Platinenherstellern eingereicht werden (keine Lizenz eines bestimmten Herstellers notwendig).
Diese Beschreibung sollte hauptsächlich für Personen dienen, bei denen es nicht das tägliche Brot ist elektronische Schaltungen in Betrieb zu nehmen. Ich setze hier voraus, dass der Umgang mit einem Lötkolben klar ist. Wer noch nie gelötet hat, sollte besser einen Bekannten ersuchen der das schon gemacht hat. Nachfolgend wird beschrieben, wie eine Platine mit den Bauteilen bestückt wird. Am einfachsten ist es einen fertigen Adapter zu kaufen. Siehe dazu auch den Link aus dem Forum:
Platine bestücken
Bei der Bestückung sollte darauf geachtet werden mit den niedrigsten Bauteilen zuerst zu beginnen, sonst fallen sie beim verlöten ständig heraus. Wer die Farbcodes der Widerstände nicht auswendig kennt sollte diese vorher mit einem Meßgerät (Ohmmeter) messen. Nach den Dioden und Widerständen können die IC Sockel eingelötet werden, hier sollte lediglich auf die Einkerbung laut Bestückungsaufdruck geachtet werden. Zum Schluß noch die restlichen Bauteile. Nach einer genauen Sichtkontrolle (verbogene Beinchen des IC, Kurzschlüsse beim Löten, richtige Polung) können noch die ICS eingesetzt werden. Diese können auf einer flachen Unterlage etwas vorgebogen werden, damit sie leichter in den Sockel passen.
Achtung: der IC 4011 ist ein Cmos Schaltkreis und ist empfindlich gegen statische Aufladungen, daher die Beinchen nicht mit dem Finger berühren, bzw. ein Antistatikband am Arm verwenden.
Bestückung der Widerstände bei Platine V1.6 R1 = 3k3 R2 = 1k0 R3 = 20k Poti R4 = 10k (auf der Platine nicht beschriftet, links neben R2) R5 = 470 R6 = 22k R7 = 100k (auf der Platine nicht beschriftet, links unten liegt quer)
Warenkorb der benötigten Bauteile von Reichelt
Platine Messpunkte
Der Schaltplan mit den Messpunkten wurde entfernt, da er etwas missverständlich formuliert war und bei einigen Anwendern Verwirrung auslöste.
Poti abgleichen
Zur ersten Justierung des Potis, wird der eBusd Dienst genutzt. Das Vorgehen sieht wie folgt aus:
1) eBus Dienst stoppen - Das kann mit der folgenden Kommandozeile bewerkstelligt werden:
service ebusd stop
2) eBus Dienst, jedoch mit minimalen Parametern und ohne eBusd Konfigurationsdateien (CSV-Files), mit der folgenden Kommandozeile erneut starten:
Hinweis: <DEVICE> Muss zuvor durch den entsprechenden USB-Port (siehe USB Device und Port unter Linux ermitteln) z.B. /dev/ttyUSB0 ersetzt werden.
ebusd -f -c /tmp --logareas bus --loglevel info -d <DEVICE>
3) Der eBusd Dienst läuft nun im Vordergrund.
4) Einem zweiten Terminal öffnen und den folgenden Befehl ausführen:
ebusctl raw
Mit dem Befehl erhält man im Terminalfenster die empfangenen Bytes als Hex, die wie folgt aussehen:
2015-12-24 12:07:16.955 [bus notice] <aa
2015-12-24 12:07:17.001 [bus notice] <aa
2015-12-24 12:07:17.047 [bus notice] <aa
2015-12-24 12:07:17.093 [bus notice] <aa
2015-12-24 12:07:17.097 [bus notice] <10
2015-12-24 12:07:17.102 [bus notice] <50
2015-12-24 12:07:17.107 [bus notice] <b5
2015-12-24 12:07:17.111 [bus notice] <04
Wenn gerade kein Gerät den Bus nutzt, dann sollten ca. 20 Zeilen pro Sekunde ausgegeben werden und zwar mit "<aa" (im Beispiel die oberen 4 Zeilen).
Sobald ein Gerät den eBus nutzt, tauchen neben "<aa" auch andere HEX Werte auf (im Beispiel die unteren 4 Zeilen). Diese Werte können ignoriert werden.
Wichtig bei der Poti Einstellung ist, dass vor allem die regulären "aa"s zu sehen sind. Tauchen die "aa"s auf, dann kann davon ausgegangen werden, dass der Poti korrekt eigestellt ist. Ist dies der Fall, dann kann der eBusd Dienst regulär gestartet werden. Dabei muss der im Vordergrund laufende eBusd Prozess (siehe Punkt 2) mit der Tastenkombination STRG+C abgebrochen und der folgende Befehl in der Kommandozeile ausgeführt werden:
service ebusd start
Anschließend erscheint eine Meldung, die einen erfolgreichen Start des Dienstes signalisiert.
[ ok ] Starting ebusd: ebusd.
Bekannte Fehler
Das Logfile ist zur Inbetriebnahme unerlässlich und kann (z.B. mit PSPad) ausgelesen werden.
2015-12-22 16:27:34.195 [bus notice] signal acquired
2015-12-22 16:28:12.029 [bus error] signal lost
2015-12-22 16:28:12.339 [bus notice] signal acquired
2015-12-22 16:28:14.006 [bus error] signal lost
2015-12-22 16:28:16.372 [bus notice] signal acquired
2015-12-22 16:28:18.023 [bus error] signal lost
2015-12-22 16:28:18.729 [bus notice] signal acquired
2015-12-22 16:28:20.458 [update notice] update myCustom Status01: 43.0;41.0;8.000;41.0;38.0;ok
2015-12-22 16:28:26.460 [update notice] update bc Mode QQ=10: standby
2015-12-22 16:28:30.436 [update notice] update myCustom Status01: 41.0;40.0;8.000;41.0;38.0;ok
2015-12-22 16:28:32.458 [update notice] update broadcast vdatetime QQ=10: 16:24:52;22.12.2015
2015-12-22 16:28:32.696 [update notice] update myCustom2 Pumpenstatus: ok
2015-12-22 16:28:36.452 [update notice] update bc Mode QQ=10: standby
2015-12-22 16:28:40.478 [update notice] update myCustom Status01: 40.0;39.0;7.750;41.0;38.0;ok
2015-12-22 16:28:42.482 [update notice] update myCustom1 Status11: nosignal;41;5;18;-;-;-;-;8.000
2015-12-22 16:28:42.753 [update notice] update myCustom Status02: auto;60;70.0;70;54.0
Hier ein typisches Log wenn das Poti noch nicht oder falsch kalibriert wurde. Ab dem Eintrag 16:28:20.458 war dann die richtige Stellung gefunden. Das Poti soll daher zunächst ganz nach links (Transistor der Platine ist dann rechts unten) gedreht werden und dann vorsichtig auf etwa 2:00 Uhr. Bei knapp 2:00 Uhr ist bei der Testplatine dann die ideale Stellung. Der Stellbereich ist sehr klein (etwa 1-2 mm), daher einen Schraubendreher verwenden der sehr exakt passt und gleichzeitig mit dem Laptop abfragen starten. Zur Kontrolle dann das Log (var/log/ebusd.log) abfragen.
2015-11-29 06:26:55.271 [update notice] update myCustom1 Status11: nosignal;40;0;15;-;-;-;-;-0.188
2015-11-29 06:26:55.541 [update notice] update myCustom Status02: auto;60;70.0;70;54.0
2015-11-29 06:26:59.293 [update notice] update bc Mode QQ=10: standby
2015-11-29 06:27:03.323 [update notice] update myCustom Status01: 53.0;45.0;-0.438;47.0;46.0;error
2015-11-29 06:27:05.268 [update notice] update broadcast outsidetemp QQ=10: -3.188
2015-11-29 06:27:09.344 [update notice] update bc Mode QQ=10: standby
2015-11-29 06:27:11.934 [bus error] send to 08: ERR: read timeout, retry
2015-11-29 06:27:11.981 [bus error] send to 08: ERR: read timeout, retry
2015-11-29 06:27:12.025 [bus error] send to 08: ERR: read timeout, retry
2015-11-29 06:27:12.069 [bus error] send to 08: ERR: read timeout
In diesem Fall liegt ein Fehler bei jedem Sendeversuch vor. Ein "bus error" mit timeout sollte nicht (zu oft) zu finden sein. Gut zu sehen sind schon die Broadcast Meldungen, die selbständig über den Bus laufen und vom Konverter schon richtig interpretiert werden. Sollten wie in diesem Fall, die Meldungen nicht mit Texten zu lesen sein fehlen noch die Konfigurationfiles (csv) im Verzeichnis /etc/ebusd. Welche Files hier verwendet werden sollen ist natürlich von der Therme und dem Zubehör abhängig.
Achtung: Der Autor übernimmt keine Haftung für die Anwendung dieser Schaltung. Zur Vermeidung von Schäden durch unsachgemäße Bedienung des Heizungssystems wird ausdrücklich empfohlen, nur lesend auf die Schnittstelle zugreifen.
Kommerzielles Interface
Ein kommerzielles Interface für die Umsetzung eBus->USB ist hier erhältlich: eBus Koppler USB
Software
Als Software kommt auf dem Raspberry Pi der ebusd = eBus-Dämon zum Einsatz (aktuell im Januar 2016 die Version 2.0).
Der ebusd wird auf dem System (z.B Raspberry Pi) nach der beiliegenden Anleitung übersetzt und installiert.
Wichtigsten Bestandteile (Komponenten) der Installation sind:
- ebusd - das eigentliche Programm zur Kommunikation mit dem EBUS
- ebusd-configuration - Dateien im CSV(Comma Separated Value)-Format, die beim Start des eBusd eingelesen und als Kommandos (Befehle) für das Heizungsystem verwendet werden.
Nachfolgend wird die Installation der zwei Komponenten beschrieben.
eBusd Installation per Debian Package
Voraussetzungen
wget (ist in der Regel auf vielen Distributionen bereits installiert). Die Installation kann mit der folgenden Kommandozeile nachträglich durchgeführt werden:
sudo apt-get install wget
eBusd installieren
Das entsprechende eBusd Debian Package kann vom GitHub ebusd bezogen werden.
Die Installation (Stand Januar 2016 - Version 2.0) wird wie folgt durchgeführt:
EBUSDPACKAGE=ebusd-2.0_armhf.deb # <--- Version kann bei Bedarf hier angepasst werden. wget https://github.com/john30/ebusd/releases/download/v2.0/$EBUSDPACKAGE sudo dpkg -i --force-overwrite $EBUSDPACKAGE
Hinweis: Die eBusd wird dauernd aktualisiert. Aus diesem Grund sollte vor der Installation geprüft werden (siehe den o.g. Link), ob bereits eine neuere Version zur Verfügung steht. Der Name des Debian Packages muss, vor der Ausführung der o.g. Kommandozeilen, an der entsprechenden Stelle angepasst werden.
eBusd Konfigurationsdateien (CSV-Files)
Das entsprechende eBusd Konfigurations Debian Package kann vom GitHub ebusd-configuration bezogen werden.
Die Installation (Stand Januar 2016 - Version 2.0.5aa482c) wird wie folgt durchgeführt:
EBUSDCFGPACKAGE=ebusd-configuration-2.0.5aa482c-de_all.deb # <--- Version kann bei Bedarf hier angepasst werden. wget https://github.com/john30/ebusd-configuration/releases/download/v2.0.1/$EBUSDCFGPACKAGE sudo dpkg -i --force-overwrite $EBUSDCFGPACKAGE
eBusd starten
Nach der erfolgreichen Installation des eBusd und der eBusd Konfigurationsdateien kann nun der Dienst gestartet werden. Zuvor muss jedoch der USB-Port des eBus Adapters überprüft werden (siehe auch USB Device und Port unter Linux ermitteln). Sollte der USB-Port von dem Standardwert "/dev/ttyUSB0" abweichen, dann muss die Konfiguration "/etc/default/ebusd" angepasst werden. Andernfalls kann nun der Dienst mit der folgenden Kommandozeile gestartet werden:
service ebusd start
Anschließend erscheint eine Meldung:
[ ok ] Starting ebusd: ebusd.
die einen erfolgreichen Start des Dienstes signalisiert.
eBusd und Konfigurationsdateien deinstallieren
Nachfolgend wird die Deinstallation des eBusd und der eBusd Konfigurationsdateien beschrieben.
Zunächst muss der eBusd Dienst beendet werden, dies erfolgt mit der folgenden Kommandozeile:
service ebusd stop
Anschließend erscheint eine Meldung:
[ ok ] Stopping ebusd: ebusd.
die einen erfolgreichen Stop des Dienstes signalisiert.
Anschließend wird zunächst das Debian Konfigurations Package deinstalliert.
Achtung: Bei der Deinstallation werden alle Konfigurationsdateien (CSV-Files) unwiderruflich gelöscht!
Die Deinstallation erfolgt mit der folgenden Kommandozeile:
sudo dpkg -r --force-overwrite ebusd-configuration
Das eBusd Debian Package wird mit der folgenden Kommandozeile deinstalliert:
sudo dpkg -r --force-overwrite ebusd
Tipp: Mit der folgenden Kommandozeile:
dpkg -l | grep 'ebusd'
können die installierten eBusd Debian Packages überprüft werden.
Liefert der Befehl kein Ergebnis, dann kann davon ausgegangen werden, dass kein eBusd Debian Package mehr installiert ist.
eBusd Installation Build Prozess
Möchte man eine aktuelle Entwicklungsversion von eBusd nutzen, weil ein Fehler behoben wurde und für diese Version noch kein Debian Package vorhanden ist, dann kann der eBusd manuell kompiliert werden. Nachfolgend werden die dafür notwendigen Schritte beschrieben.
Voraussetzungen
Zunächst müssen die notwendigen Werkzeuge auf dem System installiert werden. Dies erfolgt mit der nachfolgenden Kommandozeile:
apt-get -y install git && apt-get -y install autoconf && apt-get -y install automake && apt-get -y install g++ && apt-get -y install make
Weiterführende Informationen findet man auch direkt im eBusd Wiki!
eBusd kompilieren
Nachdem alle Voraussetzungen erfüllt sind, kann der eBusd auf dem lokalen System kompiliert und installiert werden. Dafür sind folgende Schritte notwendig:
eBusd auschecken
git clone https://github.com/john30/ebusd.git
Den Kompilierungsvorgang starten
cd ebusd
sudo ./autogen.sh --prefix=/usr
sudo make
sudo make install
sudo cp contrib/debian/default/ebusd /etc/default/ebusd # Konfigurationsdatei für eBusd Startoptionen.
Dieser Vorgang kann je nach Geschwindigkeit des Systems ca. 20 Minuten dauern.
Wurde der Vorgang erfolgreich durchgeführt, dann kann mit der folgenden Kommandozeile die Version abgefragt werden:
ebusd -V
Autostart von eBusd konfigurieren
Damit die Austostartroutine auch nach einem Neustart des Systems funktioniert, muss das Dämonstartfile in das entsprechende Verzeichnis kopiert werden. Die Konfiguration wird mit der folgenden Kommandozeile durchgeführt:
sudo cp contrib/debian/init.d/ebusd /etc/init.d/ebusd # (Dämonstartfile kopieren)
Der eBusd Dienst kann, wie hier beschrieben, gestartet werden.
eBusd Logrotate
Logrotate ist ein logischer Ablauf was mit dem Logfile geschehen soll. Man kann damit das File täglich komprimieren und das 7 Tage lang, dann erst wieder beginnen es zu überschreiben. Dies ist besonders wichtig, denn sonst würde irgendwann das Logilfe bis zu einer extremen Größe anwachsen.
/var/log/ebusd.log {
rotate 7
copytruncate
compress
missingok
notifempty
daily
}
Das Logfile kann in /etc/logrotate.d/ebusd konfiguriert werden. In diesem Beispiel wird alle 7 Tage rotiert und die Datei komprimiert, das aktuelle Tagesfile ist unkomprimiert und mit einem Editor lesbar. Das Ergebnis aus der oben dargestellten Definition sieht wie folgt aus:
Systemüberwachung
Aufgrund unterschiedlicher Ursachen kann es vorkommen, dass der eBus Dämon seinen Dienst einstellt. Die hätte zufolge, dass der Lese- und Schreibzugriff nicht mehr möglich wäre. Nachfolgend werden zwei Möglichkeiten beschreiben wie eine Überwachung des Systems realisiert und im Störungsfall die Funktionalität wiederhergestellt, werden kann.
Mithilfe von FHEM
In FHEM kann man ein Notify einrichten, um bei einem Verbindungsabbruch mehrere Versuche zum Reconnect durchzuführen
# fhem.cfg
define EBUS.N notify (EBUS.*DISCONNECTED.*)|(HK.Hz:A.Temp.*err) { EBUSrecover("notify EBUS.N",0)}
attr EBUS.N group deviceDetector
attr EBUS.N room Alarm
Das dabei aufgerufene Perl-Programm besteht nur aus wenigen Zeilen und muss in die 99_myUtils.pm kopiert/erweitert werden:
# 99_myUtils.pm
sub EBUSrecover($$)
{
my ($evt,$num) = @_;
Log 1,"[EBUS] Recover triggered from $evt, attempt No. $num";
if(Value("EBUS") ne "opened"){
if( $num < 7){
$num++;
fhem("set EBUS reopen");
fhem("delete EBUSrecoverdly") if($defs{"EBUSrecoverdly"});
fhem("define EBUSrecoverdly at +00:00:05 {EBUSrecover('EBUSrecover',$num)}");
}else{
fhem("set Device.warn EBUS")
}
}
}
Mithilfe von Watchdog
Es empfiehlt sich auch, 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 System 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
Visualisierung und Steuerung
Mit MQTT2 in FHEM
Das MQTT Protokoll wurde komplett in Fhem mit den Modulen MQTT2_SERVER , MQTT2_Client und MQTT2 DEVICE integriert.
Eine detailierte Anleitung mit einigen Praxisbeispielen zur Konfiguration in Fhem findet man hier in eBus MQTT2.
Mit ECMD in FHEM
Eine einfache aber sichere Anbindung des eBusd an FHEM kann mit ECMD durchgeführt werden. Es ist egal ob eBusd auf dem selben Raspberry wie FHEM läuft oder ein eigener Raspberry dafür verwendet wird. Die gezeigten Beispiele sind nur eine der Möglichkeiten die zum Ziel führen, sollen aber sicher und schnell zu den ersten Erfolgen führen.
Eine detailierte Anleitung zur Konfiguration findet man hier in eBus ECMD.
GAEBUS
GAEBUS ist ein Perl Modul welches es in FHEM ermöglicht sämtliche Daten des eBus bequem zu konfigurieren. Das Protokoll ist ebenso wie bei ECMD Telnet, aber die Einrichtung unterscheidet sich sehr stark und wird von den meisten Anwendern einfacher empfunden. Allerdings ist im derzeitigen Entwicklungsstand der GAEBUS noch nicht so flexibel wie ECMD. Das betrifft vor allem die Datenfilterung und Datenformatierung.
Eine genaue Installations- und Einrichtungsanleitung kann aus diesem Forums-Thread entnommen werden.
Den Diskussionsthread des Autors findet man hier.
FHEM Tablet UI (FTUI)
Die Tablet-UI ist ein ansprechendes HTML Frontend welches durch intensive Betreuung des Autors sehr gepflegt wird. Mit sogenannten Widgets kann hier auch für ungeübte schnell ein optisch ansprechendes Ergebnis erzielt werden. Die Tablet-UI stellt mit ihren Widgets direkt die Verbindung zu den Readings in FHEM her. Alle Messwerte die hier dargestellt werden sollen, müssen daher vorher in FHEM bereits definiert werden.
Der komplette Demo-Code der abgebildeten Seite kann hier downgeloadet werden: Tablet-UI
Tipps & Tricks
eBusd Bedeutung der Telegramme
Der ebusd wird entweder über ebusctl oder über telnet durch Klartextkommandos abgefragt, die lauten z.B. read -c broadcast outsidetemp.
- In CSV-Dateien in /etc/ebusd wird festgelegt, in welche bzw. aus welcher binären Folge ein Kommando übersetzt wird. Konkret handelt es sich z.B. bei read -c broadcast outsidetemp um die Außentemperatur, die im Heizungssystem zyklisch als Broadcast gesendet wird und vom ebusd einfach mitgelesen wird.
- Für unterschiedliche Heizungssysteme werden unterschiedliche CSV-Dateien benötigt.
Für die Übersetzung der binären Daten in den Klartext ist es notwendig die entsprechenden Konfigurationsdateien(CSV-Files) zu installieren. Den aktuellen Stand dieser Dateien findet ihr im GIT von John.
Desweiteren kann der eBusd gestartet werden, und zwar mit den Optionen -f (läuft im Vordergrund) und --loglevel debug (alles wird geloggt). Diese Optionen produzieren Unmengen an Daten und damit werden auch alle empfangenen Telegramme protokolliert, z.B.
10feb5160301f00d44
Hierin bedeutet
Byte | Bedeutung | hier |
0x10 | Adresse des Senders | Zentrale |
0xfe | Adresse des Empfängers | Alle Geräte |
0xb5 | Herstellercode | Vaillant |
0x16 | Klasse des Kommandos | Broadcast |
0x03 | Anzahl Datenbytes | 3 |
0x01 | Bedeutung des Wertes | outsidetemp = Außentemperatur |
0xf0 | LSB des Wertes | 240 |
0x0d | MSB des Wertes | 12 |
0x44 | CRC |
Damit ergibt sich in diesem Falle eine Außentemperatur von (12*256 + 240)/256 = 12,9375 Grad Celsius. In der zugehörigen CSV-Datei wird dem ebusd diese Übersetzung mitgeteilt durch eine Zeile der Form
u,broadcast,outsidetemp,Außentemperatur,,FE,B516,01,temp2,m,D2B,,°C,Temperatur
Diese CSV-Dateien können z.B. mit OpenOffice aus einem Spreadsheet generiert werden, indem dieses als CSV-Datei mit Separator "," gespeichert wird.
- Bei einem vollkommen unbekannten Heizungssystem sollte man den Hersteller fragen, welche Codes er verwendet
- Für Vaillant- und Wolf- Heizungssysteme liegen in dem oben genannten Verzeichnis ein paar Beispiele vor, die man als Ausgangspunkt nehmen kann.
Serieller Konverter
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.
USB Device und Port unter Linux ermitteln
Die einfachste Art den USB Device zu ermitteln erfolgt direkt am Raspberry Pi mit dem Befehl "lsusb".
pi@raspberry2 ~ $ lsusb Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
in diesem Beispiel ist das der Device 004, dieser FT232 lauscht am eBus und ist mit dem eBus-Konverter verbunden.
Der USB Port kann mit der folgenden Kommandozeile ermittelt werden:
sudo dmesg | grep -i tty
Die Ausgabe sieht wie folgt aus:
[553999.530995] usb 1-1.3: FTDI USB Serial Device converter now attached to ttyUSB0
eBusd
Prüfen der eBusd Konfigurationsdateien
Mit dem Parameter "--checkconfig --scanconfig" kann die Installation der benutzten CSV Dateien am Raspberyy Pi überprüft werden. Vor allem wird hier angezeigt wieviele Messages übersetzt werden.
pi@raspberry2 ~ $ ebusd --checkconfig --scanconfig
2016-01-22 17:14:12.619 [main notice] Performing configuration check...
2016-01-22 17:14:19.336 [main notice] found messages: 4440 (416 conditional on 89 conditions, 2 poll, 64 update)
pi@raspberry2 ~ $ ebusctl info
version: ebusd 2.0.0ea7efc
signal: acquired
symbol rate: 24
masters: 3
messages: 426
address 03: master #3
address 08: slave #3, scanned "MF=Vaillant;ID=BAI00;SW=0518;HW=7401", loaded "vaillant/08.bai.HW7401.csv"
address 10: master #6
address 15: slave #6, scanned "MF=Vaillant;ID=43000;SW=0215;HW=2002", loaded "vaillant/15.430.csv"
Info hingegen zeigt genau welche CSV Dateien geladen worden sind und ihre Soft- und Hardewareversion.
Bedeutung von "unknown MS" in der eBusd Logdatei
Der Autor des eBus Dämons ist ständig bemüht die Geräte der unterschiedlichen Hersteller alle zu erfassen und so die Konfigurationsdateien zu ergänzen. Je nach Hard- und Softwarekonfiguration können Broadcast Meldungen vom eBus kommen die in der _broadcast.csv noch nicht übersetzt werden.
2015-12-30 21:48:57.662 [update notice] unknown MS cmd: 1008b5110101 / 09404210004a620000ff
2015-12-30 21:48:59.670 [update notice] unknown BC cmd: 10feb516080001492130120315
2015-12-30 21:48:59.923 [update notice] unknown MS cmd: 1008b512020064 / 00
2015-12-30 21:49:01.711 [update notice] unknown MS cmd: 1008b5100900003c7affff00ff00 / 0101
Diese Meldungen haben in der Regel für den weiteren Verlauf der Kommunikation über den eBus keinen Einfluß und ist keine Fehlfunktion der Schaltung oder Platine!
Bedeutung von "signal lost"
pi@raspberrypi /etc/init.d $ sudo ebusd -f -c /tmp --logareas bus --loglevel info -d /dev/ttyUSB0
2016-01-18 22:38:56.348 [bus notice] signal acquired
2016-01-18 22:38:56.477 [bus notice] new master 10, master count 2
2016-01-18 22:38:56.481 [bus notice] new master 3f, master count 3
2016-01-18 22:39:02.051 [bus error] signal lost
Bei dieser Meldung verliert der USB Konverter nach 20-Sekunden die Verbindung zum Raspberry Pi und produziert dann den Logeintrag. Lösungvorschlag
ERR: unable to load
2016-01-17 19:04:03.961 [main error] unable to load scan config 08: no file from /etc/ebusd/vaillant with prefix 08. matches ID "bai00", SW0604, HW5502
Ebusd wird gestartet, findet aber ein Konfigurations File (CSV) nicht.
Die eBusd Konfigurationsdateien könne nach diesem Vorgehen installiert werden. Die Konfigurationsdateien aus dem Git neu laden und installieren. Lösungvorschlag
ERR: duplicate Entry
ERR: End of input reached
Die CSV Dateien wurden fehlerhaft installiert oder sind defekt! Eine Neuinstallation dieser Dateien ist erforderlich!
Error reading "/etc/ebusd/vaillant/05.vd3.csv" line 1 field 1 value "05.vd4.csv": ERR: end of input reached Erroneous item is here: 05.vd4.csv ^ Error reading "/etc/ebusd/vaillant/15.hep.csv" line 1 field 1 value "15.sdr_p.csv": ERR: end of input reached Erroneous item is here: 15.sdr_p.csv ^
BUS ERR send to 15
2016-01-16 19:20:28.575 [bus notice] new master 03, master count 4
2016-01-16 19:20:28.575 [update notice] unknown MS cmd: 1008b513020508 / 00
2016-01-16 19:20:29.413 [update notice] unknown MS cmd: 100ab504010d / 054201008037
2016-01-16 19:20:32.398 [bus error] send to 08: ERR: read timeout, retry
2016-01-16 19:20:33.005 [bus error] send to 08: ERR: read timeout, retry
2016-01-16 19:20:33.613 [bus error] send to 08: ERR: read timeout, retry
2016-01-16 19:20:34.859 [bus error] send to 08: ERR: read timeout
2016-01-16 19:20:34.859 [main error] scan config 08 message: ERR: read timeout
2016-01-16 19:20:37.017 [main notice] read common config file /etc/ebusd/vaillant/scan.csv
2016-01-16 19:20:37.019 [main notice] read common config file /etc/ebusd/vaillant/broadcast.csv
Diese Fehlermeldung (read timeout) kann verschiedene Ursachen haben, meist liegt der Fehler in einer fehlerhaften Verkabelung. Lösungsvorschlag
Systemarchitektur / Systemdesign
Es muss sich jeder vorher überlegen, ob man für den eBus einen eigenen Rechner Raspberry Pi nimmt, oder auf der bestehenden FHEM Installation laufen lassen will. Eine Trennung bietet mehrere Vorteile die dann speziell im Testbetrieb den normalen Smart-Home Betrieb nicht beinflussen.
Hier eine Konfiguration von FHEM und das Zusammenspiel mit eBusd via ECMD. Das soll aber jeder so handhaben wie es am Besten in das eigene Konzept passt.
Werkzeuge / Tools
PSPad
Pspad ist ein besonders auf Programmierer zugeschnittener unicode-fähiger Editor für Microsoft Windows, welcher in der Lage ist auch per FTP die Dateien direkt zu editieren und zu schreiben ohne den Umweg sie vorher kopieren zu müssen! Besonders wichtig ist neben einem Syntaxhighlighter das er Linuxkonform ist und die Steuerzeichen am Zeilenende richtig interpretiert.
Hier zwei wichtige Infos zur Einrichtung des PSPad.
Im Tab "FTP" unten mit der rechten Maustaste auf die weiße Fläche klicken und in dem neu geöffneten Fenster "FTP verbinden" wählen.
Es öffnet sich ein Fenster mit den Verbindungsdaten des FTP Servers. Nicht vergessen, das unten markierte Häckchen "Verbindung halten ..." zu markieren. Es wird dann alle 60 Sekunden ein NOOP Signal gesendet und die Verbindung wird nach einem Timeout nicht jedes Mal beendet.
Filezilla
Ebenso wie PSPad wird es für viele Arbeiten am Raspberry und eBusd eine Erleichterung sein manche Dateien direkt zu kopieren oder am PC zu sichern. Filezilla beherrscht ebenfalls das FTP Protokoll und speichert die Verbindungsdaten in einem Profil.
Links oben öffnet man den Servermanager und wählt (links unten) "neuer Server". Man gibt die Verbindungsdaten des Raspberry ein und drückt "speichern". Das Verbindungs Profil steht nun im Servermanager als "Raspberry" zur Verfügung und die Verbindung kann nun mit einem Doppelklick geöffnet werden. Dateien können nun durch einfaches Drag & Drop zwischen linken (lokales Laufwerk am PC) und rechten Dateifenster (in diesem Fall Raspberry) bequem kopiert werden.
Putty
PuTTY ist ein SSH Client welcher neben Secure Shell auch Telnet, Remote login und eine serielle Schnittstelle enthält. Als Tipp sei hier erwähnt, dass hier einige sehr nützliche Features zur Verfügung stehen:
- rechte Maustaste = Zwischenablage wird ins Terminalfenster kopiert
- Text mit Maus markieren = in Zwischenablage kopieren
- Pfeiltasten Auf/Ab = die letzten Befehle wiederholen, durch die Liste steppen
Ebenso können mit Putty mehrere Terminalfenster parallel geöffnet werden. Diese Methode ist bei der Kalibrierung des Potis im Raw-Modus sehr von Vorteil.
Weiterführende Links
Diskussionsthread aus dem Forum: