-
Notifications
You must be signed in to change notification settings - Fork 22
How to support the development of ramses_rf
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...
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/.