Buderus Web Gateway

Aus FHEMWiki
Version vom 14. April 2015, 09:33 Uhr von Sailor (Diskussion | Beiträge) (Löschen der unnötigten Readings)
Zur Navigation springen Zur Suche springen
km200
Zweck / Funktion
Anbindung eines Buderus Web-Gateway
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Support (Forum) Heizungssteuerung/Raumklima
Modulname 73_km200.pm
Ersteller Sailor
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Allgemein

Buderus Kommunikationsmodul KM200
Quelle: "Bosch Thermotechnik GmbH, Buderus Deutschland"
© Buderus
Buderus Kommunikationsmodul KM300
Quelle: "Bosch Thermotechnik GmbH, Buderus Deutschland"
© Buderus

Das Modul 73_km200.pm ermöglicht die Anbindung eines Buderus Web-Gateway an einen FHEM Server (Raspberry-Pi, Fritzbox, NAS) zur Steuerung/Regelung der Heizungsanlage in der FHEM Umgebung zur Erweiterung der Hausautomatisierung.

Übersicht der steuerbaren Funktionen und abrufbaren Werte (Services) können unter folgendem Link http://www.ip-symcon.de/wiki/Buderus_KM200 eingesehen werden. Diese können aber in Abhängigkeit der Kombination KM/RC sowie der aktuell installierten Firmware auf dem KM unterschiedlich ausfallen. Weitere Details werden nach und nach ergänzt.


Vorbereitungen

Vorbereitungen der Hardware

Installation der Hardware

Allein aus Gründen der Garantieansprüche, sollte das KMxxx Gerät heizungsseitig nur von Heizungsfachmann installiert werden. Netzwerseitig sollte das KMxxx Gerät mit einem Netzwerkkabel besser Cat5 direkt an den Router angeschlossen werden.


Update der Firmware

Um eine funktionsfähige Kommunikation zwischen dem fhem-Modul und dem KMxxx Gerät aufbauen zu können, muss die entsprechende Firmware installiert werden. Die Firmware ändert sich paradoxerweise in Abhängigkeit der angeschlossenen Geräte. Aus diesem Grund muss das KMxxx Gerät vor Betrieb mit fhem in jedem Fall zunächst ins Internet. Sobald die LED des KMxxx Geräts auf grün wechselt, ist die Internetverbindung erfolgreich hergestellt. Ab jetzt kann es unter extremen Umständen bis über Nacht dauern, ehe sich die korrekte Firmware automatisch installiert hat.


Persönliches Passwort

Das persönliche Passwort muss zunächst noch erstellt werden, da die KMxxx Geräte ohne persönliches Passwort ausgeliefert werden.

Aus diesem Grunde ist es notwendig sich einmalig die Buderus APP EasyControl auf einem SmartPhone zu installieren und das Passwort zu setzen. Hierzu muss einfach den Anweisungen Folge geleistet werden.

ACHTUNG: Keine deutschen Umlaute Verwenden!


Sperrung des Internetzugangs

Ohne, dass der Umstand in den Unterlagen der KMxxx Geräte aus datenschutzrechtlicher Sicht auch nur erwähnt ist, baut das KMxxx-Gerät nach jedem Polling seitens des fhem-Moduls von sich aus eine Verbindung zum Server von Buderus bzw. BOSH Thermotechnik auf. Über den Inhalt der Datenübertragung kann nur spekuliert werden. Um diese Datenübertragung zu unterbinden, muss man in dem jeweiligen Internet-Router das KMxxx Gerät bzw. dessen entsprechende IP-Adresse für den Internetzugang gesperrt werden. In der Fritz!Box bzw. unter Fritz!OS funktioniert dies am Besten mit der Kindersicherung Bei andewren Routern muss die entsprechende Bedienungsanleitung konsultiert werden.

Eine erfolgreiche Sperrung des Internet-Zugangs quittiert das KMxxx Gerät mit dem Wechsel der Betriebs-LED auf die orange Farbe.


Vorbereitungen in Linux

Damit das Modul unter FHEM und Linux funktioniert müssen zusätzliche Perl-Module installiert werden.

Damit die ständige Eingabe des „sudo“ Befehls zur Installation der einzelnen Module „muss mit Root-Rechten erfolgen“ umgangen werden kann, bitte folgenden Befehl eingeben und mit Password freigeben.

Code:

sudo bash

Um die folgenden Perl-Module installieren zu können benötigen wir CPANMINUS, dazu bitte folgenden Befehl zur Installation in die Kommandozeile eingeben.

curl -L https://cpanmin.us | perl - --sudo App::cpanminus

Kommt es dabei zu einer Fehlermeldung bitte mit folgenden Befehl beginnen.

Code:

sudo apt-get install cpanminus

Dann nacheinander die u.g. Module per (Copy/Paste) und Bestätigung per Enter installieren.

Code:

cpanm JSON
cpanm List::MoreUtils
cpanm Crypt::Rijndael
cpanm LWP::UserAgent
cpanm MIME::Base64
cpanm Time::HiRes
cpanm Digest::MD5
cpanm base
apt-get install libltdl


Zur Vermeidung bekannter Fehler aufgrund Versionsunterschiede, sollte man seine bereits installierten Pakete auf den neusten Stand bringen:

apt-get update
apt-get upgrade


Zum Abschluss nach erfolgter Installation der Module noch mit Eingabe des Code:

exit

wieder in den User-Mode wechseln.

Vorbereitung in FHEM

Passwörter

Es werden für das fhem Modul "km200" 2 Passwörter benötigt:

a) Gateway Passwort

Das Gateway Passwort ist fix auf das Gateway programmiert und befindet sich auf dem Typenschild des jeweiligen KM-Moduls. Es hat das Format aaaa-bbbb-cccc-dddd


b) Persoenliches Passwort

Das persönliche Passwort muss zunächst noch erstellt werden, da die KMxxx Module ohne persoenliches Passwort ausgeliefert werden. Siehe vorheriges Kapitel Persönliches Passwort


Aktivierung und Definition in FHEM

In der fhem.cfg das Modul definieren mit:

define <devicename> km200 <IPAdresse des KM200> <Gateway Passwort> <persönliches Passwort>

Hierbei können die Passwörter wahlweise als direkter Text (bareword) oder als Base64 codierter text eigegeben werden, sofern man keine direkten Passwörter in der fhem.cfg stehen haben möchte.

Einstellungen über Attribute

Es können neben den Standard Attributen wie "room" oder "verbose" noch folgende für das km200-Modul individuelle Attribute in der fhem.cfg ergänzt werden.

attr <devicename> IntervalDynVal  <time in sec>
attr <devicename> IntervalStatVal <time in sec>
attr <devicename> PollingTimeout  <time in sec>
attr <devicename> ConsoleMessage  <1 or 0>
attr <devicename> DoNotPoll <Service_1> <Service_2> <Service_3> ... <Service_n>
attr <devicename> ReadBackDelay   <time in ms>


