Update catchtheraj.py
This commit is contained in:
parent
d496710342
commit
3cad5a3398
116
catchtheraj.py
Normal file
116
catchtheraj.py
Normal file
@ -0,0 +1,116 @@
|
||||
import time
|
||||
import datetime
|
||||
import pyfldigi
|
||||
import curses
|
||||
import re
|
||||
from crccheck.crc import Crc16CcittFalse
|
||||
|
||||
"""
|
||||
Setup requiered on fldigi:
|
||||
Modem/TTY/Tx:
|
||||
Carrier shift: Custom
|
||||
Custom shift: 540
|
||||
Baud rate: 100
|
||||
Bits per character: 7
|
||||
Stop bits: 2
|
||||
Filter Adjustment: 1.3
|
||||
On fl-digi latest:
|
||||
Miscs/TCP-IP sessions:
|
||||
Lock: false
|
||||
On dl-fldigi:
|
||||
Rig/XML-RPC:
|
||||
Use XML-RPC program: true
|
||||
"""
|
||||
# wanna live mapy.cz in browser?
|
||||
livebrowser = False
|
||||
# wanna send msgs to the telegram channel?
|
||||
sendtelegram = True
|
||||
|
||||
# init everything
|
||||
stdscr = curses.initscr()
|
||||
c = pyfldigi.Client()
|
||||
|
||||
stdscr.clear()
|
||||
stdscr.refresh()
|
||||
curses.noecho()
|
||||
curses.cbreak()
|
||||
|
||||
stdscr.addstr(0, 0, "RAJ9 Tracker 0.2 - patek.cz 2020")
|
||||
stdscr.addstr(1, 0, "Setting up... please wait")
|
||||
stdscr.refresh()
|
||||
time.sleep(1)
|
||||
c.modem.name = "RTTY"
|
||||
packetformat = re.compile(r'\$\$\$RAJ9,([\d.-]*),([\d.-]*),([\d.-]*),([\d.-]*),([\d.-]*),([\d.-]*),([\d.-]*),([\d.-]*),([\d.-]*),([\d.-]*)\*([0123456789ABCDEF]{4})')
|
||||
rowcontents = ""
|
||||
prevdata = ""
|
||||
timeout = False
|
||||
lastTelegramSent = 0
|
||||
|
||||
stdscr.addstr(1, 0, "Running..."+" "*20)
|
||||
stdscr.addstr(4, 0, "Last recieved packet: ")
|
||||
stdscr.addstr(5, 0, "Last recieved packet time: ")
|
||||
stdscr.addstr(6, 0, "Last recieved latitude: ")
|
||||
stdscr.addstr(7, 0, "Last recieved longitude: ")
|
||||
stdscr.addstr(8, 0, "Last recieved altitude: ")
|
||||
stdscr.addstr(9, 0, "Last recieved temp: ")
|
||||
stdscr.addstr(10, 0, "Last recieved bat: ")
|
||||
stdscr.addstr(13, 0, "GPS formatted: ")
|
||||
stdscr.addstr(14, 0, "Mapy.cz link: ")
|
||||
stdscr.addstr(16, 0, "Last CRC status: ")
|
||||
stdscr.addstr(19, 0, "Last decoding status: ")
|
||||
stdscr.refresh()
|
||||
|
||||
if livebrowser:
|
||||
from selenium import webdriver
|
||||
driver=webdriver.Firefox()
|
||||
if sendtelegram:
|
||||
import telegram
|
||||
bot = telegram.Bot(token='xxxx') # talk to @botfather to get this
|
||||
|
||||
|
||||
while True:
|
||||
data = c.text.get_rx_data().decode()
|
||||
if "$$$" in (prevdata+data):
|
||||
#print("Packet detected!")
|
||||
started = time.time()
|
||||
while not "\n" in rowcontents:
|
||||
rowcontents += c.text.get_rx_data().decode()
|
||||
#print("Got new piece")
|
||||
if time.time()-started > 9:
|
||||
timeout = True
|
||||
break
|
||||
time.sleep(1)
|
||||
unparsedcontent = prevdata+data+rowcontents
|
||||
data,prevdata,rowcontents = "","",""
|
||||
if timeout:
|
||||
stdscr.addstr(19, 0, "Last decoding status: TO")
|
||||
stdscr.refresh()
|
||||
timeout = False
|
||||
continue
|
||||
if packetformat.search(unparsedcontent):
|
||||
content = packetformat.findall(unparsedcontent)[0]
|
||||
if Crc16CcittFalse.calc(unparsedcontent.split("$$$")[1].split("*")[0].encode()) == int(content[10],16):
|
||||
stdscr.addstr(16, 0, "Last CRC status: OK")
|
||||
stdscr.addstr(4, 0, "Last recieved packet: "+unparsedcontent.rstrip()+" "*40)
|
||||
stdscr.addstr(5, 0, "Last recieved packet time: "+content[1]+" "*40)
|
||||
stdscr.addstr(6, 0, "Last recieved latitude: "+content[2]+" "*40)
|
||||
stdscr.addstr(7, 0, "Last recieved longtitude: "+content[3]+" "*40)
|
||||
stdscr.addstr(8, 0, "Last recieved altitude: "+content[4]+" "*40)
|
||||
stdscr.addstr(9, 0, "Last recieved temp: "+content[7]+" "*40)
|
||||
stdscr.addstr(10, 0, "Last recieved bat: "+content[8]+" "*40)
|
||||
stdscr.addstr(13, 0, "GPS formatted: "+content[2]+","+content[3]+" "*40)
|
||||
stdscr.addstr(14, 0, "Mapy.cz link: https://en.mapy.cz/zakladni?x="+content[3]+"&y="+content[2]+"&z=16&source=coor&id="+content[3]+"%2C"+content[2])
|
||||
if time.time()-lastTelegramSent>90 and sendtelegram:
|
||||
bot.send_message(chat_id="@raj9info", text=str(datetime.datetime.now())+"\nGPS: "+content[2]+","+content[3]+"\nALT: "+content[4]+"\nTEMP: "+content[7]+"\nBAT: "+content[8]+"\nMapy.cz: https://en.mapy.cz/zakladni?x="+content[3]+"&y="+content[2]+"&z=16&source=coor&id="+content[3]+"%2C"+content[2])
|
||||
lastTelegramSent = time.time()
|
||||
if livebrowser:
|
||||
driver.get("https://en.mapy.cz/zakladni?x="+content[3]+"&y="+content[2]+"&z=16&source=coor&id="+content[3]+"%2C"+content[2])
|
||||
else:
|
||||
stdscr.addstr(16, 0, "Last CRC status: :(")
|
||||
|
||||
stdscr.addstr(19, 0, "Last decoding status: OK")
|
||||
else:
|
||||
stdscr.addstr(19, 0, "Last decoding status: :(")
|
||||
stdscr.refresh()
|
||||
time.sleep(1)
|
||||
prevdata = data
|
Loading…
Reference in New Issue
Block a user