zxdavb / ramses_cc

HA integration for CH/DHW and HVAC systems that use the RAMSES II RF protocol
GNU General Public License v3.0
71 stars 16 forks source link

ramses_rf.send_command fails with TypeError: must be exactly one command to learn #71

Closed ingus16 closed 10 months ago

ingus16 commented 10 months ago

-- EDIT BEGINS -- The solution for v0.20.x and v0.21.x is to use: ramses_rf.send_command instead. -- EDIT ENDS --

Hi, Have

The packet flew in and out, so nanocul with HA is working. Tried impersonate and faking, etc., seven days 12+ hours reading miles-long topics but no signs that anything is working.

This is what shows in HA Logs when using all buttons on the remote and PIV unit's response image This is my HA nanocull config image When trying to use commands via services like below Service call image Debug output image

Tried to send a packet ( boost) image Debug image and the outcome is - nothing happens

Some errors time after time appears, I have no idea what is about image image

Lovelace some strange things as well image

I have 0 idea how people managed to make it work with Nuaire Drimaster and at least fake a remote. Tried anything, 0 success., I assume that ramses_cc has bugs with the newest home assistant

zxdavb commented 10 months ago

Set a hint for the 30:071287 in the known list - it is of class FAN, not RFG.

Do you have the 4-way switch already bound, and you're simply trying to impersonate it?

The must be exactly one command to learn is a known bug - use the other version of ramses_cc.

But you should need to learn anything... as long as the switch is already bound.

As on the forum - others have got this working... as long as a switch is already bound, and you simply impersonate it.

A fix is coming for fully-faked switches...

ingus16 commented 10 months ago

Set a hint for the 30:071287 in the known list - it is of class FAN, not RFG.

Do you have the 4-way switch already bound, and you're simply trying to impersonate it?

The must be exactly one command to learn is a known bug - use the other version of ramses_cc.

But you should need to learn anything... as long as the switch is already bound.

As on the forum - others have got this working... as long as a switch is already bound, and you simply impersonate it.

A fix is coming for fully-faked switches... Thanks for the reply No matter which version I download Ramses_cc it always shows "TypeError: must be exactly one command to learn" when I send or use learn a command to test if impersonated or faked remote work. How can I properly impersonate the switch and use it via HA Please? Maybe I am doing something wrong ? My config now image

Folowed manual etc... nothing working with brand new install.

ingus16 commented 10 months ago

Bought two controllers and had no luck . Literary nothing works, tried any available ramses version and downgrade HA image

ingus16 commented 10 months ago

Tried to bind , as well no luck image

ingus16 commented 10 months ago

If need any further logs details tests just let here know

mogusbi commented 10 months ago

Having the same issue with the Drimaster PIV. Trying to impersonate an already bound remote

[547168192448] Error handling message: Unknown error (unknown_error) Mo Gusbi from 2a00:23c7:e48d:f301:4868:70e4:4669:5a55 (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 26, in _handle_async_response
    await func(hass, connection, msg)
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 731, in handle_execute_script
    script_result = await script_obj.async_run(msg.get("variables"), context=context)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1578, in async_run
    return await asyncio.shield(run.async_run())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 420, in async_run
    await self._async_step(log_exceptions=False)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 470, in _async_step
    self._handle_exception(
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 493, in _handle_exception
    raise exception
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 468, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 704, in _async_call_service_step
    response_data = await self._async_run_long_action(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 666, in _async_run_long_action
    return long_task.result()
           ^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2035, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2072, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 830, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 876, in entity_service_call
    response_data = await _handle_entity_call(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 948, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/config/custom_components/ramses_cc/remote.py", line 216, in svc_send_command
    await self.async_learn_command(*args, **kwargs)
  File "/config/custom_components/ramses_cc/remote.py", line 135, in async_learn_command
    raise TypeError("must be exactly one command to learn")
TypeError: must be exactly one command to learn

Edit: Here's my config

ramses_cc:
  serial_port: /dev/ttyACM0

  ramses_rf:
    enforce_known_list: true

  known_list:
    18:074254:
      class: FAN
      _note: Nuaire PIV
    30:071138:
      class: REM
      faked: true
      commands:
        normal: " I --- 30:071138 18:074254 --:------ 22F1 003 00020A"
        boost: " I --- 30:071138 18:074254 --:------ 22F1 003 00030A"
        heater_auto: " I --- 30:071138 18:074254 --:------ 22F1 003 000A0A"
        heater_off: " I --- 30:071138 18:074254 --:------ 22F1 003 00090A"
      _note: Nuaire DRI-ECO-4S (4-way switch)
zxdavb commented 10 months ago

https://community.home-assistant.io/t/honeywell-ch-dhw-via-rf-evohome-sundial-hometronics-chronotherm/151584/3080

ingus16 commented 10 months ago

Hi, Unfortunately, there was no success in binding a fake ar impersonating the existing one. The same error always: "TypeError: must be exactly one command to learn."

ingus16 commented 10 months ago

This can be closed. Please see the response to my question. At the current date, for at least NUAIRE I should use system service calls and not ramses_cc service calls https://community.home-assistant.io/t/honeywell-ch-dhw-via-rf-evohome-sundial-hometronics-chronotherm/151584/3578?u=ingus16

Thanks developer for this tool

zxdavb commented 10 months ago

The solution for v0.20.x and v0.21.x is to use:

service: remote.send_command

... instead of:

service: ramses_cc.send_command