Yes, I have the python library to interface the gateway almost ready. I will push the code soon and then I will start with the integration.
Looking for a bit of help, as I made some progress on my own⌠but not enough.
I have a Siber ventilation unit, and the wireless remote that someone else also posted here. I got a RAMSES_ESP and managed to connect to it via MQTT. For now I am just trying to read information from the device (i.e. didnât try to control it yet). I can read the messages and it created the devices for the REM and FAN, but there are many errors and no information on the sensors.
If I interact with the remote, in the HA log I see communications between it and the FAN that make sense:
2025-01-17 00:34:56.287 INFO (MainThread) [ramses_rf.dispatcher] || 37:aaaaaa | 32:bbbbbb | I | fan_mode | || {'fan_mode': 'medium', '_scheme': 'orcon', '_mode_idx': '02', '_mode_max': '07'}
2025-01-17 00:35:11.761 INFO (MainThread) [ramses_rf.dispatcher] || 32:bbbbbb | | I | hvac_state | 00 || {'hvac_id': '00', 'exhaust_fan_speed': 0.07, 'fan_info': 'away', '_unknown_fan_info_flags': [0, 0, 0], 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': 12.69, 'supply_temp': 16.32, 'indoor_temp': 19.75, 'outdoor_temp': 10.15, 'speed_capabilities': ['off', 'low_med_high', 'timer', 'boost', 'post_heater'], 'bypass_position': 0.0, 'supply_fan_speed': 0.13, 'remaining_mins': 0, 'post_heat': 0.0, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
And looking at the package log, there is what I believe are echo pings and their responses:
2025-01-17T01:24:36.517291 072 RP --- 32:bbbbbb 18:xxxxxx --:------ 10D0 006 003B5A830000
2025-01-17T01:24:36.583033 000 RQ --- 18:xxxxxx 32:bbbbbb --:------ 22F1 001 00
2025-01-17T01:24:36.600834 071 RP --- 32:bbbbbb 18:xxxxxx --:------ 22F1 003 000207
2025-01-17T01:24:36.670740 000 RQ --- 18:xxxxxx 32:bbbbbb --:------ 2210 001 00
2025-01-17T01:24:36.708030 071 RP --- 32:bbbbbb 18:xxxxxx --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000800
2025-01-17T01:24:36.792328 000 RQ --- 18:xxxxxx 32:bbbbbb --:------ 22E0 001 00
2025-01-17T01:24:37.076013 072 RP --- 32:bbbbbb 18:xxxxxx --:------ 22E0 004 001AC800
2025-01-17T01:24:37.116344 000 RQ --- 18:xxxxxx 32:bbbbbb --:------ 22E5 001 00
2025-01-17T01:24:37.124388 071 RP --- 32:bbbbbb 18:xxxxxx --:------ 22E5 004 0034C800
2025-01-17T01:24:37.192956 000 RQ --- 18:xxxxxx 32:bbbbbb --:------ 22E9 001 00
2025-01-17T01:24:37.205628 072 RP --- 32:bbbbbb 18:xxxxxx --:------ 22E9 004 005CC800
2025-01-17T01:24:37.269128 000 RQ --- 18:xxxxxx 32:bbbbbb --:------ 22F2 001 00
2025-01-17T01:24:37.296334 071 RP --- 32:bbbbbb 18:xxxxxx --:------ 22F2 006 00076D0106AF
2025-01-17T01:24:37.366383 000 RQ --- 18:xxxxxx 32:bbbbbb --:------ 22F4 001 00
2025-01-17T01:24:37.385819 071 RP --- 32:bbbbbb 18:xxxxxx --:------ 22F4 013 0060E400000000000000200000
2025-01-17T01:24:37.451048 000 RQ --- 18:xxxxxx 32:bbbbbb --:------ 22F8 001 00
2025-01-17T01:24:37.566245 000 RQ --- 18:xxxxxx 32:bbbbbb --:------ 313E 001 00
2025-01-17T01:24:37.619935 071 RP --- 32:bbbbbb 18:xxxxxx --:------ 313E 011 0000C901971D003C800000
2025-01-17T01:24:37.660724 000 RQ --- 18:xxxxxx 32:bbbbbb --:------ 3222 001 00
2025-01-17T01:24:37.671051 072 RP --- 32:bbbbbb 18:xxxxxx --:------ 3222 013 00000A00090009000900090009
2025-01-17T01:24:40.781995 000 RQ --- 18:xxxxxx 32:bbbbbb --:------ 10D0 001 00
2025-01-17T01:24:40.809363 072 RP --- 32:bbbbbb 18:xxxxxx --:------ 10D0 006 003B5A830000
But in the HA log show as just errors:
2025-01-17 01:24:01.318 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 22F1 003 000207 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 22F1 003 000207 < Unexpected verb/code for src (FAN) to Tx)
2025-01-17 01:24:01.401 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000800 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000800 < Unexpected code for src (FAN) to Tx)
2025-01-17 01:24:01.478 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 22E0 004 001AC800 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 22E0 004 001AC800 < Unexpected code for src (FAN) to Tx)
2025-01-17 01:24:01.572 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 22E5 004 0034C800 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 22E5 004 0034C800 < Unexpected code for src (FAN) to Tx)
2025-01-17 01:24:01.658 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 22E9 004 005CC800 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 22E9 004 005CC800 < Unexpected code for src (FAN) to Tx)
2025-01-17 01:24:01.738 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 22F2 006 00076A0106B6 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 22F2 006 00076A0106B6 < Unexpected code for src (FAN) to Tx)
2025-01-17 01:24:01.828 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 22F4 013 0060E400000000000000200000 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 22F4 013 0060E400000000000000200000 < Unexpected verb/code for src (FAN) to Tx)
2025-01-17 01:24:02.059 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 313E 011 0000C9019635003C800000 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 313E 011 0000C9019635003C800000 < Unexpected code for src (FAN) to Tx)
2025-01-17 01:24:02.182 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 3222 013 00000A00090009000900090009 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 3222 013 00000A00090009000900090009 < Unexpected code for src (FAN) to Tx)
2025-01-17 01:24:05.575 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 22F1 003 000207 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 22F1 003 000207 < Unexpected verb/code for src (FAN) to Tx)
2025-01-17 01:24:05.686 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000800 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 2210 042 00FF00FFFFFF0000000000FFFFFFFFFF00FFFFFF0000000000FFFFFFFFFFFFFFFF000000000000000800 < Unexpected code for src (FAN) to Tx)
2025-01-17 01:24:05.773 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 22E0 004 001AC800 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 22E0 004 001AC800 < Unexpected code for src (FAN) to Tx)
Which one exception, that is the filter command⌠which is the only that populated information in the device:
2025-01-17 01:31:51.172 INFO (MainThread) [ramses_rf.dispatcher] || 18:xxxxxx | 32:bbbbbb | RQ | filter_change | || {}
2025-01-17 01:31:51.185 INFO (MainThread) [ramses_rf.dispatcher] || 32:bbbbbb | 18:xxxxxx | RP | filter_change | || {'days_remaining': 59, 'days_lifetime': 90, 'percent_remaining': 0.655}
2025-01-17 01:31:51.287 INFO (MainThread) [ramses_rf.dispatcher] || 18:xxxxxx | 32:bbbbbb | RQ | fan_mode | || {}
2025-01-17 01:31:51.292 WARNING (MainThread) [ramses_rf.dispatcher] RP --- 32:bbbbbb 18:xxxxxx --:------ 22F1 003 000207 < PacketInvalid(RP --- 32:bbbbbb 18:xxxxxx --:------ 22F1 003 000207 < Unexpected verb/code for src (FAN) to Tx)
2025-01-17 01:31:51.334 INFO (MainThread) [ramses_rf.dispatcher] || 18:xxxxxx | 32:bbbbbb | RQ | unknown_2210 | || {}
Any guidance of what I could do? Looks like a couple of people managed to make it work for Siber, so I am not giving up ![]()
Thanks a lot!
Edit, some extra info:
- I used the config flow, this is my known list
"18:xxxxxx": {
"class": "HGI"
},
"32:aaaaaa": {
"class": "FAN"
},
"37:bbbbbb": {
"class": "REM"
}
The aaa/bbb/xxx are not the actual values, just replaced them as I live in a building with many similar devices⌠and thinking about the remote case when someone nearby ends up seeing this and copy some of the configuration ![]()
Things have improved, although I donât think I have done anything relevant, just connected the device a bit closer to the ventilation unit.
I now get all the information, but itâs very intermittentâŚ
I get the value for exactly one minute, and then nothing for a while. I guess the requests are failing most of the time, but sometimes it succeeds, and the frequency is 1 minute. Now I have the device in the same room, I assume that the strength of the signals should be good enough? The official remote is much further away without issues.
Any chance of a hardware issues? Should I bring the device even closer (inside of the dropped ceiling maybe?
The HGI device always shows as âGateway Status: Problemâ all the time, not sure if that matters.
Here I am again, I have narrowed down the issue a bit more:
I was getting tons of errors, all coming from the discovery calls, so I set:
disable_discovery: true
Then I saw that whenever the device information is updated via:
2025-01-20T00:10:13.673982 065 I --- 32:aaaaaa --:------ 32:aaaaaa 31DA 030 00EF007FFFEFEF057A07C308140528F00200011A36000070EF7FFF7FFF20
The next refresh in ramses_cc will fetch the information, I have added some logging in RamsesSensor.native_value it fetches the information just fine at:
val = getattr(self._device, self.entity_description.ramses_rf_attr)
However, the next refreshes, and until the HVAC broadcasts the information the next time, will just find no information. Is this expected? Shouldnât it just fetch the information from the last message? I see that the remotes send a 31DA to get an updated sensor state, could this integration do the same and ask for new data? I donât see it doing it but relying on the messages without a destination ID.
In the meantime I impersonated (to avoid having to bind a new controller) my remote⌠and that worked perfectly fine. But after the first command, the 31DA messages from the HVAC ended with 40 (instead of 20 or 00 expected by the regexp). Not sure why, but everything else seemed fine.
Edit: Ok, I think I have sorted it out, even if just as a temporal solution:
- I have added
31DAto the discovery commands (and removed everything except for the filter life request, as those donât seem to do much here and just generate a lot of traffic and logs). That makes the fan âalways updatedâ as long as the frequency is faster than the updates (it would be a bit better to instead call that when updates happen instead but this works for now) - I have updated the regexp for
31DAto include 40, I get that as soon as I send a command from HA, not sure why. - Adjusted the discovery times to avoid having the messages sent every 3 seconds
I have that in a branch here:
With that, it seems to work well. Next thing I am missing is having a Climate entity that also allows to update the speed, does anyone have something like that?
Getting there:
I want to merge to core as an official integration so it will take some time, there is a lot to do (publish library, upload brand assets, write tests, etc. etc.).
All the pieces are in place:
- Library: GitHub - scabrero/pyairios
- Brands: Add icons and logos for Airios by scabrero ¡ Pull Request #6724 ¡ home-assistant/brands ¡ GitHub
- Documentation: Documentattion for Airios integration by scabrero ¡ Pull Request #37924 ¡ home-assistant/home-assistant.io ¡ GitHub
- Integration: Airios integration for ventilation systems by scabrero ¡ Pull Request #140418 ¡ home-assistant/core ¡ GitHub (just fan platform for now, full branch GitHub - scabrero/home-assistant at airios)
Hi, I apologise for my ignorance but I canât figure out how youâve got HA to talk to the Airios BRDG-02R13 RF bridge. I have a Siber DF Evo 1 with a DFEVORFRS485 de Siber I want to integrate in HA (HA Yellow) but the connectivity part I canât figure out. Can you help?
Hi,
please check homeassistant-airios-component/README.md at main ¡ scabrero/homeassistant-airios-component ¡ GitHub and homeassistant-airios-component/doc/1-brdg02r13.md at 5b02fd14e13f1bbcd662b81031ba98bb733af68f ¡ scabrero/homeassistant-airios-component ¡ GitHub
Please open an issue in github if the documentation is not clear enough.
Hi,
Iâve a USB-to-RF device evofw3 ( atmega chip version). Until now I had ramses home integration fully working. But now it simply doenst work. Iâve 0.52.3 version. Can anyone help me?
Forget about it, I temporarily moved the server to a more remote location, including the dongle, and basically it wasnât receiving the signal as it should. After putting it back in its original location, it started working normally.






