ems-esp MQTT

Begonnen von moustic999, 01 November 2019, 23:23:52

Vorheriges Thema - Nächstes Thema

Beta-User

So war es gemeint gewesen ;) .
...das solltest du dem Entwickler melden, ist m.E. nicht korrekt/ein Typo...

Workaround für den Moment: eventMap (ungetestet: Hot:hot sollte funktionieren).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Beta-User

Hallo,

mal auf Basis dessen, was sich hier aus dem Kaffeesatz ergibt ein weiterentwickeltes attrTemplate für "boiler":

name:ems-esp_boiler
filter:TYPE=MQTT2_DEVICE
desc:To configure a boiler device for use with an <a href="https://github.com/proddy/EMS-ESP">EMS-ESP</a><br>.<a href="https://forum.fhem.de/index.php/topic,104968.0.html">Forum Thread</a>
order:E_02b
par:BASEPATH;base topic set in the ESP including "ems-esp";{ AttrVal("DEVICE","readingList","") =~ m,([^:]*ems-esp)/boiler_data:, ? "$1" : undef }
attr DEVICE readingList BASEPATH/boiler_data { json2nameValue($EVENT,'',$JSONMAP) }\
  BASEPATH/shower_data:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  BASEPATH/mixing_data:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  BASEPATH/tapwater_active:.* tapwater_active\
  BASEPATH/heating_active:.* heating_active
attr DEVICE stateFormat { my $h=ReadingsNum($name,"heating_active",0); my $t=ReadingsNum($name,"tapwater_active",0); !$h && !$t ? "idle" : ($h && !$t ? "heating" : "tapwater")}
attr DEVICE devStateIcon idle:sani_heating heating:sani_heating@red tapwater:sani_water_hot@red
attr DEVICE setList wWComfort:select,hot,intelligent BASEPATH/boiler_cmd { "cmd":"comfort", "data": "$EVTPART1" }
attr DEVICE webCmd wWComfort
attr DEVICE eventMap Hot:hot Eco:intelligent
attr DEVICE model ems-esp_boiler
setreading DEVICE attrTemplateVersion 20200527

Neben der offenbar erfolgreichen eventMap ist die setList dazugekommen; da in webCmd auch der Status des Readings erkennbar sein sollte (?), müßte es so eigentlich alles relevante hübsch anzeigen?

Rückmeldung wäre nett, dann checke ich das so ein. (Oder gibt es mehrere Boiler-Varianten, die man irgendwie berücksichtigen muß?).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

grappa24

setList kann ich so bestätigen, läuft so bei mir.
eventMap funktioniert bei mir so: hot:Hot intelligent:Eco
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Beta-User

Danke, hab's eben korrigiert eingecheckt!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

thomasg

Hi Zusammen,

ich würde gerne auf Basis dieses Templates eines für HeishaMon erstellen. Ein MQTT Device, welches eine Panasonic Wärmepumpe anbindet. Nähere Infos hier: https://github.com/Egyras/HeishaMon
Für openhab wurde soetwas schon gemacht. Screenshot: https://user-images.githubusercontent.com/36902688/68837978-60782800-06c6-11ea-99f4-12df9687a2c8.png
So ähnlich würde ich es gerne auch für fhem haben wollen. Als erstes würde ich gerne den Parameter "Compressor_Freq" anzeigen und den Flüstermodus anzeigen / setzten.

Wie gehe ich da am besten vor?



Internals:
   CFGFN     
   CID        HeishaMon
   DEF        HeishaMon
   DEVICETOPIC MQTT2_HeishaMon
   FUUID      5f621e1b-f33f-c37d-0bfc-6fd29228409d2edd
   IODev      horstmqtt
   LASTInputDev horstmqtt
   MSGCNT     37502
   NAME       MQTT2_HeishaMon
   NR         391
   STATE      temperature°C
   TYPE       MQTT2_DEVICE
   horstmqtt_MSGCNT 37502
   horstmqtt_TIME 2020-09-17 10:00:16
   READINGS:
     2020-09-17 09:56:22   Buffer_Temp     -78
     2020-09-17 09:56:22   Bypass_Outlet_Temp -31
     2020-09-17 09:56:23   Compressor_Current 0.0
     2020-09-17 09:56:21   Compressor_Freq 0
     2020-09-17 09:56:21   Cool_Delta      5
     2020-09-17 09:56:22   Cool_Energy_Consumption 0
     2020-09-17 09:56:22   Cool_Energy_Production 0
     2020-09-17 09:56:23   Cool_To_Heat_Temp 10
     2020-09-17 09:56:23   Cooling_Mode    0
     2020-09-17 09:56:22   DHW_Energy_Consumption 0
     2020-09-17 09:56:22   DHW_Energy_Production 0
     2020-09-17 09:56:21   DHW_Heat_Delta  -5
     2020-09-17 09:56:23   DHW_Heater_Operations_Hours 0
     2020-09-17 09:56:22   DHW_Heater_State 0
     2020-09-17 09:56:21   DHW_Holiday_Shift_Temp -25
     2020-09-17 09:56:21   DHW_Target_Temp 47
     2020-09-17 09:56:21   DHW_Temp        44
     2020-09-17 09:56:22   Defrost_Temp    -31
     2020-09-17 09:56:22   Defrosting_State 0
     2020-09-17 09:56:22   Discharge_Temp  13
     2020-09-17 09:56:22   Error           No error
     2020-09-17 09:56:22   Eva_Outlet_Temp 14
     2020-09-17 09:56:23   External_Heater_State 0
     2020-09-17 09:56:23   Fan1_Motor_Speed 0
     2020-09-17 09:56:23   Fan2_Motor_Speed 0
     2020-09-17 09:56:21   Force_DHW_State 0
     2020-09-17 09:56:23   Force_Heater_State 0
     2020-09-17 09:56:21   Heat_Delta      3
     2020-09-17 09:56:21   Heat_Energy_Consumption 0
     2020-09-17 09:56:21   Heat_Energy_Production 0
     2020-09-17 09:56:23   Heat_Pump_Model 0
     2020-09-17 09:56:23   Heat_To_Cool_Temp 15
     2020-09-17 09:56:23   Heater_On_Outdoor_Temp 0
     2020-09-17 09:56:23   Heating_Mode    0
     2020-09-17 09:56:23   Heating_Off_Outdoor_Temp 17
     2020-09-17 09:56:21   Heatpump_State  1
     2020-09-17 09:56:23   High_Pressure   11.4
     2020-09-17 09:56:21   Holiday_Mode_State 0
     2020-09-17 09:58:01   Inside_Pipe_Temp 17
     2020-09-17 09:56:23   Internal_Heater_State 0
     2020-09-17 09:56:22   Ipm_Temp        16
     2020-09-17 10:00:15   LWT             Online
     2020-09-17 09:56:23   Low_Pressure    0
     2020-09-17 09:56:22   Main_Hex_Outlet_Temp 20
     2020-09-17 09:56:21   Main_Inlet_Temp 21
     2020-09-17 09:56:21   Main_Outlet_Temp 22
     2020-09-17 09:56:21   Main_Schedule_State 1
     2020-09-17 09:56:21   Main_Target_Temp 20
     2020-09-17 09:56:21   Operating_Mode_State 0
     2020-09-17 09:56:21   Operations_Counter 1989
     2020-09-17 09:56:21   Operations_Hours 7831
     2020-09-17 09:56:21   Outside_Pipe_Temp 13
     2020-09-17 09:56:21   Outside_Temp    14
     2020-09-17 09:56:22   Pool_Temp       -78
     2020-09-17 09:56:21   Powerful_Mode_Time 0
     2020-09-17 10:00:16   Pump_Flow       10.16
     2020-09-17 09:58:51   Pump_Speed      3100
     2020-09-17 09:56:21   Quiet_Mode_Level 0
     2020-09-17 09:56:21   Quiet_Mode_Schedule 0
     2020-09-17 09:56:23   Room_Heater_Operations_Hours 203
     2020-09-17 09:56:22   Room_Heater_State 0
     2020-09-17 09:56:22   Room_Holiday_Shift_Temp -2
     2020-09-17 09:56:22   Room_Thermostat_Temp 24
     2020-09-17 09:56:22   Solar_Temp      -78
     2020-09-17 09:56:23   Sterilization_Max_Time 10
     2020-09-17 09:56:23   Sterilization_State 0
     2020-09-17 09:56:23   Sterilization_Temp 65
     2020-09-17 09:56:21   ThreeWay_Valve_State 0
     2020-09-17 09:56:23   Z1_Cool_Curve_Outside_High_Temp 20
     2020-09-17 09:56:23   Z1_Cool_Curve_Outside_Low_Temp 30
     2020-09-17 09:56:23   Z1_Cool_Curve_Target_High_Temp 15
     2020-09-17 09:56:23   Z1_Cool_Curve_Target_Low_Temp 10
     2020-09-17 09:56:22   Z1_Cool_Request_Temp 0
     2020-09-17 09:56:22   Z1_Heat_Curve_Outside_High_Temp 15
     2020-09-17 09:56:22   Z1_Heat_Curve_Outside_Low_Temp -15
     2020-09-17 09:56:22   Z1_Heat_Curve_Target_High_Temp 32
     2020-09-17 09:56:22   Z1_Heat_Curve_Target_Low_Temp 23
     2020-09-17 09:56:22   Z1_Heat_Request_Temp -5
     2020-09-17 09:56:22   Z1_Temp         22
     2020-09-17 09:56:22   Z1_Water_Target_Temp 20
     2020-09-17 09:56:22   Z1_Water_Temp   -78
     2020-09-17 09:56:23   Z2_Cool_Curve_Outside_High_Temp 20
     2020-09-17 09:56:23   Z2_Cool_Curve_Outside_Low_Temp 30
     2020-09-17 09:56:23   Z2_Cool_Curve_Target_High_Temp 15
     2020-09-17 09:56:23   Z2_Cool_Curve_Target_Low_Temp 10
     2020-09-17 09:56:22   Z2_Cool_Request_Temp 0
     2020-09-17 09:56:23   Z2_Heat_Curve_Outside_High_Temp -5
     2020-09-17 09:56:23   Z2_Heat_Curve_Outside_Low_Temp 15
     2020-09-17 09:56:23   Z2_Heat_Curve_Target_High_Temp 55
     2020-09-17 09:56:23   Z2_Heat_Curve_Target_Low_Temp 35
     2020-09-17 09:56:22   Z2_Heat_Request_Temp 0
     2020-09-17 09:56:22   Z2_Temp         -128
     2020-09-17 09:56:22   Z2_Water_Target_Temp 36
     2020-09-17 09:56:22   Z2_Water_Temp   -78
     2020-09-16 16:58:38   subscriptions   panasonic_heat_pump/SendRawValue panasonic_heat_pump/SetDHWTemp panasonic_heat_pump/SetForceDHW panasonic_heat_pump/SetForceDefrost panasonic_heat_pump/SetForceSterilization panasonic_heat_pump/SetHeatpump panasonic_heat_pump/SetHolidayMode panasonic_heat_pump/SetOperationMode panasonic_heat_pump/SetPowerfulMode panasonic_heat_pump/SetQuietMode panasonic_heat_pump/SetZ1CoolRequestTemperature panasonic_heat_pump/SetZ1HeatRequestTemperature panasonic_heat_pump/SetZ2CoolRequestTemperature panasonic_heat_pump/SetZ2HeatRequestTemperature
Attributes:
   IODev      horstmqtt
   readingList HeishaMon:panasonic_heat_pump/LWT:.* LWT
