Are you planning to add support for faking UFH controllers (like the HCE80)?
I want to try if it could work using EvoHome, before spending a big amount of money. I already have thermal actuators bound to Home Assistant exposed as on/off entities.
Are you planning to add support for faking UFH controllers (like the HCE80)?
I want to try if it could work using EvoHome, before spending a big amount of money. I already have thermal actuators bound to Home Assistant exposed as on/off entities.
Shouldnât you be able to do that by setting up an extra BDR91 as a zone valve?
Trying to use this code errors asking for Offer value.
My Config YAML:
30:081993: { class: FAN } # Nuaire PIV}
32:208628:
class: REM
faked: true
commands:
normal: " I --- 32:208628 30:081993 --:------ 22F1 003 00020A"
boost: " I --- 32:208628 30:081993 --:------ 22F1 003 00030A"
heater_auto: " I --- 32:208628 30:081993 --:------ 22F1 003 000A0A"
heater_off: " I --- 32:208628 30:081993 --:------ 22F1 003 00090A"
There was nothing in the logs on the service call as it never makes it.
There is a typo in the wiki - I have fixed it now.
The field that was called tender:
is now called offer:
service: ramses_cc.bind_device
data:
device_id: 32:208628
offer:
22F1:
22F3:
10E0:
device_info: " I --- 32:208628 63:262142 --:------ 10E0 030 000001C85A01016CFFFFFFFFFFFF010607E0564D4E2D32334C4D48323300"
Note that the above (oem_code
is 6C
) is for Nuaire.
Not before next winter ends, sorry.
I believe something is going (horribly) wrong for me with this new version:
Tried to use the new faking of temperature sensors is throwing all sorts of errors. So I want to check if the wiki is correct:
Errors Iâm getting:
-The first seems to be an extra space or tab in there that shouldnât be there, currect?
-The second stated the service does not exist, shoukd this be the ramses_cc.put_zone_temp one instead?
Additionally: Iâve lost all heat demand sensors/valve position sensors. And Iâve gained another bulk of temperature sensorsâŚ
This is for a nuaire.
New errors.
If I switch to UI mode you see this:
device_id: "32:208628"
offer:
"10": null
22F1: null
22F3: null
device_info: " I --- 32:208628 63:262142 --:------ 10E0 030 000001C85A01016CFFFFFFFFFFFF010607E0564D4E2D32334C4D48323300"
Log shows
2024-01-05 13:06:43.324 ERROR (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Error executing script. Invalid data for call_service at pos 1: extra keys not allowed @ data['offer']['10']
2024-01-05 13:06:43.324 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [139637170029120] Error handling message: extra keys not allowed @ data['offer']['10']. Got None (invalid_format) Antony Pugh from 192.168.77.210 (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0)
Change it to this:
device_id: "32:208628"
offer:
22F1: null
22F3: null
10E0: null
device_info: " I --- 32:208628 63:262142 --:------ 10E0 030 000001C85A01016CFFFFFFFFFFFF010607E0564D4E2D32334C4D48323300"
I tried that before and it seems to want to keep changing it back. here is it trying again using your code pasted in.
Try using put_zone_temp
instead:
- id: cast_faked_zone_sensor
trigger:
- platform: state
entity_id: sensor.room_temperature # rename to your temp sensor
- platform: time_pattern
minutes: /15
action:
- service: ramses_cc.put_zone_temp
data:
entity_id: ramses_cc.03_123456
temperature: '{{ states("sensor.room_temperature ") | float }}'
It seems the value of sensor.indoor_outdoor_meter_1856
is unknown
?
maybe put in a condition that it is not unknown
?
No.
1234567890
I changed it for the line which was in my previous automation:
temperature: "{{ states(\"sensor.indoor_outdoor_meter_a103\") | float }}"
This has no space and an extra âbackslashâ but that one works, or at least, removes that error.
Iâm trying to understand the changes from the previous situation and automation.
The previous one worked under the old version:
alias: Woonkamer RV update fake temperatuur
description: >-
When a temperature sensor updates, pass the temperature to ramses_cc as if it
was from a zone sensor. Then update the downstream entities.
trigger:
- platform: state
entity_id: sensor.indoor_outdoor_meter_a103
action:
- service: ramses_cc.put_zone_temp
data:
entity_id: climate.ramses_cc_01_245354_09
temperature: "{{ states(\"sensor.indoor_outdoor_meter_a103\") | float }}"
- delay: "00:00:01"
- service: homeassistant.update_entity
data: {}
target:
entity_id: sensor.03_123457_temperature
- service: homeassistant.update_entity
data: {}
target:
entity_id: climate.ramses_cc_01_245354_09
mode: single
In that one, you pointed to either a evohome zone as entity_id or the HA entity if of the temperature sensor. So what are you pointing to with âentity_id: ramses_cc.03_123456â? is this supposed to be the evohome zone entity ID or the faked temperature sensor entity id, or neither? Becaude that entity_id appears to be unknown to my system, while Iâm using the exact same number as put in the example: 03:123456. In the new template, the HA entity of the faked sensor doesnât appear to get updated, and stays unavailable. Is this normal? Iâm not criticizing you, just trying to get a basic understanding of whatâs happening and ârepairâ it for me. Going back to the 22.40 and reverting to the old automations made everything go back to ânormalâ. Before I continue tinkering, I better make sure it works, as this is responsible for the temperature in the living room and if I canât fix it my head will be mounted on a pointy stick come diner time
Firstly SUCCESS!!!
However its still buggy.
So if I remove the 10E0 it trys to bind. If I press boost it moves to B/P on the using (binding purge) it stayed on P/P for a while and then maybe impatience I went to Normal (the screen went back to P) then back to boost and left it. (back to B/P) then finally settled at P and is now bound)
I notice if I try and use the send a command and send 10E0 it changes it to 10. maybe a bug somewhere here.
2024-01-05 16:14:01.991 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:14:01.944', 'impersonating': '1FC9| I|63:262142', 'parser': 'v0.31.1'}
2024-01-05 16:14:02.010 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | | I | rf_bind | [..] || {'phase': 'offer', 'bindings': [['00', '22F1', '32:208628'], ['00', '22F3', '32:208628'], ['6C', '10E0', '32:208628'], ['00', '1FC9', '32:208628']]}
2024-01-05 16:14:02.037 INFO (MainThread) [ramses_rf.dispatcher] || 30:081993 | 32:208628 | W | rf_bind | [..] || {'phase': 'accept', 'bindings': [['21', '31DA', '30:081993'], ['6C', '10E0', '30:081993']]}
2024-01-05 16:14:02.086 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:14:02.038', 'impersonating': '1FC9| I|30:081993', 'parser': 'v0.31.1'}
2024-01-05 16:14:02.089 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | 30:081993 | I | rf_bind | [..] || {'phase': 'confirm', 'bindings': [['21']]}
2024-01-05 16:14:02.136 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:14:02.089', 'impersonating': '10E0| I|32:208628', 'parser': 'v0.31.1'}
2024-01-05 16:14:02.159 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | 63:262142 | I | device_info | || {'oem_code': '6C', 'manufacturer_sub_id': 'C8', 'product_id': '5A', 'date_1': '2016-06-01', 'date_2': '0000-00-00', 'description': 'VMN-23LMH23'}
2024-01-05 16:15:18.392 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:15:18.344', 'impersonating': '22F1| I|32:208628', 'parser': 'v0.31.1'}
2024-01-05 16:15:18.396 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | 30:081993 | I | fan_mode | || {'fan_mode': 'boost', '_scheme': 'nuaire', '_mode_idx': '03', '_mode_max': '0A'}
2024-01-05 16:15:18.426 INFO (MainThread) [ramses_rf.dispatcher] || 30:081993 | | I | hvac_state | 21 || {'hvac_id': '21', 'exhaust_fan_speed': None, 'fan_info': 'auto', '_unknown_fan_info_flags': [0, 0, 0], 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['post_heater'], 'bypass_position': None, 'supply_fan_speed': None, 'remaining_mins': 0, 'post_heat': 0.0, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
2024-01-05 16:15:18.594 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:15:18.547', 'impersonating': '22F1| I|32:208628', 'parser': 'v0.31.1'}
2024-01-05 16:15:18.598 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | 30:081993 | I | fan_mode | || {'fan_mode': 'boost', '_scheme': 'nuaire', '_mode_idx': '03', '_mode_max': '0A'}
2024-01-05 16:15:18.802 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:15:18.754', 'impersonating': '22F1| I|32:208628', 'parser': 'v0.31.1'}
2024-01-05 16:15:18.805 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | 30:081993 | I | fan_mode | || {'fan_mode': 'boost', '_scheme': 'nuaire', '_mode_idx': '03', '_mode_max': '0A'}
2024-01-05 16:15:18.836 INFO (MainThread) [ramses_rf.dispatcher] || 30:081993 | | I | hvac_state | 21 || {'hvac_id': '21', 'exhaust_fan_speed': None, 'fan_info': 'auto', '_unknown_fan_info_flags': [0, 0, 0], 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['post_heater'], 'bypass_position': None, 'supply_fan_speed': None, 'remaining_mins': 0, 'post_heat': 0.0, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
2024-01-05 16:16:58.923 INFO (MainThread) [ramses_rf.dispatcher] || 30:081993 | | I | hvac_state | 21 || {'hvac_id': '21', 'exhaust_fan_speed': None, 'fan_info': 'auto', '_unknown_fan_info_flags': [0, 0, 0], 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['post_heater'], 'bypass_position': None, 'supply_fan_speed': None, 'remaining_mins': 0, 'post_heat': 0.0, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
2024-01-05 16:17:04.400 INFO (MainThread) [ramses_rf.dispatcher] || 01:198631 | 18:071184 | RP | tpi_params | FC || {'domain_id': 'FC', 'cycle_rate': 3, 'min_on_time': 4.0, 'min_off_time': 0.0, '_unknown_0': '00', 'proportional_band_width': None, '_unknown_1': '01'}
2024-01-05 16:17:11.167 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:17:11.120', 'impersonating': '22F1| I|32:208628', 'parser': 'v0.31.1'}
2024-01-05 16:17:11.171 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | 30:081993 | I | fan_mode | || {'fan_mode': 'normal', '_scheme': 'nuaire', '_mode_idx': '02', '_mode_max': '0A'}
2024-01-05 16:17:11.202 INFO (MainThread) [ramses_rf.dispatcher] || 30:081993 | | I | hvac_state | 21 || {'hvac_id': '21', 'exhaust_fan_speed': None, 'fan_info': 'auto', '_unknown_fan_info_flags': [0, 0, 0], 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['post_heater'], 'bypass_position': None, 'supply_fan_speed': None, 'remaining_mins': 0, 'post_heat': 0.0, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
2024-01-05 16:17:11.368 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:17:11.321', 'impersonating': '22F1| I|32:208628', 'parser': 'v0.31.1'}
2024-01-05 16:17:11.372 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | 30:081993 | I | fan_mode | || {'fan_mode': 'normal', '_scheme': 'nuaire', '_mode_idx': '02', '_mode_max': '0A'}
2024-01-05 16:17:11.404 INFO (MainThread) [ramses_rf.dispatcher] || 30:081993 | | I | hvac_state | 21 || {'hvac_id': '21', 'exhaust_fan_speed': None, 'fan_info': 'auto', '_unknown_fan_info_flags': [0, 0, 0], 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['post_heater'], 'bypass_position': None, 'supply_fan_speed': None, 'remaining_mins': 0, 'post_heat': 0.0, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
2024-01-05 16:17:11.576 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:17:11.529', 'impersonating': '22F1| I|32:208628', 'parser': 'v0.31.1'}
2024-01-05 16:17:11.580 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | 30:081993 | I | fan_mode | || {'fan_mode': 'normal', '_scheme': 'nuaire', '_mode_idx': '02', '_mode_max': '0A'}
2024-01-05 16:17:11.614 INFO (MainThread) [ramses_rf.dispatcher] || 30:081993 | | I | hvac_state | 21 || {'hvac_id': '21', 'exhaust_fan_speed': None, 'fan_info': 'auto', '_unknown_fan_info_flags': [0, 0, 0], 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['post_heater'], 'bypass_position': None, 'supply_fan_speed': None, 'remaining_mins': 0, 'post_heat': 0.0, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
So commands send but I have no way to know what mode I am in. not sure if this is a limitation on the unit or something is not configured right to read the return output.
2024-01-05 16:27:28.734 INFO (MainThread) [ramses_rf.dispatcher] || 13:100513 | 18:071184 | RP | actuator_cycle | || {'modulation_level': 1.0, 'actuator_countdown': 1140, 'cycle_countdown': 1140, '_unknown_0': 'FF'}
2024-01-05 16:27:33.441 INFO (MainThread) [ramses_rf.dispatcher] || 13:244215 | 18:071184 | RP | actuator_cycle | || {'modulation_level': 0.0, 'actuator_countdown': 1139, 'cycle_countdown': 1139, '_unknown_0': 'FF'}
2024-01-05 16:27:42.752 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:27:42.704', 'impersonating': '22F1| I|32:208628', 'parser': 'v0.31.1'}
2024-01-05 16:27:42.756 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | 30:081993 | I | fan_mode | || {'fan_mode': 'heater_auto', '_scheme': 'nuaire', '_mode_idx': '0A', '_mode_max': '0A'}
2024-01-05 16:27:42.787 INFO (MainThread) [ramses_rf.dispatcher] || 30:081993 | | I | hvac_state | 21 || {'hvac_id': '21', 'exhaust_fan_speed': None, 'fan_info': 'auto', '_unknown_fan_info_flags': [0, 0, 0], 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['post_heater'], 'bypass_position': None, 'supply_fan_speed': None, 'remaining_mins': 0, 'post_heat': 0.0, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
2024-01-05 16:27:49.462 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:27:49.414', 'impersonating': '22F1| I|32:208628', 'parser': 'v0.31.1'}
2024-01-05 16:27:49.466 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | 30:081993 | I | fan_mode | || {'fan_mode': 'heater_off', '_scheme': 'nuaire', '_mode_idx': '09', '_mode_max': '0A'}
2024-01-05 16:27:49.496 INFO (MainThread) [ramses_rf.dispatcher] || 30:081993 | | I | hvac_state | 21 || {'hvac_id': '21', 'exhaust_fan_speed': None, 'fan_info': 'auto', '_unknown_fan_info_flags': [0, 0, 0], 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['post_heater'], 'bypass_position': None, 'supply_fan_speed': None, 'remaining_mins': 0, 'post_heat': 0.0, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
2024-01-05 16:27:57.158 INFO (MainThread) [ramses_rf.dispatcher] || 30:081993 | | I | system_sync | || {'remaining_seconds': 172.5, '_next_sync': '16:30:49'}
2024-01-05 16:27:57.782 INFO (MainThread) [ramses_rf.dispatcher] || 18:071184 | 63:262142 | I | puzzle_packet | || {'datetime': '2024-01-05T16:27:57.735', 'impersonating': '22F1| I|32:208628', 'parser': 'v0.31.1'}
2024-01-05 16:27:57.786 INFO (MainThread) [ramses_rf.dispatcher] || 32:208628 | 30:081993 | I | fan_mode | || {'fan_mode': 'heater_auto', '_scheme': 'nuaire', '_mode_idx': '0A', '_mode_max': '0A'}
2024-01-05 16:27:57.817 INFO (MainThread) [ramses_rf.dispatcher] || 30:081993 | | I | hvac_state | 21 || {'hvac_id': '21', 'exhaust_fan_speed': None, 'fan_info': 'auto', '_unknown_fan_info_flags': [0, 0, 0], 'air_quality': None, 'co2_level': None, 'indoor_humidity': None, 'outdoor_humidity': None, 'exhaust_temp': None, 'supply_temp': None, 'indoor_temp': None, 'outdoor_temp': None, 'speed_capabilities': ['post_heater'], 'bypass_position': None, 'supply_fan_speed': None, 'remaining_mins': 0, 'post_heat': 0.0, 'pre_heat': None, 'supply_flow': None, 'exhaust_flow': None}
2024-01-05 16:28:00.150 INFO (MainThread) [ramses_rf.dispatcher] || 01:198631 | | I | system_sync | || {'remaining_seconds': 127.0, '_next_sync': '16:30:07'}
2024-01-05 16:28:00.174 INFO (MainThread) [ramses_rf.dispatcher] || 01:198631 | | I | setpoint | [..] || [{'zone_idx': '00', 'setpoint': 22.0}, {'zone_idx': '01', 'setpoint': 10.0}, {'zone_idx': '02', 'setpoint': 14.0}, {'zone_idx': '03', 'setpoint': 8.0}, {'zone_idx': '04', 'setpoint': 14.0}, {'zone_idx': '05', 'setpoint': 5.0}, {'zone_idx': '06', 'setpoint': 8.0}]
2024-01-05 16:28:00.194 INFO (MainThread) [ramses_rf.dispatcher] || 01:198631 |
Here is the send and response for each button / command send.
2024-01-05T16:42:53.455671 000 I --- 18:071184 63:262142 --:------ 7FFF 023 0011018CDA81906132324631204933323A323038363238
2024-01-05T16:42:53.459399 000 I --- 32:208628 30:081993 --:------ 22F1 003 00090A
2024-01-05T16:42:53.490511 069 I --- 30:081993 --:------ 30:081993 31DA 029 21EF007FFFEFEF7FFF7FFF7FFF7FFF0002EF18FFFF000000EF7FFF7FFF
2024-01-05T16:42:57.617781 000 I --- 18:071184 63:262142 --:------ 7FFF 023 0011018CDA81A0A232324631204933323A323038363238
2024-01-05T16:42:57.621638 000 I --- 32:208628 30:081993 --:------ 22F1 003 000A0A
2024-01-05T16:43:02.714812 000 I --- 18:071184 63:262142 --:------ 7FFF 023 0011018CDA81B48C32324631204933323A323038363238
2024-01-05T16:43:02.719692 000 I --- 32:208628 30:081993 --:------ 22F1 003 00030A
2024-01-05T16:43:02.749994 069 I --- 30:081993 --:------ 30:081993 31DA 029 21EF007FFFEFEF7FFF7FFF7FFF7FFF0002EF18FFFF000000EF7FFF7FFF
2024-01-05T16:43:07.169873 000 I --- 18:071184 63:262142 --:------ 7FFF 023 0011018CDA81C5EC32324631204933323A323038363238
2024-01-05T16:43:07.173790 000 I --- 32:208628 30:081993 --:------ 22F1 003 00020A
2024-01-05T16:43:07.204172 067 I --- 30:081993 --:------ 30:081993 31DA 029 21EF007FFFEFEF7FFF7FFF7FFF7FFF0002EF18FFFF000000EF7FFF7FFF
Please try;
device_id: "32:208628"
offer:
"22F1": null
"22F3": null
"10E0": null
device_info: " I --- 32:208628 63:262142 --:------ 10E0 030 000001C85A01016CFFFFFFFFFFFF010607E0564D4E2D32334C4D48323300"
and report back
Because the FAN (PIV) does not get the 10E0
, the bind fails.
I cannot submit the 10E0 command. every time thatis in the code I get the extra keys not allowed @data[offer][10]. got None command.
Even if it go to Send a command and try and manually send 10E0 it trys to convert the command to 10 not 10E0 as placed in the Yaml
The bind seems successful some how. I can set all modes and the LCD reflects the remote commands. but I get no information about the PIV in my entities. just Auto. nothing more.
Iâve noticed recently that Ramses running on home assistant is gappy with data. I havenât had a chance to look into this in detail yet, aside from not being able to see an obvious pattern.
Image attached for temperature readings from today. Note the data gaps are similar, but not exactly the same for the two zones.
Has anyone come across something similar? Could it be a signal issue? The bedroom zones is much closer to the receiver than the office.
Using an SSM-D2 on a raspberry pi with home assistant.
I have just set up a nuaire ECO-HEAT-HC test bed (I am yet to test bindings). I also have a Humidity sensor, and a 4-way switch (boost on/off, heat auto/off).
What FAN sensors I have is only indoor humidity level. However, I see that the fan mode can be:
Unfortunately, the fan mode is not yet exposed to the fan entity, but I will add it in due course.