2015-08-01 17:23:05 +00:00
|
|
|
"""
|
|
|
|
Formats ukhas telemetry strings for the pico tracker.
|
|
|
|
|
|
|
|
Expects to be passed a dict, with keys 'time', 'coords',
|
|
|
|
'battery', 'solar', 'temperature' and 'satellites'.
|
|
|
|
"""
|
|
|
|
|
|
|
|
from datetime import datetime
|
2015-08-01 20:27:01 +00:00
|
|
|
import crcmod
|
2015-08-01 17:23:05 +00:00
|
|
|
|
|
|
|
"""
|
|
|
|
Builds ukhas string from supplied datum
|
|
|
|
"""
|
|
|
|
def ukhas_format(datum):
|
|
|
|
|
2015-08-01 20:27:01 +00:00
|
|
|
callsign = "UBSEDS9"
|
2015-08-01 17:23:05 +00:00
|
|
|
|
|
|
|
# Time
|
|
|
|
time_str = "{:02}:{:02}:{:02}".format(
|
|
|
|
datum['time'].hour, datum['time'].minute, datum['time'].second)
|
|
|
|
|
|
|
|
# Location
|
|
|
|
coords = datum['coords']
|
|
|
|
location_str = "{:.6f},{:.6f},{}".format(
|
|
|
|
coords[0], coords[1], int(round(coords[2])))
|
|
|
|
|
|
|
|
# Everything
|
|
|
|
ukhas_str = "{},{},{},{},{},{},{},-1".format(
|
|
|
|
callsign, time_str, location_str, datum['satellites'],
|
|
|
|
datum['battery'], datum['solar'], datum['temperature']);
|
|
|
|
|
|
|
|
# Checksum
|
2015-08-01 20:27:01 +00:00
|
|
|
crc16 = crcmod.mkCrcFun(0x11021, 0xFFFF, False, 0x0000)
|
|
|
|
checksum = "{:04X}".format(crc16(ukhas_str))
|
2015-08-01 17:23:05 +00:00
|
|
|
|
|
|
|
return "$${}*{}".format(ukhas_str, checksum)
|