1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
"""Test sensecap parser."""
import datetime
from ttn_client import TTNSensorValue, TTNBaseValue
from ttn_client.parsers import ttn_parse
def test_sensecap_valid(sensecap_valid):
"""Test valid sensecap msg."""
uplink_data = sensecap_valid["data"]
ttn_values = ttn_parse(uplink_data)
# Test TTNBaseValue
fieldId = "Air_Temperature_4097"
sensor_value = ttn_values[fieldId]
assert isinstance(sensor_value, TTNBaseValue)
base_value = super(TTNSensorValue, sensor_value)
assert str(sensor_value) == "TTN_Value(13.3)"
assert base_value.value == "13.3"
assert base_value.uplink == uplink_data
assert base_value.field_id == fieldId
assert base_value.received_at == datetime.datetime(
2024, 7, 5, 16, 16, 30, 899243, tzinfo=datetime.timezone.utc
)
assert base_value.device_id == "eui-2cf7f1c044300279"
# Test TTNSensorValue - float
fieldId = "Air_Temperature_4097"
sensor_value = ttn_values[fieldId]
assert isinstance(sensor_value, TTNSensorValue)
assert isinstance(sensor_value.value, float)
assert sensor_value.value == 13.3
# Test TTNSensorValue - int
fieldId = "Air_Humidity_4098"
sensor_value = ttn_values[fieldId]
assert isinstance(sensor_value, TTNSensorValue)
assert isinstance(sensor_value.value, int)
assert sensor_value.value == 77
# Test TTNSensorValue - Battery
fieldId = "battery"
sensor_value = ttn_values[fieldId]
assert isinstance(sensor_value, TTNSensorValue)
assert isinstance(sensor_value.value, int)
assert sensor_value.value == 100
# Test TTNSensorValue - err
fieldId = "err"
sensor_value = ttn_values[fieldId]
assert isinstance(sensor_value, TTNSensorValue)
assert isinstance(sensor_value.value, int)
assert sensor_value.value == 0
# Test TTNSensorValue - payload
fieldId = "payload"
sensor_value = ttn_values[fieldId]
assert isinstance(sensor_value, TTNSensorValue)
assert isinstance(sensor_value.value, str)
assert sensor_value.value == "0100854D00000F4700001502007F0000000026EE0364"
def test_sensecap_no_decoded_payload(sensecap_valid):
"""Test sensecap without decoder"""
uplink_data = sensecap_valid["data"]
del uplink_data["uplink_message"]["decoded_payload"]
ttn_values = ttn_parse(uplink_data)
assert len(ttn_values) == 0
def test_sensecap_invalid_payload(sensecap_valid):
"""Test invalid sensecap msg."""
uplink_data = sensecap_valid["data"]
uplink_data["uplink_message"]["decoded_payload"]["valid"] = False
ttn_values = ttn_parse(uplink_data)
assert len(ttn_values) == 0
def test_sensecap_no_messages(sensecap_valid):
"""Test sensecap without decoder"""
uplink_data = sensecap_valid["data"]
del uplink_data["uplink_message"]["decoded_payload"]["messages"]
ttn_values = ttn_parse(uplink_data)
assert len(ttn_values) == 2
|