APRS REPORT FIX (#13)
Updated to fix reporting issue. Will re-enable "per master" beaconing in next commit.
This commit is contained in:
parent
a922af2f66
commit
b4d0dec3f5
|
@ -55,7 +55,7 @@ TGID_TS2_ACL: PERMIT:ALL
|
|||
|
||||
[APRS]
|
||||
ENABLED: False
|
||||
REPORT_INTERVAL: 5
|
||||
REPORT_INTERVAL: 15
|
||||
CALLSIGN:HB1LNK-11
|
||||
SERVER:euro.aprs2.net
|
||||
MESSAGE:Connesso ad HBLINK
|
||||
|
|
174
hblink.py
174
hblink.py
|
@ -74,6 +74,87 @@ systems = {}
|
|||
|
||||
open("nom_aprs","w").close
|
||||
|
||||
file_config=config.build_config('hblink.cfg')
|
||||
|
||||
def sendAprs():
|
||||
AIS = aprslib.IS(str(file_config['APRS']['CALLSIGN']), passwd=aprslib.passcode(str(file_config['APRS']['CALLSIGN'])), host=str(file_config['APRS']['SERVER']), port=14580)
|
||||
AIS.connect()
|
||||
f = open('nom_aprs', 'r')
|
||||
lines = f.readlines()
|
||||
if lines:
|
||||
for line in lines:
|
||||
if line != ' ':
|
||||
lat_verso = ''
|
||||
lon_verso = ''
|
||||
dati = line.split(":")
|
||||
d1_c = int(float(dati[4]))
|
||||
d2_c = int(float(dati[5]))
|
||||
|
||||
if d1_c < 0:
|
||||
d1 = abs(d1_c)
|
||||
dm1=abs(float(dati[4])) - d1
|
||||
dm1_s= float(dm1) * 60
|
||||
dm1_u="{:.4f}".format(dm1_s)
|
||||
if d1 < 10 and d1 > -10:
|
||||
lat_utile='0'+str(d1)+str(dm1_u)
|
||||
else:
|
||||
lat_utile = str(d1)+str(dm1_u)
|
||||
lat_verso = 'S'
|
||||
else:
|
||||
d1 = int(float(dati[4]))
|
||||
dm1=float(dati[4]) - d1
|
||||
dm1_s= float(dm1) * 60
|
||||
dm1_u="{:.4f}".format(dm1_s)
|
||||
if d1 < 10 and d1 > -10:
|
||||
lat_utile='0'+str(d1)+str(dm1_u)
|
||||
else:
|
||||
lat_utile = str(d1)+str(dm1_u)
|
||||
lat_verso = 'N'
|
||||
|
||||
|
||||
if d2_c < 0:
|
||||
d2=abs(d2_c)
|
||||
dm2=abs(float(dati[5])) - d2
|
||||
dm2_s= float(dm2) * 60
|
||||
dm2_u="{:.3f}".format(dm2_s)
|
||||
if d2 < 10 and d2 > -10:
|
||||
lon_utile = '00'+str(d2)+str(dm2_u)
|
||||
elif d2 < 100:
|
||||
lon_utile = '0'+str(d2)+str(dm2_u)
|
||||
else:
|
||||
lon_utile = str(d2)+str(dm2_s)
|
||||
lon_verso = 'W'
|
||||
|
||||
else:
|
||||
d2=int(float(dati[5]))
|
||||
dm2=float(dati[5]) - d2
|
||||
dm2_s= float(dm2) * 60
|
||||
dm2_u="{:.3f}".format(dm2_s)
|
||||
if d2 < 10 and d2 > -10:
|
||||
lon_utile = '00'+str(d2)+str(dm2_u)
|
||||
elif d2 < 100:
|
||||
lon_utile = '0'+str(d2)+str(dm2_u)
|
||||
else:
|
||||
lon_utile = str(d2)+str(dm2_u)
|
||||
lon_verso = 'E'
|
||||
|
||||
rx_utile = dati[2][0:3]+'.'+dati[2][3:]
|
||||
tx_utile = dati[3][0:3]+'.'+dati[3][3:]
|
||||
|
||||
|
||||
AIS.sendall(str(dati[0])+">APRS,TCPIP*,qAC,"+str(file_config['APRS']['CALLSIGN'])+":!"+str(lat_utile)[:-2]+lat_verso+"/"+str(lon_utile)[:-1]+lon_verso+"r"+str(file_config['APRS']['MESSAGE'])+' RX: '+str(rx_utile)+' TX: '+str(tx_utile))
|
||||
logging.info('APRS INVIATO')
|
||||
|
||||
if file_config['APRS']['ENABLED']:
|
||||
if int(file_config['APRS']['REPORT_INTERVAL']) >= 10:
|
||||
l=task.LoopingCall(sendAprs)
|
||||
l.start(int(file_config['APRS']['REPORT_INTERVAL'])*60)
|
||||
else:
|
||||
l=task.LoopingCall(sendAprs)
|
||||
l.start(15*60)
|
||||
logger.info('Report Time APRS to short')
|
||||
|
||||
|
||||
# Timed loop used for reporting HBP status
|
||||
def config_reports(_config, _factory):
|
||||
def reporting_loop(_logger, _server):
|
||||
|
@ -485,8 +566,8 @@ class HBSYSTEM(DatagramProtocol):
|
|||
and self._peers[_peer_id]['SOCKADDR'] == _sockaddr:
|
||||
logger.info('(%s) Peer is closing down: %s (%s)', self._system, self._peers[_peer_id]['CALLSIGN'], int_id(_peer_id))
|
||||
self.transport.write(b''.join([MSTNAK, _peer_id]), _sockaddr)
|
||||
#if self._CONFIG['APRS']['ENABLED']:
|
||||
if self._config['APRS_ENABLED'] == True:
|
||||
if self._CONFIG['APRS']['ENABLED']:
|
||||
#if self._config['APRS_ENABLED'] == True:
|
||||
fn = 'nom_aprs'
|
||||
f = open(fn)
|
||||
output = []
|
||||
|
@ -526,10 +607,10 @@ class HBSYSTEM(DatagramProtocol):
|
|||
logger.info('(%s) Peer %s (%s) has sent repeater configuration', self._system, _this_peer['CALLSIGN'], _this_peer['RADIO_ID'])
|
||||
#APRS IMPLEMENTATION
|
||||
conta = 0
|
||||
lista_blocco=['ysf', 'xlx', 'nxdn', 'dstar', 'echolink','p25', 'svx']
|
||||
lista_blocco=['ysf', 'xlx', 'nxdn', 'dstar', 'echolink','p25', 'svx', 'l1nk']
|
||||
#if self._CONFIG['SYSTEMS']['APRS_ENABLED']['ENABLED'] and self._CONFIG['APRS']['ENABLED'] and not str(_this_peer['CALLSIGN'].decode('UTF-8')).replace(' ', '').isalpha() :
|
||||
# Check if master has APRS enabled instead of global.
|
||||
if self._config['APRS_ENABLED'] and self._CONFIG['APRS']['ENABLED'] and not str(_this_peer['CALLSIGN'].decode('UTF-8')).replace(' ', '').isalpha() :
|
||||
if self._CONFIG['APRS']['ENABLED'] and not str(_this_peer['CALLSIGN'].decode('UTF-8')).replace(' ', '').isalpha() :
|
||||
file = open("nom_aprs","r")
|
||||
linee = file.readlines()
|
||||
file.close()
|
||||
|
@ -564,91 +645,6 @@ class HBSYSTEM(DatagramProtocol):
|
|||
else:
|
||||
file.write(str(_this_peer['CALLSIGN'].decode('UTF-8')).replace(' ', '')+ ":"+ str(_this_peer['RADIO_ID']) +":"+ str(_this_peer['RX_FREQ'].decode('UTF-8')) + ":" + str(_this_peer['TX_FREQ'].decode('UTF-8'))+ ":" + str(_this_peer['LATITUDE'].decode('UTF-8')) + ":" + str(_this_peer['LONGITUDE'].decode('UTF-8')) + "\n")
|
||||
file.close()
|
||||
|
||||
def sendAprs():
|
||||
AIS = aprslib.IS(str(self._CONFIG['APRS']['CALLSIGN']), passwd=aprslib.passcode(str(self._CONFIG['APRS']['CALLSIGN'])), host=str(self._CONFIG['APRS']['SERVER']), port=14580)
|
||||
#AIS.connect()
|
||||
f = open('nom_aprs', 'r')
|
||||
lines = f.readlines()
|
||||
if lines:
|
||||
for line in lines:
|
||||
if line != ' ':
|
||||
lat_verso = ''
|
||||
lon_verso = ''
|
||||
dati = line.split(":")
|
||||
d1_c = int(float(dati[4]))
|
||||
d2_c = int(float(dati[5]))
|
||||
|
||||
if d1_c < 0:
|
||||
d1 = abs(d1_c)
|
||||
dm1=abs(float(dati[4])) - d1
|
||||
dm1_s= float(dm1) * 60
|
||||
dm1_u="{:.4f}".format(dm1_s)
|
||||
if d1 < 10 and d1 > -10:
|
||||
lat_utile='0'+str(d1)+str(dm1_u)
|
||||
else:
|
||||
lat_utile = str(d1)+str(dm1_u)
|
||||
lat_verso = 'S'
|
||||
else:
|
||||
d1 = int(float(dati[4]))
|
||||
dm1=float(dati[4]) - d1
|
||||
dm1_s= float(dm1) * 60
|
||||
dm1_u="{:.4f}".format(dm1_s)
|
||||
if d1 < 10 and d1 > -10:
|
||||
lat_utile='0'+str(d1)+str(dm1_u)
|
||||
else:
|
||||
lat_utile = str(d1)+str(dm1_u)
|
||||
lat_verso = 'N'
|
||||
|
||||
|
||||
if d2_c < 0:
|
||||
d2=abs(d2_c)
|
||||
dm2=abs(float(dati[5])) - d2
|
||||
dm2_s= float(dm2) * 60
|
||||
dm2_u="{:.3f}".format(dm2_s)
|
||||
if d2 < 10 and d2 > -10:
|
||||
lon_utile = '00'+str(d2)+str(dm2_u)
|
||||
elif d2 < 100:
|
||||
lon_utile = '0'+str(d2)+str(dm2_u)
|
||||
else:
|
||||
lon_utile = str(d2)+str(dm2_s)
|
||||
lon_verso = 'W'
|
||||
|
||||
else:
|
||||
d2=int(float(dati[5]))
|
||||
dm2=float(dati[5]) - d2
|
||||
dm2_s= float(dm2) * 60
|
||||
dm2_u="{:.3f}".format(dm2_s)
|
||||
if d2 < 10 and d2 > -10:
|
||||
lon_utile = '00'+str(d2)+str(dm2_u)
|
||||
elif d2 < 100:
|
||||
lon_utile = '0'+str(d2)+str(dm2_u)
|
||||
else:
|
||||
lon_utile = str(d2)+str(dm2_u)
|
||||
lon_verso = 'E'
|
||||
|
||||
rx_utile = dati[2][0:3]+'.'+dati[2][3:]
|
||||
tx_utile = dati[3][0:3]+'.'+dati[3][3:]
|
||||
|
||||
# Modified latitude and longitude strings from original, kept getting "uncompressed location" error from aprs.fi. Also will add Color Code to status, not yet working.
|
||||
#AIS.sendall(str(dati[0])+">APRS,TCPIP*,qAC,"+str(self._CONFIG['APRS']['CALLSIGN'])+":!"+str(lat_utile)[:7]+lat_verso+"/"+str(lon_utile)[:8]+lon_verso+"r"+str(self._CONFIG['APRS']['MESSAGE'])+' RX: '+str(rx_utile)[:8]+' TX: '+str(tx_utile)[:8]) # + ' CC: ' + str(_this_peer['COLORCODE']).decode('UTF-8'))
|
||||
if self._config['APRS_ENABLED']:
|
||||
AIS.connect()
|
||||
AIS.sendall(str(dati[0])+">APRS,TCPIP*,qAC,"+str(self._CONFIG['APRS']['CALLSIGN'])+":!"+str(lat_utile)[:7]+lat_verso+"/"+str(lon_utile)[:8]+lon_verso+"r"+str(self._CONFIG['APRS']['MESSAGE'])+' RX: '+str(rx_utile)[:8]+' TX: '+str(tx_utile)[:8]) # + ' CC: ' + str(_this_peer['COLORCODE']).decode('UTF-8')
|
||||
logging.info('APRS INVIATO / APRS Packet Sent')
|
||||
else:
|
||||
pass
|
||||
#logging.info(str(dati[0])+">APRS,TCPIP*,qAC,"+str(self._CONFIG['APRS']['CALLSIGN'])+":!"+str(lat_utile)[:7]+lat_verso+"/"+str(lon_utile)[:8]+lon_verso+"r"+str(self._CONFIG['APRS']['MESSAGE'])+' RX: '+str(rx_utile)[:8]+' TX: '+str(tx_utile)[:8] + ' CC:' + str(_this_peer['COLORCODE']))
|
||||
#logging.info('APRS INVIATO / APRS Packet Sent')
|
||||
|
||||
if conta == 0:
|
||||
if self._CONFIG['APRS']['REPORT_INTERVAL'] > 3:
|
||||
l=task.LoopingCall(sendAprs)
|
||||
l.start(float(int(self._CONFIG['APRS']['REPORT_INTERVAL']*60)))
|
||||
else:
|
||||
l=task.LoopingCall(sendAprs)
|
||||
l.start(5*60)
|
||||
logger.info('Report Time APRS to short')
|
||||
|
||||
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue