Comptage heures

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
bgwen53
Messages : 12
Enregistré le : dim. 18 janv. 2015 12:33

Comptage heures

Message par bgwen53 » lun. 3 oct. 2022 20:32

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

piper
Raspinaute
Messages : 645
Enregistré le : sam. 5 juin 2021 18:57

Re: Comptage heures

Message par piper » lun. 3 oct. 2022 21:42

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.
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

bgwen53
Messages : 12
Enregistré le : dim. 18 janv. 2015 12:33

Re: Comptage heures

Message par bgwen53 » lun. 3 oct. 2022 22:45

Bonsoir et merci piper ,

MSG
Raspinaute
Messages : 119
Enregistré le : ven. 26 déc. 2014 18:31

Re: Comptage heures

Message par MSG » ven. 11 août 2023 09:10

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

Répondre

Retourner vers « Python »