From b7a174ddeaf45a9bc33a9fb7c694189452eed9c3 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 25 Sep 2026 08:44:42 +0200 Subject: [PATCH] #3196 --- CHANGELOG_LATEST.md | 1 + docs/Modbus-Entity-Registers.md | 156 +++++++++++++++++--------------- docs/dump_entities.csv | 156 +++++++++++++++++--------------- docs/dump_telegrams.csv | 10 +- src/core/locale_translations.h | 8 +- src/devices/heatpump.cpp | 103 ++++++++++++++------- src/devices/heatpump.h | 8 +- src/emsesp_version.h | 2 +- 8 files changed, 257 insertions(+), 187 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 00c9a1e54..b7c7f30e7 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -19,6 +19,7 @@ This release is based on the latest Espressif/Arduino core version 3. It brings - `show system` reports the Ethernet status on boards with a PHY, so a failed initialisation or a link that never came up is visible instead of Ethernet being omitted completely. Also shows the loop task's lowest free stack, to help diagnose reboots - new Application Setting "Automatically check for firmware updates", off by default. When enabled EMS-ESP asks emsesp.org for the latest version once a day on its own, otherwise it only asks when the WebUI wants to show it, so an unattended system never contacts emsesp.org - automatically check and convert older 3.8.x filesystem to the new 3.9.0 format +- new device entities for Heat Pump: `hpPumpFlow`, `hpCompSpdER1`, `hpSpeedSetpoint`, `smartGridMode` ## Fixed diff --git a/docs/Modbus-Entity-Registers.md b/docs/Modbus-Entity-Registers.md index 16c84a41c..7fef0a051 100644 --- a/docs/Modbus-Entity-Registers.md +++ b/docs/Modbus-Entity-Registers.md @@ -8024,44 +8024,48 @@ int8 | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | | hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | | hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | -| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 19 | 1 | 1 | -| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 1/10 | +| hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | +| hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | +| smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | +| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 23 | 1 | 1 | +| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 24 | 1 | 1 | uint8 -| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 21 | 1 | 1 | +| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 25 | 1 | 1 | uint8 -| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 22 | 1 | 1 | +| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 26 | 1 | 1 | | dhw.hybriddhw | hybrid DHW | enum | | true | DHW | 0 | 1 | 1 | uint8 -| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 23 | 1 | 1 | +| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 27 | 1 | 1 | uint8 -| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 24 | 1 | 1 | +| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 28 | 1 | 1 | uint8 -| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 25 | 1 | 1 | +| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 29 | 1 | 1 | int8 -| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 26 | 1 | 1 | -| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 27 | 1 | 1 | +| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 30 | 1 | 1 | +| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | uint8 -| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 28 | 1 | 1 | -| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 29 | 1 | 1 | +| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 32 | 1 | 1 | +| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 33 | 1 | 1 | uint8 -| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 30 | 1 | 1 | -| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 32 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 33 | 2 | 1/100 | +| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 34 | 1 | 1 | +| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 35 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 36 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | | dhw.nrg | energy | uint24 | kWh | false | DHW | 1 | 2 | 1/100 | -| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 35 | 2 | 1/100 | -| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | -| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | -| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 45 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 47 | 2 | 1/100 | | dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 | -| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 45 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 49 | 2 | 1 | | dhw.startshp | starts hp | uint24 | | false | DHW | 5 | 2 | 1 | -| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 47 | 2 | 1/10 | +| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | | dhw.fueldhw | fuel consumption | uint32 | kWh | false | DHW | 7 | 2 | 1/10 | -| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 49 | 2 | 1/10 | +| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 53 | 2 | 1/10 | | dhw.eldhw | el. consumption | uint32 | kWh | false | DHW | 9 | 2 | 1/10 | -| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | +| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 55 | 2 | 1/10 | | dhw.elgendhw | el generation | uint32 | kWh | false | DHW | 11 | 2 | 1/10 | ### Hybrid Manager HM200 @@ -8087,44 +8091,48 @@ uint8 | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | | hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | | hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | -| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 19 | 1 | 1 | -| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 1/10 | +| hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | +| hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | +| smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | +| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 23 | 1 | 1 | +| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 24 | 1 | 1 | uint8 -| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 21 | 1 | 1 | +| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 25 | 1 | 1 | uint8 -| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 22 | 1 | 1 | +| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 26 | 1 | 1 | | dhw.hybriddhw | hybrid DHW | enum | | true | DHW | 0 | 1 | 1 | uint8 -| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 23 | 1 | 1 | +| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 27 | 1 | 1 | uint8 -| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 24 | 1 | 1 | +| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 28 | 1 | 1 | uint8 -| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 25 | 1 | 1 | +| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 29 | 1 | 1 | int8 -| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 26 | 1 | 1 | -| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 27 | 1 | 1 | +| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 30 | 1 | 1 | +| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | uint8 -| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 28 | 1 | 1 | -| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 29 | 1 | 1 | +| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 32 | 1 | 1 | +| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 33 | 1 | 1 | uint8 -| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 30 | 1 | 1 | -| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 32 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 33 | 2 | 1/100 | +| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 34 | 1 | 1 | +| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 35 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 36 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | | dhw.nrg | energy | uint24 | kWh | false | DHW | 1 | 2 | 1/100 | -| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 35 | 2 | 1/100 | -| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | -| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | -| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 45 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 47 | 2 | 1/100 | | dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 | -| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 45 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 49 | 2 | 1 | | dhw.startshp | starts hp | uint24 | | false | DHW | 5 | 2 | 1 | -| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 47 | 2 | 1/10 | +| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | | dhw.fueldhw | fuel consumption | uint32 | kWh | false | DHW | 7 | 2 | 1/10 | -| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 49 | 2 | 1/10 | +| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 53 | 2 | 1/10 | | dhw.eldhw | el. consumption | uint32 | kWh | false | DHW | 9 | 2 | 1/10 | -| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | +| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 55 | 2 | 1/10 | | dhw.elgendhw | el generation | uint32 | kWh | false | DHW | 11 | 2 | 1/10 | ### CSH5800iG @@ -8150,44 +8158,48 @@ uint8 | hpactivity | compressor activity | enum | | false | DEVICE_DATA | 16 | 1 | 1 | | hppower | compressor power output | uint16 | W | false | DEVICE_DATA | 17 | 1 | 1 | | hpcurrpower | compressor current power | uint16 | W | false | DEVICE_DATA | 18 | 1 | 1 | -| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 19 | 1 | 1 | -| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 20 | 1 | 1 | +| hppumpflow | volume flow | uint16 | l/h | false | DEVICE_DATA | 19 | 1 | 1/10 | +| hpcompspder1 | compressor speed ER1 | uint8 | % | false | DEVICE_DATA | 20 | 1 | 1 | +| hpSpeedSetpoint | speed setpoint | uint8 | % | false | DEVICE_DATA | 21 | 1 | 1 | +| smartgridmode | smart grid mode | uint8 | | false | DEVICE_DATA | 22 | 1 | 1 | +| hybridstrategy | hybrid control strategy | enum | | true | DEVICE_DATA | 23 | 1 | 1 | +| lownoisemode | low noise mode | enum | | true | DEVICE_DATA | 24 | 1 | 1 | uint8 -| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 21 | 1 | 1 | +| lownoisestart | low noise starttime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 25 | 1 | 1 | uint8 -| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 22 | 1 | 1 | +| lownoisestop | low noise stoptime | uint8 (>=0<=23) | hours | true | DEVICE_DATA | 26 | 1 | 1 | | dhw.hybriddhw | hybrid DHW | enum | | true | DHW | 0 | 1 | 1 | uint8 -| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 23 | 1 | 1 | +| energypricegas | energy price gas | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 27 | 1 | 1 | uint8 -| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 24 | 1 | 1 | +| energypriceel | energy price electric | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 28 | 1 | 1 | uint8 -| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 25 | 1 | 1 | +| energyfeedpv | feed in PV | uint8 (>=0<=0) | ct/kWh | true | DEVICE_DATA | 29 | 1 | 1 | int8 -| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 26 | 1 | 1 | -| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 27 | 1 | 1 | +| switchovertemp | outside switchover temperature | int8 (>=0<=0) | C | true | DEVICE_DATA | 30 | 1 | 1 | +| airpurgemode | air purge mode | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | uint8 -| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 28 | 1 | 1 | -| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 29 | 1 | 1 | +| heatpumpoutput | heatpump output | uint8 (>=0<=0) | % | true | DEVICE_DATA | 32 | 1 | 1 | +| coolingcircuit | cooling circuit | boolean | | true | DEVICE_DATA | 33 | 1 | 1 | uint8 -| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 30 | 1 | 1 | -| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 31 | 1 | 1 | -| heatcable | heating cable | boolean | | true | DEVICE_DATA | 32 | 1 | 1 | -| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 33 | 2 | 1/100 | +| compstartmod | compressor start modulation | uint8 (>=0<=0) | % | true | DEVICE_DATA | 34 | 1 | 1 | +| heatdrainpan | heat drain pan | boolean | | true | DEVICE_DATA | 35 | 1 | 1 | +| heatcable | heating cable | boolean | | true | DEVICE_DATA | 36 | 1 | 1 | +| nrgtotal | total energy | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | | dhw.nrg | energy | uint24 | kWh | false | DHW | 1 | 2 | 1/100 | -| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 35 | 2 | 1/100 | -| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 37 | 2 | 1/100 | -| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | -| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | -| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| nrgheat | energy heating | uint24 | kWh | false | DEVICE_DATA | 39 | 2 | 1/100 | +| metertotal | meter total | uint24 | kWh | false | DEVICE_DATA | 41 | 2 | 1/100 | +| metercomp | meter compressor | uint24 | kWh | false | DEVICE_DATA | 43 | 2 | 1/100 | +| metereheat | meter e-heater | uint24 | kWh | false | DEVICE_DATA | 45 | 2 | 1/100 | +| meterheat | meter heating | uint24 | kWh | false | DEVICE_DATA | 47 | 2 | 1/100 | | dhw.meter | meter | uint24 | kWh | false | DHW | 3 | 2 | 1/100 | -| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 45 | 2 | 1 | +| heatingstarts | heating control starts | uint24 | | false | DEVICE_DATA | 49 | 2 | 1 | | dhw.startshp | starts hp | uint24 | | false | DHW | 5 | 2 | 1 | -| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 47 | 2 | 1/10 | +| fuelheat | fuel consumption heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | | dhw.fueldhw | fuel consumption | uint32 | kWh | false | DHW | 7 | 2 | 1/10 | -| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 49 | 2 | 1/10 | +| elheat | el. consumption heating | uint32 | kWh | false | DEVICE_DATA | 53 | 2 | 1/10 | | dhw.eldhw | el. consumption | uint32 | kWh | false | DHW | 9 | 2 | 1/10 | -| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 51 | 2 | 1/10 | +| elgenheat | el. generation heating | uint32 | kWh | false | DEVICE_DATA | 55 | 2 | 1/10 | | dhw.elgendhw | el generation | uint32 | kWh | false | DHW | 11 | 2 | 1/10 | ## Devices of type \_switch diff --git a/docs/dump_entities.csv b/docs/dump_entities.csv index 59c3ed53f..cc0601e50 100644 --- a/docs/dump_entities.csv +++ b/docs/dump_entities.csv @@ -5767,36 +5767,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "HP Module",heatpump,252,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 "HP Module",heatpump,252,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 "HP Module",heatpump,252,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 -"HP Module",heatpump,252,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,19,1 -"HP Module",heatpump,252,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,20,1 -"HP Module",heatpump,252,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,21,1 -"HP Module",heatpump,252,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,22,1 +"HP Module",heatpump,252,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,1/10,19,1 +"HP Module",heatpump,252,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 +"HP Module",heatpump,252,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 +"HP Module",heatpump,252,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 +"HP Module",heatpump,252,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,23,1 +"HP Module",heatpump,252,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,24,1 +"HP Module",heatpump,252,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,25,1 +"HP Module",heatpump,252,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,26,1 "HP Module",heatpump,252,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort] (>=0<=0), ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,10,9,1,0,1 -"HP Module",heatpump,252,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,23,1 -"HP Module",heatpump,252,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,24,1 -"HP Module",heatpump,252,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,25,1 -"HP Module",heatpump,252,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,26,1 -"HP Module",heatpump,252,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,27,1 -"HP Module",heatpump,252,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,28,1 -"HP Module",heatpump,252,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,29,1 -"HP Module",heatpump,252,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,30,1 -"HP Module",heatpump,252,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,31,1 -"HP Module",heatpump,252,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,32,1 -"HP Module",heatpump,252,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,33,2 +"HP Module",heatpump,252,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,27,1 +"HP Module",heatpump,252,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,28,1 +"HP Module",heatpump,252,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,29,1 +"HP Module",heatpump,252,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,30,1 +"HP Module",heatpump,252,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,31,1 +"HP Module",heatpump,252,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,32,1 +"HP Module",heatpump,252,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,33,1 +"HP Module",heatpump,252,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,34,1 +"HP Module",heatpump,252,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,35,1 +"HP Module",heatpump,252,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,36,1 +"HP Module",heatpump,252,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,37,2 "HP Module",heatpump,252,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,10,9,1/100,1,2 -"HP Module",heatpump,252,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,35,2 -"HP Module",heatpump,252,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,37,2 -"HP Module",heatpump,252,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,39,2 -"HP Module",heatpump,252,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,41,2 -"HP Module",heatpump,252,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,43,2 +"HP Module",heatpump,252,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,39,2 +"HP Module",heatpump,252,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,41,2 +"HP Module",heatpump,252,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,43,2 +"HP Module",heatpump,252,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,45,2 +"HP Module",heatpump,252,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,47,2 "HP Module",heatpump,252,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,10,9,1/100,3,2 -"HP Module",heatpump,252,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,45,2 +"HP Module",heatpump,252,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,49,2 "HP Module",heatpump,252,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,10,9,1,5,2 -"HP Module",heatpump,252,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,47,2 +"HP Module",heatpump,252,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,51,2 "HP Module",heatpump,252,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,10,9,1/10,7,2 -"HP Module",heatpump,252,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,49,2 +"HP Module",heatpump,252,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,53,2 "HP Module",heatpump,252,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,10,9,1/10,9,2 -"HP Module",heatpump,252,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,51,2 +"HP Module",heatpump,252,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,55,2 "HP Module",heatpump,252,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,10,9,1/10,11,2 "Hybrid Manager HM200",heatpump,248,airhumidity,relative air humidity,uint8,%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,10,0,1,0,1 "Hybrid Manager HM200",heatpump,248,dewtemperature,dew point temperature,uint8,C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,10,0,1,1,1 @@ -5817,36 +5821,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "Hybrid Manager HM200",heatpump,248,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 "Hybrid Manager HM200",heatpump,248,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 "Hybrid Manager HM200",heatpump,248,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 -"Hybrid Manager HM200",heatpump,248,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,19,1 -"Hybrid Manager HM200",heatpump,248,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,20,1 -"Hybrid Manager HM200",heatpump,248,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,21,1 -"Hybrid Manager HM200",heatpump,248,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,22,1 +"Hybrid Manager HM200",heatpump,248,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,1/10,19,1 +"Hybrid Manager HM200",heatpump,248,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 +"Hybrid Manager HM200",heatpump,248,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 +"Hybrid Manager HM200",heatpump,248,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 +"Hybrid Manager HM200",heatpump,248,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,23,1 +"Hybrid Manager HM200",heatpump,248,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,24,1 +"Hybrid Manager HM200",heatpump,248,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,25,1 +"Hybrid Manager HM200",heatpump,248,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,26,1 "Hybrid Manager HM200",heatpump,248,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort] (>=0<=0), ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,10,9,1,0,1 -"Hybrid Manager HM200",heatpump,248,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,23,1 -"Hybrid Manager HM200",heatpump,248,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,24,1 -"Hybrid Manager HM200",heatpump,248,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,25,1 -"Hybrid Manager HM200",heatpump,248,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,26,1 -"Hybrid Manager HM200",heatpump,248,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,27,1 -"Hybrid Manager HM200",heatpump,248,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,28,1 -"Hybrid Manager HM200",heatpump,248,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,29,1 -"Hybrid Manager HM200",heatpump,248,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,30,1 -"Hybrid Manager HM200",heatpump,248,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,31,1 -"Hybrid Manager HM200",heatpump,248,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,32,1 -"Hybrid Manager HM200",heatpump,248,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,33,2 +"Hybrid Manager HM200",heatpump,248,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,27,1 +"Hybrid Manager HM200",heatpump,248,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,28,1 +"Hybrid Manager HM200",heatpump,248,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,29,1 +"Hybrid Manager HM200",heatpump,248,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,30,1 +"Hybrid Manager HM200",heatpump,248,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,31,1 +"Hybrid Manager HM200",heatpump,248,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,32,1 +"Hybrid Manager HM200",heatpump,248,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,33,1 +"Hybrid Manager HM200",heatpump,248,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,34,1 +"Hybrid Manager HM200",heatpump,248,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,35,1 +"Hybrid Manager HM200",heatpump,248,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,36,1 +"Hybrid Manager HM200",heatpump,248,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,37,2 "Hybrid Manager HM200",heatpump,248,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,10,9,1/100,1,2 -"Hybrid Manager HM200",heatpump,248,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,35,2 -"Hybrid Manager HM200",heatpump,248,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,37,2 -"Hybrid Manager HM200",heatpump,248,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,39,2 -"Hybrid Manager HM200",heatpump,248,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,41,2 -"Hybrid Manager HM200",heatpump,248,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,43,2 +"Hybrid Manager HM200",heatpump,248,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,39,2 +"Hybrid Manager HM200",heatpump,248,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,41,2 +"Hybrid Manager HM200",heatpump,248,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,43,2 +"Hybrid Manager HM200",heatpump,248,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,45,2 +"Hybrid Manager HM200",heatpump,248,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,47,2 "Hybrid Manager HM200",heatpump,248,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,10,9,1/100,3,2 -"Hybrid Manager HM200",heatpump,248,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,45,2 +"Hybrid Manager HM200",heatpump,248,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,49,2 "Hybrid Manager HM200",heatpump,248,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,10,9,1,5,2 -"Hybrid Manager HM200",heatpump,248,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,47,2 +"Hybrid Manager HM200",heatpump,248,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,51,2 "Hybrid Manager HM200",heatpump,248,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,10,9,1/10,7,2 -"Hybrid Manager HM200",heatpump,248,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,49,2 +"Hybrid Manager HM200",heatpump,248,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,53,2 "Hybrid Manager HM200",heatpump,248,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,10,9,1/10,9,2 -"Hybrid Manager HM200",heatpump,248,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,51,2 +"Hybrid Manager HM200",heatpump,248,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,55,2 "Hybrid Manager HM200",heatpump,248,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,10,9,1/10,11,2 "CSH5800iG",heatpump,16,airhumidity,relative air humidity,uint8,%,false,sensor.heatpump_relative_air_humidity,sensor.heatpump_airhumidity,10,0,1,0,1 "CSH5800iG",heatpump,16,dewtemperature,dew point temperature,uint8,C,false,sensor.heatpump_dew_point_temperature,sensor.heatpump_dewtemperature,10,0,1,1,1 @@ -5867,36 +5875,40 @@ device name,device type,product id,shortname,fullname,type [options...] \| (min/ "CSH5800iG",heatpump,16,hpactivity,compressor activity,enum [off\|heating\|hot water\|defrost\|compressor alarm], ,false,sensor.heatpump_compressor_activity,sensor.heatpump_hpactivity,10,0,1,16,1 "CSH5800iG",heatpump,16,hppower,compressor power output,uint16,W,false,sensor.heatpump_compressor_power_output,sensor.heatpump_hppower,10,0,1,17,1 "CSH5800iG",heatpump,16,hpcurrpower,compressor current power,uint16,W,false,sensor.heatpump_compressor_current_power,sensor.heatpump_hpcurrpower,10,0,1,18,1 -"CSH5800iG",heatpump,16,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,19,1 -"CSH5800iG",heatpump,16,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,20,1 -"CSH5800iG",heatpump,16,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,21,1 -"CSH5800iG",heatpump,16,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,22,1 +"CSH5800iG",heatpump,16,hppumpflow,volume flow,uint16,l/h,false,sensor.heatpump_volume_flow,sensor.heatpump_hppumpflow,10,0,1/10,19,1 +"CSH5800iG",heatpump,16,hpcompspder1,compressor speed ER1,uint8,%,false,sensor.heatpump_compressor_speed_ER1,sensor.heatpump_hpcompspder1,10,0,1,20,1 +"CSH5800iG",heatpump,16,hpSpeedSetpoint,speed setpoint,uint8,%,false,sensor.heatpump_speed_setpoint,sensor.heatpump_hpSpeedSetpoint,10,0,1,21,1 +"CSH5800iG",heatpump,16,smartgridmode,smart grid mode,uint8, ,false,sensor.heatpump_smart_grid_mode,sensor.heatpump_smartgridmode,10,0,1,22,1 +"CSH5800iG",heatpump,16,hybridstrategy,hybrid control strategy,enum [cost optimized\|co2 optimized\|outside temperature alt.\|outside temperature parallel\|heatpump preferred\|boiler only] (>=0<=0), ,true,select.heatpump_hybrid_control_strategy,select.heatpump_hybridstrategy,10,0,1,23,1 +"CSH5800iG",heatpump,16,lownoisemode,low noise mode,enum [off\|reduced output\|switch off hp\|perm. reduced] (>=0<=0), ,true,select.heatpump_low_noise_mode,select.heatpump_lownoisemode,10,0,1,24,1 +"CSH5800iG",heatpump,16,lownoisestart,low noise starttime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_starttime,number.heatpump_lownoisestart,10,0,1,25,1 +"CSH5800iG",heatpump,16,lownoisestop,low noise stoptime,uint8 (>=0<=23),hours,true,number.heatpump_low_noise_stoptime,number.heatpump_lownoisestop,10,0,1,26,1 "CSH5800iG",heatpump,16,dhw.hybriddhw,hybrid DHW,enum [eco\|high comfort] (>=0<=0), ,true,select.heatpump_dhw_hybrid_DHW,select.heatpump_dhw_hybriddhw,10,9,1,0,1 -"CSH5800iG",heatpump,16,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,23,1 -"CSH5800iG",heatpump,16,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,24,1 -"CSH5800iG",heatpump,16,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,25,1 -"CSH5800iG",heatpump,16,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,26,1 -"CSH5800iG",heatpump,16,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,27,1 -"CSH5800iG",heatpump,16,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,28,1 -"CSH5800iG",heatpump,16,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,29,1 -"CSH5800iG",heatpump,16,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,30,1 -"CSH5800iG",heatpump,16,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,31,1 -"CSH5800iG",heatpump,16,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,32,1 -"CSH5800iG",heatpump,16,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,33,2 +"CSH5800iG",heatpump,16,energypricegas,energy price gas,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_gas,number.heatpump_energypricegas,10,0,1,27,1 +"CSH5800iG",heatpump,16,energypriceel,energy price electric,uint8 (>=0<=0),ct/kWh,true,number.heatpump_energy_price_electric,number.heatpump_energypriceel,10,0,1,28,1 +"CSH5800iG",heatpump,16,energyfeedpv,feed in PV,uint8 (>=0<=0),ct/kWh,true,number.heatpump_feed_in_PV,number.heatpump_energyfeedpv,10,0,1,29,1 +"CSH5800iG",heatpump,16,switchovertemp,outside switchover temperature,int8 (>=0<=0),C,true,number.heatpump_outside_switchover_temperature,number.heatpump_switchovertemp,10,0,1,30,1 +"CSH5800iG",heatpump,16,airpurgemode,air purge mode,boolean (>=0<=0), ,true,switch.heatpump_air_purge_mode,switch.heatpump_airpurgemode,10,0,1,31,1 +"CSH5800iG",heatpump,16,heatpumpoutput,heatpump output,uint8 (>=0<=0),%,true,number.heatpump_heatpump_output,number.heatpump_heatpumpoutput,10,0,1,32,1 +"CSH5800iG",heatpump,16,coolingcircuit,cooling circuit,boolean (>=0<=0), ,true,switch.heatpump_cooling_circuit,switch.heatpump_coolingcircuit,10,0,1,33,1 +"CSH5800iG",heatpump,16,compstartmod,compressor start modulation,uint8 (>=0<=0),%,true,number.heatpump_compressor_start_modulation,number.heatpump_compstartmod,10,0,1,34,1 +"CSH5800iG",heatpump,16,heatdrainpan,heat drain pan,boolean (>=0<=0), ,true,switch.heatpump_heat_drain_pan,switch.heatpump_heatdrainpan,10,0,1,35,1 +"CSH5800iG",heatpump,16,heatcable,heating cable,boolean (>=0<=0), ,true,switch.heatpump_heating_cable,switch.heatpump_heatcable,10,0,1,36,1 +"CSH5800iG",heatpump,16,nrgtotal,total energy,uint24,kWh,false,sensor.heatpump_total_energy,sensor.heatpump_nrgtotal,10,0,1/100,37,2 "CSH5800iG",heatpump,16,dhw.nrg,energy,uint24,kWh,false,sensor.heatpump_dhw_energy,sensor.heatpump_dhw_nrg,10,9,1/100,1,2 -"CSH5800iG",heatpump,16,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,35,2 -"CSH5800iG",heatpump,16,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,37,2 -"CSH5800iG",heatpump,16,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,39,2 -"CSH5800iG",heatpump,16,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,41,2 -"CSH5800iG",heatpump,16,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,43,2 +"CSH5800iG",heatpump,16,nrgheat,energy heating,uint24,kWh,false,sensor.heatpump_energy_heating,sensor.heatpump_nrgheat,10,0,1/100,39,2 +"CSH5800iG",heatpump,16,metertotal,meter total,uint24,kWh,false,sensor.heatpump_meter_total,sensor.heatpump_metertotal,10,0,1/100,41,2 +"CSH5800iG",heatpump,16,metercomp,meter compressor,uint24,kWh,false,sensor.heatpump_meter_compressor,sensor.heatpump_metercomp,10,0,1/100,43,2 +"CSH5800iG",heatpump,16,metereheat,meter e-heater,uint24,kWh,false,sensor.heatpump_meter_e-heater,sensor.heatpump_metereheat,10,0,1/100,45,2 +"CSH5800iG",heatpump,16,meterheat,meter heating,uint24,kWh,false,sensor.heatpump_meter_heating,sensor.heatpump_meterheat,10,0,1/100,47,2 "CSH5800iG",heatpump,16,dhw.meter,meter,uint24,kWh,false,sensor.heatpump_dhw_meter,sensor.heatpump_dhw_meter,10,9,1/100,3,2 -"CSH5800iG",heatpump,16,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,45,2 +"CSH5800iG",heatpump,16,heatingstarts,heating control starts,uint24, ,false,sensor.heatpump_heating_control_starts,sensor.heatpump_heatingstarts,10,0,1,49,2 "CSH5800iG",heatpump,16,dhw.startshp,starts hp,uint24, ,false,sensor.heatpump_dhw_starts_hp,sensor.heatpump_dhw_startshp,10,9,1,5,2 -"CSH5800iG",heatpump,16,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,47,2 +"CSH5800iG",heatpump,16,fuelheat,fuel consumption heating,uint32,kWh,false,sensor.heatpump_fuel_consumption_heating,sensor.heatpump_fuelheat,10,0,1/10,51,2 "CSH5800iG",heatpump,16,dhw.fueldhw,fuel consumption,uint32,kWh,false,sensor.heatpump_dhw_fuel_consumption,sensor.heatpump_dhw_fueldhw,10,9,1/10,7,2 -"CSH5800iG",heatpump,16,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,49,2 +"CSH5800iG",heatpump,16,elheat,el. consumption heating,uint32,kWh,false,sensor.heatpump_el._consumption_heating,sensor.heatpump_elheat,10,0,1/10,53,2 "CSH5800iG",heatpump,16,dhw.eldhw,el. consumption,uint32,kWh,false,sensor.heatpump_dhw_el._consumption,sensor.heatpump_dhw_eldhw,10,9,1/10,9,2 -"CSH5800iG",heatpump,16,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,51,2 +"CSH5800iG",heatpump,16,elgenheat,el. generation heating,uint32,kWh,false,sensor.heatpump_el._generation_heating,sensor.heatpump_elgenheat,10,0,1/10,55,2 "CSH5800iG",heatpump,16,dhw.elgendhw,el generation,uint32,kWh,false,sensor.heatpump_dhw_el_generation,sensor.heatpump_dhw_elgendhw,10,9,1/10,11,2 "WM10",switch,71,activated,activated,boolean, ,false,binary_sensor.switch_activated,binary_sensor.switch_activated,12,0,1,0,1 "WM10",switch,71,flowtemphc,flow temperature (TC1),uint16,C,false,sensor.switch_flow_temperature_(TC1),sensor.switch_flowtemphc,12,0,1/10,1,1 diff --git a/docs/dump_telegrams.csv b/docs/dump_telegrams.csv index 7a2652abf..5050e8fc0 100644 --- a/docs/dump_telegrams.csv +++ b/docs/dump_telegrams.csv @@ -29,7 +29,7 @@ telegram_type_id,name,is_fetched 0x3B,Energy, 0x3D,RC35Set, 0x3E,RC35Monitor, -0x3F,RC35Timer, +0x3F,RC30Timer, 0x40,RC30Temp, 0x41,RC30Monitor, 0x42,RC35Timer2, @@ -104,7 +104,7 @@ telegram_type_id,name,is_fetched 0x0292,HPMode,fetched 0x0293,HPMode,fetched 0x0294,HPMode,fetched -0x029B,RC300Curves,fetched +0x029B,RC300Curves, 0x029C,RC300Curves, 0x029D,RC300Curves, 0x029E,RC300Curves, @@ -112,10 +112,10 @@ telegram_type_id,name,is_fetched 0x02A0,RC300Curves, 0x02A1,RC300Curves, 0x02A2,RC300Curves, -0x02A5,RC300Monitor, +0x02A5,EasyMonitor, 0x02A6,RC300Monitor, 0x02A7,RC300Monitor, -0x02A8,RC300Monitor, +0x02A8,CRFMonitor, 0x02A9,RC300Monitor, 0x02AA,RC300Monitor, 0x02AB,RC300Monitor, @@ -232,4 +232,6 @@ telegram_type_id,name,is_fetched 0x099A,HPStarts, 0x099B,HPFlowTemp, 0x099C,HPComp, +0x099D,HPComp2, 0x09A0,HPTemperature, +0x09A8,HPVolume, diff --git a/src/core/locale_translations.h b/src/core/locale_translations.h index e21435991..ff57f7b87 100644 --- a/src/core/locale_translations.h +++ b/src/core/locale_translations.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * Copyright 2020-2026 emsesp.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -650,9 +650,13 @@ MAKE_TRANSLATION(powerReduction, "powerreduction", "power reduction", "Leistungs MAKE_TRANSLATION(fuelHeat, "fuelheat", "fuel consumption heating", "Verbrauch Heizen", "", "Bränsleförbrukning värme", "", "", "", "", "", "obmedzenie výkonu", "omezení výkonu") MAKE_TRANSLATION(fuelDhw, "fueldhw", "fuel consumption", "Verbrauch", "", "Bränsleförbrukning varmvatten", "", "", "", "", "", "spotreba paliva", "spotřeba paliva") MAKE_TRANSLATION(elHeat, "elheat", "el. consumption heating", "el. Verbrauch Heizen", "", "Elförbrukning värme", "", "", "", "", "", "el. spotreba kúrenie", "") -MAKE_TRANSLATION(elDhw, "eldhw", "el. consumption", "el. Verbrauch", "", "Elförbrukning varmvatten", "", "", "", "", "", "el. spotreba", "") +MAKE_TRANSLATION(elDhw, "eldhw", "el. consumption", "el. Verbrauch", "", "Elförbrukning varmvatten", "", "", "", "", "", "el. spotreba", "") MAKE_TRANSLATION(elGenHeat, "elgenheat", "el. generation heating", "el. Erzeugung Heizen", "", "Elgenerering värme", "", "", "", "", "", "el. generovanie kúrenia", "") MAKE_TRANSLATION(elGenDhw, "elgendhw", "el generation", "el. Erzeugung", "", "Elgenerering varmvatten", "", "", "", "", "", "el. generovanie", "") +MAKE_TRANSLATION(hpPumpFlow, "hppumpflow", "volume flow", "Volumenstrom", "", "Volumenstrom", "", "", "", "", "", "objemový průtok", "objemový průtok") +MAKE_TRANSLATION(hpCompSpdER1, "hpcompspder1", "compressor speed ER1", "Kompressordrehzahl ER1", "", "Kompressordrehzahl ER1", "", "", "", "", "", "otáčky kompresoru ER1", "otáčky kompresoru ER1") +MAKE_TRANSLATION(hpSpeedSetpoint, "hpSpeedSetpoint", "speed setpoint", "Geschwindigkeitsteller", "", "Geschwindigkeitsteller", "", "", "", "", "", "nastavená rychlost", "nastavená rychlost") +MAKE_TRANSLATION(smartGridMode, "smartgridmode", "smart grid mode", "Smart Grid Modus", "", "Smart Grid Modus", "", "", "", "", "", "smart grid modus", "smart grid modus") // HIU MAKE_TRANSLATION(netFlowTemp, "netflowtemp", "heat network flow temp", "Systemvorlauftemperatur", "Netto aanvoertemperatuur", "Temperatur fjärrvärmenät", "temp. zasilania sieci cieplnej", "", "", "ısıtma şebekesi akış derecesi", "temperatura di mandata della rete di riscaldamento", "teplota prívodu tepelnej siete", "teplota přívodu tepelné sítě") diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp index db15b7df3..7d508bd39 100644 --- a/src/devices/heatpump.cpp +++ b/src/devices/heatpump.cpp @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * Copyright 2020-2026 emsesp.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,6 +16,30 @@ * along with this program. If not, see . */ +/* + + * Broadcast (0x099A), data: 05 00 00 00 00 00 00 37 00 00 1D 00 00 52 00 00 13 01 00 01 7C + * Broadcast (0x099B), data: 80 00 80 00 01 3C 01 38 80 00 80 00 80 00 01 37 00 00 00 00 64 + * Broadcast (0x099C), data: 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 76 00 00 + data: 00 2B 00 03 04 13 00 00 00 00 00 02 02 02 (offset 24) + * Broadcast (0x099D), data: 02 02 00 00 02 00 01 38 00 00 63 03 E8 00 00 00 00 + * Broadcast (0x099E), data: 03 + * Broadcast (0x099F), data 05 4E 20 00 00 00 00 02 00 01 34 00 00 3F 00 00 5C 00 01 DD 00 01 37 00 + data 00 3F 00 00 5D 00 00 57 00 02 23 00 01 3D 02 80 00 5A 01 86 01 68 00 00 C0 (offset 24) + data 00 00 00 00 (offset 49) + * Broadcast (0x09A0), data: 02 23 01 3E 01 39 00 5D 01 DE 01 38 00 40 00 5E 00 58 00 3F 01 34 00 02 + * Broadcast (0x09A2), data: 00 00 00 00 + * Broadcast (0x09A3), data: 01 01 01 00 0A 01 0A 00 00 00 00 00 00 01 01 00 00 (offset 2) + * Broadcast (0x09A4), data: 00 35 00 00 01 42 00 00 00 00 30 01 00 00 00 00 00 00 00 00 00 00 00 00 00 + data: 02 (offset 25) + * Broadcast (0x09A5), data: 00 00 00 00 00 00 00 00 0A 01 00 01 03 03 00 5A 00 00 00 00 00 00 00 00 14 + data: 00 00 00 (offset 25) + * Broadcast (0x09A6), data: 05 01 00 01 F4 1F 01 1F 01 01 03 00 3F 00 00 00 19 64 00 3C 00 01 01 19 + data: 02 EC 01 19 00 (offset 24) + * Broadcast (0x09A8), data: 01 18 01 00 01 17 00 06 00 00 86 06 00 2E 07 D0 00 00 00 45 00 04 + +*/ + #include "heatpump.h" namespace emsesp { @@ -26,8 +50,7 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { // telegram handlers // register_telegram_type(0x042B, "HP1", false, MAKE_PF_CB(process_HPMonitor1)); - register_telegram_type(0x047B, "HP2", false, MAKE_PF_CB(process_HPMonitor2)); - + register_telegram_type(0x47B, "HP2", false, MAKE_PF_CB(process_HPMonitor2)); register_telegram_type(0x998, "HPSettings", true, MAKE_PF_CB(process_HPSettings), 20); register_telegram_type(0x999, "HPFunctionTest", true, MAKE_PF_CB(process_HPFunctionTest), 11); register_telegram_type(0x9A0, "HPTemperature", false, MAKE_PF_CB(process_HPTemperature)); @@ -39,6 +62,9 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c register_telegram_type(0x12E, "HPEnergy1", false, MAKE_PF_CB(process_HpEnergy1)); register_telegram_type(0x13B, "HPEnergy2", false, MAKE_PF_CB(process_HpEnergy2)); register_telegram_type(0x4AA, "HPPower", false, MAKE_PF_CB(process_HpPower)); + register_telegram_type(0x9A8, "HPVolume", false, MAKE_PF_CB(process_HPVolume)); + register_telegram_type(0x99D, "HPComp2", false, MAKE_PF_CB(process_HPComp2)); + register_telegram_type(0x4AA, "HPPower", false, MAKE_PF_CB(process_HpPower)); // device values register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &airHumidity_, DeviceValueType::UINT8, FL_(airHumidity), DeviceValueUOM::PERCENT); @@ -74,6 +100,17 @@ Heatpump::Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, c register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpPower_, DeviceValueType::UINT16, FL_(hpPower), DeviceValueUOM::W); register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCurrPower_, DeviceValueType::UINT16, FL_(hpCurrPower), DeviceValueUOM::W); + // https://github.com/emsesp/EMS-ESP32/issues/3196 + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, + &hpPumpFlow_, + DeviceValueType::UINT16, + DeviceValueNumOp::DV_NUMOP_DIV10, + FL_(hpPumpFlow), + DeviceValueUOM::LH); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpCompSpdER1_, DeviceValueType::UINT8, FL_(hpCompSpdER1), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &hpSpeedSetpoint_, DeviceValueType::UINT8, FL_(hpSpeedSetpoint), DeviceValueUOM::PERCENT); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &smartGridMode_, DeviceValueType::UINT8, FL_(smartGridMode), DeviceValueUOM::NONE); + register_device_value(DeviceValueTAG::TAG_DEVICE_DATA, &controlStrategy_, DeviceValueType::ENUM, @@ -220,16 +257,17 @@ void Heatpump::process_HPMonitor1(const std::shared_ptr & telegr // 0x09A0 // Heatpump(0x53) -> All(0x00), ?(0x09A0), data: 02 23 01 3E 01 39 00 5D 01 DE 01 38 00 40 00 5E 00 58 00 3F 01 34 00 02 void Heatpump::process_HPTemperature(const std::shared_ptr & telegram) { - has_update(telegram, hpTc3_, 2); // condenser temp. - has_update(telegram, hpTr1_, 8); // compressor temp. - has_update(telegram, hpTr3_, 10); // cond. temp. heating - has_update(telegram, hpTr4_, 12); // cond. temp. clg - has_update(telegram, hpTr5_, 14); // suction line temp. - has_update(telegram, hpTr6_, 0); // hot gas temp. - has_update(telegram, hpTl2_, 6); // inlet air temperature - has_update(telegram, hpTa4_, 16); // drain pan temp. - has_update(telegram, hpJr0_, 18); // low pressure sensor - has_update(telegram, hpJr1_, 20); // high pressure sensor + has_update(telegram, hpTc3_, 2); // condenser temp. + has_update(telegram, hpTr1_, 8); // compressor temp. + has_update(telegram, hpTr3_, 10); // cond. temp. heating + has_update(telegram, hpTr4_, 12); // cond. temp. clg + has_update(telegram, hpTr5_, 14); // suction line temp. + has_update(telegram, hpTr6_, 0); // hot gas temp. + has_update(telegram, hpTl2_, 6); // inlet air temperature + has_update(telegram, hpTa4_, 16); // drain pan temp. + has_update(telegram, hpJr0_, 18); // low pressure sensor + has_update(telegram, hpJr1_, 20); // high pressure sensor + has_update(telegram, hpCompSpdER1_, 22); // compressor speed ER1 } // 0x099B @@ -298,6 +336,7 @@ void Heatpump::process_HpStarts(const std::shared_ptr & telegram has_update(telegram, hpActivity_, 2); // https://github.com/emsesp/EMS-ESP32/issues/2883 has_update(telegram, heatStartsHp_, 11, 3); has_update(telegram, wwStartsHp_, 14, 3); + has_update(telegram, smartGridMode_, 17); // smart grid mode } // 0x0112E energy consumption @@ -320,28 +359,22 @@ void Heatpump::process_HpPower(const std::shared_ptr & telegram) has_update(telegram, hpCurrPower_, 0); } -/* - * Broadcast (0x099A), data: 05 00 00 00 00 00 00 37 00 00 1D 00 00 52 00 00 13 01 00 01 7C - * Broadcast (0x099B), data: 80 00 80 00 01 3C 01 38 80 00 80 00 80 00 01 37 00 00 00 00 64 - * Broadcast (0x099C), data: 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 76 00 00 - data: 00 2B 00 03 04 13 00 00 00 00 00 02 02 02 (offset 24) - * Broadcast (0x099D), data: 02 02 00 00 02 00 01 38 00 00 63 03 E8 00 00 00 00 - * Broadcast (0x099E), data: 03 - * Broadcast (0x099F), data 05 4E 20 00 00 00 00 02 00 01 34 00 00 3F 00 00 5C 00 01 DD 00 01 37 00 - data 00 3F 00 00 5D 00 00 57 00 02 23 00 01 3D 02 80 00 5A 01 86 01 68 00 00 C0 (offset 24) - data 00 00 00 00 (offset 49) - * Broadcast (0x09A0), data: 02 23 01 3E 01 39 00 5D 01 DE 01 38 00 40 00 5E 00 58 00 3F 01 34 00 02 - * Broadcast (0x09A2), data: 00 00 00 00 - * Broadcast (0x09A3), data: 01 01 01 00 0A 01 0A 00 00 00 00 00 00 01 01 00 00 (offset 2) - * Broadcast (0x09A4), data: 00 35 00 00 01 42 00 00 00 00 30 01 00 00 00 00 00 00 00 00 00 00 00 00 00 - data: 02 (offset 25) - * Broadcast (0x09A5), data: 00 00 00 00 00 00 00 00 0A 01 00 01 03 03 00 5A 00 00 00 00 00 00 00 00 14 - data: 00 00 00 (offset 25) - * Broadcast (0x09A6), data: 05 01 00 01 F4 1F 01 1F 01 01 03 00 3F 00 00 00 19 64 00 3C 00 01 01 19 - data: 02 EC 01 19 00 (offset 24) - * Broadcast (0x09A8), data: 01 18 01 00 01 17 00 06 00 00 86 06 00 2E 07 D0 00 00 00 45 00 04 - -*/ +// https://github.com/emsesp/EMS-ESP32/issues/3196 +// 0x09A8 HPVolume +// Broadcast (0x09A8), data: 01 18 01 00 01 17 00 06 00 00 86 06 00 2E 07 D0 00 00 00 45 00 04 +void Heatpump::process_HPVolume(const std::shared_ptr & telegram) { + has_update(telegram, hpPumpFlow_, 12); +} + +// 0x099D HPComp2 +// Broadcast (0x099D), data: 02 02 00 00 02 00 01 38 00 00 63 03 E8 00 00 00 00 +void Heatpump::process_HPComp2(const std::shared_ptr & telegram) { + has_update(telegram, hpSpeedSetpoint_, 8); +} + +// +// Setters +// bool Heatpump::set_controlStrategy(const char * value, const int8_t id) { uint8_t v; diff --git a/src/devices/heatpump.h b/src/devices/heatpump.h index bce29aaa1..8163facb1 100644 --- a/src/devices/heatpump.h +++ b/src/devices/heatpump.h @@ -1,6 +1,6 @@ /* * EMS-ESP - https://github.com/emsesp/EMS-ESP - * Copyright 2020-2025 emsesp.org + * Copyright 2020-2026 emsesp.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -44,12 +44,16 @@ class Heatpump : public EMSdevice { uint8_t heatingPumpMod_; uint8_t hpCompSpd_; uint8_t hpActivity_; + uint8_t hpCompSpdER1_; // TODO: could be same as hpCompSpd_ ? uint16_t hpPower_; uint16_t hpCurrPower_; + uint16_t hpPumpFlow_; + uint8_t hpSpeedSetpoint_; // Function test uint8_t airPurgeMode_; + uint8_t smartGridMode_; uint8_t heatPumpOutput_; uint8_t coolingCircuit_; uint8_t compStartMod_; @@ -102,6 +106,8 @@ class Heatpump : public EMSdevice { void process_HpEnergy1(const std::shared_ptr & telegram); void process_HpEnergy2(const std::shared_ptr & telegram); void process_HpPower(const std::shared_ptr & telegram); + void process_HPVolume(const std::shared_ptr & telegram); + void process_HPComp2(const std::shared_ptr & telegram); bool set_controlStrategy(const char * value, const int8_t id); bool set_lowNoiseMode(const char * value, const int8_t id); diff --git a/src/emsesp_version.h b/src/emsesp_version.h index dd02903f5..a731a45b3 100644 --- a/src/emsesp_version.h +++ b/src/emsesp_version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "3.9.0-dev.14" +#define EMSESP_APP_VERSION "3.9.0-dev.15"