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