mise à jour du service pwrkey
This commit is contained in:
+116
-8
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user