IntervalDynVal
Ein gültiges Interval für die Abfrage der sich dynamisch verändernden Werte der Heizung welche über die KM-Module eingelesen werden. Der Wert muss >= 20s sein um dem Modul zu erlauben einen kompletten Poll abzuwarten. Der Default Wert ist 90s.
IntervalStatVal
Ein gültiges Interval für die Abfrage der sich statisch und somit nicht verändernden Werte der Heizung welche über die KM-Module eingelesen werden. Der Wert muss >= 20s sein um dem Modul zu erlauben einen kompletten Poll abzuwarten. Der Default Wert ist 3600s.
Der Wert "0" deaktiviert die Abfrage der statischen Werte und wird diese nicht vor dem nächsten Start des fhem System oder dem Reload der fhem.cfg erneut abfragen.
PollingTimeout
Zeitraum in dem das auf eine Antwort seitens des KM200/KM50 Moduls warten soll. Sollte ein sehr langsames Heimnetz vorhanden sein, so muss der Wert entsprechend hochgesetzt werden. Der Default-Wert ist 5s.
ConsoleMessage
Sollte es aus Gründen der Fehlersuche erwünscht sein, dem Modul beim Pollen der einzelnen Werte life zuzusehen, so kann man die Ausgabe im Konsolenfenster (STD-OUT) aktivieren. Hierzu muss der Wert auf "1" gesetzt werden.
Bitte daran denken, dass dies nicht automatisch in dem Telnet Fenster (e.g. PUTTY) angezeigt wird. Man muss zur Anzeige dort das fhem-System stoppen und wieder starten.
Der Default-Wert is "0" = deaktiviert.
DoNotPoll
Eine durch Leerzeichen getrennte Liste von Services die nicht gepollt werden sollen. Dies kann bei wiederholten Abstürzen durch Abfrage bestimmter Services angewendet werden sowie für das gezielte Ausblenden von irrelevanten Werten (Z.B.: Rücklauftemperatur = -32768°C, etc.).
Der Default Wert ist "" somit werden alle Werte abgefragt.
Nach dem Setzen des "DoNotPoll"-Attributs kann man die ungewünschten Readings mittels "deletereading" einzeln oder komplett löschen: Beispiel:
deletereading myKm200 .*
ReadBackDelay
Zeitraum in Millisekunden in dem das Modul mit einem Zurücklesen der Werte nach einem Schreibvorgang warten soll, da es sonst zu keinem erfolgreichen Schreibvorgang kommt. Die Größe des Wertes hängt sehr stark von der Geschwindigkeit des fhem-Host-Systems sowie der angeschlossenen Netzwerkverbindung ab und kann daher mehr oder minder stark schwanken. Der Default-Wert ist 100ms.

Beispiel für Menüführung

Anzeige der Liste für Fehlermeldungen

Mit freundlicher Einladung an DLindner :-) 

Steuerungsmenü eines Heizkreises

Mit freundlicher Einladung an DLindner :-) 

Steuerungsmenü der Warmwasserbereitstellung

Mit freundlicher Einladung an DLindner :-) 

Beispiel für readingsGroup

readingsGroup "Heizung" und "Temperaturen" mit 73_km200 - Werten

In diesem Beispiel werden im Raum "Heizung" zwei Gruppen namens "Heizung" und "Temperaturen" angelegt und die Services mit entsprechenden Symbolen versehen.

fhem.cfg

define Temperaturen readingsGroup myKm200:<%temp_temperature>,<AussenTemp.>,/system/sensors/temperatures/outdoor_t1 myKm200:<%sani_solar_temp><SonnenkollektorTemp.>,/solarCircuits/sc1/collectorTemperature myKm200:<%sani_buffer_temp_all>,<HeißwasserTemp.>,/system/sensors/temperatures/hotWater_t2
attr Temperaturen room Heizung
attr Temperaturen valueStyle style="text-align:right"

define Heizung readingsGroup myKm200:<%sani_domestic_waterworks>,<Heizungsdruck>,/system/appliance/systemPressure myKm200:<%sani_supply_temp>,<Vorlauftemp>,/system/sensors/temperatures/supply_t1 myKm200:<%sani_return_temp>,<Rücklauftemp>,/heatSources/returnTemperature
attr Heizung room Heizung
attr Heizung valueStyle style="text-align:right"

Beispiel für Plot

Mit dBLog

plot mit Werten aus 73_km200

Um einen obigen Plot anzuzeigen geht man wie folgt vor:

fhem.cfg

Folgende Einträge müssen in der fhem.cfg vorgenommen werden:

define SVG_CH_Values SVG myDbLog:CentralHeating_CH:HISTORY
attr SVG_CH_Values plotsize 1600,400
attr SVG_CH_Values room Plots
attr SVG_CH_Values title "Central Heating"

gplot

Die entsprechende plot-Datei namens "CentralHeating_CH.gplot" sieht dann wie folgt aus:

# Created by FHEM/98_SVG.pm, 2015-01-12 22:57:42
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics 
set y2tics 
set grid y2tics
set ylabel "Temperature in °C / Modulation in %"
set y2label "Power in kW"
set yrange [0:105]
set y2range [0:21]
#DbLog myKm200:/heatSources/actualPower
#DbLog myKm200:/system/sensors/temperatures/supply_t1
#DbLog myKm200:/heatingCircuits/hc1/pumpModulation
#DbLog myKm200:/system/sensors/temperatures/hotWater_t2
plot "<IN>" using 1:2 axes x1y2 title 'Power' ls l3 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Vorlauftemperatur' ls l0 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Ladepumpe' ls l1 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Warmwasser' ls l2 lw 1 with lines

