· 7 years ago · Feb 18, 2019, 09:26 AM
1# python -m pip install pymysql
2# pymysql muss zunächst installiert werden
3
4import pymysql
5import requests
6import json
7import datetime, time
8
9# Liste mit den Arduino IP-Adressen
10arduino_list = ['192.168.1.112', '192.168.1.113']
11
12# init DB Conncetion
13db = None
14
15# Zeitverzögerung beim Abrufen
16seconds_to_sleep = 5
17
18def connect_db():
19 global db
20 db = pymysql.Connect('localhost', 'user', 'password', 'MESSUNGEN') # Datenbank Authentifizierungsparameter
21
22def close_db():
23 db.close()
24
25def create_table(arduino_ip):
26 cursor = db.cursor()
27 cursor.execute('''
28 CREATE TABLE IF NOT EXISTS '''+arduino_ip+'''(
29 ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
30 SPANNUNG DOUBLE NOT NULL,
31 STROM DOUBLE NOT NULL,
32 LEISTUNG DOUBLE NOT NULL,
33 TIMESTAMP DATETIME NOT NULL
34 );''')
35 cursor.close()
36 db.commit()
37
38def insert_entry(arduino_ip, spannung, strom):
39 ts = time.time()
40 timestamp = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
41 cursor = db.cursor()
42 cursor.execute('INSERT INTO ' + arduino_ip + ' VALUES (NULL, ' + str(spannung) + ', ' + str(strom) + ', ' + str(strom*spannung) + ', \'' + str(timestamp) + '\')')
43 db.commit()
44
45
46
47if __name__ == '__main__':
48
49 print('Intialisiere Messung')
50
51 connect_db()
52
53 # CREATE Tables
54 for arduino in arduino_list:
55 create_table(arduino)
56
57 close_db()
58
59 while True:
60 time.sleep(seconds_to_sleep)
61 print('GETTING DATA FROM ARDUINOS')
62 connect_db()
63
64 for arduino in arduino_list:
65 result = requests.get('http://' + arduino)
66 result = result.content.strip()
67 result = json.loads(result)
68 if result['Strom'] != "0.00" and result['Spannung'] != "0.00": # Wenn werte vorhanden, schreibe es in die DB
69 insert_entry(arduino, result['Strom'], result['Spannung'])
70
71 close_db()