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.
Preserve main's retry timing and rotated-token persistence alongside the F750 metrics, unavailable-value filtering and soft-hyphen cleanup. Regenerate catalog metadata and retain both changelog entries. Signed-off-by: Segran <goran@andersson-stehag.se>
miravoss26
left a comment
There was a problem hiding this comment.
Reviewed. This fixes a real correctness bug: previously decode_temp(...) or 0 emitted a bogus 0 °C whenever NIBE's -32768 unavailable-value sentinel showed up on a present parameter — now those are correctly skipped instead of faked. New valid_raw() filters the sentinel consistently for both the named temp params and the generic per-parameter loop (and PARAM_DEGREE_MINUTES is added to the canonical-dedup set, so it won't double-emit). The U+00AD soft-hyphen strip in sanitize_metric_name uses the right UTF-8 byte pair (194, 173).
New Lua harness test + pytest wrapper cover: sentinel-filtered absence (3 cases), the new hp_degree_minutes metric, and the existing temp/power paths. Read-only driver, no control path touched, matches the PR's own safety checklist. CI green across drivers/signed-channel/public-boundary/dco/secret-scan.
Nothing blocking. Safe to merge from my read.
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.
Main integration — 27 October 2026
Merge commit
378737133c354901058b48695519097166922175integrates main57984984a9bf6939d5206c5a05138296d9c6d940while preserving the original F750 commit and author history. No rebase or force-push was used.make bump-driver ID=myuplink LEVEL=minor, avoiding two different drivers with version 1.2.4.Validation on the integrated tree:
make test-driver ID=myuplink: 39 passed, 16 skipped; this includes the F750 fixture and main's poll-timing/token-persistence tests.make check: 4,990 passed, 936 skipped; generated catalog/manifest checks pass.5798498: passed; only myuplink is reported changed, with a higher version.The previous hardware-capture evidence remains the basis of the F750 fixture. No new live-device acceptance is claimed for this merged candidate, and nothing was installed or published to a signed channel. New-head CI is checked separately from the older green runs. The earlier 4,810-test count above belongs to the original branch tree.
Final-head CI
All five GitHub jobs pass on
378737133c354901058b48695519097166922175: drivers, signed-channel version validation, DCO, public-boundary and history-secret-scan. Validation run. GitHub reports this PR conflict-free. The PR remains unmerged.