idempotence zapisu 178 a 179 grid peak shaveing a grid cuttoff
Some checks failed
CI and deploy / migration-check (push) Failing after 10s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-04-20 11:41:57 +02:00
parent a07f5d57cb
commit 6cf14ed25b
3 changed files with 59 additions and 5 deletions

View File

@@ -0,0 +1,38 @@
from services.control.exporter_monolith import (
REG178_PASSIVE,
_drop_registers_matching_last_verified,
)
def test_drop_registers_skips_reg178_when_mask_matches():
# last_verified contains extra bits beyond 0x0030; we still want to skip if bits 45 match.
registers = [(178, "grid_peak_shaving_switch", REG178_PASSIVE)]
last_verified = {178: 12030} # real-world example from home-01 (bits4-5 still == 0b11)
out, skipped = _drop_registers_matching_last_verified(registers, last_verified)
assert out == []
assert skipped == [178]
def test_drop_registers_keeps_reg178_when_mask_differs():
registers = [(178, "grid_peak_shaving_switch", REG178_PASSIVE)]
last_verified = {178: 32} # SELL mask 0b10
out, skipped = _drop_registers_matching_last_verified(registers, last_verified)
assert out == registers
assert skipped == []
def test_drop_registers_skips_reg179_when_mask_matches():
registers = [(179, "control_board_special_1", 2)] # bits01 = 2 (cutoff ON)
last_verified = {179: 0x1236} # ...0110b => bits01 still == 2
out, skipped = _drop_registers_matching_last_verified(registers, last_verified)
assert out == []
assert skipped == [179]
def test_drop_registers_keeps_reg179_when_mask_differs():
registers = [(179, "control_board_special_1", 2)] # want cutoff ON
last_verified = {179: 0x1237} # ...0111b => bits01 == 3 (cutoff OFF)
out, skipped = _drop_registers_matching_last_verified(registers, last_verified)
assert out == registers
assert skipped == []