HeishaMon:panasonic_heat_pump/sdc/High_Pressure:.* High_Pressure
HeishaMon:panasonic_heat_pump/sdc/Inside_Pipe_Temp:.* Inside_Pipe_Temp
HeishaMon:panasonic_heat_pump/sdc/Main_Inlet_Temp:.* Main_Inlet_Temp
HeishaMon:panasonic_heat_pump/sdc/Main_Outlet_Temp:.* Main_Outlet_Temp
HeishaMon:panasonic_heat_pump/sdc/Z1_Temp:.* Z1_Temp
HeishaMon:panasonic_heat_pump/sdc/Eva_Outlet_Temp:.* Eva_Outlet_Temp
HeishaMon:panasonic_heat_pump/sdc/Heatpump_State:.* Heatpump_State
HeishaMon:panasonic_heat_pump/sdc/Pump_Flow:.* Pump_Flow
HeishaMon:panasonic_heat_pump/sdc/Force_DHW_State:.* Force_DHW_State
HeishaMon:panasonic_heat_pump/sdc/Quiet_Mode_Schedule:.* Quiet_Mode_Schedule
HeishaMon:panasonic_heat_pump/sdc/Operating_Mode_State:.* Operating_Mode_State
HeishaMon:panasonic_heat_pump/sdc/Main_Target_Temp:.* Main_Target_Temp
HeishaMon:panasonic_heat_pump/sdc/Compressor_Freq:.* Compressor_Freq
HeishaMon:panasonic_heat_pump/sdc/DHW_Target_Temp:.* DHW_Target_Temp
HeishaMon:panasonic_heat_pump/sdc/DHW_Temp:.* DHW_Temp
HeishaMon:panasonic_heat_pump/sdc/Operations_Hours:.* Operations_Hours
HeishaMon:panasonic_heat_pump/sdc/Operations_Counter:.* Operations_Counter
HeishaMon:panasonic_heat_pump/sdc/Main_Schedule_State:.* Main_Schedule_State
HeishaMon:panasonic_heat_pump/sdc/Outside_Temp:.* Outside_Temp
HeishaMon:panasonic_heat_pump/sdc/Heat_Energy_Production:.* Heat_Energy_Production
HeishaMon:panasonic_heat_pump/sdc/Heat_Energy_Consumption:.* Heat_Energy_Consumption
HeishaMon:panasonic_heat_pump/sdc/Powerful_Mode_Time:.* Powerful_Mode_Time
HeishaMon:panasonic_heat_pump/sdc/Quiet_Mode_Level:.* Quiet_Mode_Level
HeishaMon:panasonic_heat_pump/sdc/Holiday_Mode_State:.* Holiday_Mode_State
HeishaMon:panasonic_heat_pump/sdc/ThreeWay_Valve_State:.* ThreeWay_Valve_State
HeishaMon:panasonic_heat_pump/sdc/Outside_Pipe_Temp:.* Outside_Pipe_Temp
HeishaMon:panasonic_heat_pump/sdc/DHW_Heat_Delta:.* DHW_Heat_Delta
HeishaMon:panasonic_heat_pump/sdc/Heat_Delta:.* Heat_Delta
HeishaMon:panasonic_heat_pump/sdc/Cool_Delta:.* Cool_Delta
HeishaMon:panasonic_heat_pump/sdc/DHW_Holiday_Shift_Temp:.* DHW_Holiday_Shift_Temp
HeishaMon:panasonic_heat_pump/sdc/Defrosting_State:.* Defrosting_State
HeishaMon:panasonic_heat_pump/sdc/Z1_Heat_Request_Temp:.* Z1_Heat_Request_Temp
HeishaMon:panasonic_heat_pump/sdc/Z1_Cool_Request_Temp:.* Z1_Cool_Request_Temp
HeishaMon:panasonic_heat_pump/sdc/Z1_Heat_Curve_Target_High_Temp:.* Z1_Heat_Curve_Target_High_Temp
HeishaMon:panasonic_heat_pump/sdc/Z1_Heat_Curve_Target_Low_Temp:.* Z1_Heat_Curve_Target_Low_Temp
HeishaMon:panasonic_heat_pump/sdc/Z1_Heat_Curve_Outside_High_Temp:.* Z1_Heat_Curve_Outside_High_Temp
HeishaMon:panasonic_heat_pump/sdc/Z1_Heat_Curve_Outside_Low_Temp:.* Z1_Heat_Curve_Outside_Low_Temp
HeishaMon:panasonic_heat_pump/sdc/Room_Thermostat_Temp:.* Room_Thermostat_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Heat_Request_Temp:.* Z2_Heat_Request_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Cool_Request_Temp:.* Z2_Cool_Request_Temp
HeishaMon:panasonic_heat_pump/sdc/Z1_Water_Temp:.* Z1_Water_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Water_Temp:.* Z2_Water_Temp
HeishaMon:panasonic_heat_pump/sdc/Cool_Energy_Production:.* Cool_Energy_Production
HeishaMon:panasonic_heat_pump/sdc/Cool_Energy_Consumption:.* Cool_Energy_Consumption
HeishaMon:panasonic_heat_pump/sdc/DHW_Energy_Production:.* DHW_Energy_Production
HeishaMon:panasonic_heat_pump/sdc/DHW_Energy_Consumption:.* DHW_Energy_Consumption
HeishaMon:panasonic_heat_pump/sdc/Z1_Water_Target_Temp:.* Z1_Water_Target_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Water_Target_Temp:.* Z2_Water_Target_Temp
HeishaMon:panasonic_heat_pump/sdc/Error:.* Error
HeishaMon:panasonic_heat_pump/sdc/Room_Holiday_Shift_Temp:.* Room_Holiday_Shift_Temp
HeishaMon:panasonic_heat_pump/sdc/Buffer_Temp:.* Buffer_Temp
HeishaMon:panasonic_heat_pump/sdc/Solar_Temp:.* Solar_Temp
HeishaMon:panasonic_heat_pump/sdc/Pool_Temp:.* Pool_Temp
HeishaMon:panasonic_heat_pump/sdc/Main_Hex_Outlet_Temp:.* Main_Hex_Outlet_Temp
HeishaMon:panasonic_heat_pump/sdc/Discharge_Temp:.* Discharge_Temp
HeishaMon:panasonic_heat_pump/sdc/Defrost_Temp:.* Defrost_Temp
HeishaMon:panasonic_heat_pump/sdc/Bypass_Outlet_Temp:.* Bypass_Outlet_Temp
HeishaMon:panasonic_heat_pump/sdc/Ipm_Temp:.* Ipm_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Temp:.* Z2_Temp
HeishaMon:panasonic_heat_pump/sdc/DHW_Heater_State:.* DHW_Heater_State
HeishaMon:panasonic_heat_pump/sdc/Room_Heater_State:.* Room_Heater_State
HeishaMon:panasonic_heat_pump/sdc/Internal_Heater_State:.* Internal_Heater_State
HeishaMon:panasonic_heat_pump/sdc/External_Heater_State:.* External_Heater_State
HeishaMon:panasonic_heat_pump/sdc/Fan1_Motor_Speed:.* Fan1_Motor_Speed
HeishaMon:panasonic_heat_pump/sdc/Fan2_Motor_Speed:.* Fan2_Motor_Speed
HeishaMon:panasonic_heat_pump/sdc/Pump_Speed:.* Pump_Speed
HeishaMon:panasonic_heat_pump/sdc/Low_Pressure:.* Low_Pressure
HeishaMon:panasonic_heat_pump/sdc/Compressor_Current:.* Compressor_Current
HeishaMon:panasonic_heat_pump/sdc/Force_Heater_State:.* Force_Heater_State
HeishaMon:panasonic_heat_pump/sdc/Sterilization_State:.* Sterilization_State
HeishaMon:panasonic_heat_pump/sdc/Sterilization_Temp:.* Sterilization_Temp
HeishaMon:panasonic_heat_pump/sdc/Sterilization_Max_Time:.* Sterilization_Max_Time
HeishaMon:panasonic_heat_pump/sdc/Z1_Cool_Curve_Target_High_Temp:.* Z1_Cool_Curve_Target_High_Temp
HeishaMon:panasonic_heat_pump/sdc/Z1_Cool_Curve_Target_Low_Temp:.* Z1_Cool_Curve_Target_Low_Temp
HeishaMon:panasonic_heat_pump/sdc/Z1_Cool_Curve_Outside_High_Temp:.* Z1_Cool_Curve_Outside_High_Temp
HeishaMon:panasonic_heat_pump/sdc/Z1_Cool_Curve_Outside_Low_Temp:.* Z1_Cool_Curve_Outside_Low_Temp
HeishaMon:panasonic_heat_pump/sdc/Heating_Mode:.* Heating_Mode
HeishaMon:panasonic_heat_pump/sdc/Heating_Off_Outdoor_Temp:.* Heating_Off_Outdoor_Temp
HeishaMon:panasonic_heat_pump/sdc/Heater_On_Outdoor_Temp:.* Heater_On_Outdoor_Temp
HeishaMon:panasonic_heat_pump/sdc/Heat_To_Cool_Temp:.* Heat_To_Cool_Temp
HeishaMon:panasonic_heat_pump/sdc/Cool_To_Heat_Temp:.* Cool_To_Heat_Temp
HeishaMon:panasonic_heat_pump/sdc/Cooling_Mode:.* Cooling_Mode
HeishaMon:panasonic_heat_pump/sdc/Z2_Heat_Curve_Target_High_Temp:.* Z2_Heat_Curve_Target_High_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Heat_Curve_Target_Low_Temp:.* Z2_Heat_Curve_Target_Low_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Heat_Curve_Outside_High_Temp:.* Z2_Heat_Curve_Outside_High_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Heat_Curve_Outside_Low_Temp:.* Z2_Heat_Curve_Outside_Low_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Cool_Curve_Target_High_Temp:.* Z2_Cool_Curve_Target_High_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Cool_Curve_Target_Low_Temp:.* Z2_Cool_Curve_Target_Low_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Cool_Curve_Outside_High_Temp:.* Z2_Cool_Curve_Outside_High_Temp
HeishaMon:panasonic_heat_pump/sdc/Z2_Cool_Curve_Outside_Low_Temp:.* Z2_Cool_Curve_Outside_Low_Temp
HeishaMon:panasonic_heat_pump/sdc/Room_Heater_Operations_Hours:.* Room_Heater_Operations_Hours
HeishaMon:panasonic_heat_pump/sdc/DHW_Heater_Operations_Hours:.* DHW_Heater_Operations_Hours
HeishaMon:panasonic_heat_pump/sdc/Heat_Pump_Model:.* Heat_Pump_Model
   room       MQTT2_DEVICE

Beta-User

Als ich vorhin geschrieben habe, du sollst dir das template und den Thread (wg. der zu beachtenden "Konventionen" usw.) anschauen, war nicht unbedingt die Rede vom "Kapern".

Würde also vorschlagen, du schaust dir den Quelltext an (aktuell ab hier: https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/AttrTemplate/mqtt2.template#L2934), merkst dir diesen Thread wg. der Frage, wie setter und Readings heißen sollten und wir diskutieren ggf. weiter in deinem Thread: https://forum.fhem.de/index.php/topic,114282.0/topicseen.html...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

benkler

#111
Hallo Zusammen,

hat jemand bereits auf die version 2 von EMS-ESP umgestellt ?
Leider hat sich hier ja einiges im MQTT Teil geändert und ich gehe davon aus, dass die ganzen Templates überarbeitet werden müssten

Ich habe das mal gemacht und wichtig ist erstmal, dass das gewählte Topic nicht mehr im MQTT steht es kommt jetzt nurnoch ems-esp/ und nicht topic/ems-esp/.

einige Readings beim Boiler haben nun einen Anderen Name z.B.:
heatPmp wird zu heatPump
heating_temp wird zu heatingTemp


MFG
benkler
FHEM (Docker), Homebridge (Docker), Homematic IP, nanoCUL 433 + 868 a-culfw, jeeLink Clone, Diverse IT Sensoren, ems-esp, Netatmo und noch einiges mehr

Beta-User

Falls das eine Bitte um Hilfe sein soll:

Ein update der attrTemplate sollte kein Hexenwerk sein, aber wenn möglich sollte das "en block" gemacht werden; für die, die noch die "alte" Version nutzen, kann gerne das, was heute da ist als "outdated" noch eine ganze Weile weiter in der File bleiben.

Falls du also RAW-lists von deinen (vollständig überarbeiteten) Devices liefern magst...?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

benkler

Nicht direkt eine Bitte um Hilfe :)

