v0.9.36b24
Pre-release
Pre-release
Features
- Generator, Off-Grid and Peak Shaving schedule configs + atomic writeTime cloud writes (#209): three new ScheduleTypes with live-verified registers (Peak Shaving 209-212, Generator 256-259, Off-Grid 269-274), per-family window-suffix schemes (
_1.._N, no bare window), canonical register names, and a newControlEndpoints.write_time_parameter()wrapping the portal's own atomic/remoteSet/writeTimeendpoint — one call per boundary, eliminating the four-call partial-failure mode for schedule writes._get_schedule/_set_schedulegeneralized accordingly;_clock_fieldsanitization now logs each branch. - Shared-battery context in reg96 debug logs (#207): when HOLD 110 bit 3 (shared battery) is set and reg 96 reads 0, the battery-count debug line notes that a zero count is expected on a secondary inverter sharing a bank — no new reads, opportunistic stash.
Bug fixes
- Parameters leg gains the transport_link_down guard (#208, closes #206):
_fetch_parametersno longer walks into an attached-but-dead local link (the runtime/energy/battery legs were already guarded); link-down with cloud available routes to the HTTP named-parameter path, link-down without cloud skips without corrupting sticky-parameter accounting. - Cloud-mode schedule setters actually write (#208): the transport-less
_set_schedulesent raw register-address writes that could not round-trip through the named-parameter API; it now delegates to the named cloud setter, symmetric with the #205 getter fix. Getter hardening: present-but-null cloud params no longer raise, hour/minute clamped. - Unverified off-grid Green Mode bit no longer served as truth (#210): the OFFGRID register-110 table's bit 8 was marked UNVERIFIED on SNA (lxp_modbus places green at bit 14) yet still decoded as
FUNC_GREEN_EN— off-grid local reads could clobber correct cloud-sourced state. Bit 8 is now a placeholder on that family; off-grid local writes of the function fail closed;green_mode_enabledreturns None (unknown) instead of a silent False when the key is absent.