RAMSES ESP

Protocol

Technical background for those who want to use the gateway flow cards or the frame form.

A frame

Every packet on the bus is one line of text:

 I --- 29:173894 29:233244 --:------ 22F1 003 000304
PartExampleMeaning
Verb II inform, RQ request, RP reply, W write
Sequence number---Usually empty
Address 129:173894Sender
Address 229:233244Receiver (--:------ = nobody in particular)
Address 3--:------Sometimes the sender again (for broadcasts)
Code22F1Kind of message
Length003Number of bytes in the payload
Payload000304The content, in hex

Over MQTT the ramses_esp wraps every frame as JSON: {"msg": " I --- 29:173894 ..."}. On rx the signal strength (RSSI) comes along too.

Important codes

CodeNameSent byContent
22F1Fan modeRemote → unit00 RR SS: RR = mode, SS = brand-specific suffix (04, 06, 0A)
22F3Boost / timerRemote → unit00 UU DD: DD minutes (UU 00) or hours (UU 01). Orcon uses a long form.
22F7BypassHomey → unit00 MM EF: auto, open or closed
31D9Fan stateUnitMode or speed; see below
31DAExtended statusUnitCO₂, humidity, temperatures, air flow, bypass, filter, faults
10D0FilterUnit / remoteDays until replacement; W 10D0 00FF resets the counter
10E0Device infoAllManufacturer and model, e.g. VMC-15RP01
1298CO₂Sensorppm
12A0HumiditySensor / unit% (sometimes with temperature)
31E0Ventilation demandCO₂ sensor%
2E10PresenceSensor
1060BatteryRemote / sensorLevel and battery low
2411ParameterUnit ↔ HomeyReading (RQ) and writing (W) heat recovery parameters
1FC9BindingAllOffer, accept, confirm

Modes per brand

The same number in 22F1 means something different per brand:

ByteOrconIthoVasco / ClimaRad
00awayoffoff
01lowawayaway
02mediumlowlow
03highmediummedium
04autohighhigh
05autoauto
07off

That's why the unit has a Brand setting. The tables follow ramses_rf; the Orcon one is confirmed on a real unit.

31D9: mode or speed?

  • With status byte FF the value is a speed in half percent.
  • With status byte 00 (seen live as 000000 to 000004) it's a step number.
  • Orcon reports its mode in byte 2 (00 away, 01 low, 02 medium, 03 high, 04 auto), not a speed.

Binding (1FC9)

Homey picks a free address that doesn't appear on the bus yet: 29: as a remote, 37: as a CO₂ sensor. When you start binding from a unit, only the answer of that unit counts.

Echoes

The ramses_esp hears its own transmissions back. Homey recognises them as an echo: they don't count as a remote button press and they're marked in the bus view. A flow that controls the unit therefore never fires its own trigger.

Further reading

  • ramses_rf: the Python library much of this knowledge comes from
  • ramses_esp: the gateway firmware
  • ramses_cc: the Home Assistant integration
Edit on GitHub

On this page