pail23 / stiebel_eltron_isg_component

Stiebel Eltron ISG integration for Home Assistant
MIT License
43 stars 19 forks source link

Only HK1 and HK2 are shown, HK3 not available #197

Open starlight2k opened 4 months ago

starlight2k commented 4 months ago

Hello,

i have 3 heat circuits, but only temps for 1 and 2 are shown, 3 is not available.

Is there any chance to get HK3 ? With the extension WPE its even possible to have more heat circuits

https://github.com/pail23/stiebel_eltron_isg_component/issues/89#issuecomment-1756155468 only shows values for HK3 from FET, but not from heat pump.

Screenshot 2024-02-12 095316

Padanian commented 4 months ago

I'll pick this one up in the next few days

EDIT: no modbus registers for HK3. Unable to proceed.

starlight2k commented 4 months ago

its just not documented, because the "public" pdf version is for WPM3 , but i have WPM4

they just put the values at the end ;)

HK3 is 609 (ist) and 610 (soll)

Screenshot 2024-02-13 002039 Screenshot 2024-02-13 002018 Screenshot 2024-02-13 002004

starlight2k commented 4 months ago

maybe also interesting..

if you have another pt1000 for cooling, its now register 523

Screenshot 2024-02-13 002744 Screenshot 2024-02-13 002728

Padanian commented 4 months ago

I have contacted the headquarter in Germany and asked confirmation. I'm not confident to implement registers based on a deduction or reverse engineering.

EDIT: also WPM4 is WPMsystem, so it's not correct to consider the manual suitable for WPM3.

starlight2k commented 4 months ago

you are right, WPM4 is WPMsystem. so it must be related to the software version of the ISG

Screenshot 2024-02-13 091750

Padanian commented 4 months ago

Anyway, it is apparent the ISG manual is incomplete. Waiting for a feedback from headquarters.

Padanian commented 4 months ago

if you have another pt1000 for cooling, its now register 523

It's 524, actually. I have implemented 524 to 527 and HK3 water temperatures. To be tested by anyone with such parameters populated.

starlight2k commented 4 months ago

There must be something wrong in code

it read out target temp, but actual temp is disabled... after activate manual , whole plugin fails.

`

Logger: homeassistant.loader Source: loader.py:842 First occurred: 20:36:28 (1 occurrences) Last logged: 20:36:28 Unexpected exception importing platform custom_components.stiebel_eltron_isg.climate

Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/loader.py", line 842, in get_platform cache[full_name] = self._import_platform(platform_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/loader.py", line 859, in _import_platform return importlib.import_module(f"{self.pkg_path}.{platform_name}") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/importlib/init.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "", line 1204, in _gcd_import File "", line 1176, in _find_and_load File "", line 1147, in _find_and_load_unlocked File "", line 690, in _load_unlocked File "", line 940, in exec_module File "", line 241, in _call_with_frames_removed File "/config/custom_components/stiebel_eltron_isg/climate.py", line 148, in class StiebelEltronISGClimateEntity(StiebelEltronISGEntity, ClimateEntity): File "/config/custom_components/stiebel_eltron_isg/climate.py", line 156, in StiebelEltronISGClimateEntity | ClimateEntityFeature.TURN_OFF ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/enum.py", line 784, in getattr raise AttributeError(name) from None AttributeError: TURN_OFF

`

Logger: homeassistant.setup Source: setup.py:403 First occurred: 20:36:28 (1 occurrences) Last logged: 20:36:28 Unable to prepare setup for platform 'stiebel_eltron_isg.climate': Platform not found (Exception importing custom_components.stiebel_eltron_isg.climate)

Padanian commented 4 months ago

Did you update to 2024.2?

starlight2k commented 4 months ago

now updated, not breaking anymore but still not showing values

Screenshot 2024-02-13 205905 Screenshot 2024-02-13 205839 Screenshot 2024-02-13 210014

starlight2k commented 4 months ago

aha, looks like you swapped the modbus address

Screenshot 2024-02-13 210358

starlight2k commented 4 months ago
- name: HK3_ist
  unit_of_measurement: °C
  device_class: temperature
  address: 609
  scale: 0.1
  slave: 1
  input_type: input
  data_type: int16
- name: HK3_soll
  unit_of_measurement: °C
  device_class: temperature
  address: 610
  scale: 0.1
  slave: 1
  input_type: input
  data_type: int16
- name: cooling_actual
  unit_of_measurement: °C
  device_class: temperature
  address: 523
  scale: 0.1
  slave: 1
  input_type: input
  data_type: int16

Screenshot 2024-02-13 210852 Screenshot 2024-02-13 210820

Padanian commented 4 months ago

aha, looks like you swapped the modbus address

It's not that I swapped the addresses. It's just that they are undocumented. Provided HK1 and HK2 ordering is actual first, target second, I assumed it was the same. Can you please double check this is the case.

starlight2k commented 4 months ago

i dont get it,

i checked the code , 609 and 610 should be correct. i deleted custom components, parsed it manually from main, rebooted 100 times, but it still reading actual as target. actual still not available and cant be activate.

any idea if its a problem with my HA or code?

Screenshot 2024-02-14 110450 Screenshot 2024-02-14 110441 Screenshot 2024-02-14 111340

btw cooling surface is reading out OK, but i read 523 in code its 524 , so i will try 610 / 611