Ich werde mir am Wochenende mal alle meine Devices anschauen und überarbeiten und danach werde ich RAW-lists von meinen Devices liefern.
FHEM (Docker), Homebridge (Docker), Homematic IP, nanoCUL 433 + 868 a-culfw, jeeLink Clone, Diverse IT Sensoren, ems-esp, Netatmo und noch einiges mehr

Beta-User

Gerne. Falls du das direkt in (getesteter) attrTemplate-Form liefern könntest, wäre das noch besser... ;) (Ist auch kein Hexenwerk)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

benkler

#115
Hier mal meine Templates dich ich auch getestet habe und sowei ich es beurteilen kann auch funktionieren.
Befehle ans ESP Senden habe ich nicht getestet, da ich das aktuell nicht nutze

###########################################
# ems-esp - v2.1
# The ems-esp device firmware v2.1
name:ems-esp_heater_device_v2
filter:TYPE=MQTT2_DEVICE
desc:EMS-ESP is a open-source system to communicate with EMS (Energy Management System) based boilers, thermostats and other modules from manufacturers like Bosch, Buderus, Nefit, Junkers and Sieger, see <a href="https://github.com/proddy/EMS-ESP">project page</a>. First version, to contribute see <a href="https://forum.fhem.de/index.php/topic,104968.0.html">Forum Thread</a>.
order:E_02a
par:DEV_ID;ID topic set, default is "ems-esp";{ AttrVal("DEVICE","readingList","") =~ m,[^/:]+/([^/]+), ? $1 : "ems-esp" }
par:ICON;ICON as set, defaults to sani_boiler_temp;{ AttrVal("DEVICE","icon","sani_boiler_temp") }
attr DEVICE icon ICON
modify DEVICE DEV_ID
attr DEVICE bridgeRegexp \
  DEV_ID/(sensors|sm_data|hp_data|thermostat_data).*:.* "ems_esp_$1"\
  DEV_ID/(boiler_data|tapwater_active|heating_active|mixing_data|shower_data).*:.* "ems_esp_boiler"\
  DEV_ID/(status|info|heartbeat).*:.* "Heizung"
attr DEVICE userReadings formatedUptime:uptime.* {my $m = ReadingsVal($name,"uptime_sec",0)/60;; return sprintf "0 000 00:%02d", $m if $m < 60;; my $h = $m / 60;; $m %= 60;; return sprintf "0 000 %02d:%02d", $h, $m if $h < 24;; my $d = $h / 24;; $h %= 24;; return sprintf "0 %03d %02d:%02d", $d, $h, $m if $d <365;; my $y = $d / 365;; $d %= 365;; return sprintf "%d %03d %02d:%02d", $y, $d, $h, $m}
attr DEVICE  readingList DEV_ID/status:.* LWT\
  DEV_ID/heartbeat:.* { json2nameValue($EVENT) }\
  DEV_ID/info:.* { json2nameValue($EVENT) }\
  DEV_ID/status:.* { json2nameValue($EVENT) }
attr DEVICE stateFormat Interface: LWT Signal: rssi % <br>Uptime: formatedUptime <br>IPAddress : <a href="http://ip" target="_blank">ip</a>
attr DEVICE setList restart:noArg DEV_ID/restart
attr DEVICE devStateIcon online:it_net offline:it_net@red  2.1:lan_rs485 2.0:lan_rs485@red
attr DEVICE autocreate 1
attr DEVICE webCmd restart
attr DEVICE model ems-esp_heater_device_v2
setreading DEVICE attrTemplateVersion 20200522 or prior

name:ems-esp_boiler_v2
filter:TYPE=MQTT2_DEVICE
desc:To configure a boiler device for use with an <a href="https://github.com/proddy/EMS-ESP">EMS-ESP</a> with Firmware 2.1.0.<br><a href="https://forum.fhem.de/index.php/topic,104968.0.html">Forum Thread</a>
order:E_02b
par:DEV_ID;ID topic set, default is "ems-esp";{ AttrVal("DEVICE","readingList","") =~ m,[^/:]+/([^/]+), ? $1 : "ems-esp" }
attr DEVICE readingList DEV_ID/boiler_data { json2nameValue($EVENT) }\
DEV_ID/shower_data:.* { json2nameValue($EVENT) }\
DEV_ID/mixing_data:.* { json2nameValue($EVENT) }\
DEV_ID/tapwater_active:.* tapwater_active\
DEV_ID/heating_active:.* heating_active\
DEV_ID/boiler_data_ww:.* { json2nameValue($EVENT) }\
attr DEVICE stateFormat \
Vorlauf: curFlowTemp C\
Rücklauf: retTemp C \
Vorlauf Soll: selFlowTemp C\
SystemDruck: sysPress Bar \
Wasserspeicher: wwStorageTemp2 C \
Status: BoilerStatus \
Status-Code: serviceCode serviceCodeNumber\
Temp Außen: outdoorTemp C\
attr DEVICE devStateIcon idle:sani_heating heating:sani_heating@red tapwater:sani_water_hot@red
attr DEVICE userReadings BoilerStatus {BoilerStatus("serviceCode","serviceCodeNumber")}
attr DEVICE model ems-esp_boiler_v2
setreading DEVICE attrTemplateVersion 20200529

