SrvSVXLink/Options/RRFRaptor/RRFRaptor.py

92 lines
2.9 KiB
Python
Raw Permalink Normal View History

2022-08-24 08:18:01 +02:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
RRFRaptor
Learn more about RRF on https://f5nlg.wordpress.com
73 & 88 de F4HWN Armel
'''
import settings as s
import lib as l
import getopt
import sys
import time
import datetime
import os
def main(argv):
# Check et capture des arguments
try:
options, remainder = getopt.getopt(argv, '', ['help', 'version', 'sleep=', 'scan=', 'debug='])
except getopt.GetoptError:
l.usage()
sys.exit(2)
for opt, arg in options:
if opt == '--help':
l.usage()
sys.exit()
elif opt == '--version':
print s.version
sys.exit()
elif opt in ('--sleep'):
s.sleep = float(arg)
elif opt in ('--scan'):
if arg in ['True', 'true']:
s.scan = True
else:
s.scan = False
elif opt in ('--debug'):
if arg in ['True', 'true']:
s.debug = True
else:
s.debug = False
if s.scan is True: # Si scan simple
l.where_is()
while(True):
if l.read_log() is True:
file = open('/tmp/RRFRaptor_scan.tcl', 'w')
file.write('set RRFRaptor "' + l.scan() + '"\n')
file.close()
sys.exit()
else: # Sinon, boucle principale
while(True):
# Lecture du salon courant
l.where_is()
now = datetime.datetime.now()
if s.current_room != 'PARROT': # Si pas sur le perroquet
# Lecture de l'activité
l.read_log()
# Gestion de la temporisation
s1 = s.room[s.current_room]['last']
s2 = time.time()
if (s2 - s1) > s.sleep * 60: # Si la limite de temporisation atteinte, on scan
if s.debug is True or s.scan is True: # Attention, on réutilise ici la variable s.scan mais ne pas la confondre avec l'option --scan
s.scan = False
print now.strftime('%H:%M:%S'), '-', 'Scan en cours...'
l.qsy()
else: # Sinon, on affiche éventuellement une trace
s.scan = True # Attention, on réutilise ici la variable s.scan mais ne pas la confondre avec l'option --scan
if s.debug is True:
print now.strftime('%H:%M:%S'), '-', 'Standby sur ' + s.current_room + ' depuis ' + str(int(s2 - s1)) + ' secondes'
else: # Sinon on ne fait rien sur le perroquet
if s.debug is True:
print now.strftime('%H:%M:%S'), '-', 'Perroquet...'
# On controle toutes les 2 secondes, c'est suffisant...
time.sleep(5)
sys.stdout.flush()
if __name__ == '__main__':
try:
main(sys.argv[1:])
except KeyboardInterrupt:
pass