From c1368a547f0ddb5d0edd591dd16df68a3a7497c7 Mon Sep 17 00:00:00 2001 From: Vincent BENOIT Date: Sat, 1 Oct 2022 20:50:41 +0200 Subject: [PATCH] =?UTF-8?q?mise=20=C3=A0=20jour=20du=20service=20pwrkey?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pwrkey.py | 124 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 116 insertions(+), 8 deletions(-) diff --git a/src/pwrkey.py b/src/pwrkey.py index 6b013b3..9a7dcd6 100644 --- a/src/pwrkey.py +++ b/src/pwrkey.py @@ -1,13 +1,121 @@ #!/usr/bin/python3 +# -*- encoding: utf-8 -*- +# @author: benoit.vince84@free.fr +# @date: Septembre 2022 +# @brief: Programme Pwrkey pour le GNSS HAT + +################################################################### +# Importation de modules externes # + +import sys, os, re +import serial import RPi.GPIO as GPIO import time +import logging as log +import time +from datetime import datetime, date +import calendar +import json +import socket -GPIO.setmode(GPIO.BOARD) -GPIO.setup(7, GPIO.OUT) -while True: - GPIO.output(7, GPIO.LOW) - time.sleep(2) - GPIO.output(7, GPIO.HIGH) - break -GPIO.cleanup() +################################################################### +# Class et Methods # + +def get_conf(logger=None): + ''' Get configuration + + :return dict: + Configuration dictionnary + ''' + config = None + try: + with open(os.path.join("/home/pi/KineIntercom/src", "KineIntercom.json"), 'r') as f: + try: + config = json.load(f) + except json.decoder.JSONDecodeError as e: + logger.error("Impossible de charger les données de configuration ({})".format(e)) + except FileNotFoundError as e: + logger.error("Impossible d'ouvrir le fichier de configuation ({})".format(e)) + + return config + +def verify_open_hours(conf=None, log=None): + ''' Verify if GSM HAT must be opened with conf hours + + :param conf: + configuration object + + :param log: + logger object + + :return bool: + True if authorized, False otherwise + ''' + flag = False + my_date = date.today() + day = calendar.day_name[my_date.weekday()] + now = datetime.now() + for k,v in conf[day].items(): + time_conf = int(k.split('h')[0])*60 + int(k.split('h')[1]) + current_time = now.hour*60 + now.minute + if current_time >= time_conf: + if v == 1: + flag = True + elif v == 0: + flag = False + log.debug('Jour: {} - Temps courant: {} - Ouverture: {}'.format(day, now.strftime('%Hh%M'), flag)) + return flag + +def init_module(): + ''' initialisation of GNSS/GPS/GSM HAT Module + ''' + GPIO.setmode(GPIO.BOARD) + GPIO.setup(7, GPIO.OUT) + return + +def setup_module(): + ''' Setup module (Set/Reset) + ''' + while True: + GPIO.output(7, GPIO.LOW) + time.sleep(2) + GPIO.output(7, GPIO.HIGH) + break + GPIO.cleanup() + +def main(): + ''' main function + ''' + logger = log.getLogger("pwrkey") + logger.setLevel(log.DEBUG) + fl = log.StreamHandler() + fl.setLevel(log.DEBUG) + formatter = log.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + fl.setFormatter(formatter) + logger.addHandler(fl) + + # get config dictionnary + config = get_conf(logger) + if not config: + exit(1) + + # create a UDS socket + sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + # Connect the socket to the port where the server is listening + server_addr = '/tmp/uds_socket' + try: + sock.connect(server_addr) + except socket.error as e: + logger.error("Erreur de connexion avec le serveur: {}".format(e)) + sys.exit(1) + + opened = verify_open_hours(conf=config['HORAIRES'], log=logger) + sock.sendall(str(opened)) + + sock.close() + #init_module() + #setup_module() + +if __name__ == '__main__': + main()