Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Heatpump denied writing supply-fan-speed-normal-47270 #79

Open
wlouckx opened this issue Oct 4, 2024 · 1 comment
Open

Heatpump denied writing supply-fan-speed-normal-47270 #79

wlouckx opened this issue Oct 4, 2024 · 1 comment

Comments

@wlouckx
Copy link

wlouckx commented Oct 4, 2024

I run an automation every 5 minutes to update normal fan speeds (Nibe F470) on external factors.

Does not fail all the time so not cricital, but quite a few times this pops up in the logs of HomeAssistant:

Logger: homeassistant.components.automation.co2_set_normal_supply_speed
Source: helpers/script.py:525
integration: Automation ([documentation](https://www.home-assistant.io/integrations/automation), [issues](https://github.com/home-assistant/core/issues?q=is%3Aissue+is%3Aopen+label%3A%22integration%3A+automation%22))
First occurred: October 3, 2024 at 17:20:01 (179 occurrences)
Last logged: 13:50:01

Set Normal Supply Speed: Error executing script. Unexpected error for call_service at pos 1: Heatpump denied writing supply-fan-speed-normal-47270
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 525, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 763, in _async_call_service_step
    response_data = await self._async_run_long_action(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 726, in _async_run_long_action
    return await long_task
           ^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2761, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2804, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 996, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1068, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/number/__init__.py", line 120, in async_set_value
    await entity.async_set_native_value(native_value)
  File "/usr/src/homeassistant/homeassistant/components/nibe_heatpump/number.py", line 76, in async_set_native_value
    await self._async_write_coil(value)
  File "/usr/src/homeassistant/homeassistant/components/nibe_heatpump/coordinator.py", line 224, in _async_write_coil
    await self.coordinator.async_write_coil(self._coil, value)
  File "/usr/src/homeassistant/homeassistant/components/nibe_heatpump/coordinator.py", line 137, in async_write_coil
    await self.connection.write_coil(data)
  File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 189, in async_wrapped
    return await copy(fn, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 111, in __call__
    do = await self.iter(retry_state=retry_state)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 153, in iter
    result = await action(retry_state)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/_utils.py", line 99, in inner
    return call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 398, in <lambda>
    self._add_action_func(lambda rs: rs.outcome.result())
                                     ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.12/site-packages/tenacity/asyncio/__init__.py", line 114, in __call__
    result = await fn(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/nibe/connection/nibegw.py", line 372, in write_coil
    raise WriteDeniedException(f"Heatpump denied writing {coil.name}")
nibe.exceptions.WriteDeniedException: Heatpump denied writing supply-fan-speed-normal-47270

I have been occasionally looking at the logs in ESPHome but as it doesn't happen often it's hard to catch.

My ESPHome config for my LilyGo T-CAN485:

esphome:
  name: nibe-gateway
  friendly_name: nibe-gateway

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: *****************************
  reboot_timeout: 0s

ota:
  - platform: esphome
    password: ****************************************

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Nibe-Gateway Fallback Hotspot"
    password: ***************

captive_portal:
    
external_components:
  - source: github://elupus/esphome-nibe

# Set pins required for LilyGo T-CAN485 board
output:
  - platform: gpio
    id: ENABLE_PIN # Enable the chip
    pin:
      number: GPIO19
      inverted: true
  - platform: gpio
    id: SE_PIN # Enable autodirection
    pin:
      number: GPIO17
      inverted: true
  - platform: gpio
    id: ENABLE_5V_PIN # Enable 5V pin for RS485 chip
    pin:
      number: GPIO16
      inverted: true

# Configure uart that will be used
uart:
  rx_pin: GPIO21
  tx_pin: GPIO22
  baud_rate: 9600

# Configure NibeGW
nibegw:
  udp:
    # The target address(s) to send data to. May be a multicast address.
    # When using Home Assistant: this is your Home Assistant IP.
    target:
      - ip: 192.168.****
        port: 9999 #The Nibe Home Assistant integration listens to 9999 by default 

    # List of source address to accept data from, may be empty for no filter
    source:
      - 192.168.****

    # Optional port this device will listen to to receive read requests. Defaults to 9999
    # read_port: 9999

    # Optional port this device will listen to to receive write request. Defaults to 10000
    # write_port: 10000

  acknowledge:
    - MODBUS40

  # Constant replies to certain requests cabe made
  constants:
    - address: MODBUS40
      token: ACCESSORY
      data: [
            0x0A, # MODBUS version low
            0x00, # MODBUS version high
            0x01, # MODBUS address?
      ]

# Some helper functions to restart ESPHome from HA
button:
- platform: restart
  name: Nibegw Restart
- platform: safe_mode
  name: Nibegw Safe Mode Boot
@wlouckx
Copy link
Author

wlouckx commented Oct 11, 2024

I was able to trace logs from the module, the error happened at 11:35:03 in the HA log, so I assume it would be the response at 11:35:02?

[11:35:00][D][nibegw:025]: UDP Packet with 86 bytes to send
[11:35:00][D][nibegw:048]: UDP Packet token data of 10 bytes received
[11:35:00][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:00][D][nibegw:085]: Response to address: 0x20 token: 0x6b bytes: 10
[11:35:00][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:00][D][nibegw:025]: UDP Packet with 7 bytes to send
[11:35:01][D][nibegw:025]: UDP Packet with 7 bytes to send
[11:35:01][D][nibegw:048]: UDP Packet token data of 10 bytes received
[11:35:01][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:02][D][nibegw:025]: UDP Packet with 86 bytes to send
[11:35:02][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:02][D][nibegw:085]: Response to address: 0x20 token: 0x6b bytes: 10
[11:35:02][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:03][D][nibegw:025]: UDP Packet with 7 bytes to send
[11:35:03][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:04][D][nibegw:025]: UDP Packet with 86 bytes to send
[11:35:04][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:04][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:05][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:05][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:06][D][nibegw:025]: UDP Packet with 86 bytes to send
[11:35:06][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:06][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:07][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:07][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:08][D][nibegw:025]: UDP Packet with 86 bytes to send
[11:35:08][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:08][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:08][D][nibegw:025]: UDP Packet with 22 bytes to send
[11:35:09][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:09][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:10][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:10][D][nibegw:025]: UDP Packet with 6 bytes to send
[11:35:10][D][nibegw:025]: UDP Packet with 86 bytes to send

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant