Buderus Web Gateway: Unterschied zwischen den Versionen

Aus FHEMWiki
Zeile 309: Zeile 309:


Da muss mal Jemand Anderes mit FileLog sein Beispiel reinsetzen.
Da muss mal Jemand Anderes mit FileLog sein Beispiel reinsetzen.
<BR>
<BR>


== Bekannte Probleme ==
== Bekannte Probleme ==

Version vom 28. Januar 2015, 12:48 Uhr

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 Kommunikationsmodul KM300
Quelle: "Bosch Thermotechnik GmbH, Buderus Deutschland"







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


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 Readingsgroup

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

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


























fhem.cfg


define Temperaturen readingsGroup heizung:<%temp_temperature>,<AussenTemp.>,/system/sensors/temperatures/outdoor_t1 heizung:<%sani_solar_temp>,<SonnenkollektorTemp.>,/solarCircuits/sc1/collectorTemperature heizung:<%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 heizung:<%sani_domestic_waterworks>,<Heizungsdruck>,/system/appliance/systemPressure heizung:<%sani_supply_temp>,<Vorlauftemp>,/system/sensors/temperatures/supply_t1 heizung:<%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




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