Repository navigation
Conversation
miravoss26
left a comment
There was a problem hiding this comment.
Mira's read (pr-steward sweep). 2-line summary: MyUplink F750 telemetry. BT7 relabel, degree-minutes as a canonical metric, the -32768 sentinel is ignored, and soft hyphens are stripped from metric names. The driver stays read-only (control: false unchanged).
Checks: the size (18431) and sha256 pinned in index.yaml and manifests/myuplink.yaml match the driver file at this head. The new harness test covers the F750 payload, including the sentinel and soft-hyphen cases.
Findings:
- [low]
decode_tempused to emit0for a missing value and now emits nothing. That's the intent, but it changes what dashboards see for an absent point. Worth one changelog line.
Security screen: no secrets, no new hosts or endpoints.
Safe to merge from my read. Not auto-merge eligible (repo not on the POLICY allowlist), so a human merges.
Include changelog note for unavailable temperatures and sync with main. Signed-off-by: Segran <goran@andersson-stehag.se>
1260d8a to
676f864
Compare
miravoss26
left a comment
There was a problem hiding this comment.
Review: myuplink 1.2.3 → 1.2.4, NIBE F750 telemetry fix from hardware-captured data.
Correctness:
- 40013 relabeled BT6 → BT7 is comment-only (register id unchanged) — matches the hardware capture in the new test fixture ("Hot water top BT7").
- Real bug fixed: the three canonical temp metrics used
decode_temp(...) or 0, so an unavailable NIBE point (-32768sentinel) was emitted as a false0 °Creading — exactly the invented-number patternno_invented_numbers.luaexists to catch. Newvalid_raw()filters the sentinel before decode, and the metrics are now omitted (not zeroed) when unavailable. Same fix applied to the generic "everything else" loop, so it isn't just the three canonical ones. - New
hp_degree_minutes(param 40940) is additive and follows the existing canonical-metric pattern. - Soft-hyphen (U+00AD) strip in
sanitize_metric_nameis a real fix too — the test fixture shows it live in vendor parameter names ("compressor frequency"). - No F750 electrical compressor-power mapping added, as the description says — param 10012 untouched, correctly left out given it wasn't in the hardware capture.
Tests: new Lua harness test against a real hardware-captured response fixture, verifying both the emitted canonical metrics and that the three sentinel-valued points (hp_reference_air_speed_sensor, hp_current_temperature_system_1, hp_set_point_temp_system_1_heat) are correctly absent. Python wrapper runs it via make check's lua harness. Good coverage for exactly the bug being fixed.
Security: no secrets, no new network destinations, read-only (control: false unchanged) — matches the PR's own safety checklist.
All 5 CI checks green (signed channel, public-boundary, drivers, dco, history-secret-scan). One thing for a human: GitHub shows this PR as conflicting with main right now — needs a rebase, not a content concern. Safe to merge from my read once that's resolved.
Summary
Improve NIBE F750 telemetry using parameter data observed on real F750 hardware through MyUplink Cloud API v2.
The change:
hp_degree_minutes-32768unavailable-value sentinel instead of emitting bogus telemetryNo F750 electrical compressor-power mapping is added. Parameter 10012 was not present in the hardware capture, so the driver does not infer electrical power from unrelated parameters.
Driver evidence
myuplink/v2/devices/{deviceId}/pointshp_power_wmapping is claimed for F750Observed parameters include:
40004— BT1 outdoor temperature40013— BT7 hot-water top temperature40033— BT50 room temperature40940— current degree-minute value (DM)41778— current compressor frequency43084— internal additional-heat power-32768— unavailable-value sentinel observed on multiple pointsSafety
The driver remains read-only. This PR adds no control/write path.
Control evidence
Not applicable — read-only telemetry change.
required: not applicableChecks
Signed-off-by.make test-driver ID=myuplinkmake checkFull
make check: 4810 passed, 923 skipped.All 91 drivers passed the sandbox safety check. Manifest, index, devices and support-status generation are clean. FTW baseline and host API checks also passed.