Salut, je débute en python mais depuis mon dernier message ici), j'ai un peu cheminé. J'ai emprunté en bibliothèque un bouquin sur Python 3, j'utilise VScode pour coder et l'environnement virtuel pour tester le script de mon projet. Yes !

Je travaille donc sur un projet d'acquisition de données en temps réel d'un thermomètre électronique en liaison bluetooth. J'ai donc récupéré un programme sur Github et échangé avec son concepteur. Il est d'accord pour que le code soit récupéré et modifié selon les besoins.

Ce que je souhaite c'est l'export d'un fichier CSV contenant :
- le date_time
- la température


Voici le code modifié :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import sys
import asyncio
import platform
import logging
import keyboard
import csv
 
from datetime import datetime
from multimeter import *
from bleak import BleakClient
 
ADDRESS = ("xx:xx:xx:xx:xx:xx")                                 
CHARACTERISTIC_UUID = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx"
 
now = datetime.now()
date_time=now.strftime("%d/%m/%Y, %H:%M:%S")
 
dataGraph = []
multimeter = AN9002()
lastDisplayedUnit = ""
 
def notification_handler(sender, data):
    global dataGraph
    global multimeter
    global lastDisplayedUnit
                            # Simple notification handler which prints the data received.
                            # print("Data multimeter: {0}".format(data.hex(' ') ))
    multimeter.SetMeasuredValue(data)
    displayedData = multimeter.GetDisplayedValue()
    if multimeter.overloadFlag:
        displayedData = 99999
        print("Overload")
    unit = multimeter.GetDisplayedUnit()
    if lastDisplayedUnit == "":
        lastDisplayedUnit = unit
    if unit != lastDisplayedUnit:
        lastDisplayedUnit = unit
        dataGraph.clear()
    dataGraph.append(displayedData)
    print(date_time, str(displayedData), unit) 
 
async def run(address):
    client = BleakClient(address)
 
    async with BleakClient(address) as client:
        await client.start_notify(CHARACTERISTIC_UUID, notification_handler)
        await asyncio.sleep(15.0)   #show data for 15"
        while True:
            if keyboard.is_pressed("q"):
                print("Shutting down!");
                break;
            else:
                await asyncio.sleep(0.5)
 
if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.set_debug(False)
    loop.run_until_complete(run(ADDRESS))
 
    with open('plot.csv', 'w') as f:
        wr = csv.writer(f)
        wr.writerow(date_time)
        wr.writerow(dataGraph)

Voici l'output dans le venv : vous allez voir, le date_time ne s'actualise pas à chaque prise de température

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
11.py:58: DeprecationWarning: There is no current event loop
  loop = asyncio.get_event_loop()
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 25.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 25.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 25.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 26.0 C
07/07/2022, 18:52:53 27.0 C
07/07/2022, 18:52:53 29.0 C #j'ai mis ma main pour chauffer le thermomètre
07/07/2022, 18:52:53 31.0 C
07/07/2022, 18:52:53 32.0 C
07/07/2022, 18:52:53 32.0 C
07/07/2022, 18:52:53 32.0 C
07/07/2022, 18:52:53 33.0 C
07/07/2022, 18:52:53 33.0 C
07/07/2022, 18:52:53 32.0 C
07/07/2022, 18:52:53 31.0 C
07/07/2022, 18:52:53 31.0 C
07/07/2022, 18:52:53 31.0 C
07/07/2022, 18:52:53 31.0 C
07/07/2022, 18:52:53 31.0 C
07/07/2022, 18:52:53 31.0 C
07/07/2022, 18:52:53 31.0 C
07/07/2022, 18:52:53 30.0 C
07/07/2022, 18:52:53 30.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 28.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 29.0 C
07/07/2022, 18:52:53 28.0 C
07/07/2022, 18:52:53 28.0 C
07/07/2022, 18:52:53 28.0 C
07/07/2022, 18:52:53 28.0 C
07/07/2022, 18:52:53 28.0 C
07/07/2022, 18:52:53 28.0 C
Shutting down!
Et le fichier CSV que j'obtiens mentionne une seule date_time (celle de l'export, dans un format différent : d,d,/,m,m,/,y,y,y,y,) et toutes les données récoltées :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
0,7,/,0,7,/,2,0,2,2,",", ,1,8,:,5,2,:,5,326.0,26.0,26.0,26.0,25.0,26.0,26.0,26.0,26.0,25.0,26.0,26.0,26.0,26.0,25.0,26.0,26.0,26.0,26.0,26.0,27.0,29.0,31.0,32.0,32.0,32.0,33.0,33.0,32.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,30.0,30.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,28.0,29.0,29.0,28.0,28.0,28.0,28.0,28.0,28.0

En output :
* comment faire en sorte que le date_time de chaque prise s'imprime ?
En export du CSV :
* Comment exporter les températures et leurs date_time associés ?


Merci à vous pour vos lumières !
Un bon WE et profitez du beau-temps !
Moustache