Skip to content

How to support the development of ramses_rf

Egbert Broerse edited this page Jul 25, 2025 · 5 revisions

Ramses_rf structure

Essentially, there are 4 layers of note:

ramses_esp -- the dongle operating at the USB/MQTT <--> RF layer
ramses_tx -- the 'lower' half of this repo
ramses_rf -- the 'upper' half of this repo
ramses_cc -- the RAMSES RF custom control for HA

ramses_tx converts payloads to JSON and sends them up to ramses_rf, which has a concept of things like FANs (ventilation units), REMs (remotes), CO2s (CO2 sensors), etc.

It is up to ramses_rf to tell you the (e.g.) current indoor humidity of a FAN. It should do that by using the latest available data, which could be either:

12A0 packet
31DA packet

It should use the most recent packet for this, but may not...

Fetching packet logs

By design, ramses_rf is very unforgiving (the reasons why are explained elsewhere).

It is likely that, especially for HVAC systems, the parsers may not support your particular needs, and you may want to submit a PR to resolve that.

To progress, you will need a packet log that includes the (new) behaviour you wish to support. For example:

2024-10-10T18:10:21.527295 073  I --- 29:123150 29:099029 --:------ 22F1 003 000306
> cat packet.log | grep 22F1 | head -1 | python client.py -lf parse

client.py: Starting ramses_rf...
03:26:32.480 Best practice is to provide a known_list and enforce it, configure: enforce_known_list = True

client.py: Starting engine...
03:29:37.177  I --- 29:123150 29:099029 --:------ 22F1 003 000306 < Support the development of ramses_rf by reporting this packet (unknown mode_set: 06)
2024-10-10T18:10:21.527295 ...  I --- 29:123150 29:099029 --:------ 22F1 003 000306  # {'fan_mode': 'high', '_scheme': 'orcon', '_mode_idx': '03', '_mode_max': '06'}

client.py: Engine stopped: ended without error (e.g. EOF)
 - finished ramses_rf.

The above packet, I|22F1|000306 is not supported by ramses_rf prior to 0.42.x (specifically, the 06 on the end of the payload).

Any PR that extends support for this 06 'mode_set' (also known as a scheme), may need to:

  • change the payload regex in src/ramses_tx/ramses.py
  • change the payload parser in src/ramses_tx/parser.py
  • change the command constructor in src/ramses_tx/command.py ... and:
  • extend the tests in tests/.
Clone this wiki locally