dxspot.py: add 2m EsCN status
这个提交包含在:
父节点
6612fda856
当前提交
a5e1c07a80
共有 2 个文件被更改,包括 26 次插入 和 19 次删除
32
dxspot.py
32
dxspot.py
|
@ -42,7 +42,10 @@ class EsStatusTracker:
|
|||
def status(self) -> bool:
|
||||
return self._status
|
||||
|
||||
ALL_TRACKERS = [EsStatusTracker(DX_BAND_OPEN_WINDOW, DX_BAND_OPEN_THRESHOLD)]
|
||||
ALL_TRACKERS = {
|
||||
'6m': EsStatusTracker(DX_BAND_OPEN_WINDOW, DX_BAND_OPEN_THRESHOLD),
|
||||
'2m': EsStatusTracker(DX_BAND_OPEN_WINDOW, DX_BAND_OPEN_THRESHOLD),
|
||||
}
|
||||
|
||||
def on_connect(client, userdata, flags, rc):
|
||||
logging.info(f'Connected to MQTT broker: {str(rc)}')
|
||||
|
@ -52,7 +55,7 @@ def on_connect(client, userdata, flags, rc):
|
|||
def on_message(client, userdata, msg):
|
||||
try:
|
||||
spot = json.loads(msg.payload.decode())
|
||||
tracker = ALL_TRACKERS[0]
|
||||
tracker = ALL_TRACKERS[spot['b']]
|
||||
except:
|
||||
logging.warning('Failed to parse MQTT message, payload busted')
|
||||
return
|
||||
|
@ -66,10 +69,10 @@ def on_message(client, userdata, msg):
|
|||
+ f'{int(d)}km {spot["rp"]}dB')
|
||||
tracker.add_match(spot['t'])
|
||||
|
||||
def update_image(state, font_path=IMG_FONT, output=IMG_OUT_PATH):
|
||||
def update_image(tbl, font_path=IMG_FONT, output=IMG_OUT_PATH):
|
||||
width = 155
|
||||
margin = 6
|
||||
height = margin + 22 + 12 * 2 + margin
|
||||
height = margin + 22 + 12 * (1 + len(tbl)) + margin
|
||||
|
||||
img = Image.new("RGB", (width, height), '#000000')
|
||||
draw = ImageDraw.Draw(img)
|
||||
|
@ -93,11 +96,13 @@ def update_image(state, font_path=IMG_FONT, output=IMG_OUT_PATH):
|
|||
# Table rows
|
||||
y = 30
|
||||
draw.text((2, y), ' ITEM STATUS ', font=font, fill="yellow")
|
||||
draw.text((2, y+12), '6m EsCN ', font=font)
|
||||
if state:
|
||||
draw.text((2+8*8, y+12), '50MHz ES', font=font, fill="#00ff00")
|
||||
else:
|
||||
draw.text((2+8*8, y+12), 'Band Closed', font=font, fill="red")
|
||||
y += 12
|
||||
|
||||
for col in tbl:
|
||||
draw.text((2, y), col[0], font=font)
|
||||
draw.text((2+8*8, y), col[1][0], font=font, fill=col[1][1])
|
||||
y += 12
|
||||
|
||||
img.save(output)
|
||||
|
||||
mqttc = mqtt_client.Client(
|
||||
|
@ -111,9 +116,14 @@ mqttc.connect(PSKREPORT_MQTT_SERVER)
|
|||
mqttc.loop_start()
|
||||
try:
|
||||
while True:
|
||||
for tracker in ALL_TRACKERS:
|
||||
for tracker in ALL_TRACKERS.values():
|
||||
tracker.tick()
|
||||
update_image(tracker.status)
|
||||
update_image([
|
||||
('6m EsCN', ('50MHz ES', '#00ff00')
|
||||
if ALL_TRACKERS['6m'].status else ('Band Closed', '#ff0000')),
|
||||
('2m EsCN', ('114MHz ES', '#00ff00')
|
||||
if ALL_TRACKERS['2m'].status else ('Band Closed', '#ff0000')),
|
||||
])
|
||||
time.sleep(10)
|
||||
except KeyboardInterrupt:
|
||||
mqttc.disconnect()
|
||||
|
|
|
@ -5,14 +5,11 @@ IMG_OUT_PATH = './DXSPOT_VHFCOND.PNG'
|
|||
|
||||
PSKREPORT_MQTT_SERVER='mqtt.pskreporter.info'
|
||||
PSKREPORT_TOPICS = [
|
||||
# BY -> JA, 6m
|
||||
'pskr/filter/v2/6m/FT8/+/+/+/+/318/339',
|
||||
# JA -> BY, 6m
|
||||
'pskr/filter/v2/6m/FT8/+/+/+/+/339/318',
|
||||
# BY -> Korea, 6m
|
||||
'pskr/filter/v2/6m/FT8/+/+/+/+/318/137',
|
||||
# Korea -> BY, 6m
|
||||
'pskr/filter/v2/6m/FT8/+/+/+/+/137/318',
|
||||
'pskr/filter/v2/6m/FT8/+/+/+/+/318/+',
|
||||
'pskr/filter/v2/6m/FT8/+/+/+/+/+/318',
|
||||
|
||||
'pskr/filter/v2/2m/FT8/+/+/+/+/318/+',
|
||||
'pskr/filter/v2/2m/FT8/+/+/+/+/+/318',
|
||||
]
|
||||
|
||||
DX_BAND_OPEN_WINDOW = 600
|
||||
|
|
正在加载…
在新工单中引用