Skip to content

Instantly share code, notes, and snippets.

@jakobmoll
Last active February 7, 2024 22:08
Show Gist options
  • Save jakobmoll/96d67a6e3c98b1742230057c5923da63 to your computer and use it in GitHub Desktop.
Save jakobmoll/96d67a6e3c98b1742230057c5923da63 to your computer and use it in GitHub Desktop.
Nilan Compact P CTS700 package definition
nilan:
modbus:
- name: nilan
type: tcp
host: 192.168.1.99
port: 502
climates:
- name: Genvex
slave: 1
target_temp_register: 4746
address: 5154
count: 1
min_temp: 15
max_temp: 30
temp_step: 1
# data_type: int
scale: 0.1
precision: 1
switches:
- name: nilan_dhw_supplement_enabled
slave: 1
address: 3938
command_on: 1
command_off: 0
sensors:
- name: nilan_humidity
address: 4716
unit_of_measurement: "%"
slave: 1
- name: nilan_temperature_outdoor
# T1
unit_of_measurement: "°C"
slave: 1
address: 5152
scale: 0.1
count: 1
# data_type: int
- name: nilan_temperature_inlet
# T2
unit_of_measurement: "°C"
slave: 1
address: 5153
scale: 0.1
count: 1
# data_type: int
- name: nilan_temperature_room
# T3 - Room / extract air
unit_of_measurement: "°C"
slave: 1
address: 5154
scale: 0.1
count: 1
# data_type: int
- name: nilan_temperature_after_heateexchange
# T4
unit_of_measurement: "°C"
slave: 1
address: 5155
scale: 0.1
count: 1
# data_type: int
- name: nilan_temperature_after_heatpump
# T5
unit_of_measurement: "°C"
slave: 1
address: 5156
scale: 0.1
count: 1
# data_type: int
- name: nilan_temperature_heatpump_evaporator
# T6
unit_of_measurement: "°C"
slave: 1
address: 5157
scale: 0.1
count: 1
# data_type: int
- name: nilan_temperature_inlet_after_heater
# T7
unit_of_measurement: "°C"
slave: 1
address: 5158
scale: 0.1
count: 1
# data_type: int
- name: nilan_temperature_outdoor_before_preheat
# T8
unit_of_measurement: "°C"
slave: 1
address: 5159
scale: 0.1
count: 1
# data_type: int
- name: nilan_temperature_water_after_heater
# T9
unit_of_measurement: "°C"
slave: 1
address: 5160
scale: 0.1
count: 1
# data_type: int
- name: nilan_temperature_top_water
# T11
unit_of_measurement: "°C"
slave: 1
address: 5162
scale: 0.1
count: 1
# data_type: int
- name: nilan_temperature_bottom_water
# T12
unit_of_measurement: "°C"
slave: 1
address: 5163
scale: 0.1
count: 1
# data_type: int
- name: nilan_water_setpoint
unit_of_measurement: "°C"
slave: 1
address: 5548
count: 1
scale: 0.1
- name: nilan_fan_speed_in
unit_of_measurement: "%"
slave: 1
address: 4699
count: 1
#scale: 0.1
- name: nilan_fan_speed_out
unit_of_measurement: "%"
slave: 1
address: 4700
count: 1
# scale: 0.1
- name: nilan_air_setpoint
unit_of_measurement: "°C"
slave: 1
address: 4746
count: 1
scale: 0.1
- name: nilan_fan_setpoint
#unit_of_measurement: '%'
slave: 1
address: 4747
count: 1
offset: -100
- name: nilan_dhw_supplement_active
slave: 1
address: 5285
count: 1
- name: nilan_dhw_supplement_enabled
slave: 1
address: 3938
count: 1
- name: nilan_dhw_supplement_max
# max enable temp for elpatron
unit_of_measurement: "°C"
slave: 1
address: 2828
count: 1
scale: 0.1
- name: nilan_dhw_supplement_min
# min enable temp for elpatron
unit_of_measurement: "°C"
slave: 1
address: 3935
count: 1
scale: 0.1
- name: nilan_air_mode
# 0 = Auto mode
# 1 = Cooling mode
# 2 = heating mode
slave: 1
address: 2402
count: 1
# - name: nilan_active_cooling
# # 0 = off
# # 1 = on
# slave: 1
# address: 3284
# count: 1
- name: nilan_mode
# 0 = not defined
# 1 = Cooling
# 2 = Heating
# 3 = Ventilation
# 4 = Hot water
# unit_of_measurement: '°C'
slave: 1
address: 5432
count: 1
# scale: 0.1
# ------
# filter
- name: nilan_filter_in_limit
unit_of_measurement: "days"
slave: 1
address: 1326
count: 1
- name: nilan_filter_out_limit
unit_of_measurement: "days"
slave: 1
address: 1327
count: 1
- name: nilan_filter_in_days
unit_of_measurement: "days"
slave: 1
address: 1328
count: 1
- name: nilan_filter_out_days
unit_of_measurement: "days"
slave: 1
address: 1329
count: 1
- name: nilan_filter_compressor_control
#unit_of_measurement: 'days'
slave: 1
address: 1323
count: 1
# compressor control
# 1323
# fourWayState
# 4703
- name: nilan_fourway_state
slave: 1
address: 4703
count: 1
# bypass1State
# 4704
- name: nilan_bypass_1_state
slave: 1
address: 4704
count: 1
# bypass1State
# 4705
- name: nilan_bypass_2_state
slave: 1
address: 4705
count: 1
# water compressor level
# 4706 = Compressor1
- name: nilan_water_compressor_1
slave: 1
address: 4706
count: 1
sensor:
- platform: template
sensors:
nilan_current_operation_mode:
friendly_name: "nilan mode"
value_template: >-
{% if is_state('sensor.nilan_mode','1') %}
Cooling
{% elif is_state('sensor.nilan_mode','2') %}
Heating
{% elif is_state('sensor.nilan_mode','3') %}
Ventilation
{% elif is_state('sensor.nilan_mode','4') %}
Hot water production
{% endif %}
icon_template: >-
{% if is_state('sensor.nilan_mode','1') %}
mdi:snowflake
{% elif is_state('sensor.nilan_mode','2') %}
mdi:fire
{% elif is_state('sensor.nilan_mode','3') %}
mdi:fan
{% elif is_state('sensor.nilan_mode','4') %}
mdi:waves
{% endif %}
- platform: integration
source: sensor.plug_s_1_power
name: power_meter_s1
round: 2
unit_prefix: k
input_number:
climate_air_slider:
name: Climate air temperature
initial: 21
min: 10
max: 28
step: 1
icon: mdi:gauge
# Input slider for water temperatur in Nilan Genvex
climate_water_slider:
name: Climate water temperature
initial: 45
min: 10
max: 65
step: 1
icon: mdi:oil-temperature
input_select:
# input selector for Nilan mode
nilan_air_mode:
name: Nilan Air Mode
options:
- Auto
- Cooling
- Heating
# input selector for Nilan fan speed
nilan_fan_speed:
name: Nilan Ventilation speed
icon: mdi:fan
options:
- "1"
- "2"
- "3"
- "4"
automation:
- id: '1562650958991'
alias: 'System: Nilan air slider to setpoint'
trigger:
- entity_id: input_number.climate_air_slider
platform: state
condition: []
action:
- data_template:
address: 4746
hub: nilan
unit: 1
value: '{{trigger.to_state.state | int * 10 | round(0) }}'
service: modbus.write_register
- id: '1562651402052'
alias: 'System: Nilan air setpoint to slider'
trigger:
- entity_id: sensor.nilan_air_setpoint
platform: state
condition: []
action:
- data_template:
entity_id: input_number.climate_air_slider
value: '{{ states.sensor.nilan_air_setpoint.state }}'
service: input_number.set_value
- id: '125'
alias: 'System: Nilan water slider to setpoint'
trigger:
- entity_id: input_number.climate_water_slider
platform: state
condition: []
action:
- data_template:
address: 5548
hub: nilan
unit: 1
value: '{{trigger.to_state.state | int * 10 | round(0) }}'
service: modbus.write_register
- id: '126'
alias: 'System: Nilan water setpoint to slider'
trigger:
- entity_id: sensor.nilan_water_setpoint
platform: state
condition: []
action:
- data_template:
entity_id: input_number.climate_water_slider
value: '{{ states.sensor.nilan_water_setpoint.state }}'
service: input_number.set_value
- id: '127'
alias: 'System: Nilan mode selector to Nilan'
trigger:
- entity_id: input_select.nilan_air_mode
platform: state
condition: []
action:
- data_template:
address: 2402
hub: nilan
unit: 1
value: '{% if is_state("input_select.nilan_air_mode", "Auto") %} 0 {% elif is_state("input_select.nilan_air_mode",
"Cooling") %} 1 {% elif is_state("input_select.nilan_air_mode", "Heating")
%} 2 {% endif %}'
service: modbus.write_register
- id: '1562654969950'
alias: 'System: Nilan fan selector to Nilan'
trigger:
- entity_id: input_select.nilan_fan_speed
platform: state
condition: []
action:
- data_template:
address: 4747
hub: nilan
unit: 1
value: '{{trigger.to_state.state | int + 100 | round(0) }}'
service: modbus.write_register
- id: '128'
alias: 'System: Nilan fan setpoint to selector'
trigger:
- entity_id: sensor.nilan_fan_setpoint
platform: state
condition: []
action:
- data_template:
entity_id: input_select.nilan_fan_speed
option: '{{states.sensor.nilan_fan_setpoint.state}}'
service: input_select.select_option
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment