BenPru / luxtronik

Luxtronik integration for Home Assistant
MIT License
66 stars 23 forks source link

Possible to set pump speeds? #252

Open ChrisMisker opened 1 month ago

ChrisMisker commented 1 month ago

In the installer menu on the heat pump, it's possible to set the pumps speed (I have a Water/Water heat pump, so I can set the speed of the pump towards the heat source; and of course the speed of the pump of the central heating/floor heating). When it's cooling, I set those to 50%.. it saves me about 150w (out of 200w when having the pumps at 100%), so quite some energy saving, but with the same amount of cooling.

Is it possible to be able to set these with this integration?

BenPru commented 1 month ago

@ChrisMisker Please set speed to 100 % and take a dump. (See here) Then set speed to 50 % and take another dump. Dif the files and look abount a changing sensor or upload both files in this ticket.

Kars-de-Jong commented 1 month ago

The setting for cooling is parameters.ID_Einst_P155_PumpCool_RPM, it's a percentage (Percent2). Unfortunately setting it through the interface used by this integration seems to be impossible. It is protected by the installer password. I have tried, it didn't work.

BenPru commented 1 month ago

@Kars-de-Jong Installer password is only in the Luxtronik Frontend. With the Socket Interface everthing can be set without password. So I think it is possible if we know the correct parameter.

Kars-de-Jong commented 1 month ago

@BenPru I tried, it didn't update...

ChrisMisker commented 1 month ago

Hi @BenPru (@Kars-de-Jong ), for the pump for the brine, it's 1040 ID_Einst_P155_PumpVBO_RPM_C. The cooling pump is 1038 ID_Einst_P155_PumpCool_RPM. It's a number (e.g. 50 or 100) value.

And I have just tried setting it through the service luxtronik2.write and it works! It changes. That's great! I'll try adding it in the YAML now too, see if that works.

ChrisMisker commented 1 month ago

I can't get the YAML part to work... any help? It'd really help me to add these values to my installation.

sensor:
- platform: luxtronik2
  sensors:
    - group: parameters
      id: ID_Einst_P155_PumpVBO_RPM_C
      friendly_name: Luxtronik2 VBO Pump
    - group: parameters
      id: ID_Einst_P155_PumpCool_RPM
      friendly_name: Luxtronik2 Cool pump
ChrisMisker commented 3 weeks ago

Hi, I'm trying to set the pump speed through a script (based upon an input_number helper), but I get this error in the log. Am I doing something wrong?

Detected blocking call to sleep inside the event loop by custom integration 'luxtronik2' at custom_components/luxtronik2/lux_helper.py, line 279: time.sleep(WAIT_TIME_WRITE_PARAMETER) (offender: /config/custom_components/luxtronik2/lux_helper.py, line 279: time.sleep(WAIT_TIME_WRITE_PARAMETER)), please create a bug report at https://github.com/BenPru/luxtronik/issues Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module> sys.exit(main()) File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 190, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 672, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 639, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1988, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 452, in _handle_request resp = await request_handler(request) File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 543, in _handle resp = await handler(request) File "/usr/local/lib/python3.12/site-packages/aiohttp/web_middlewares.py", line 114, in impl return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 92, in security_filter_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 83, in forwarded_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 85, in ban_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware response = await handler(request) File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle result = await handler(request, **request.match_info) File "/usr/src/homeassistant/homeassistant/components/websocket_api/http.py", line 54, in get return await WebSocketHandler(request.app[KEY_HASS], request).async_handle() File "/usr/src/homeassistant/homeassistant/components/websocket_api/http.py", line 438, in async_handle async_handle_str(command_msg_data) File "/usr/src/homeassistant/homeassistant/components/websocket_api/connection.py", line 229, in async_handle handler(self.hass, self, schema(msg)) File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 46, in schedule_handler hass.async_create_background_task( File "/usr/src/homeassistant/homeassistant/core.py", line 860, in async_create_background_task task = create_eager_task(target, name=name, loop=self.loop) File "/usr/src/homeassistant/homeassistant/util/async_.py", line 37, in create_eager_task return Task(coro, loop=loop, name=name, eager_start=True) File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 27, in _handle_async_response await func(hass, connection, msg) File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 241, in handle_call_service response = await hass.services.async_call( File "/usr/src/homeassistant/homeassistant/core.py", line 2741, in async_call response_data = await coro File "/usr/src/homeassistant/homeassistant/core.py", line 2784, in _execute_service return await target(service_call) File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 663, in _service_handler response = await self._async_start_run( File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 621, in _async_start_run script_result = await coro File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 652, in _async_run return await self.script.async_run(script_vars, context) File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1773, in async_run return await asyncio.shield(create_eager_task(run.async_run())) File "/usr/src/homeassistant/homeassistant/util/async_.py", line 37, in create_eager_task return Task(coro, loop=loop, name=name, eager_start=True) File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 464, in async_run await self._async_step(log_exceptions=False) File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 526, in _async_step await getattr(self, handler)() File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 764, in _async_call_service_step self._hass.async_create_task_internal( File "/usr/src/homeassistant/homeassistant/core.py", line 828, in async_create_task_internal task = create_eager_task(target, name=name, loop=self.loop) File "/usr/src/homeassistant/homeassistant/util/async_.py", line 37, in create_eager_task return Task(coro, loop=loop, name=name, eager_start=True) File "/usr/src/homeassistant/homeassistant/core.py", line 2741, in async_call response_data = await coro File "/usr/src/homeassistant/homeassistant/core.py", line 2784, in _execute_service return await target(service_call) File "/config/custom_components/luxtronik2/__init__.py", line 69, in write_parameter await coordinator.async_write(parameter, value) File "/config/custom_components/luxtronik2/coordinator.py", line 112, in async_write return await self._async_read_or_write(True, parameter, value) File "/config/custom_components/luxtronik2/coordinator.py", line 118, in _async_read_or_write data = self._write(parameter, value) File "/config/custom_components/luxtronik2/coordinator.py", line 155, in _write self.client.write() File "/config/custom_components/luxtronik2/lux_helper.py", line 223, in write self._read_write(write=True) File "/config/custom_components/luxtronik2/lux_helper.py", line 254, in _read_write self._write() File "/config/custom_components/luxtronik2/lux_helper.py", line 279, in _write time.sleep(WAIT_TIME_WRITE_PARAMETER)

This is my script config:

alias: Luxtronik Stel pompen in
sequence:
  - service: luxtronik2.write
    data:
      parameter: ID_Einst_P155_PumpVBO_RPM_C
      value: "{{ states('input_number.helper_brine_pomp') }}"
  - service: luxtronik2.write
    data:
      parameter: ID_Einst_P155_PumpCool_RPM
      value: "{{ states('input_number.helper_koeling_pomp') }}"
description: ""
Kars-de-Jong commented 1 week ago

@ChrisMisker That's a known issue, it should still work.

ChrisMisker commented 1 week ago

@ChrisMisker That's a known issue, it should still work.

Yeah, thanks, I figured it out: Had to add | INT to the line, then it'll work.

Any ideas on how to get the YAML part working? (see https://github.com/BenPru/luxtronik/issues/252#issuecomment-2141830169 ) or is that not supported anymore?

Kars-de-Jong commented 1 week ago

No, that's not supported anymore. You need to install the old Luxtronik integration for that.

I would still like to see it supported for "advanced" users, just like with template sensors. You can define them like helpers, but if you need more advanced setttings you still need to use YAML.