Skip to content

5.2 Faking Remotes (switches)

Egbert Broerse edited this page Jun 12, 2026 · 100 revisions

NOTE: This feature relies on user-provided bind sequences, specific for a device model and manufacturer (OEM). They have been collected in this repository, and were eavesdropped from traffic between the original physical devices and accessories. You are invited to contribute!

Accessories used for remote faking include:

  • Itho remote to a FAN
  • Nuaire 4-way switch to a PIV (positive ventilation unit)
  • Orcon RF15 to a HRU (heat recovery ventilation unit)
  • Vasco 4-button remote to HRU
  • ClimaRad 4-button remote to MiniBox fan

The binding will require OEM-specific information. The following should work:

OEM device type OEM code device_info payload
Itho 37: 01 0000010028090101FEFFFFFFFFFF140107E5564D532D313243333900
Nuaire 32: 6C 000001C85A01016CFFFFFFFFFFFF010607E0564D4E2D32334C4D48323300
Orcon 37: 67 000001C894030167FFFFFFFFFFFF1B0807E4564D492D313557534A353300

Tip: If your vendor isn't one of the above, you can determine the OEM by inspecting the parsed 10E0 payload from your accessory in the HomeAssistant system log (byte 8 is the OEM code).

ClimaRad: ...

WIP

Itho: ...

WIP

Nuaire: 4-way Switch to PIV

This section describes binding a faked Nuaire DRI-ECO-4S to a DRI-ECO-HEAT-HC. Other models should work, but YMMV.

Nuaire PIVs only support a single switch (plus a single CO2, and a single humidity sensor).

To declare a faked remote called 32:123456, add this to your Known device IDs config (and restart HA):

"32:123456":
  class: REM
  faked: true  # device type 32: for Nuaire

Note: There is no need for the remote to be in the Schema, but you should add the remote’s id as bound: element under the fan in your Known List.

Perform initial binding

To bind the switch, put the PIV into binding mode and invoke this Action:

action: ramses_cc.bind_device
data:
  device_id: 32:123456
  offer:
    "22F1":  # 4-way switches only support 22F1
    "10E0":  # double-quotes are required for 10E0
  device_info: " I --- 32:123456 63:262142 --:------ 10E0 030 000001C85A01016CFFFFFFFFFFFF010607E0564D4E2D32334C4D48323300"

Note: Binding will fail without a valid device_info packet. The double quotes are necessary to protect the leading space.

Successful bindings will have an I-W-I sequence in the packet log similar to:

> ~ grep config/packet.log -E ' (10E0|1FC9) '

21:04:54.304429 000  I --- 32:123456 --:------ 32:123456 1FC9 024 0022F18325AA6C10E08325AA001FC98325AA
21:04:54.382823 050  W --- 30:082155 32:123456 --:------ 1FC9 012 2131DA7940EB6C10E07940EB
21:04:54.465230 000  I --- 32:123456 30:082155 --:------ 1FC9 001 21
21:04:54.546717 000  I --- 32:123456 63:262142 --:------ 10E0 030 000001C85A01016CFFFFFFFFFFFF010607E0564D4E2D32334C4D48323300

NOTE: Write down the device id of your PIV (this one is 30:082155); you will need it to create the commands later on.

Faking the switch

Add these commands to your Known device IDs config (and restart HA):

"32:123456":
  class: REM
  faked: true
  commands:
    normal:       ' I --- 32:123456 30:082155 --:------ 22F1 003 00020A'
    boost:        ' I --- 32:123456 30:082155 --:------ 22F1 003 00030A'
    heater_off:   ' I --- 32:123456 30:082155 --:------ 22F1 003 00090A'
    heater_auto:  ' I --- 32:123456 30:082155 --:------ 22F1 003 000A0A'
    battery_ok:   ' I --- 32:123456 --:------ 32:123456 1060 003 00FF01'
    get_fan_info: 'RQ --- 32:123456 30:082155 --:------ 31DA 001 00'

Note: You need to use the device_id of your PIV, which is unlikely to be 30:082155.

Then, to invoke a command, use the ramses_cc.send_command Action:

action: ramses_cc.send_command
target:
  entity_id: remote.32_123456
data:
  command: boost

Orcon: 15RF

This is how to bind an Orcon 15RF to an MVS-15...

Perform initial binding

To initiate a bind, put the HRU into binding mode and use this Action:

action: ramses_cc.bind_device
data:
  device_id: 37:123456
  offer:
    "22F1":
    "22F3":
    "10E0":
  device_info: " I --- 37:123456 63:262142 --:------ 10E0 038 000001C894030167FFFFFFFFFFFF1B0807E4564D492D313557534A3533000000000000000000"

Note: Binding will fail without a valid device_info payload. Note the leading space, which has necessitated the double quotes.

Successful bindings will have an I-W-I sequence in the packet log similar to::

> ~ grep config/packet.log -E ' (10E0|1FC9) '

21:04:54.304429 000  I --- 37:123456 --:------ 32:123456 1FC9 024 0022F18325AA6C10E08325AA001FC98325AA
21:04:54.382823 050  W --- 32:082155 37:123456 --:------ 1FC9 012 2131DA7940EB6C10E07940EB
21:04:54.465230 000  I --- 37:123456 32:082155 --:------ 1FC9 001 21
21:04:54.546717 000  I --- 37:123456 63:262142 --:------ 10E0 038 000001C894030167FFFFFFFFFFFF1B0807E4564D492D313557534A3533000000000000000000

NOTE: Write down the device id of your PIV (this one is 32:082155), you will need it to create the commands below.

    29:163367:
      class: REM
      _note: Orcon 15RF remote
      commands:
        away:         " I --- 37:123456 32:082155 --:------ 22F1 003 000004"
        low:          " I --- 37:123456 32:082155 --:------ 22F1 003 000104"
        medium:       " I --- 37:123456 32:082155 --:------ 22F1 003 000204"
        high:         " I --- 37:123456 32:082155 --:------ 22F1 003 000304"
        auto:         " I --- 37:123456 32:082155 --:------ 22F1 003 000404"
        timer_15mins: " I --- 37:123456 32:082155 --:------ 22F3 007 00020F03040000"
        timer_30mins: " I --- 37:123456 32:082155 --:------ 22F3 007 00021E03040000"
        timer_60mins: " I --- 37:123456 32:082155 --:------ 22F3 007 00023C03040000"

Vasco: ...

WIP

Clone this wiki locally