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:
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
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:
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!
Code: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