Comments (25)
I'm definitely up for helping with what i can, but i will have limited time from christmas and untill mid january.
Currently i'm importing all registers from nilans documents for the CTS700. Of course i can't test everything as i don't have the geo model as mine is the Air9 with a air to water heatpump for centralheating. It's a limited amount of different registers for the GEO model.
from nilan.
Hi,
It's great that you are interested in this project! There are a lot of changes needed to the integration to accommodate cts700. If you are willing to help me with this endeavor I think we can succeed. I have never even seen a cts700 device so you will have to help me with testing, and give me detailed explinations with pictures etc. If needed. Remember that the integration should support all cts700 devices, not just your model/version.
I will start by writing up the registers. After that we will try to figure out how to saftely recognise your device through the integration.
When this is all done we can start adding functionality.
from nilan.
Please respond if you are up for this? I can not do this by myself.
from nilan.
Hi
I'm currently using a manual modbus over tcp configuration for my Nilan Compact P (CTS700). The package I've setup for my integrations is listed here - perhaps this could help?
https://gist.github.com/jakobmoll/96d67a6e3c98b1742230057c5923da63
from nilan.
Hi,
I'm at a bit of a loss here.
So I guess the older versions of Compact P use the manual found here https://symlink.dk/stuff/CTS700_MODBUS-rev%202.01.pdf
And the newer versions with Air and Geo support use the manual found in @Chrunchy link.
I'm not sure how to support both, I cannot seem to find a version register on the newer document.
Can you @Chrunchy test register 4632 if you can read the version number?
from nilan.
Hi,
i have Nilan CTS700 and looking for integration support. My version is 1.40.05.38 from 2015 and has not been updated since.
I have a client app i can login as Installer (uses MODBUS to connect to CTS700) version 1.4.139 from 1.4.2018.
I can connect to CTS700 via the app from my server, but if i use MODBUS tools (Modbus pool) it says read error when connecting to CTS700. Not sure if permission or something else, i need password to login as Installer, but should not need anything to go as User. The Nilan App just does not allow anything else as Installer.
I've installed your HACS code, but when connecting to Nilan says "Invalid Response from Device" which is expected as you probably check some version data in one of the registers.
Cheers
from nilan.
Hi. Unfortunately cts700 is not supported. I would like to add it, but it seems to be a mess to implement and I do not have access to one so debugging would be hard.
from nilan.
Hi @veista,
I've ended up purchasing an Elfin EW11A unit to integrate my Compact S pump, but struggle with finding both documentation (modbus registrars for compact S) as well as ready integrations.
If you could advise on what you'd need, I would be happy to at least try.
from nilan.
Hi @veista,
I've ended up purchasing an Elfin EW11A unit to integrate my Compact S pump, but struggle with finding both documentation (modbus registrars for compact S) as well as ready integrations.
If you could advise on what you'd need, I would be happy to at least try.
I believe Compact S is a cts602 device so your question is in the wrong place. You can open a discussion, if you need generic help. I can not help with your setup: Read previous issues for hints, follow the instructions on the front page and then we can add Compact S to the supported devices.
from nilan.
Hi @veista
I am also using @jakobmoll 's manuel modbud sensor config to interact with my Nilan Compact P Air 9 - CTS700.
Even though python is not my main language, I might be able to help testing and fixing stuff.
Right now, the plugin gives the following error when trying to connect
File "/config/custom_components/nilan/config_flow.py", line 108, in async_step_tcp
await async_validate_device(
File "/config/custom_components/nilan/config_flow.py", line 67, in async_validate_device
result.registers[0].to_bytes(2, "little", signed=False),
~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range
But it could be a UnitID problem, because I can't see why it should be 30 as default. If its the same as slave, it should have been '1', but that doesn't work either.
from nilan.
Hi,
Cts700 works differently than cts602. I have some modifications to support cts700 in my code, but at the moment absolutely NO functionality has been implemented. I have slowly made it even theoretically possible to support cts700. Adding support will take time and I am a busy man.
Thanks for your understanding, I will report here once there is something to test.
from nilan.
okay, so its not just creating a registry mapping for cts700 like the one for 602?
Could you create a branch with you work until now?
from nilan.
There is no branch yet. There is no code yet. It is complicated to add since I have not originally thought about adding cts700.
Keep in mind that there is also two types of cts700 as I mentioned before in this issue. Both are completely different.
from nilan.
Hi, I have tried to setup CTS700 myself with OH Modbus integration, I’d like to ask if anybody knows which register to read containing the below info:
- Compressor state: can be off, defrosting, hot water production, heating, cooling
- Flag indicate if the supplementary eletrical heater for the water tank is running or not (the red dot on the display)
Many thanks!
from nilan.
I know you havn't written that it was ready.
However, I would like to give the new 1.12.13b on my Nilan CompactP Air a try, but I just get "invalid response" with no further log in console, when I try to add the integration.
I fetch data using modbus plugin in HA using the same IP, port and device (1), so I know it answers, but could it give problems, what some processes are already communicating with it?
Please tell me, how I can help testing it?
from nilan.
Thanks for your enthusiasm. I will let you know when I need your help. It will take some time to get to that point.
Do you have the old or new cts700?
from nilan.
I have a CTS700 Touch.
Display Software Version: 09.06.45 (2017-07-08)
Print Software Version: 2.02.13.93 (2017-07-08)
I am very interested in a working connection to my Home Assistant and as such would like to offer my help as well!
from nilan.
I have finally started to create development tools for implementing cts700 devices.
It would be great help if owners of cts700 devices would dump all registers to a file with qmodmaster or equivalent accompanied with device information and a picture of the type plate.
from nilan.
Hello everyone, here is the yaml in a package of my Nilan Compct P Geo 6, which has already been working for a few weeks! Unfortunately, a few little things are still missing (for example: manual control of fan speed 1-4)
A small note: I have translated my yaml from German into English. There might have been mistakes
modbus:
-
name: nilan
type: tcp
host: >xx.xx.xx.xx<
port: 502delay: 0
message_wait_milliseconds: 30
retries: 3
timeout: 5sensors:
- name: nilan_t0_Actual_air_humidity
unique_id: nilan_t0_actual_air_humidity
address: 21776
unit_of_measurement: "%"
slave: 1 - name: nilan_t1_outdoor_air_temperature
unique_id: nilan_t1_outdoor_air_temperature
device_class: temperature
unit_of_measurement: "°C"
slave: 1
address: 20282
scale: 0.1
precision: 1 - name: nilan_t2_supply_air_temperature
unique_id: nilan_t2_supply_air_temperature
device_class: temperature
unit_of_measurement: "°C"
slave: 1
address: 20284
scale: 0.1
precision: 1 - name: nilan_t3_extract_air,_room_temperature
unique_id: nilan_t3_extract_air,_room_temperature
device_class: temperature
unit_of_measurement: "°C"
slave: 1
address: 20286
scale: 0.1
precision: 1 - name: nilan_t4_discharge_air,_after_heat-discharge_exchanger
unique_id: nilan_t4_discharge_air,_after_heat-discharge_exchanger
unit_of_measurement: "°C"
slave: 1
address: 20288
scale: 0.1
precision: 1 - name: nilan_t5_discharge_air,_after_heat_pump
unique_id: nilan_t5_discharge_air,_after_heat_pump
device_class: temperature
unit_of_measurement: "°C"
slave: 1
address: 20290
scale: 0.1
precision: 1 - name: nilan_t6_evaporator_temperature
unique_id: nilan_t6_evaporator_temperature
device_class: temperature
unit_of_measurement: "°C"
slave: 1
address: 20292
scale: 0.1
precision: 1 - name: nilan_t7_supply_air_temperature_afterheater
unique_id: nilan_t7_supply_air_temperature_afterheater
device_class: temperature
unit_of_measurement: "°C"
slave: 1
address: 20294
scale: 0.1
precision: 1 - name: nilan_t8_outdoor_air_before_pre-heater
unique_id: nilan_t8_outdoor_air_before_pre-heater
device_class: temperature
unit_of_measurement: "°C"
slave: 1
address: 20296
scale: 0.1
precision: 1 - name: nilan_t9_wassertemperatur_nach_heizung
unique_id: nilan_t9_wassertemperatur_nach_heizung
device_class: temperature
unit_of_measurement: "°C"
slave: 1
address: 20298
scale: 0.1
precision: 1 - name: nilan_t11_top_temperature_in_DHW_watertank
unique_id: nilan_t11_top_temperature_in_DHW_watertank
device_class: temperature
unit_of_measurement: "°C"
slave: 1
address: 20520
scale: 0.1
precision: 1 - name: nilan_t12_bottom_temperature_in_DHW_watertank
unique_id: nilan_t12_bottom_temperature_in_DHW_watertank
device_class: temperature
unit_of_measurement: "°C"
slave: 1
address: 20522
scale: 0.1
precision: 1
##count: 1
########################################################################## - name: nilan_outdoor_air_filter_Days_to_next_filter_change
unique_id: nilan_outdoor_air_filter_Days_to_next_filter_change
unit_of_measurement: "days"
slave: 1
address: 20103
scan_interval: 43200 - name: nilan_nilan_supply_fan_speed
unique_id: nilan_supply_fan_speed
unit_of_measurement: "%"
slave: 1
address: 21771
scan_interval: 900 - name: nilan_extract_fan_speed
unique_id: nilan_extract_fan_speed
unit_of_measurement: "%"
slave: 1
address: 21772
scan_interval: 900 - name: nilan_fan_speed_level-1-supply_air
unique_id: nilan_fan_speed_level-1-supply_air
slave: 1
address: 20140
scan_interval: 43200 - name: nilan_fan_speed_level-1-extract_air
unique_id: nilan_fan_speed_level-1-extract_air
slave: 1
address: 20141
scan_interval: 43200 - name: nilan_fan_speed_level-2-supply_air
unique_id: nilan_fan_speed_level-2-supply_air
address: 20142
scan_interval: 43200 - name: nilan_fan_speed_level-2-extract_air
unique_id: nilan_fan_speed_level-2-extract_air
slave: 1
address: 20143
scan_interval: 43200 - name: nilan_fan_speed_level-3-supply_air
unique_id: nilan_fan_speed_level-3-supply_air
slave: 1
address: 20144
scan_interval: 43200 - name: nilan_fan_speed_level-3-extract_air
unique_id: nilan_fan_speed_level-3-extract_air
slave: 1
address: 20145
scan_interval: 43200 - name: nilan_fan_speed_level-4-supply_air
unique_id: nilan_fan_speed_level-4-supply_air
slave: 1
address: 20146
scan_interval: 43200 - name: nilan_fan_speed_level-4-extract_air
unique_id: nilan_fan_speed_level-4-extract_air
slave: 1
address: 20147
scan_interval: 43200 - name: nilan_fan_speed_level
unique_id: nilan_fan_speed_level
slave: 1
address: 20148
########################################################################## - name: nilan_compact_p_systemstate
unique_id: nilan_compact_p_systemstate
slave: 1
address: 21770 - name: nilan_compact_p_bypass_damper
unique_id: nilan_compact_p_bypass_damper
slave: 1
address: 21773
data_type: uint16 - name: nilan_compact_p_aircompressor_state
unique_id: nilan_compact_p_aircompressor_state
slave: 1
address: 21775
data_type: uint16 - name: nilan_compact_p_four-way-valve
unique_id: nilan_compact_p_four-way-valve
slave: 1
address: 21791 - name: nilan_compact_p_alarm
unique_id: nilan_compact_p_alarm
slave: 1
address: 21792
########################################################################## - name: nilan_t13_brine_before_evaporator
unique_id: nilan_t13_brine_before_evaporator
device_class: temperature
unit_of_measurement: "°C"
slave: 4
address: 20645
scale: 0.1
precision: 1 - name: nilan_t14_brine_after_evaporator
unique_id: nilan_t14_brine_after_evaporator
device_class: temperature
unit_of_measurement: "°C"
slave: 4
address: 20647
scale: 0.1
precision: 1 - name: nilan_t16_before_condenser
unique_id: nilan_t16_before_condenser
device_class: temperature
unit_of_measurement: "°C"
slave: 4
address: 20649
scale: 0.1
precision: 1 - name: nilan_t17_after_condenser
unique_id: nilan_t17_after_condenser
unit_of_measurement: "°C"
slave: 4
address: 20651
scale: 0.1
precision: 1 - name: nilan_t18_supply_flow_geo
unique_id: nilan_t18_supply_flow_geo
device_class: temperature
unit_of_measurement: "°C"
slave: 4
address: 20653
scale: 0.1
precision: 1 - name: nilan_t20_outdoor_temperature_geo
unique_id: nilan_t20_outdoor_temperature_geo
device_class: temperature
unit_of_measurement: "°C"
slave: 4
address: 20655
scale: 0.1
precision: 1
########################################################################## - name: nilan_geo_systemstate
unique_id: nilan_geo_systemstate
slave: 4
address: 21840 - name: nilan_geo_compressor_level
unique_id: nilan_geo_compressor_level
unit_of_measurement: "%"
slave: 4
address: 21841
#scale: 1 - name: nilan_geo_brine_circulation_pump_level
unique_id: nilan_geo_brine_circulation_pump_level
unit_of_measurement: "%"
slave: 4
address: 21842
scale: 1 - name: nilan_geo_central_heat_pump_level
unique_id: nilan_geo_central_heat_pump_level
unit_of_measurement: "%"
slave: 4
address: 21843
scale: 1 - name: nilan_geo_three-way_valve
unique_id: nilan_geo_three-way_valve
slave: 4
address: 21844 - name: nilan_geo_supplement_heater
unique_id: nilan_geo_supplement_heater
slave: 4
address: 21851 - name: nilan_geo_high_pressure_alarm
unique_id: nilan_high_pressure_alarm
slave: 4
address: 21854 - name: nilan_geo_low_pressure_alarm
unique_id: nilan_geo_low_pressure_alarm
slave: 4
address: 21855 - name: nilan_geo_brine_pressure
unique_id: nilan_geo_brine_pressure
slave: 4
address: 21856 - name: nilan_geo_alarm
unique_id: nilan_geo_alarm
slave: 1
address: 22490
##########################################################################
switches:
- name: nilan_compact_p_set_ventilation_on_pause
unique_id: nilan_compact_p_set_ventilation_on_pause
slave: 1
address: 20100
command_on: 1
command_off: 0 - name: nilan_compact_p_allow_active_cooling
unique_id: nilan_compact_p_allow_active_cooling
slave: 1
address: 20180
command_on: 1
command_off: 0 - name: nilan_compact_p_high_fan_speed_when_cooling
unique_id: nilan_compact_p_high_fan_speed_when_cooling
slave: 1
address: 20181
command_on: 1
command_off: 0 - name: nilan_compact_p_cooling_priority_to_hot_water
unique_id: nilan_compact_p_cooling_priority_to_hot_water
slave: 1
address: 20184
command_on: 1
command_off: 0 - name: nilan_compact_p_electrical_supplement_heater
unique_id: nilan_compact_p_electrical_supplement_heater
slave: 1
address: 20464
command_on: 1
command_off: 0 - name: nilan_compact_p_start_anti_legionella_manuel
unique_id: nilan_compact_p_start_anti_legionella_manuel
slave: 1
address: 20480
command_on: 1
command_off: 0 - name: nilan_compact_p_pause_central_heating
unique_id: nilan_compact_p_pause_central_heating
slave: 1
address: 20600
command_on: 1
command_off: 0 - name: nilan_geo_power_central_heating
unique_id: nilan_geo_power_central_heating
slave: 1
address: 20602
command_on: 1
command_off: 0
- name: nilan_t0_Actual_air_humidity
template:
-
sensor:
- unique_id: Nilan GEO Systemstate
name: Nilan GEO Systemstate
state: >-
{% if states('sensor.nilan_geo_systemstate') | float(0) == 0 %}
auto
{% elif states('sensor.nilan_geo_systemstate') | float(0) == 1 %}
cooling
{% elif states('sensor.nilan_geo_systemstate') | float(0) == 2 %}
heat
{% endif %} - unique_id: Nilan Compact P Systemstate
name: Nilan Compact P Systemstate
state: >-
{% if states('sensor.nilan_compact_p_systemstate') | float(0) == 0 %}
auto
{% elif states('sensor.nilan_compact_p_systemstate') | float(0) == 1 %}
cooling
{% elif states('sensor.nilan_compact_p_systemstate') | float(0) == 2 %}
heat
{% endif %} - unique_id: Nilan GEO Three-way valve
name: Nilan GEO Three-way valve
state: >-
{% if states('sensor.nilan_geo_three-way_valve') |float(0) == 1 %}
water
{% else %}
heat
{% endif %} - unique_id: Nilan Compact P Four-way valve
name: Nilan Compact P 4Four-way valve
state: >-
{% if states('sensor.nilan_compact_p_four-way-valve') |float(0) == 1 %}
open
{% else %}
close
{% endif %} - unique_id: Nilan Compact P Bypass-Damper
name: Nilan Compact P Bypass-Damper
state: >-
{% if states('sensor.nilan_compact_p_bypass_damper') |float(0) == 1 %}
open
{% else %}
close
{% endif %} - unique_id: Nilan Compact P Air-Compressor
name: Nilan Compact P Air-Compressor
state: >-
{% if states('sensor.nilan_compact_p_aircompressor_state') |float(0) == 0 %}
stop
{% else %}
run
{% endif %}
- unique_id: Nilan GEO Systemstate
-
binary_sensor:
- unique_id: Nilan Low pressure alarm
name: Nilan Low pressure alarm
device_class: problem
state: >-
{% if states('sensor.nilan_geo_low_pressure_alarm') |float(0) == 1 %}
Ok
{% else %}
Error
{% endif %} - unique_id: Nilan High pressure alarm
name: Nilan High pressure alarm
device_class: problem
state: >-
{% if states('sensor.nilan_high_pressure_alarm') |float(0) == 1 %}
Ok
{% else %}
Error
{% endif %} - unique_id: Nilan Brine pressure
name: Nilan Brine pressure
device_class: problem
state: >-
{% if states('sensor.nilan_geo_brine_pressure') |float(0) == 1 %}
Ok
{% else %}
Error
{% endif %} - unique_id: Nilan Geo Alarm
name: Nilan Geo Alarm
device_class: problem
state: >-
{% if states('sensor.nilan_geo_alarm') |float(0) == 1 %}
Ok
{% else %}
Error
{% endif %} - unique_id: Nilan Compact P Alarm
name: Nilan Compact P Alarm
device_class: problem
state: >-
{% if states('sensor.nilan_compact_p_alarm') |float(0) == 1 %}
Ok
{% else %}
Error
{% endif %}
- unique_id: Nilan Low pressure alarm
from nilan.
I have a CTS700 and a Nilan compact P Air9 and would like to help, i use this config for my modbus connection today.
https://pastebin.com/PZNHBRXM
Software is updated to latest version by Nilan last week
I will be happy to help with qmodmaster if someone can guide me.
from nilan.
Same here, however, I only have macs and linux servers, and most of the tools seems to require windows :/
from nilan.
I have a CTS700 and a Nilan compact P Air9 and would like to help, i use this config for my modbus connection today. https://pastebin.com/PZNHBRXM
Software is updated to latest version by Nilan last week
I will be happy to help with qmodmaster if someone can guide me.
Thanks for sharing your config! Have you figured out how to control active cooling? Neither 3284 nor 5288 works for me, already tried to Google for years with no clue....
from nilan.
Same here, however, I only have macs and linux servers, and most of the tools seems to require windows :/
What do you mean? For example qmodmaster works on linux and is open source. You just need to compile it yourself.
from nilan.
I have a CTS700 and a Nilan compact P Air9 and would like to help, i use this config for my modbus connection today.
https://pastebin.com/PZNHBRXMSoftware is updated to latest version by Nilan last week
I will be happy to help with qmodmaster if someone can guide me.
What kind of guidance do you need? The software is pretty straight forward.
from nilan.
What I need is: 1. dump of all register contents. This can be tedious. 2. A picture of the device type plate. 3. A clear correlation between register in modbus and function in HMI
from nilan.
Related Issues (20)
- If connection fails during setup, integration must be reloaded
- Add support for VGU180 EK HOT 4
- Add support for Nilan CompactS HOT 3
- Fan mode missing from automation actions HOT 2
- Nilan Compact P Air 9 support
- CTS700 on a Compact P HOT 2
- Latest update created orphaned device HOT 6
- Can't initialize integration after 2024.4 HOT 8
- Could not read errors - poss since 1.2.14 HOT 11
- Elfin EW11 HOT 2
- Modbus Error: [Connection] Not connected[AsyncModbusTcpClient 192.168.68.122:502] HOT 1
- 1.2.15 causes MODBUS communication to fail HOT 2
- Could not exclusively lock port /dev/ttyUSB0 HOT 1
- Failed to call service HOT 1
- Home Assistant 2023.9 broke Nilan integration - "Failed to set up"
- Doesn't work with 2023.9? HOT 1
- Issues with 2023.9.0 and 2023.9.1 Core update HOT 1
- Feature request - NILAN Gateway integration directly? HOT 1
- Set Fan Level
- Central heating control HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nilan.