#ems-esp thermostat device
name:ems-esp_thermostat_read-only_v2
filter:TYPE=MQTT2_DEVICE
desc:To configure a simple read-only thermostat (e.g. CT200) for use with an <a href="https://github.com/proddy/EMS-ESP">EMS-ESP</a> with Firmware 2.1.0.<br><a href="https://forum.fhem.de/index.php/topic,104968.0.html">Forum Thread</a><br>
order:E_02c
par:DEV_ID;ID topic set, default is "ems-esp";{ AttrVal("DEVICE","readingList","") =~ m,[^/:]+/([^/]+), ? $1 : "ems-esp" }
par:ICON;ICON as set, defaults to temp_control;{ AttrVal("DEVICE","icon","temp_control") }
attr DEVICE icon ICON
attr DEVICE devStateIcon auto:time_automatic manual:time_manual_mode
attr DEVICE jsonMap hc1_mode:mode hc1_seltemp:desired-temp hc1_daytemp:daytemp hc1_nighttemp:nighttemp hc1_holidayttemp:holidaytemp
attr DEVICE readingList DEV_ID/thermostat_data:.* { json2nameValue($EVENT, '', $JSONMAP) }
attr DEVICE stateFormat mode\
desired-temp °C
attr DEVICE webCmd :
attr DEVICE model ems-esp_thermostat_read-only_v2
setreading DEVICE attrTemplateVersion 20200522 or prior

name:ems-esp_thermostat_simple_v2
filter:TYPE=MQTT2_DEVICE
desc:To configure a simple thermostat (e.g. RC300) for use with an <a href="https://github.com/proddy/EMS-ESP">EMS-ESP</a> with Firmware 2.1.0.<br><a href="https://forum.fhem.de/index.php/topic,104968.0.html">Forum Thread</a><br>
order:E_02c1
par:DEV_ID;ID topic set, default is "ems-esp";{ AttrVal("DEVICE","readingList","") =~ m,[^/:]+/([^/]+), ? $1 : "ems-esp" }
par:ICON;ICON as set, defaults to temp_control;{ AttrVal("DEVICE","icon","temp_control") }
attr DEVICE icon ICON
attr DEVICE devStateIcon set.auto:edit_settings:mode+manual set.manual:edit_settings:mode+auto auto:time_automatic:mode+manual manual:time_manual_mode:mode+auto  set.*°C:edit_settings
attr DEVICE jsonMap hc1_mode:mode hc1_seltemp:desired-temp hc1_daytemp:daytemp hc1_nighttemp:nighttemp hc1_holidayttemp:holidaytemp
attr DEVICE readingList DEV_ID/thermostat_data:.* { json2nameValue($EVENT, '', $JSONMAP) }
attr DEVICE setList mode:uzsuSelectRadio,auto,manual DEV_ID/thermostat_cmd_mode1 $EVTPART1\
  desired-temp:slider,15.0,0.5,30.0,1 DEV_ID/thermostat_cmd_temp1 $EVTPART1
attr DEVICE setStateList on off
attr DEVICE stateFormat mode\
desired-temp °C
attr DEVICE webCmd mode:desired-temp
set DEVICE attrTemplate speechcontrol_type_thermostat
attr DEVICE model ems-esp_thermostat_simple_v2
setreading DEVICE attrTemplateVersion 20201107

name:ems-esp_thermostat_RC35_type_v2
filter:TYPE=MQTT2_DEVICE
desc:To configure a thermostat comparable to RC35 for use with an <a href="https://github.com/proddy/EMS-ESP">EMS-ESP</a> with Firmware 2.1.0<br>.<a href="https://forum.fhem.de/index.php/topic,104968.0.html">Forum Thread</a>
order:E_02c1
par:DEV_ID;ID topic set, default is "ems-esp";{ AttrVal("DEVICE","readingList","") =~ m,[^/:]+/([^/]+), ? $1 : "ems-esp" }
attr DEVICE readingList DEV_ID/thermostat_data:.* { json2nameValue($EVENT) } \
DEV_ID/thermostat_data1:.* { json2nameValue($EVENT) } \
DEV_ID/thermostat_data_hc1:.* { json2nameValue($EVENT) } \
attr DEVICE setList mode:uzsuSelectRadio,auto,manual DEV_ID/thermostat_cmd_mode1 $EVTPART1 \
  desired-temp:slider,15.0,0.5,30.0,1 DEV_ID/thermostat_cmd_temp1 $EVTPART1 \
  daytemp:slider,15.0,0.5,30.0,1 DEV_ID/thermostat_cmd_daytemp1 $EVTPART1 \
  nighttemp:slider,15.0,0.5,30.0,1 DEV_ID/thermostat_cmd_nighttemp1 $EVTPART1 \
  holidaytemp:slider,15.0,0.5,30.0,1 DEV_ID/thermostat_cmd_holidayttemp1 $EVTPART1
attr DEVICE model ems-esp_thermostat_RC35_type_v2
attr DEVICE stateFormat mode\
seltemp °C
setreading DEVICE attrTemplateVersion 20200522 or priorr


für den Boiler habe ich noch ein userReading welches noch unterstützung aus den myUtils benötigt. hier der Part aus den myUtils, eventuell kann das jemand brauchen

###### Boilerstatus ######
sub BoilerStatus($$) {
  my($servicecode,$servicecodenumber) = @_;
  $servicecode = ReadingsVal("MQTT2_ems_esp_boiler","serviceCode","");
  $servicecodenumber = ReadingsVal("MQTT2_ems_esp_boiler","serviceCodeNumber","");
  my $status;
if($servicecode eq "-H" and $servicecodenumber eq "200")
    {$status="Heizbetrieb";}
elsif ($servicecode eq "-A" and $servicecodenumber eq "208")
{$status="Schornsteinfegerbetrieb oder Servicebetrieb";}
elsif ($servicecode eq "=H" and $servicecodenumber eq "201")
{$status="Warmwasserbetrieb";}
elsif ($servicecode eq "0A" and $servicecodenumber eq "202")
{$status= "Wartephase kann waerme nicht an Anlage abgeben";}
elsif ($servicecode eq "0A" and $servicecodenumber eq "305")
{$status= "Wartephase des Gas Brennwertgeraetes nach Abschluss der Warmwasserbereitung";}
elsif ($servicecode eq "0C" and $servicecodenumber eq "283")
{$status="Heizgeraet wird hochgefahren";}
elsif ($servicecode eq "0E" and $servicecodenumber eq "265")
{$status="Wartephase des Gas-Brennwertgeraetes. das Geraet schaltet als Reaktion auf die Waermeanforderung regelmaessig auf Niedriglast ein";}
elsif ($servicecode eq "0H" and $servicecodenumber eq "203")
{$status="Betriebsbereitschaft keine Waermeanforderung vorhanden";}
elsif ($servicecode eq "0L" and $servicecodenumber eq "284")
{$status="Die Gasarmatur wird angesteuert";}
elsif ($servicecode eq "0U" and $servicecodenumber eq "270")
{$status="Das Heizgeraet wird hochgefahren";}
elsif ($servicecode eq "0Y" and $servicecodenumber eq "204")
{$status="Wartephase des Gas-Brennwertgeraetes. Vorlauftemperatur ist hoeher als die eingestellte Heizwassertemperatur";}
elsif ($servicecode eq "0Y" and $servicecodenumber eq "276")
{$status="Die Temperaturfuehler im Heizgeraet messen eine zu hohe Temperatur";}
elsif ($servicecode eq "0Y" and $servicecodenumber eq "285")
{$status="Die Temperaturfuehler im Heizgeraet messen eine zu hohe Temperatur";}
elsif ($servicecode eq "2E" and $servicecodenumber eq "207")
{$status="Betriebsdruck zu niedrig";}
elsif ($servicecode eq "2F" and $servicecodenumber eq "260")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "2F" and $servicecodenumber eq "345")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "2L" and $servicecodenumber eq "266")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "2P" and $servicecodenumber eq "212")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "2P" and $servicecodenumber eq "341")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "2U" and $servicecodenumber eq "213")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "4C" and $servicecodenumber eq "224")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "6A" and $servicecodenumber eq "227")
{$status="Brenner entzuendet nicht";}
elsif ($servicecode eq "7C" and $servicecodenumber eq "231")
{$status="Waehrend einer Stoerung war eine kurze Stromunterbrechung";}
elsif ($servicecode eq "H07")
{$status="Betriebsdruck zu niedrig";}
elsif ($servicecode eq "rE")
{$status="Das Heizgeraet wird zurueckgesezt";}
else
{$status="Unbekannt $servicecode  $servicecodenumber";}

  return $status;
};


so hatte es bei mir auch fuktioniert.



für Kritik bin ich natürlich offen ;)
FHEM (Docker), Homebridge (Docker), Homematic IP, nanoCUL 433 + 868 a-culfw, jeeLink Clone, Diverse IT Sensoren, ems-esp, Netatmo und noch einiges mehr

Beta-User

Hmm, hatte vorhin was eingecheckt, aber leider den EDIT nicht gesehen, muss also nochmal nacharbeiten...

Was den myUtils-Code angeht, vorab mal Danke für's posten!

(OT Kritikpunkte, eher für's lernen:
- userReadinging ohne trigger sollte man nicht definieren, zumal hier die Infos über mehrere Topics reinkommen (=> Last reduzieren);
- Die Parameter-Übergabe leuchtet mir nicht ein. Wenn, dann eher den Device-Namen übergeben, dann paßt der Code als generalisierter Code für alle...? Alles andere ist sowieso hart vercoded.)

Was mir unklar ist: Braucht es die doppelte Abfrage von servicecode und servicecodenumber? Das sieht - jedenfalls auf den ersten Blick - relativ eindreutig aus, wenn man nur das letztere nimmt, oder täuscht das?

Aus gegebenem Anlaß würde ich vorschlagen, das ganze nochmal deutlich auszubauen, weiß aber noch nicht, ob das zielführend wäre. Es gibt derzeit zwei Threads, die sich mit "ähnlichen Themen" beschäftigen, die man hier m.E. gut verwenden könnte:

Zum einen betreffend Sprachsteuerungsfragen bei Heizungsgeräten (ca. ab hier: https://forum.fhem.de/index.php/topic,97989.msg1099062.html#msg1099062), zum anderen das "Ausschlachten" des JSON in myUtils (
https://forum.fhem.de/index.php/topic,115620.msg1098964.html#msg1098964).Damit könnte man das Auspacken, Umbenennen und "Übersetzen" der Fehlercodes in eine einzige myUtils packen und z.B. gleich die Statuscodes auf Basis der Spracheinstellungen in global übersetzen...

Vorab: Ich unterstütze da gerne für den Einstige in das Thema, will mich aber ansonsten eher zurückhalten (es sei denn, es schickt mir jemand einen getesteten Adapter, den ich nur an meine Junkers anschließen muß und verrät mir, wo... Dann steige ich ggf. aus Eigeninteresse ein :P ).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

benkler

Danke fürs einchecken ;)

Ja das mit dem UserReading muss ich noch optimieren, ich hatte am anfang den kompletten code im Attribute (das konnte man irgendwann nicht mehr editieren :D ).

Die Abfrage von ServiceCode uns ServiceCodeNumber macht schon an ein paar stellen sinn:
elsif ($servicecode eq "0A" and $servicecodenumber eq "202")
{$status= "Wartephase kann waerme nicht an Anlage abgeben";}
elsif ($servicecode eq "0A" and $servicecodenumber eq "305")
{$status= "Wartephase des Gas Brennwertgeraetes nach Abschluss der Warmwasserbereitung";}

elsif ($servicecode eq "0Y" and $servicecodenumber eq "204")
{$status="Wartephase des Gas-Brennwertgeraetes. Vorlauftemperatur ist hoeher als die eingestellte Heizwassertemperatur";}
elsif ($servicecode eq "0Y" and $servicecodenumber eq "276")
{$status="Die Temperaturfuehler im Heizgeraet messen eine zu hohe Temperatur";}


hier ist der Servicecode gleich aber die number unterscheidet sich und auch die Aussage des Codes ist ein anderer (auch wenn nur leicht).
ich habe mir das Handbuch meines Boilers zur hand genommen und die Codes gemeinsam mit den Nummern "übersetzt" so ist das dann auch gewachsen.

Ich schaue mir die anderen Themen mal an und optimiere ggf. meinen code noch weiter, das war halt bis jetzt immer nur für mich :)
FHEM (Docker), Homebridge (Docker), Homematic IP, nanoCUL 433 + 868 a-culfw, jeeLink Clone, Diverse IT Sensoren, ems-esp, Netatmo und noch einiges mehr

Beta-User

OK, die zwei Ausnahmen hatte ich nicht gesehen.

Diese if ... else-Kaskaden widerstreben mir seit einiger Zeit, eleganter ist es, da mit Hashes zu arbeiten. Hier wäre mein Vorschlag, zwei "Übersetzungshashes" zu definieren, einen "flachen" mit servicecodenumber => Text, und einen "gestuften" mit
servicecodenumber => servicecode => Text. Braucht dann halt zwei Durchläufe beim Ersetzen, ist aber kein Drama (bzw. "internationalisiert" wäre das dann vielleicht servicecodenumber => language =>Text bzw. servicecodenumber => servicecode => language => Text).Sowas ist einfacher zu pflegen und man könnte ggf. die "Übersetzungstabelle" auch außerhalb des Codes in einer eigenen Datei pflegen, falls es zu unterschiedlich für verschiedene Typen ist?
(OT: meine "Erstlinge", die ich hier irgendwo mal gepostet hatte, würde ich zu einem großen Teil heute auch anders machen, zum Teil auch deswegen, weil ich eben auch früher manches nur "für mich" gemacht hatte und heute eher darauf achte, dass der Code - wenn möglich - einfacher in eine andere Umgebung paßt...
Das ist überigens hilfreich, weil dann die Konfiguration im wesentlichen die "personenbezogenen" Teile enthält und der eigentliche Funktionscode "anonym" ist und so problem- und schutzlos z.B. auf github gesichert werden kann).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Wondermusic

Zitat von: benkler am 06 November 2020, 18:43:35
...für den Boiler habe ich noch ein userReading welches noch unterstützung aus den myUtils benötigt. hier der Part aus den myUtils, eventuell kann das jemand brauchen

###### Boilerstatus ######
sub BoilerStatus($$) {
  my($servicecode,$servicecodenumber) = @_;
  $servicecode = ReadingsVal("MQTT2_ems_esp_boiler","serviceCode","");
  $servicecodenumber = ReadingsVal("MQTT2_ems_esp_boiler","serviceCodeNumber","");
  my $status;
if($servicecode eq "-H" and $servicecodenumber eq "200")
    {$status="Heizbetrieb";}
elsif ($servicecode eq "-A" and $servicecodenumber eq "208")
{$status="Schornsteinfegerbetrieb oder Servicebetrieb";}
elsif ($servicecode eq "=H" and $servicecodenumber eq "201")
{$status="Warmwasserbetrieb";}
elsif ($servicecode eq "0A" and $servicecodenumber eq "202")
{$status= "Wartephase kann waerme nicht an Anlage abgeben";}
elsif ($servicecode eq "0A" and $servicecodenumber eq "305")
{$status= "Wartephase des Gas Brennwertgeraetes nach Abschluss der Warmwasserbereitung";}
elsif ($servicecode eq "0C" and $servicecodenumber eq "283")
{$status="Heizgeraet wird hochgefahren";}
elsif ($servicecode eq "0E" and $servicecodenumber eq "265")
{$status="Wartephase des Gas-Brennwertgeraetes. das Geraet schaltet als Reaktion auf die Waermeanforderung regelmaessig auf Niedriglast ein";}
elsif ($servicecode eq "0H" and $servicecodenumber eq "203")
{$status="Betriebsbereitschaft keine Waermeanforderung vorhanden";}
elsif ($servicecode eq "0L" and $servicecodenumber eq "284")
{$status="Die Gasarmatur wird angesteuert";}
elsif ($servicecode eq "0U" and $servicecodenumber eq "270")
{$status="Das Heizgeraet wird hochgefahren";}
elsif ($servicecode eq "0Y" and $servicecodenumber eq "204")
{$status="Wartephase des Gas-Brennwertgeraetes. Vorlauftemperatur ist hoeher als die eingestellte Heizwassertemperatur";}
elsif ($servicecode eq "0Y" and $servicecodenumber eq "276")
{$status="Die Temperaturfuehler im Heizgeraet messen eine zu hohe Temperatur";}
elsif ($servicecode eq "0Y" and $servicecodenumber eq "285")
{$status="Die Temperaturfuehler im Heizgeraet messen eine zu hohe Temperatur";}
elsif ($servicecode eq "2E" and $servicecodenumber eq "207")
{$status="Betriebsdruck zu niedrig";}
elsif ($servicecode eq "2F" and $servicecodenumber eq "260")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "2F" and $servicecodenumber eq "345")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "2L" and $servicecodenumber eq "266")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "2P" and $servicecodenumber eq "212")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "2P" and $servicecodenumber eq "341")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "2U" and $servicecodenumber eq "213")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "4C" and $servicecodenumber eq "224")
{$status="Die Temperaturfuehler im Heizgeraet messen eine Abweichende Temperatur";}
elsif ($servicecode eq "6A" and $servicecodenumber eq "227")
{$status="Brenner entzuendet nicht";}
elsif ($servicecode eq "7C" and $servicecodenumber eq "231")
{$status="Waehrend einer Stoerung war eine kurze Stromunterbrechung";}
elsif ($servicecode eq "H07")
{$status="Betriebsdruck zu niedrig";}
elsif ($servicecode eq "rE")
{$status="Das Heizgeraet wird zurueckgesezt";}
else
{$status="Unbekannt $servicecode  $servicecodenumber";}

  return $status;
};


Ich fand die Idee Klasse und habe mir mal die Arbeit gemacht eine eigene 99_buderusUtils.pm zu basteln. Vielleicht kann sie ja jemand gebrauchen. ;-)
Da ist so ziemlich alles drin was ich an Fehlercodes finden konnte.

Gruß,
Richy
RPi 3B+ FHEM-Server mit HM-MOD-RPI-PCB
RPi2 mit HM-MOD-RPI-PCB
HM-CFG-LAN
RPi 4 mit ioBroker
>100 HM Sensoren & Aktoren, div. ESP8266 via mqtt, ems-esp