Created
February 27, 2020 01:54
-
-
Save ntompson/e9e71e41137fc30fda9eee58b3e3b35c to your computer and use it in GitHub Desktop.
Stiebel Elton configuration for WPM3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################ | |
# | |
# Stiebel Eltron - ISG modbus control - implemented as scripts | |
# | |
# Reference: https://www.stiebel-eltron.com/content/dam/ste/cdbassets/current/bedienungs-_u_installationsanleitungen/ISG_Modbus__b89c1c53-6d34-4243-a630-b42cf0633361.pdf | |
# | |
############################################################################ | |
# 1501 OPERATING MODE x 8 (x1) | |
# STANDBY MODE 1 | |
# PROGRAMMED OPERATION 2 | |
# COMFORT MODE 3 | |
# ECO MODE 4 | |
# DHW MODE 5 | |
# EMERGENCY OPERATION 0 | |
# 1502 COMFORT TEMPERATURE x 2 (x10) | |
# 1503 ECO TEMPERATURE x 2 (x10) | |
# 1504 HEATING CURVE RISE x 7 (x100) | |
# 1508 FIXED VALUE OPERATION x 2 (x10) | |
# 1509 DUAL MODE TEMP HZG x 2 (x10) | |
# 1510 COMFORT TEMPERATURE [DHW] x 2 (x10) | |
# 1511 ECO TEMPERATURE [DHW] x 2 (x10) | |
# 1513 DUAL MODE TEMP WW x 2 (x10) | |
# | |
# SUBTRACT 1 FROM ADDRESSES ABOVE BEFORE ISSUING SERVICE CALL | |
# | |
# NEGATIVE NUMBERS: 2^(REGISTER SIZE) - ABS(NUMBER x SCALAR) | |
# EG -19.5 = 65341 | |
script: | |
## Heat pump mode control | |
hp_comfort_mode: | |
alias: Activate comfort mode | |
description: 'Activate comfort mode on the heat pump' | |
sequence: | |
service: modbus.write_register | |
data_template: | |
hub: modbus_hp | |
unit: 1 | |
address: 1500 #1501 | |
value: 3 | |
hp_standby_mode: | |
alias: Activate standby mode | |
description: 'Activate standby mode on the heat pump' | |
sequence: | |
service: modbus.write_register | |
data_template: | |
hub: modbus_hp | |
unit: 1 | |
address: 1500 #1501 | |
value: 1 | |
## Heating control | |
hp_set_comfort_temp_heating: | |
alias: Set comfort temperature heating | |
description: 'Set the comfort temperature set point for heating' | |
fields: | |
temperature: | |
description: 'The set point temperature in °C' | |
example: 22 | |
sequence: | |
# Make sure fixed temp heating is deactivated - issue 0x9000 to deactivate | |
- service: modbus.write_register | |
data_template: | |
hub: modbus_hp | |
unit: 1 | |
address: 1507 #1508 | |
value: 36864 | |
# Set the temp | |
- service: modbus.write_register | |
data_template: | |
hub: modbus_hp | |
unit: 1 | |
address: 1501 #1502 | |
value: >- | |
{% if temperature >= 5 %} | |
{{ (temperature * 10) |int }} | |
{% endif %} | |
hp_set_fixed_temp_heating: | |
alias: Set fixed temperature heating | |
description: 'Set the temperature set point for heating. Deactivate by calling hp_set_comfort_temp_heating, which issues 0x9000 to fixed temp register' | |
fields: | |
temperature: | |
description: 'The set point temperature in °C' | |
example: 50 | |
sequence: | |
service: modbus.write_register | |
data_template: | |
hub: modbus_hp | |
unit: 1 | |
address: 1507 #1508 | |
value: >- | |
{% if temperature >= 20 %} | |
{{ (temperature * 10) |int }} | |
{% endif %} | |
hp_set_dual_mode_temp_heating: | |
alias: Set dual mode temperature heating | |
description: 'Set the heating dual mode temperature set point' | |
fields: | |
temperature: | |
description: 'The set point temperature in °C' | |
example: -19.5 | |
sequence: | |
service: modbus.write_register | |
data_template: | |
hub: modbus_hp | |
unit: 1 | |
address: 1508 #1509 | |
value: >- | |
{% if temperature < 0 %} | |
{{ 2**16 - ((temperature * 10) |abs) |int }} | |
{% else %} | |
{{ (temperature * 10) |int }} | |
{% endif %} | |
## DHW control | |
hp_set_comfort_temp_dhw: | |
alias: Set comfort temperature DHW | |
description: 'Set the confort temperature set point for DHW' | |
fields: | |
temperature: | |
description: 'The set point temperature in °C' | |
example: 50 | |
sequence: | |
service: modbus.write_register | |
data_template: | |
hub: modbus_hp | |
unit: 1 | |
address: 1509 #1510 | |
value: >- | |
{% if temperature >= 10 %} | |
{{ (temperature * 10) |int }} | |
{% endif %} | |
hp_set_dual_mode_temp_dhw: | |
alias: Set dual mode temperature DHW | |
description: 'Set the DHW dual mode temperature set point' | |
fields: | |
temperature: | |
description: 'The set point temperature in °C' | |
example: -19.5 | |
sequence: | |
service: modbus.write_register | |
data_template: | |
hub: modbus_hp | |
unit: 1 | |
address: 1512 #1513 | |
value: >- | |
{% if temperature < 0 %} | |
{{ 2**16 - ((temperature * 10) |abs) |int }} | |
{% else %} | |
{{ (temperature * 10) |int }} | |
{% endif %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################ | |
# | |
# Stiebel Eltron - ISG modbus hub and sensors | |
# | |
# Reference: https://www.stiebel-eltron.com/content/dam/ste/cdbassets/current/bedienungs-_u_installationsanleitungen/ISG_Modbus__b89c1c53-6d34-4243-a630-b42cf0633361.pdf | |
# | |
############################################################################ | |
modbus: | |
- type: tcp | |
host: << redacted IP address >> | |
port: 502 | |
name: modbus_hp | |
sensor: | |
- platform: modbus | |
scan_interval: 10 # seconds | |
registers: | |
### Operating observations | |
- name: hp_outside_temperature | |
register: 506 #507 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_actual_temperature_hk_1 | |
register: 507 #508 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_set_temperature_hk_1 | |
register: 509 #510 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_actual_flow_temperature_nhz | |
register: 513 #514 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_actual_flow_temperature | |
register: 514 #515 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_actual_return_temperature | |
register: 515 #516 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_actual_buffer_temperature | |
register: 517 #518 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_set_buffer_temperature | |
register: 518 #519 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_heating_pressure | |
register: 519 #520 | |
unit_of_measurement: bar | |
scale: 0.01 | |
precision: 2 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_flow_rate | |
register: 520 #521 | |
unit_of_measurement: l/min | |
scale: 0.01 | |
precision: 2 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_actual_temperature_dhw | |
register: 521 #522 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_set_temperature_dhw | |
register: 522 #523 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_return_temperature | |
register: 541 #542 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_flow_temperature | |
register: 542 #543 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_hot_gas_temperature | |
register: 543 #544 | |
unit_of_measurement: °C | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_low_pressure | |
register: 544 #545 | |
unit_of_measurement: bar | |
scale: 0.01 | |
precision: 2 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_mean_pressure | |
register: 545 #546 | |
unit_of_measurement: bar | |
scale: 0.01 | |
precision: 2 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_high_pressure | |
register: 546 #547 | |
unit_of_measurement: bar | |
scale: 0.01 | |
precision: 2 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_wp_water_flow_rate | |
register: 547 #548 | |
unit_of_measurement: l/min | |
scale: 0.1 | |
precision: 1 | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
### Operating status | |
- name: hp_operating_status_1 | |
register: 2500 #2501 | |
unit_of_measurement: status | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_operating_status_2 | |
register: 2502 #2503 | |
unit_of_measurement: status | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_defrost_initiated | |
register: 2505 #2506 | |
unit_of_measurement: status | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
### Power observations | |
- name: hp_vd_heating_day | |
register: 3500 #3501 | |
unit_of_measurement: kWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_heating_total_kwh | |
register: 3501 #3502 | |
unit_of_measurement: kWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_heating_total_mwh | |
register: 3502 #3503 | |
unit_of_measurement: MWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_dhw_day | |
register: 3503 #3504 | |
unit_of_measurement: kWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_dhw_total_kwh | |
register: 3504 #3505 | |
unit_of_measurement: kWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_dhw_total_mwh | |
register: 3505 #3506 | |
unit_of_measurement: MWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_nhz_heating_total_kwh | |
register: 3506 #3507 | |
unit_of_measurement: kWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_nhz_heating_total_mwh | |
register: 3507 #3508 | |
unit_of_measurement: MWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_nhz_dhw_total_kwh | |
register: 3508 #3509 | |
unit_of_measurement: kWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_nhz_dhw_total_mwh | |
register: 3509 #3510 | |
unit_of_measurement: MWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_heating_day_cons | |
register: 3510 #3511 | |
unit_of_measurement: kWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_heating_total_cons_kwh | |
register: 3511 #3512 | |
unit_of_measurement: kWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_heating_total_cons_mwh | |
register: 3512 #3513 | |
unit_of_measurement: MWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_dhw_day_cons | |
register: 3513 #3514 | |
unit_of_measurement: kWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_dhw_total_cons_kwh | |
register: 3514 #3515 | |
unit_of_measurement: kWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_dhw_total_cons_mwh | |
register: 3515 #3516 | |
unit_of_measurement: MWh | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_heating_runtime | |
register: 3538 #3539 | |
unit_of_measurement: hour | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_vd_dhw_runtime | |
register: 3541 #3542 | |
unit_of_measurement: hour | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_nhz_1_runtime | |
register: 3545 #3546 | |
unit_of_measurement: hour | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_nhz_2_runtime | |
register: 3546 #3547 | |
unit_of_measurement: hour | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_nhz_both_runtime | |
register: 3547 #3548 | |
unit_of_measurement: hour | |
data_type: int | |
register_type: input | |
hub: modbus_hp | |
slave: 1 | |
### Control sensors | |
- name: hp_ctl_operating_mode | |
register: 1500 #1501 | |
data_type: int | |
register_type: holding | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_ctl_comfort_temperature_hc1 | |
register: 1501 #1502 | |
unit_of_measurement: °C | |
data_type: int | |
scale: 0.1 | |
precision: 1 | |
register_type: holding | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_ctl_eco_temperature_hc1 | |
register: 1502 #1503 | |
unit_of_measurement: °C | |
data_type: int | |
scale: 0.1 | |
precision: 1 | |
register_type: holding | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_ctl_heating_curve_rise_hc1 | |
register: 1503 #1504 | |
data_type: int | |
scale: 0.01 | |
precision: 2 | |
register_type: holding | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_ctl_fixed_value_operation | |
register: 1507 #1508 | |
unit_of_measurement: °C | |
data_type: int | |
scale: 0.1 | |
precision: 1 | |
register_type: holding | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_ctl_dual_mode_temp_hzg | |
register: 1508 #1509 | |
unit_of_measurement: °C | |
data_type: int | |
scale: 0.1 | |
precision: 1 | |
register_type: holding | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_ctl_comfort_temperature_dhw | |
register: 1509 #1510 | |
unit_of_measurement: °C | |
data_type: int | |
scale: 0.1 | |
precision: 1 | |
register_type: holding | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_ctl_eco_temperature_dhw | |
register: 1510 #1511 | |
unit_of_measurement: °C | |
data_type: int | |
scale: 0.1 | |
precision: 1 | |
register_type: holding | |
hub: modbus_hp | |
slave: 1 | |
- name: hp_ctl_dual_mode_temp_ww | |
register: 1512 #1513 | |
unit_of_measurement: °C | |
data_type: int | |
scale: 0.1 | |
precision: 1 | |
register_type: holding | |
hub: modbus_hp | |
slave: 1 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################ | |
# | |
# Stiebel Eltron - ISG modbus binary sensors (template sensors derived from | |
# modbus sensors) | |
# | |
# Reference: https://www.stiebel-eltron.com/content/dam/ste/cdbassets/current/bedienungs-_u_installationsanleitungen/ISG_Modbus__b89c1c53-6d34-4243-a630-b42cf0633361.pdf | |
# | |
############################################################################ | |
binary_sensor: | |
- platform: template | |
sensors: | |
hp_hc1_pump: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_1.state | int | bitwise_and(1) >0 }} | |
hp_nhz_stages_running: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_1.state | int | bitwise_and(8) >0 }} | |
hp_in_heating_mode: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_1.state | int | bitwise_and(16) >0 }} | |
hp_in_dhw_mode: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_1.state | int | bitwise_and(32) >0 }} | |
hp_compressor_running: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_1.state | int | bitwise_and(64) >0 }} | |
hp_summer_mode_active: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_1.state | int | bitwise_and(128) >0 }} | |
hp_min_one_iws_in_defrost_mode: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_1.state | int | bitwise_and(512) >0 }} | |
hp_silent_mode_1_active: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_1.state | int | bitwise_and(1024) >0 }} | |
hp_silent_mode_2_active: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_1.state | int | bitwise_and(2048) >0 }} | |
hp_compressor_1: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_2.state | int | bitwise_and(1) >0 }} | |
hp_buffer_charging_pump_1: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_2.state | int | bitwise_and(64) >0 }} | |
hp_nhz_1: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_2.state | int | bitwise_and(4096) >0 }} | |
hp_nhz_2: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_2.state | int | bitwise_and(8192) >0 }} | |
hp_nhz_both: | |
value_template: >- | |
{{ states.sensor.hp_operating_status_2.state | int | bitwise_and(16384) >0 }} | |
hp_defrost_initiated: | |
value_template: >- | |
{{ states.sensor.hp_defrost_initiated.state | int >0 }} | |
hp_active: | |
value_template: >- | |
{{ states.sensor.hp_ctl_operating_mode.state | int != 1 }} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
That's amazing work. Thanks a lot!