in transform_binary_payload/src-payload-decoders/python/nas_um3080.py [0:0]
def decode_digital_data(decoded, start_byte):
# Get digital settings from start byte
settings = decoded[start_byte]
# Get value of digital during reporting from settings
value = (settings & 0b00000001)
# Get digital trigger mode from settings
trigger_mode_flag = (settings & 0b00000010)
trigger_mode = "disabled"
if trigger_mode_flag == 0b00000010:
trigger_mode = "enabled"
# Get digital trigger alert from settings
trigger_alert_flag = (settings & 0b00000100)
trigger_alert = "no"
if trigger_alert_flag == 0b00000100:
trigger_alert = "yes"
# Get digital medium type from settings
medium_type_flag = (settings & 0b11110000) >> 4
medium_type = "unknown"
if medium_type_flag == 0x00:
medium_type = "n/a"
elif medium_type_flag == 0x01:
medium_type = "Pulses"
elif medium_type_flag == 0x02:
medium_type = "Water in L"
elif medium_type_flag == 0x03:
medium_type = "Electricity in Wh"
elif medium_type_flag == 0x04:
medium_type = "Gas in L"
elif medium_type_flag == 0x05:
medium_type = "Heat in Wh"
# Get digital counter from start byte + 4 to 1
counter = int((decoded[start_byte + 4] << 24) | (decoded[start_byte + 3] << 16) |
(decoded[start_byte + 2] << 8) | (decoded[start_byte + 1]))
# Output
result = {
"value": value,
"triggerMode": trigger_mode,
"triggerAlert": trigger_alert,
"mediumType": medium_type,
"counter": counter,
}
return result