Screenshot 2024-02-14 111646

starlight2k commented 4 months ago
        # 604-609 COOLING CIRCUIT TEMPERATURE_HK1 to HK5
        decoder.skip_bytes(28)
        # 610
        result[ACTUAL_TEMPERATURE_HK3] = get_isg_scaled_value(
            decoder.decode_16bit_int()
        )
        # 611
        result[TARGET_TEMPERATURE_HK3] = get_isg_scaled_value(
            decoder.decode_16bit_int()
        )

wpm_coordinator.py

this will fix it, i dont understand why. the plugin reads everything +1?

Screenshot 2024-02-14 112319 Screenshot 2024-02-14 112307

Padanian commented 4 months ago

Sorry, but why are you uploading a picture of cooling fancoil? It is confusing.

Padanian commented 4 months ago
        # 604-609 COOLING CIRCUIT TEMPERATURE_HK1 to HK5
        decoder.skip_bytes(28)
        # 610
        result[ACTUAL_TEMPERATURE_HK3] = get_isg_scaled_value(
            decoder.decode_16bit_int()
        )
        # 611
        result[TARGET_TEMPERATURE_HK3] = get_isg_scaled_value(
            decoder.decode_16bit_int()
        )

wpm_coordinator.py

this will fix it, i dont understand why. the plugin reads everything +1?

@pail23 can you confirm the base address of the function is +1?

starlight2k commented 4 months ago

for some reason, the plugin reads everything +1 (starting from 1) and the modbus plugin of homeassistant reads everything starting from 0

so if i read them with the modbus plugin ,,, its 523 (cooling) / 609 (actual HK3) / 610 (target hK3) but stiebel plugin its 524/610/611

its also in the documentation:

Modbus-Systemwerte für Wärmepumpen mit WPM Hinweis Die aufgeführten Geräte werden grundsätzlich unterstützt.

  • Nicht jedes Objekt ist bei jedem Gerät verfügbar.
  • Für nicht verfügbare Objekte wird der Ersatzwert „32768 (0x8000H)“ ausgegeben. - Die Adressierung des ISG ist 1 basiert (1 based).

so my mistake :(

Screenshot 2024-02-14 113736

Screenshot 2024-02-14 113529 Screenshot 2024-02-14 113542 Screenshot 2024-02-14 113450 Screenshot 2024-02-14 113507

Padanian commented 4 months ago

@pail23 How would you like to proceed for fixing it?

starlight2k commented 4 months ago

Sorry, but why are you uploading a picture of cooling fancoil? It is confusing.

Maybe its confusing.

There are two possibilities to use the heat pump for cooling: Fan Cooling (Gebläsekühlung) Surface Cooling (Flächenkühlung) (sometimes is just your underfloor heating system, but can also ceiling cooling circuit)

If you have included a buffer in your system, the heatpump will cool down the buffer, which is connected to your cooling system. The readout actual value is just a pt1000 which is in the upper third of your buffer.

It cannot read the target temp, because the heatpump can only heat OR cool. When summer mode is activated, it will switch to cooling and you can use the fan/surface cooling device.

The values for cooling wasnt included in the 2024.2 release, but now in the main. they are working and reading the same as ISG webinterface. just posted a screenshot, that they look like reading correct.

Padanian commented 4 months ago

Maybe its confusing.

Yes, thanks, I am actually from Stiebel Eltron, so I am familiar with how it works. Confusing was the picture of HK3 target temperature together with fancoil cooling. I didn't see the relationship.

mapo-89 commented 2 months ago

is it possible to integrate also the climate entity or target temperature input_number entity for HC3? like this image

Padanian commented 2 months ago

It's already implemented, registers 592 to 595. @pail23 these registers 609 and 610 are still undocumented, and I fill unease with it

starlight2k commented 2 months ago

@mapo-89

do you have HK3? can you report back if actual and target temp shows correctly ? still no idea if 609/610 or 610/611

@Padanian its stiebel eltron, a german company. they are slow with everything and it will take decades before they will release a new doc

while you fill unease with it i added it like this

        # 531 External Heater
        result[ACTUAL_TEMPERATURE_EXT] = get_isg_scaled_value(
            decoder.decode_16bit_int()
        )
        # 532 External Heater 
        result[TARGET_TEMPERATURE_EXT] = get_isg_scaled_value(
            decoder.decode_16bit_int()
        )

        # 610
        result[ACTUAL_TEMPERATURE_HK3] = get_isg_scaled_value(
            decoder.decode_16bit_int()
        )
        # 611
        result[TARGET_TEMPERATURE_HK3] = get_isg_scaled_value(
            decoder.decode_16bit_int()
        )

for me its working. also the external heater which is not available in main fork

mapo-89 commented 2 months ago

@starlight2k I do not receive any data from the sensor for the actual temperature HC3, but the target temperature receives the actual temperature

starlight2k commented 2 months ago

Thanks for verification.

need to be changed to 610/611 not 609/610.

mapo-89 commented 2 months ago

short question: Why am I not able to see the climate sensor for HC3? image

Padanian commented 2 months ago

while you fill unease with it i added it like this

I'm happy it works for you, but hey, I'm volunteering as you are. Feel free to commit your code. There are not many units with 3 circuits out there, and I can't reverse engineer all registers. Also it is unexplicable why all other sequence of registers are in line, and registers from 501 onwards are shifted by 1.