Some progress!
I have figured out that many parameters for reading are also for writing.
At first the full addresslist I have discovered and tested:
modbus:
- name: "ecoforest"
delay: 5
type: serial
method: rtu
port: /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0
baudrate: 19200
stopbits: 2
bytesize: 8
parity: N
binary_sensors:
- name: heatpump_alarm
slave: 17
address: 50
lazy_error_count: 10
- name: Heatpump Summer
slave: 17
address: 127
lazy_error_count: 10
- name: Heatpump Winter
slave: 17
address: 128
lazy_error_count: 10
- name: Heatpump on/off control by BUS
slave: 17
address: 53
lazy_error_count: 10
sensors:
- name: Heatpump Buitentemperatuur
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 11
lazy_error_count: 10
data_type: int16
- name: Heatpump Boiler
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 8
lazy_error_count: 10
data_type: int16
- name: Heatpump Pressure Brine
unit_of_measurement: Bar
scale: 0.1
precision: 1
slave: 17
address: 13
lazy_error_count: 10
data_type: int16
- name: Heatpump Pressure Heating
unit_of_measurement: Bar
scale: 0.1
precision: 1
slave: 17
address: 14
lazy_error_count: 10
data_type: int16
- name: Heatpump Brine air outlet
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 29
lazy_error_count: 10
data_type: int16
- name: Heatpump Brine out
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 1
lazy_error_count: 10
data_type: int16
- name: Heatpump Brine in
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 2
lazy_error_count: 10
data_type: int16
- name: Heatpump Heating out
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 3
lazy_error_count: 10
data_type: int16
- name: Heatpump Heating in
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 4
lazy_error_count: 10
data_type: int16
- name: Heatpump Compressor suction temperature
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 5
lazy_error_count: 10
data_type: int16
- name: Heatpump Compresor suction pressure
unit_of_measurement: Bar
scale: 0.1
precision: 1
slave: 17
address: 6
lazy_error_count: 10
data_type: int16
- name: Heatpump Compressor discharge pressure
unit_of_measurement: Bar
scale: 0.1
precision: 1
slave: 17
address: 7
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation temperature
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 94
lazy_error_count: 10
data_type: int16
- name: Heatpump Thermal Power DHW Min
unit_of_measurement: "%"
scale: 0.1
slave: 17
address: 74
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump Thermal Power DHW Max
unit_of_measurement: "%"
scale: 0.1
slave: 17
address: 75
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump Thermal Power Heating Min
unit_of_measurement: "%"
scale: 0.1
slave: 17
address: 76
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump Thermal Power Heating Max
unit_of_measurement: "%"
scale: 0.1
slave: 17
address: 77
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump Thermal Power Cooling Min
unit_of_measurement: "%"
scale: 0.1
slave: 17
address: 78
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump Thermal Power Cooling Max
unit_of_measurement: "%"
scale: 0.1
slave: 17
address: 79
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump Thermal Power Pool Min
unit_of_measurement: "%"
scale: 0.1
slave: 17
address: 80
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump Thermal Power Pool Max
unit_of_measurement: "%"
scale: 0.1
slave: 17
address: 81
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump Superheat
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 132
lazy_error_count: 10
data_type: int16
- name: Heatpump Expansion valve position
unit_of_measurement: "%"
slave: 17
address: 133
lazy_error_count: 10
data_type: int16
- name: Heatpump BUS DHW Setpoint
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 134
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump BUS Heating DG1 Setpoint
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 135
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump BUS Heating SG2 Setpoint
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 136
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump BUS Heating SG3 Setpoint
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 137
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump BUS Heating SG4 Setpoint
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 138
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump BUS Cooling DG1 Setpoint
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 139
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump BUS Cooling SG2 Setpoint
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 140
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump BUS Cooling SG3 Setpoint
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 141
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump BUS Cooling SG4 Setpoint
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 142
lazy_error_count: 10
data_type: int16
#set and get
- name: Heatpump Supply Temperature SG2
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 194
lazy_error_count: 10
data_type: int16
- name: Heatpump Supply Temperature SG3
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 195
lazy_error_count: 10
data_type: int16
- name: Heatpump Supply Temperature SG4
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 196
lazy_error_count: 10
data_type: int16
- name: Heatpump Start Temperature DHW
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 198
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation temperature
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 199
lazy_error_count: 10
data_type: int16
- name: Heatpump Compressor discharge temperature
unit_of_measurement: °C
scale: 0.1
precision: 1
slave: 17
address: 203
lazy_error_count: 10
data_type: int16
- name: Heatpump COP
unit_of_measurement: COP
scale: 0.1
precision: 1
slave: 17
address: 30
lazy_error_count: 10
data_type: int16
- name: Heatpump EER
unit_of_measurement: EER
scale: 0.1
precision: 1
slave: 17
address: 202
lazy_error_count: 10
data_type: int16
- name: Heatpump Compressor RPM
unit_of_measurement: RPM
slave: 17
address: 5002
lazy_error_count: 10
data_type: int16
- name: Heatpump Scroll temperature
unit_of_measurement: °C
slave: 17
address: 5004
lazy_error_count: 10
data_type: int16
- name: Heatpump Inverter temperature
unit_of_measurement: °C
slave: 17
address: 5005
lazy_error_count: 10
data_type: int16
- name: Heatpump Working Hours L
slave: 17
address: 5080
lazy_error_count: 10
data_type: int16
- name: Heatpump Working Hours H
slave: 17
address: 5081
lazy_error_count: 10
data_type: int16
- name: Heatpump Production Pump
unit_of_measurement: "%"
scale: 0.1
slave: 17
address: 5033
lazy_error_count: 10
data_type: int16
- name: Heatpump Brine Pump
unit_of_measurement: "%"
scale: 0.1
slave: 17
address: 5034
lazy_error_count: 10
data_type: int16
- name: Heatpump Powerconsumption
unit_of_measurement: W
slave: 17
address: 5082
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation capacity
unit_of_measurement: W
slave: 17
address: 5083
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation capacity
unit_of_measurement: W
slave: 17
address: 5185
lazy_error_count: 10
data_type: int16
- name: Heatpump working program by BUS
slave: 17
address: 5221
lazy_error_count: 10
data_type: int16
#set and get
# 0 - mixed, 1 - heating, 2 - cooling, 3 - off
- name: Heatpump BUS DHW Demand
slave: 17
address: 5222
lazy_error_count: 10
data_type: int16
#set and get
# 0 - off, 1 - on
- name: Heatpump BUS DG1 Demand
slave: 17
address: 5224
lazy_error_count: 10
data_type: int16
#set and get
# 0 - off, 1 - on
- name: Heatpump BUS SG2 Demand
slave: 17
address: 5225
lazy_error_count: 10
data_type: int16
#set and get
# 0 - off, 1 - heating, 2 - cooling
- name: Heatpump BUS SG3 Demand
slave: 17
address: 5226
lazy_error_count: 10
data_type: int16
#set and get
# 0 - off, 1 - heating, 2 - cooling
- name: Heatpump BUS SG4 Demand
slave: 17
address: 5227
lazy_error_count: 10
data_type: int16
#set and get
# 0 - off, 1 - heating, 2 - cooling
- name: Heatpump Condensation Energy january
unit_of_measurement: kWh
slave: 17
address: 5144
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation Energy february
unit_of_measurement: kWh
slave: 17
address: 5145
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation Energy march
unit_of_measurement: kWh
slave: 17
address: 5146
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation Energy april
unit_of_measurement: kWh
slave: 17
address: 5147
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation Energy may
unit_of_measurement: kWh
slave: 17
address: 5148
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation Energy june
unit_of_measurement: kWh
slave: 17
address: 5149
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation Energy july
unit_of_measurement: kWh
slave: 17
address: 5150
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation Energy august
unit_of_measurement: kWh
slave: 17
address: 5151
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation Energy september
unit_of_measurement: kWh
slave: 17
address: 5152
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation Energy october
unit_of_measurement: kWh
slave: 17
address: 5153
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation Energy november
unit_of_measurement: kWh
slave: 17
address: 5154
lazy_error_count: 10
data_type: int16
- name: Heatpump Condensation Energy december
unit_of_measurement: kWh
slave: 17
address: 5155
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy january
unit_of_measurement: kWh
slave: 17
address: 5156
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy february
unit_of_measurement: kWh
slave: 17
address: 5157
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy march
unit_of_measurement: kWh
slave: 17
address: 5158
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy april
unit_of_measurement: kWh
slave: 17
address: 5159
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy may
unit_of_measurement: kWh
slave: 17
address: 5160
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy june
unit_of_measurement: kWh
slave: 17
address: 5161
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy july
unit_of_measurement: kWh
slave: 17
address: 5162
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy august
unit_of_measurement: kWh
slave: 17
address: 5163
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy september
unit_of_measurement: kWh
slave: 17
address: 5164
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy october
unit_of_measurement: kWh
slave: 17
address: 5165
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy november
unit_of_measurement: kWh
slave: 17
address: 5166
lazy_error_count: 10
data_type: int16
- name: Heatpump Evaporation Energy december
unit_of_measurement: kWh
slave: 17
address: 5167
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption january
unit_of_measurement: kWh
slave: 17
address: 5168
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption february
unit_of_measurement: kWh
slave: 17
address: 5169
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption march
unit_of_measurement: kWh
slave: 17
address: 5170
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption april
unit_of_measurement: kWh
slave: 17
address: 5171
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption may
unit_of_measurement: kWh
slave: 17
address: 5172
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption june
unit_of_measurement: kWh
slave: 17
address: 5173
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption july
unit_of_measurement: kWh
slave: 17
address: 5174
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption august
unit_of_measurement: kWh
slave: 17
address: 5175
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption september
unit_of_measurement: kWh
slave: 17
address: 5176
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption october
unit_of_measurement: kWh
slave: 17
address: 5177
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption november
unit_of_measurement: kWh
slave: 17
address: 5178
lazy_error_count: 10
data_type: int16
- name: Heatpump Electrical Consumption december
unit_of_measurement: kWh
slave: 17
address: 5179
lazy_error_count: 10
data_type: int16
- name: Heatpump Number Of Starts L
slave: 17
address: 5281
lazy_error_count: 10
data_type: int16
- name: Heatpump Number Of Starts H
slave: 17
address: 5282
lazy_error_count: 10
data_type: int16
The parameters that are writeable are remarked with extra information.
Be aware that if you send a variable that the value needs to be an integer. ie. temperature like 32.5 degrees needs to be sent like 325.
Also keep in mind that ‘control by bus’ needs to be enabled in the installer menu, otherwise it does not respond to modbus writes. External controls are still working ie Digital inputs. (Th Tune is not tested due to that I removed that unit years ago)
Another thing I discovered is that demanding the zones work but keep in mind that these zones need to be ‘open’ or valves that need to be opened first to have flow.
When demanding zones: have the ‘working program by BUS’ set right for the needs ( both (default), heating or cooling) 0 - mixed, 1 - heating, 2 - cooling, 3 - off
Then the target water temperature for heating and/or cooling set per zone.
If those are set, then you can set the ‘BUS x Demand’ with 0 - off, 1 - heating, 2 - cooling
A nice feature is having the ‘Thermal power’ variables to limit the amount of power of the compressor. This can be used while monitoring your solar power and limit heating up the boiler that nearly all power is sourced from the solar panels.
Be carefull with setting these values! Writing wrong values can damage the heatpump.