Page 1 sur 1

Comptage heures

Posté : lun. 3 oct. 2022 20:32
par bgwen53
Je souhaiterais que lorsque mon entre GPIO 17 est enclenché un comptage heures minutes secondes commence .

Quand le GPIO 17 repasse a 0 le comptage s'arrete , afin d'obtenir un fichier txt avec le total d'heures d'utilisation sui s’incrémente de jours en jours .

j'ai déjà ce script python qui surveille l’état des GPIO toutes les 5 secondes .

Code : Tout sélectionner

#!/usr/bin/python
# Script Python
from sys import argv
from os import system, path
from time import sleep
 
gpio_nr=int(argv[1])
err=""

if not path.isdir('/sys/class/gpio/gpio' + str(gpio_nr)):
    #f = open('/sys/class/gpio/export','w') # Fonctionnement a verifier
    #print >> f, str(gpio_nr)
    #f.close()
    system("echo "+str(gpio_nr)+" > /sys/class/gpio/export") 
    sleep(1)

try: # etat
    f = open("/sys/class/gpio/gpio"+str(gpio_nr)+"/value",'r')
    status=f.readline()
    f.close()
except:
    err= err + "Erreur GPIO.input GPIO" + str(gpio_nr) + " | "

if not err:
    if status.strip() == "0":
        print "OPEN"
    elif status.strip() == "1":
        print "CLOSED"
    else:
        print "NA"
else:
    print "NA"
Pouvez vous m'aidez merci

Re: Comptage heures

Posté : lun. 3 oct. 2022 21:42
par piper
Bonjour,
Vu l'objectif (qui n'est pas l'affichage d'un chrono en live)
Et l'existence du fichier
Je ferais la chose suivante (très simple)
le programme écrit dans un fichier texte pour chaque changement de position du pin en question en indiquant la nouvelle position (1 ou 0) et la date et heure de changement de position
Au passage, lorsqu'il écrit pour un arrêt, il retrouve la date/heure de début (ligne précédente avec un 1) , fait la soustraction des date/heure et met sur la ligne la durée
On obtient un fichier avec une ligne par changement d'état
La 1ère ligne contient : 1 (action sur le bouton pour mise en marche) et une date/heure
La suivante contient : 0(action sur le bouton pour mise en arrêt ) et une date/heure d'arrêt et la durée
Comme chaque ligne contient une date/heure, il est aisé de transformer ça pour avoir un fichier avec cumule des durées par jour .... il y a un piège cependant : démarrage en fin de journée et arrêt le lendemain, mais rien d'infaisable.

Re: Comptage heures

Posté : lun. 3 oct. 2022 22:45
par bgwen53
Bonsoir et merci piper ,

Re: Comptage heures

Posté : ven. 11 août 2023 09:10
par MSG
Bonjour ,

la fonction time.time() ou time() avec l'import , permet d'avoir la date et heure de l'événement .

Il suffit de faire :
Start=time() # à la mise en marche
Stop =time() # à l'arrêt
Duree= int(stop-start) # valeur en secondes

Ne reste plus qu'a convertir selon la grandeur (ex avec la valeur 123456 secondes).

Code : Tout sélectionner

duree = 123456
s = duree % 60
duree //= 60
m = duree % 60
duree //= 60
h = duree % 24
duree //= 24
j = duree

print(j,h,m,s)
1 10 17 36
Vérification :
1*24*60*60 + 10*60*60 + 17*60 + 36 = 123456 secondes