fix(airconditioner): scale legacy ARTIK051 cumulativePower correctly (#193)
ARTIK051_KRAC_18K-generation boards report /energy/consumption/vs/0's cumulativePower in centiwatt-hours, not the plain Wh every other AC board family reports -- confirmed against the reporter's own SmartThings-app reading (raw 117430000 vs. the app's authoritative 1,174.30 kWh is exactly a /100000 factor, not the shared wh_to_kwh's /1000 alone). Split common.ENERGY_METER into generic/legacy variants on the airconditioner registry, discriminated by the existing is_legacy_board() check, so every other AC family keeps the unmodified shared capability.
This commit is contained in:
@@ -859,6 +859,25 @@ def test_registry_reproduces_golden_state_keys_for_airconditioner_fac_bora():
|
||||
)
|
||||
|
||||
|
||||
def test_registry_reproduces_golden_state_keys_for_airconditioner_artik051_krac_energy():
|
||||
"""AR12NXWXCWKNEU/ARTIK051_KRAC_18K (issue #193) -- same legacy board
|
||||
generation as the artik051_krac_18k fixture, but this dump has a nonzero
|
||||
cumulativePower. Locks in state_keys; the actual /100000 scale fix is
|
||||
asserted separately in test_airconditioner_capabilities.py since golden
|
||||
only compares key sets, not values."""
|
||||
from tests.conftest import _load_device
|
||||
resources = _load_device('airconditioner_artik051_krac_energy')
|
||||
golden = json.loads(
|
||||
(GOLDEN / 'airconditioner_artik051_krac_energy.json').read_text()
|
||||
)
|
||||
state_keys = _new_state_keys('airconditioner_artik051_krac_energy', resources)
|
||||
assert set(state_keys) == set(golden['state_keys']), (
|
||||
f"state_keys mismatch:\n"
|
||||
f" extra: {sorted(set(state_keys) - set(golden['state_keys']))}\n"
|
||||
f" missing: {sorted(set(golden['state_keys']) - set(state_keys))}"
|
||||
)
|
||||
|
||||
|
||||
def test_resources_from_batch_preferred_over_flat():
|
||||
from tests.conftest import _resources_from_dump
|
||||
dump = {
|
||||
|
||||
Reference in New Issue
Block a user