92 lines
2.9 KiB
Python
Executable File
92 lines
2.9 KiB
Python
Executable File
#!/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
|