LK Systems Floor heating (ongoing) (help wouldn’t hurt)

Hi I bought the same device as several other here: Amazon.de

Were you ever able to get it working?
And if so would you like to share your settings (EW11 - serial and communication settings) and Home Assistant configuration.yaml

Also is A to + and B to - correct?

I can see something happening under Status page “frames/bytes received” but nothing goes into Home Assistant at the moment.

And do you need to do anything other then connect it to the BUS port on the LK ICS.2 Controller? Do I need to reset the LK ICS.2 controller?

I tested to hold A and 8 to reset but nothing happends on my LK ICS.2 controller.

I have restarted the controller.

Tested to hook up the computer to the GW port on the LK ICS.2 controller does anyone know how that can be used? or what it is for?

Any tips would be appriciated since I have tested so many settings now on the EW11 device

Hej.
Har precis fått in min LK golvvärme i HA enligt dina instruktioner och det verkar funka. :slight_smile:
En fråga, vad gör binary sensor i koden för något? Märker ingen skillnad om den ligger där eller inte. Går det att få till batterinivå på dom termostater som jag har trådlöst?
Mvh Jonny

Hej
Kul att att lösningen kommit till användning igen. Min egen styrning har tickat på i ett par år utan handpåläggning så jag hade nästan glömt bort den.
Binary sensors visar digitala 1/0-parametrar. I detta fall om ventilen är öppen eller stängd.
Jag måste gräva fram dokumentationen från LK om det går att läsa batteri-status någonstans. Har själv trådanslutna termostater så jag har nog aldrig tänkt på saken.
Återkommer…

Jo, det ska gå att läsa av batteri-status. Återkommer när jag fått tid att testa.

Ok. Gör gärna det :slight_smile:

I think we should stick to english here in this forum.

Add this among your sensors in configuration.yaml to display battery level:

    - name: Batteri maskinrum
      unique_id: battery_maskinrum
      slave: 1
      # Zon 2
      address: 1103
      input_type: input
      device_class: battery
      state_class: measurement
      unit_of_measurement: "%"
      precision: 0
      data_type: int16

Address should be 1203 for zone 3 etc. Name must be unique and so must unique_id.

It returns 0% in my case but that is probably correct since I have cabled thermostats.

1 Like

Hej.
Ska testa detta :slight_smile:
Tack.

I got 100%. I will test with bad batteries tomorrow if i can find some,
The status from the binary sensor doesen´t work.
I can´t find what´s wrong.
do you know if i can have the usb dongle and the gateway connected together?

I’m currently working on a homey app for integrating ICS.2 over Modbus TCP. Using a raspberry pi as a modbus bridge.

If there is interest I love to make an integration for HA

1 Like

To add, it supports the following features (so far):

  • Temperature control
  • Current temperature
  • Min and max set point temperature
  • Setting Keylock
  • Setting backlight
  • Setting bypass mode (opening actuators)
  • Display link quality
  • Display battery
  • Display heat status
  • Display firmware version
  • Display channel id (if wireless unit)
  • Automatic zone mapping
  • mDNS discovery adding

These are the ones I found useful but adding more shouldn’t be difficult

Have anyone managed to connect it to the LK Webserver?

This sounds very much like what I’m interested in. I just realized I might be able to control my LK system from Homey or HA. I know my way around a raspberry pi and controlling things, but modbus is new to me. I was hoping you might give me a head start on finding code and hardware by piggybacking of your setup.

Which adapter do you have? The one mentioned here GitHub - astrandb/lk-systems-floor: How to setup Home Assistant with modbus integration for LK Systems ICS.2 or this one https://www.amazon.de/dp/B08Q5H8DFY?psc=1&ref=ppx_yo2ov_dt_b_product_details?
Perhaps you even have a link?

And which code are you running on the pi specifcally for this? Is there a github link to share perhaps?

Any help is appreciated! Thanks in advance.

Hi
You can use restful sensors to get data from the web server. Like so


rest:
#Lektrummet
  - authentication: basic
    resource: http://[IP_of_local_webserver]/thermostat.json?tid=1
    username: "lk"
    password: "[REDACTED]”
    scan_interval: 60
    sensor:
    - name: "LK Lekrummet get_room_deg"
      unique_id: lk.Lekrummet.get_room_deg
      value_template: "{{ (value_json.get_room_deg | float ) / 100 }}"
      device_class: temperature
      unit_of_measurement: "°C"
    - name: "LK Lekrummet set_room_deg"
      unique_id: lk.Lekrummet.set_room_deg
      value_template: "{{ (value_json.set_room_deg | float ) / 100 }}"
      device_class: temperature
      unit_of_measurement: "°C"
    - name: "LK Lekrummet battery"
      unique_id: lk.Lekrummet.battery
      value_template: "{{ value_json.battery | int }}"
      device_class: battery
      unit_of_measurement: "%"
    binary_sensor:
    - name: "LK Lekrummet heat_status"
      unique_id: lk.Lekrummet.heat_status
      value_template: "{{ value_json.heat_status }}"
      device_class: heat

climate:
  #Sovrummet
  - platform: generic_thermostat
    name: "LK Sovrummet"
    unique_id: lk.sovrummet.thermostat
    heater: binary_sensor.lk_sovrummet_heat_status
    target_sensor: sensor.lk_sovrummet_get_room_deg

(Ignore that I’m referencing different sensors in the climate entity, I’ve got 10 ics.2 and copy-pasta is no fun from a phone)
I haven’t looked into doing post to the webserver as I tend to just let it roll (for now) - but there is some JavaScript files one can have a look at if you check out the webserver in developer mode in your browser, and I’ve seen a call to a cgi file which I guess one could replicate with a simple curl command

Geir

Sorry for the extreme late reply here… You still interested?

LK themselves call it master and slave units. It’s when I have more than one recieving units, I can connect them to eachother wireless so I don’t need two connection points to the web. Then one of the recieving units becoms the master, and the second a slave. However I managed to sort this out after a long while, and it turns out the slave starts at the 9th position, e.g. 1801 and so on. Even though I have some empty slots up until 1801.

Absolutely. I’m thinking of getting these thermostats for my upcoming house build the coming spring. A full on integration would be super sweet.

Hello,

I can´t get the status of the heating to work.
Everything else seems to work.

Can someone maybe help me? :slight_smile:

Here is my code.

modbus:
name: dongle_1
type: serial
method: rtu
port: /dev/ttyUSB0
baudrate: 38400
stopbits: 1
bytesize: 8
parity: N
climates:
- name: Tvättstuga
unique_id: climate_Tvättstuga
slave: 1
# zon 1
address: 1001
input_type: input
target_temp_register: 1002
data_type: int16
precision: 1
scale: 0.01
max_temp: 35
min_temp: 7
temperature_unit: C

- name: Hall
  unique_id: climate_Hall
  slave: 1
  # zon 1
  address: 1101
  input_type: input
  target_temp_register: 1102
  data_type: int16
  precision: 1
  scale: 0.01
  max_temp: 35
  min_temp: 7
  temperature_unit: C
  
- name: Badrum_uppe
  unique_id: climate_Badrum_uppe
  slave: 1
  # zon 1
  address: 1201
  input_type: input
  target_temp_register: 1202
  data_type: int16
  precision: 1
  scale: 0.01
  max_temp: 35
  min_temp: 7
  temperature_unit: C
  
- name: Toa
  unique_id: climate_Toa
  slave: 1
  # zon 1
  address: 1301
  input_type: input
  target_temp_register: 1302
  data_type: int16
  precision: 1
  scale: 0.01
  max_temp: 35
  min_temp: 7
  temperature_unit: C
  
- name: Kök
  unique_id: climate_Kök
  slave: 1
  # zon 1
  address: 1401
  input_type: input
  target_temp_register: 1402
  data_type: int16
  precision: 1
  scale: 0.01
  max_temp: 35
  min_temp: 7
  temperature_unit: C

sensors:
- name: Tvättstuga
unique_id: temp_Tvättstuga
slave: 1
# Zon 1
address: 1001
input_type: input
device_class: temperature
state_class: measurement
unit_of_measurement: °C
scale: 0.01
precision: 1
data_type: int16

- name: Hall
  unique_id: temp_Hall
  slave: 1
  # Zon 1
  address: 1101
  input_type: input
  device_class: temperature
  state_class: measurement
  unit_of_measurement: °C
  scale: 0.01
  precision: 1
  data_type: int16
  
- name: Badrum_uppe
  unique_id: temp_badrum_uppe
  slave: 1
  # Zon 1
  address: 1201
  input_type: input
  device_class: temperature
  state_class: measurement
  unit_of_measurement: °C
  scale: 0.01
  precision: 1
  data_type: int16
  
- name: Toa
  unique_id: temp_toa
  slave: 1
  # Zon 1
  address: 1301
  input_type: input
  device_class: temperature
  state_class: measurement
  unit_of_measurement: °C
  scale: 0.01
  precision: 1
  data_type: int16
  
- name: Kök
  unique_id: temp_kök
  slave: 1
  # Zon 1
  address: 1401
  input_type: input
  device_class: temperature
  state_class: measurement
  unit_of_measurement: °C
  scale: 0.01
  precision: 1
  data_type: int16
  
- name: Batteri Kök
  unique_id: battery_kök
  slave: 1
  # Zon 2
  address: 1403
  input_type: input
  device_class: battery
  state_class: measurement
  unit_of_measurement: "%"
  precision: 0
  data_type: int16
  
- name: Batteri Hall
  unique_id: battery_Hall
  slave: 1
  # Zon 2
  address: 1103
  input_type: input
  device_class: battery
  state_class: measurement
  unit_of_measurement: "%"
  precision: 0
  data_type: int16
  
- name: Batteri Toa
  unique_id: battery_Toa
  slave: 1
  # Zon 2
  address: 1303
  input_type: input
  device_class: battery
  state_class: measurement
  unit_of_measurement: "%"
  precision: 0
  data_type: int16

binary_sensors:
- name: Heating Tvättstuga
unique_id: heating_1
slave: 1
address: 1003
device_class: heat
input_type: discrete_input

- name: Heating Hall
  unique_id: heating_2
  slave: 1
  address: 1103
  device_class: heat
  input_type: discrete_input 
  
- name: Heating Badrum_uppe
  unique_id: heating_3
  slave: 1
  address: 1203
  device_class: heat
  input_type: discrete_input 
  
- name: Heating Toa
  unique_id: heating_4
  slave: 1
  address: 1303
  device_class: heat
  input_type: discrete_input 
  
- name: Heating kök
  unique_id: heating_5
  slave: 1
  address: 1403
  device_class: heat
  input_type: discrete_input