Diese Plotdatei kann auch mit Hilfe des Ploteditors generiert werden. Die Vorgehensweise entspricht -bis auf die Plot-Source dBLog- dem im Folgenden beschriebenen Ablauf mit FileLog.

Mit FileLog

typischer Temperatur plot

Obiger Plot wurde mit Hilfe des Ploteditors erstellt.

fhem.cfg

Die Ploterstellung erfolgt anhand der nachfolgenden Beispiel-Konfiguration:

# Buderus Gateway aktivieren und Parameter setzen
# ===============================================
define heizung km200 <IP ADR> <SYS PW> <User PW>
attr heizung IntervalDynVal 90
attr heizung IntervalStatVal 3600 
attr heizung PollingTimeout 200 
attr heizung ConsoleMessage 0 
attr heizung room Heizung 
# Loggen aller Daten aktivieren, Pfad/Dateiname ./log/Heizung-<Jahr>-<Monat>.log; Bsp.: "Heizung-2015-01.log"
# ===========================================================================================================
define FileLog_heizung FileLog ./log/Heizung-%Y-%m.log heizung
attr FileLog_heizung logtype text
attr FileLog_heizung room LogFiles
attr FileLog_heizung group Heizung

# Loggen einer Auswahl von Daten aktivieren, Pfad/Dateiname ./log/Heizung-<Jahr>-<Monat>.log; Bsp.: "Heizung-2015-01.log"
# =======================================================================================================================
define FileLog_heizung FileLog ./log/Heizung-%Y-%m.log heizung:(/system/sensors/temperatures/hotWater_t2|/system/sensors/temperatures/outdoor_t1).*
attr FileLog_heizung logtype text
attr FileLog_heizung room LogFiles
attr FileLog_heizung group Heizung

Plot Anlegen

Logfiles_FileLog_heizung.png

Nach Fertigstellung und Abspeichern der "fhem.cfg" Datei ist als erster Schritt der Plot anzulegen. Dazu:

  • im Raum "LogFiles" auf den Link "FileLog_heizung" klicken.
  • Im neuen Fenster auf den Link "Create SVG Plot" klicken

jetzt kann die eigentliche Konfiguration der darzustellenden Daten beginnen.

Plot Inhalte via Plot Editor konfigurieren

Buderus_Heiztemperaturen_Ploteditor.png

Nun ist der Plot noch mit Leben zu füllen. Dazu müssen dem Plot noch mit Hilfe des Ploteditors die eigentlichen Messwerte des Buderus Gateways zugeordnet werden:

  • Link "Heiztemperaturen" unten links anklicken (siehe oben, Temperatur Plot)
    Es erscheint der Ploteditor (Buderus_Heiztemperaturen_Ploteditor.png)
    Der Plot selbst (oben) erscheint beim ersten Mal noch nicht, da bisher keine Meßgrößen selektiert wurden
  • Die Beschriftung von Titel, Achsen etc. sollte selbst erklärend sein (1)
  • In den Zeilen unter "Diagram Label, Source..." legt man die eigentlichen Meßwerte für den Plot fest
  • "Diagram Label" (2) = beliebige Bezeichnung des Meßwertes
  • "Source" (3) = in diesem Auswahlfenster legt man die Logdatei fest, aus der die Daten extrahiert werden sollen, hier "FileLog_heizung"
  • "Input:Column" (4) = Spalte innerhalb der Logdatei in der die Meßwerte stehen, bei uns immer "4" (Spalte 1 = Zeitstempel)
  • "Regexp" (5) = hier legt wählt man die eigentliche Meßgröße aus
  • "DefaultValue" (6) = Defaultwert, wird angezeigt wenn es keine echten Meßdaten gibt (Man sieht dann den Default Wert, ist eher schlecht deshalb bei mir leer)
  • "Function" (7) = hier kann eine Umrechnungsformel angegeben werden
  • "Y-Axis" (8) = hier kann die Referenzachse (Rechte oder Linke) ausgewählt werden
  • "Plot-Type" (9) = hier wird festgelegt ob die Darstellung als "Linie" oder "Punkte" etc. erfolgt
  • "Style" (10) = Farbe/Struktur der Linie....
  • "Width" (11) = Stärke der Linie....

Sind alle diese Parameter für einen Meßwert definiert ist noch der Button "Write .gplot file" (12) zu drücken, danach wird die erste Kurve dargestellt. Aber aufpassen: angezeigt werden in obiger Konfiguration immer nur die Meßwerte eines Tages. Erstellt man diese Konfiguration z.B. um 0:01 Uhr Nachts sieht man nichts, weil es u.U. noch keine Meßwerte für diesen Tag gibt. Für weitere Messwerte wird obiger Vorgang wiederholt.

Danach kann bei Bedarf noch via "attr FileLog_heizung Room" ein gewünschter "Raum" festgelegt werden. Am Ende noch auf "Save config" klicken damit das Werk auch abgespeichert wird.


Hinweis:

Das Laden der Plots dauert eventuell sehr lang. Das liegt daran, dass alle Daten der Logdatei geladen werden müssen und unter Umständen sehr viele Daten durch ein sehr kurzes Poll-Intervall gespeichert werden. Ein schwaches Rechensystem z.B. Raspberry PI kann diesen Umstand noch verstärken. Als Abhilfe kann z.B. nur ein Teil der Daten geloggt werden, s.o. unter: Loggen einer Auswahl von Daten aktivieren,..... Geloggt werden im obigen Beispiel die Daten in der runden Klammer (.hotWater_t2 und ..outdoor_t1).

Bekannte Probleme

Fehlermeldung: "Use of uninitialized value in concatenation (.) or string at ./FHEM/73_km200.pm"

Beschreibung / Ursache:

Diese Fehlermeldung tritt meistens in Verbindung mit einem sehr langsamen Netzwerk auf. Hierbei antwortet das KM300/KM200/KM50 nicht rechtzeitig bevor das 73_km200.pm - Modul aufgibt und die unten genannte Fehlermeldung ausgibt.


Lösung:

Um das Modul "geduldiger" zu machen, muß man nur das Attribut "PollingTimeout" entsprechend höher setzen. Ein guter Erfahrungswert wäre zum Beispiel 20, was den 4-fachen des Default-Werts entspricht. Besser wäre es jedoch einen qualitativ höherwertigen Netzwerk-Switch statt beispielsweise Netzwerk-Hub oder gar billigen Router einzusetzen.


Sporadischer Absturz von fhem

Beschreibung / Ursache:

Aus noch ungeklärter Ursache kann es bei einzelnen Buderus KMxxx Geräten in Verbindung mit verschiedenen Buderus RCs bei Abfrage bestimmter Services zum Komplett-Absturz des fhem - Systems kommen. Es ist dem Developer des Moduls bisher nicht gelungen diese Abstürze nachzustellen um den Fehler entsprechend abzufangen. Bisher treten diese Abstuerze insbesondere bei Abfrage der folgenden Services auf:

/heatSources/flameCurrent
/heatSources/flameStatus
/system/appliance/flameCurrent
/system/appliance/flameStatus

Aber auch andere Services könnten dieses Problem auslösen. Sind dem Developer aber zur Zeit nicht bekannt.


Lösung:

Zu diesem Zweck muss man zunächst das Attribut ConsoleMessage aktivieren (Siehe Attribute) und sehen, ab welcher Ausgabe sich das fhem-System aufhängt.

Der Wert der Probleme bereitet ist der nächste Wert, der eben gerade nicht angezeigt wird.

Die bekannten Problem-Services hinter das Attribut DoNotPoll hängen. Sie werden anschließend nicht mehr abgefragt und können somit keinen Absturz mehr verursachen.


Keine Services lesbar / Keine Readings im fhem

Beschreibung / Ursache:

Es kann sein das das fhem System nach eine Weile abstürzt ohne vorher Readings in das device geschrieben zu haben. Wenn man zum debuggen dann das Attribut "ConsoleMessage" aktiviert hat (Siehe Attribute) dann taucht folgende Liste in der Konsole auf:


Sounding and importing of services started
The following Service CANNOT be read            : /
The following Service CANNOT be parsed by JSON  : /gateway
The following Service CANNOT be parsed by JSON  : /gateway/DateTime
The following Service CANNOT be parsed by JSON  : /gateway/instAccess
The following Service CANNOT be parsed by JSON  : /gateway/instWriteAccess
The following Service CANNOT be parsed by JSON  : /gateway/uuid
The following Service CANNOT be parsed by JSON  : /gateway/versionFirmware
The following Service CANNOT be parsed by JSON  : /gateway/versionHardware
The following Service CANNOT be parsed by JSON  : /heatingCircuits
The following Service CANNOT be parsed by JSON  : /heatingCircuits/hc1
The following Service CANNOT be parsed by JSON  : /heatingCircuits/hc1/activeSwitchProgram
The following Service CANNOT be read            : /heatingCircuits/hc1/actualSupplyTemperature
The following Service CANNOT be read            : /heatingCircuits/hc1/controlType
The following Service CANNOT be read            : /heatingCircuits/hc1/currentOpModeInfo
The following Service CANNOT be read            : /heatingCircuits/hc1/currentRoomSetpoint
The following Service CANNOT be read            : /heatingCircuits/hc1/designTemp

(Gekürzt)


Lösung: Bisher tauchen diese Symptome nur in Verbindung mit einem falschen Passwort auf. Zu diesem Zwecke beide Passwörter überprüfen und ggf. das private Passwort mit der App erneut setzen.

ACHTUNG: Keine deutschen Umlaute Verwenden!


Fehlermeldung: "encrypt: datasize not multiple of blocksize (16 bytes) at ./FHEM/73_km200.pm line xxx"

Beschreibung / Ursache:

Während der Initialisierung des Geräts taucht die Fehlermeldung

encrypt: datasize not multiple of blocksize (16 bytes) at ./FHEM/73_km200.pm line xxx

in der Konsole auf und stürzt ab. Offensichtlich kann es aus noch ungeklärter Ursache dazu kommen, dass das KM Gerät 2 Byte zuviel sendet.


Lösung:

Die Ursache konnte noch nicht gefunden werden. Bei dem einzigen bekannten Fall hat der User nur mit einem kompletten Hardware-RESET des KM - Gerätes die Funktion, bzw. den Kontakt zum KM-Gerät wiederherstellen können.

FlameStatus "OFF" wird erkannt, FlameStatus "ON" wird aufgrund falscher Codierung verworfen

Beschreibung / Ursache:

Die Readings

/heatSources/flameStatus
/system/appliance/flameStatus

werden zwar eingelesen, jedoch verweilt der Status in "OFF". Da das Gerät einen undefinierten aber nicht reproduzierbaren JSON-Wert für "ON" zurückgibt, wird dieser vom 73_km200 Modul verworfen.

Lösung:

Die Ursache kann vom 73_km200 Modul nicht behoben, bzw. abgefangen werden, da sich die fehlerhaften Stringmeldungen von Gerät zu Gerät in Abhängigkeit von Hardware, Linux-Version, Applikations-Version unterscheiden können.

Der Fehler liegt nach bisheriger Einschätzung im Gerät bzw. dessen Firmware.

Aus diesem Grunde wird empfohlen eine Abfrage auf

/heatSources/flameCurrent > 0uA

oder

/system/appliance/flameCurrent > 0uA

zu programmieren. Sobald der Ionisierungsstrom >0 ist, läuft der Brenner ganz sicher.

Die interne Logik der Zentralheizung macht im Grunde nichts Anderes.

Anhang A - Liste bekannter Root Services

Die folgenden Werte sind dem Developer bekannt und können durch das Modul abgefragt werden, sofern eine Antwort seitens des KMxxx kommt oder sich nicht hinter dem DoNotPoll Attribut befinden. Alle untergeordneten Services werden seit Version 0045 automatisch geladen und können von User zu User variieren.

/
/dhwCircuits
/gateway
/heatingCircuits
/heatSources
/notifications
/recordings
/solarCircuits
/system

Links