Code Monkey home page Code Monkey logo

Comments (25)

Chrunchy avatar Chrunchy commented on July 19, 2024 1

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.

veista avatar veista commented on July 19, 2024

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.

veista avatar veista commented on July 19, 2024

Please respond if you are up for this? I can not do this by myself.

from nilan.

jakobmoll avatar jakobmoll commented on July 19, 2024

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.

veista avatar veista commented on July 19, 2024

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.

mbobinac avatar mbobinac commented on July 19, 2024

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.

veista avatar veista commented on July 19, 2024

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.

convicte avatar convicte commented on July 19, 2024

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.

veista avatar veista commented on July 19, 2024

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.

lauer avatar lauer commented on July 19, 2024

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.

veista avatar veista commented on July 19, 2024

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.

lauer avatar lauer commented on July 19, 2024

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.

veista avatar veista commented on July 19, 2024

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.

maisun avatar maisun commented on July 19, 2024

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:

  1. Compressor state: can be off, defrosting, hot water production, heating, cooling
  2. 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.

lauer avatar lauer commented on July 19, 2024

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.

veista avatar veista commented on July 19, 2024

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.

leonkdk avatar leonkdk commented on July 19, 2024

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.

veista avatar veista commented on July 19, 2024

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.

Johannes-288 avatar Johannes-288 commented on July 19, 2024

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: 502

    delay: 0
    message_wait_milliseconds: 30
    retries: 3
    timeout: 5

    sensors:

    • 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

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 %}
  • 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 %}

from nilan.

terkilddk avatar terkilddk commented on July 19, 2024

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.

lauer avatar lauer commented on July 19, 2024

Same here, however, I only have macs and linux servers, and most of the tools seems to require windows :/

from nilan.

maisun avatar maisun commented on July 19, 2024

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.

veista avatar veista commented on July 19, 2024

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.

veista avatar veista commented on July 19, 2024

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.

What kind of guidance do you need? The software is pretty straight forward.

from nilan.

veista avatar veista commented on July 19, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.