Hallo zusammen,
Kurz zum Projekt:
Ich messe mit dem Arduino Werte und diese werden über USB an das Raspberry gesendet und dort in eine Mysql Datenbank gespeichert.
Zusätzlich werden die gemessenen Werte vom Arduino noch in der Datenbank mit einem Zeitstempel verknüpft.
Das Skript programmiere ich mit Python.
Später möchte ich noch über eine Internetseite auf die Datenbank des Raspberry Pis zugreifen.
Mein Pythonsskript funktioniert (siehe unten), allerdings schaffe ich es nur die gemessenen Werte und den Zeitstempel in Strings zu speichern. In der Datenbank sind die Werte und die Zeitstempel also in Typ TEXT gespeichert.
Leider ist es sehr wichtig, dass ich es hinbekomme die Werte in Typ FLOAT und den Zeitstempel in Typ DATETIME in der Datenbank abzuspeichern..(Benötige ich später für die Webseite)
Wenn ich ...(ZEITSTEMPEL TEXT,MESSWERT TEXT);") in ...(ZEITSTEMPEL DATETIME,MESSWERT FLOAT);") ändere, dann habe ich das Problem mit ...VALUES (%s,%s)...
Ich bin am verzweifeln..eigentlich müsste das doch überhaupt kein Problem sein..
Ich hoffe, jemand kann mir helfen und VIELEN DANK!!!!!
# -*- coding: utf-8 -*-
import MySQLdb
import time
import serial
def get_wert():
ser = serial.Serial('/dev/ttyACM0', 9600)
wert = ser.readline().strip()
return wert
def timestamp():
now = time.time()
localtime = time.localtime(now)
milliseconds = '%02d' % int((now - int(now)) * 100)
stamp = time.strftime('%d.%m.%Y %H:%M:%S', localtime)
return stamp
connection = MySQLdb.connect(host="localhost",user="root",passwd="***",db="Messwerte")
cursor = connection.cursor()
print("Erfolgreich die Datenbank geöffnet!")
cursor.execute("CREATE TABLE IF NOT EXISTS MESSUNG (ZEITSTEMPEL TEXT,MESSWERT TEXT);")
print("Tabelle erfolgreich erzeugt!")
def insert_into_database():
cursor.execute("INSERT INTO MESSUNG (ZEITSTEMPEL, MESSWERT) VALUES (%s,%s)",(timestamp(),get_wert()))
connection.commit()
def main():
while True:
insert_into_database()
if __name__ == '__main__':
main()
Alles anzeigen