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:
|
def status(self) -> bool:
|
||||||
return self._status
|
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):
|
def on_connect(client, userdata, flags, rc):
|
||||||
logging.info(f'Connected to MQTT broker: {str(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):
|
def on_message(client, userdata, msg):
|
||||||
try:
|
try:
|
||||||
spot = json.loads(msg.payload.decode())
|
spot = json.loads(msg.payload.decode())
|
||||||
tracker = ALL_TRACKERS[0]
|
tracker = ALL_TRACKERS[spot['b']]
|
||||||
except:
|
except:
|
||||||
logging.warning('Failed to parse MQTT message, payload busted')
|
logging.warning('Failed to parse MQTT message, payload busted')
|
||||||
return
|
return
|
||||||
|
@ -66,10 +69,10 @@ def on_message(client, userdata, msg):
|
||||||
+ f'{int(d)}km {spot["rp"]}dB')
|
+ f'{int(d)}km {spot["rp"]}dB')
|
||||||
tracker.add_match(spot['t'])
|
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
|
width = 155
|
||||||
margin = 6
|
margin = 6
|
||||||
height = margin + 22 + 12 * 2 + margin
|
height = margin + 22 + 12 * (1 + len(tbl)) + margin
|
||||||
|
|
||||||
img = Image.new("RGB", (width, height), '#000000')
|
img = Image.new("RGB", (width, height), '#000000')
|
||||||
draw = ImageDraw.Draw(img)
|
draw = ImageDraw.Draw(img)
|
||||||
|
@ -93,11 +96,13 @@ def update_image(state, font_path=IMG_FONT, output=IMG_OUT_PATH):
|
||||||
# Table rows
|
# Table rows
|
||||||
y = 30
|
y = 30
|
||||||
draw.text((2, y), ' ITEM STATUS ', font=font, fill="yellow")
|
draw.text((2, y), ' ITEM STATUS ', font=font, fill="yellow")
|
||||||
draw.text((2, y+12), '6m EsCN ', font=font)
|
y += 12
|
||||||
if state:
|
|
||||||
draw.text((2+8*8, y+12), '50MHz ES', font=font, fill="#00ff00")
|
for col in tbl:
|
||||||
else:
|
draw.text((2, y), col[0], font=font)
|
||||||
draw.text((2+8*8, y+12), 'Band Closed', font=font, fill="red")
|
draw.text((2+8*8, y), col[1][0], font=font, fill=col[1][1])
|
||||||
|
y += 12
|
||||||
|
|
||||||
img.save(output)
|
img.save(output)
|
||||||
|
|
||||||
mqttc = mqtt_client.Client(
|
mqttc = mqtt_client.Client(
|
||||||
|
@ -111,9 +116,14 @@ mqttc.connect(PSKREPORT_MQTT_SERVER)
|
||||||
mqttc.loop_start()
|
mqttc.loop_start()
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
for tracker in ALL_TRACKERS:
|
for tracker in ALL_TRACKERS.values():
|
||||||
tracker.tick()
|
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)
|
time.sleep(10)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
mqttc.disconnect()
|
mqttc.disconnect()
|
||||||
|
|
|
@ -5,14 +5,11 @@ IMG_OUT_PATH = './DXSPOT_VHFCOND.PNG'
|
||||||
|
|
||||||
PSKREPORT_MQTT_SERVER='mqtt.pskreporter.info'
|
PSKREPORT_MQTT_SERVER='mqtt.pskreporter.info'
|
||||||
PSKREPORT_TOPICS = [
|
PSKREPORT_TOPICS = [
|
||||||
# BY -> JA, 6m
|
'pskr/filter/v2/6m/FT8/+/+/+/+/318/+',
|
||||||
'pskr/filter/v2/6m/FT8/+/+/+/+/318/339',
|
'pskr/filter/v2/6m/FT8/+/+/+/+/+/318',
|
||||||
# JA -> BY, 6m
|
|
||||||
'pskr/filter/v2/6m/FT8/+/+/+/+/339/318',
|
'pskr/filter/v2/2m/FT8/+/+/+/+/318/+',
|
||||||
# BY -> Korea, 6m
|
'pskr/filter/v2/2m/FT8/+/+/+/+/+/318',
|
||||||
'pskr/filter/v2/6m/FT8/+/+/+/+/318/137',
|
|
||||||
# Korea -> BY, 6m
|
|
||||||
'pskr/filter/v2/6m/FT8/+/+/+/+/137/318',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
DX_BAND_OPEN_WINDOW = 600
|
DX_BAND_OPEN_WINDOW = 600
|
||||||
|
|
正在加载…
在新工单中引用