Skip to content

R1 (Renesa) hardware verification + decoded telemetry bitmask #2

Description

@nkai777

Hi I have an R1 (Renesa) fan and did some hands-on BLE testing; sharing findings in case useful.

behind story -
I wanted to control the fans locally with BLE, so I got to the rabbit hole to do this I got till pulling the state of the device locally and got stuck on the sending cmd and found this project on GitHub

Confirmed working (R1, BLE):

Write characteristic accepts plain JSON directly, unencrypted: {"power":true/false}, {"speed":N,"boost":false} (N=1-6), {"led":true/false}, {"sleep":true/false}, {"timer":N} (N=0/1/2/3/6 hours)
Read characteristic (9fa1610e-...) returns a CSV telemetry string; first field is a status bitmask I've fully decoded:
bits 0-3: speed (1-6)
bit 4: power on
bit 5: LED on
bit 7: sleep mode
bits 16-23: timer hours active
This telemetry reflects true fan state regardless of control method — confirmed it updates correctly when the fan is controlled via the physical remote.

One latency observation from this current setup of yours: with BLE-only polling (no Wi-Fi in range), state updates in Home Assistant lag by my poll interval (~30s) behind the fan's actual state — e.g. if the fan is turned on by remote, HA doesn't reflect it until the next poll. With Wi-Fi connected, updates appear to be instant/pushed. Worth noting for anyone relying on BLE-only fans for automations sensitive to timing.

I know it's just a consequence of BLE being poll-based rather than push-based in this setup, not a flaw.

if you provide the adjustment for the timing in BLE it would be great!

Happy to share more detail (full field notes, sample telemetry strings) if useful.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions