Skip to content

[Feature]: The YCBT HRV panel (SDNN/RMSSD/pNN50/LF-HF) is decoded past and dropped #114

Description

@ak710

What problem does this solve?

The YCBT body-data record (05 33) carries a full HRV panel alongside the single HRV scalar. YCBTHealthRecords.bodyData documents every offset in its doc comment — sdnn:u16@14, pnn50@17, rmssd:u16@18, lf:u16@20, hf:u16@22 — and then walks straight past them, because there is no MeasurementKind to put them in:

Load index, sympathetic tone, SDNN, pNN50, RMSSD and LF/HF have no MeasurementKind; they are left on the floor rather than force-fitted into one.

Neither Oura nor Ultrahuman surfaces this breakdown — both show one HRV figure. On a YCBT ring this is a straight win over a $349 device, using bytes already arriving.

Proposed solution

Add the six kinds, range-gate them in RingEventBridge, and surface them behind a new .hrvDetail capability.

The capability should ride IS_HAS_PRESSURE (byte 22, bit 6) — the bit the vendor SDK gates the whole 05 33 query on, and therefore the same bit .stress and .fatigue already ride. Not ISHASHRV: that governs the scalar, which arrives from 05 09 and the 06 03 live stream, so a ring can have HRV and still have nothing to break it down.

LF/HF should be computed from the two powers, not read from @24. That byte is a single value standing in for a ratio whose real range is ~0.5–3, so it carries an implicit scale the SDK never states; whatever common scale LF and HF share cancels in the quotient.

Keep it off Today and Vitals — six more dashboard tiles would bury the metrics people open the app for. Two taps in from the HRV detail screen is the right depth.

Area

Data / decoding / sync

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