Our replacement SDK returns a documented container rather than the old status value. The dashboard wrapper accepts the container as if it were a reading, so failed requests can look plausible. I need both supported formats handled without a failure turning into a normal status.
Decode against the identified supported version and its documented success and failure forms, then give the display one consistent internal result; guessing success from a nonempty container is the bit to remove first
Developer has the documentation for both supported versions and representative retained replies. The new path checks the documented outcome before extracting a reading. Unknown shapes stay errors.
Show the operator a failed current read separately from the last valid reading, with its age. Otherwise the parser can be fixed while the screen still looks reassuringly current whenever communication fails.
We added separate current-read status and last-valid age. The first test exposed an old default value appearing before any successful read. That now shows unavailable, not a pretend previous reading.
Does changing to another controller clear that last-valid value? A previous device's reading would be even more misleading than an old reading from the same one.
Tie the retained reading to its source identity and session, Sarah, so changing the source cannot borrow the old value just because the display window stayed open
Source-change test now starts without a reading and retains the previous source only in history. Both supported formats pass success, failure, timeout and missing-reading checks offline.
Has anyone checked the exported report? The display labels and parser may be right while the file still writes the last value into a current-status column.
Export had exactly that ambiguity. We split current request outcome from last valid value and observation time, with source identity included. The same failed-read case now agrees on screen and in the report.
Installed read-only comparison completed in both supported environments. Expected controller identity, valid readings and failed-read display/report behaviour checked. Ordinary close and reopen also starts without an invented value. Wrapper change closed.