diff --git a/hblink-SAMPLE.cfg b/hblink-SAMPLE.cfg index 8bb4fe8..e983a57 100644 --- a/hblink-SAMPLE.cfg +++ b/hblink-SAMPLE.cfg @@ -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 diff --git a/hblink.py b/hblink.py index a78760b..446c700 100644 --- a/hblink.py +++ b/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: