Buderus Web Gateway
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
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.
Voraussetzung
Buderus Hardware
Buderus KM(*)-Modul (*) 50, 200, 300
Quelle: Buderus Webseite
Buderus RC(*)-Regler (*) 30/35, 200, 300
Quelle: Buderus Webseite
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
cpanm HttpUtils
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
Das km200 - Modul ist als 73_km200.pm offiziell eingecheckt und wird mit dem update - Befehl auf den jeweils neusten Stand gebracht.
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. 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.
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 koennen 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
attr <devicename> IntervalStatVal
attr <devicename> PollingTimeout
attr <devicename> ConsoleMessage <1 or 0>
attr <devicename> DoNotPoll <Service_1> <Service_2> <Service_3> ... <Service_n>
- 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.
Beispiel für Plot
Mit dBLog
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"
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
Mit FileLog
Da muss mal Jemand Anderes mit FileLog sein Beispiel reinsetzen.
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 KM200/KM100/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 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.
/
/gateway
/gateway/DateTime
/gateway/firmware
/gateway/haiPassword
/gateway/instPassword
/gateway/instAccess
/gateway/instWriteAccess
/gateway/userpassword
/gateway/uuid
/gateway/versionFirmware
/gateway/versionHardware
/heatingCircuits
/heatingCircuits/hc1
/heatingCircuits/hc1/activeSwitchProgram
/heatingCircuits/hc1/actualSupplyTemperature
/heatingCircuits/hc1/controlType
/heatingCircuits/hc1/currentOpModeInfo
/heatingCircuits/hc1/currentRoomSetpoint
/heatingCircuits/hc1/designTemp
/heatingCircuits/hc1/fastHeatupFactor
/heatingCircuits/hc1/heatCurveMax
/heatingCircuits/hc1/heatCurveMin
/heatingCircuits/hc1/manualRoomSetpoint
/heatingCircuits/hc1/operationMode
/heatingCircuits/hc1/pumpModulation
/heatingCircuits/hc1/roomInfluence
/heatingCircuits/hc1/roomtemperature
/heatingCircuits/hc1/roomTempOffset
/heatingCircuits/hc1/setpointOptimization
/heatingCircuits/hc1/solarInfluence
/heatingCircuits/hc1/status
/heatingCircuits/hc1/suWiSwitchMode
/heatingCircuits/hc1/suWiThreshold
/heatingCircuits/hc1/switchPrograms
/heatingCircuits/hc1/switchPrograms/A
/heatingCircuits/hc1/switchPrograms/B
/heatingCircuits/hc1/temperatureLevels
/heatingCircuits/hc1/temperatureLevels/comfort2
/heatingCircuits/hc1/temperatureLevels/eco
/heatingCircuits/hc1/temperatureLevels/day
/heatingCircuits/hc1/temperatureLevels/night
/heatingCircuits/hc1/temperatureRoomSetpoint
/heatingCircuits/hc1/temporaryRoomSetpoint
/heatingCircuits/hc2
/heatingCircuits/hc2/activeSwitchProgram
/heatingCircuits/hc2/actualSupplyTemperature
/heatingCircuits/hc2/controlType
/heatingCircuits/hc2/currentOpModeInfo
/heatingCircuits/hc2/currentRoomSetpoint
/heatingCircuits/hc2/designTemp
/heatingCircuits/hc2/fastHeatupFactor
/heatingCircuits/hc2/heatCurveMax
/heatingCircuits/hc2/heatCurveMin
/heatingCircuits/hc2/manualRoomSetpoint
/heatingCircuits/hc2/operationMode
/heatingCircuits/hc2/pumpModulation
/heatingCircuits/hc2/roomInfluence
/heatingCircuits/hc2/roomtemperature
/heatingCircuits/hc2/roomTempOffset
/heatingCircuits/hc2/setpointOptimization
/heatingCircuits/hc2/solarInfluence
/heatingCircuits/hc2/status
/heatingCircuits/hc2/suWiSwitchMode
/heatingCircuits/hc2/suWiThreshold
/heatingCircuits/hc2/switchPrograms
/heatingCircuits/hc2/switchPrograms/A
/heatingCircuits/hc2/switchPrograms/B
/heatingCircuits/hc2/temperatureLevels
/heatingCircuits/hc2/temperatureLevels/day
/heatingCircuits/hc2/temperatureLevels/comfort2
/heatingCircuits/hc2/temperatureLevels/eco
/heatingCircuits/hc2/temperatureLevels/night
/heatingCircuits/hc2/temperatureRoomSetpoint
/heatingCircuits/hc2/temporaryRoomSetpoint
/heatSources
/heatSources/actualCHPower
/heatSources/actualDHWPower
/heatSources/actualPower
/heatSources/actualsupplytemperature
/heatSources/ChimneySweeper
/heatSources/CHpumpModulation
/heatSources/flameCurrent
/heatSources/flameStatus
/heatSources/gasAirPressure
/heatSources/nominalCHPower
/heatSources/nominalDHWPower
/heatSources/numberOfStarts
/heatSources/powerSetpoint
/heatSources/returnTemperature
/heatSources/systemPressure
/heatSources/workingTime
/heatSources/workingTime/totalSystem
/heatSources/workingTime/secondBurner
/heatSources/workingTime/centralHeating
/heatSources/hs1/energyReservoir
/heatSources/hs1/reservoirAlert
/heatSources/hs1/nominalFuelConsumption
/heatSources/hs1/fuelConsmptCorrFactor
/heatSources/hs1/actualModulation
/heatSources/hs1/actualPower
/heatSources/hs1/fuel
/notifications
/recordings
/recordings/heatingCircuits
/recordings/heatingCircuits/hc1
/recordings/heatingCircuits/hc1/roomtemperature
/recordings/heatSources
/recordings/heatSources/actualCHPower
/recordings/heatSources/actualDHWPower
/recordings/heatSources/actualPower
/recordings/system
/recordings/system/heatSources
/recordings/system/heatSources/hs1
/recordings/system/heatSources/hs1/actualPower
/recordings/system/sensors
/recordings/system/sensors/temperatures
/recordings/system/sensors/temperatures/outdoor_t1
/solarCircuits
/solarCircuits/sc1
/solarCircuits/sc1/actuatorStatus
/solarCircuits/sc1/collectorTemperature
/solarCircuits/sc1/dhwTankTemperature
/solarCircuits/sc1/pumpModulation
/solarCircuits/sc1/solarYield
/solarCircuits/sc1/status
/solarCircuits/sc2
/solarCircuits/sc2/actuatorStatus
/solarCircuits/sc2/collectorTemperature
/solarCircuits/sc2/dhwTankTemperature
/solarCircuits/sc2/pumpModulation
/solarCircuits/sc2/solarYield
/solarCircuits/sc2/status
/system
/system/appliance
/system/appliance/actualPower
/system/appliance/actualSupplyTemperature
/system/appliance/ChimneySweeper
/system/appliance/CHpumpModulation
/system/appliance/flameCurrent
/system/appliance/flameStatus
/system/appliance/gasAirPressure
/system/appliance/nominalBurnerLoad
/system/appliance/numberOfStarts
/system/appliance/powerSetpoint
/system/appliance/systemPressure
/system/appliance/workingTime
/system/appliance/workingTime/centralHeating
/system/appliance/workingTime/secondBurner
/system/appliance/workingTime/totalSystem
/system/brand
/system/bus
/system/healthStatus
/system/heatSources
/system/heatSources/hs1
/system/heatSources/hs1/actualModulation
/system/heatSources/hs1/actualPower
/system/heatSources/hs1/energyReservoir
/system/heatSources/hs1/fuel
/system/heatSources/hs1/fuel/caloricValue
/system/heatSources/hs1/fuel/density
/system/heatSources/hs1/fuelConsmptCorrFactor
/system/heatSources/hs1/nominalFuelConsumption
/system/heatSources/hs1/reservoirAlert
/system/holidayModes
/system/holidayModes/hm1
/system/holidayModes/hm1/startStop
/system/holidayModes/hm1/assignedTo
/system/holidayModes/hm1/hcMode
/system/holidayModes/hm1/dhwMode
/system/holidayModes/hm1/delete
/system/holidayModes/hm2
/system/holidayModes/hm2/startStop
/system/holidayModes/hm2/assignedTo
/system/holidayModes/hm2/hcMode
/system/holidayModes/hm2/dhwMode
/system/holidayModes/hm2/delete
/system/holidayModes/hm3
/system/holidayModes/hm3/startStop
/system/holidayModes/hm3/assignedTo
/system/holidayModes/hm3/hcMode
/system/holidayModes/hm3/dhwMode
/system/holidayModes/hm3/delete
/system/holidayModes/hm4
/system/holidayModes/hm4/startStop
/system/holidayModes/hm4/assignedTo
/system/holidayModes/hm4/hcMode
/system/holidayModes/hm4/dhwMode
/system/holidayModes/hm4/delete
/system/info
/system/minOutdoorTemp
/system/sensors
/system/sensors/temperatures
/system/sensors/temperatures/chimney
/system/sensors/temperatures/hotWater_t1
/system/sensors/temperatures/hotWater_t2
/system/sensors/temperatures/outdoor_t1
/system/sensors/temperatures/return
/system/sensors/temperatures/supply_t1
/system/sensors/temperatures/supply_t1_setpoint
/system/sensors/temperatures/switch
/system/systemType
Links
- Thema zur Entwicklung und Support des Moduls
- Beitrag, der auf einem Raspbery Pi schrittweise -ausgehend von der Betriebssysteminstallation über die Fhem-Installation- die Modulnutzung beschreibt
- Logamatic web KM50 - Installations- und Bedienungsanleitung
- Logamatic web KM200 - Installationsanleitung für den Fachmann