Skip to content

Commit 8bdd63f

Browse files
committed
registers: decoding of ASCII values
Verified by a meter type ID of my new hot water meter; it matches the laser print on the meter's face.
1 parent 2bda350 commit 8bdd63f

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

src/pykmp/registers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ def from_register_data(cls, reg: messages.RegisterData) -> Self:
6565
value_str = f'{(2000 + reg.value[3]):02}-{reg.value[4]:02}-{reg.value[5]:02} ' \
6666
+ f'{reg.value[6]:02}:{reg.value[7]:02}:{reg.value[8]:02}' \
6767
+ f'{"+" if dst > 0 else "-"}{(dst // 60):02}:{(dst % 60):02}'
68+
case 0x36:
69+
# ASCII
70+
value_str = bytes(reg.value[2:]).decode('ascii')
6871
case _:
6972
value_dec = codec.FloatCodec.decode(reg.value)
7073
return cls(

tests/test_registers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,14 @@
6868
None,
6969
'DST YY-MM-DD hh:mm:ss',
7070
),
71+
pytest.param(
72+
254,
73+
54,
74+
'0C 00 30 32 4B 35 32 41 43 31 41 37 43 5A',
75+
'02K52AC1A7CZ',
76+
None,
77+
'ASCII',
78+
),
7179
]
7280
)
7381
def test_register_parsing(id_, unit, blob_with_size, value_str, value_dec, unit_str):

0 commit comments

Comments
 (0)