v1
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
from oms_tui.parser import parse_line
|
||||
|
||||
DLL = (
|
||||
"(telegram) DLL L=2a C=44 (from meter SND_NR) M=2c2d (KAM) A=76348799 "
|
||||
"VER=1b TYPE=16 (Cold water meter) (driver kamwater) DEV=rtlwmbus[] RSSI=97"
|
||||
)
|
||||
JSON = (
|
||||
'{"_":"telegram","media":"cold water","meter":"kamwater","name":"Vatten",'
|
||||
'"id":"76348799","total_m3":6.408,"target_m3":6.408,"status":"DRY",'
|
||||
'"timestamp":"2020-01-23T10:25:13Z","device":"rtlwmbus[]","rssi_dbm":97}'
|
||||
)
|
||||
|
||||
|
||||
def test_parse_dll():
|
||||
ev = parse_line(DLL)
|
||||
assert ev["type"] == "dll"
|
||||
assert ev["id"] == "76348799"
|
||||
assert ev["manufacturer"] == "KAM"
|
||||
assert ev["version"] == "1b"
|
||||
assert ev["media"] == "Cold water meter"
|
||||
assert ev["driver"] == "kamwater"
|
||||
assert ev["rssi"] == 97
|
||||
|
||||
|
||||
def test_parse_json():
|
||||
ev = parse_line(JSON)
|
||||
assert ev["type"] == "json"
|
||||
assert ev["id"] == "76348799"
|
||||
assert ev["driver"] == "kamwater"
|
||||
assert ev["fields"]["total_m3"] == 6.408
|
||||
# metadata keys are excluded from measurement fields
|
||||
assert "timestamp" not in ev["fields"]
|
||||
assert "rssi_dbm" not in ev["fields"]
|
||||
|
||||
|
||||
def test_parse_ell_encryption():
|
||||
line = (
|
||||
"(telegram) ELL CI=8d CC=20 (slow_resp sync) ACC=91 SN=d37cac21 "
|
||||
"(AES_CTR session=3 time=1755085) CRC=576c"
|
||||
)
|
||||
ev = parse_line(line)
|
||||
assert ev["type"] == "ell"
|
||||
assert ev["enc"] == "AES-CTR"
|
||||
assert ev["session"] == "3"
|
||||
|
||||
|
||||
def test_parse_tpl_security_mode():
|
||||
line = "(telegram) TPL CI=7a ACC=85 STS=00 CFG=8560 (bidirectional AES_CBC_IV nb=6 cntn=0 ra=0 hc=0)"
|
||||
ev = parse_line(line)
|
||||
assert ev["type"] == "tpl"
|
||||
assert ev["sec_mode"] == 5
|
||||
assert ev["enc"] == "AES-CBC"
|
||||
assert ev["nb"] == "6"
|
||||
|
||||
|
||||
def test_parse_tpl_no_security():
|
||||
ev = parse_line("(telegram) TPL CI=78")
|
||||
assert ev["type"] == "tpl"
|
||||
assert ev["sec_mode"] == 0
|
||||
|
||||
|
||||
def test_parse_noise_returns_none():
|
||||
assert parse_line("(config) number of meters: 0") is None
|
||||
assert parse_line("") is None
|
||||
Reference in New Issue
Block a user