Über USB-seriell empfangene Daten in MySQL schreiben
Verfasst: Samstag 4. Januar 2020, 10:13
Hallo zusammen,
ich habe einen Arduino welcher über USB mit meinem Raspberry verbunden. Der Arduino sendet mir in zeitlich unregelmäßigen Abständen eine "O" oder eine "1" über die serielle Schnittstelle an den RaspPi. Diese Werte sollen dann in eine MySQL-DB geschrieben werden.
Ich bin absoluter Newbie in Sachen Python, das ist mein erstes (und vermutlich auch letztes Projekt mit Python) und habe mir ein Script zusammen gebaut, mit dem das soweit auch funktioniert.
Rufe ich das Script im Terminal auf, empfange ich die Daten vom Arduino und schreibe sie in die Datenbank.
Da ich aber nicht weiß wann die Daten kommen, muss mein Script ja ständig auf der Schnittstelle lauschen, was ja scheinbar auch funktioniert.
Über einen Cronjob starte ich beim booten vom RaspPi das Script: @reboot python /home/pi/pythonscript.py
Und hier kommt mein Problem: es werden nach dem booten ein paar Datensätze gespeichert und dann passiert nichts mehr.
Wie gesagt, ich habe keine Ahnung von Python und will auch ehrlich gesagt keine Programmiersprache erlernen, welche ich nie mehr benutze, nur um eine Funktion zu verwirklichen.
Hier mal mein zusammen gewürfeltes Script:
Vielleicht kann sich jemand das mal ansehen und hat spontan eine Idee was falsch ist.
Irgendwo habe ich was von einem Timeout gelesen, ob das hier eine Rolle spielt?
Wäre echt froh wenn mir jemand helfen würde.
VG
Sascha
ich habe einen Arduino welcher über USB mit meinem Raspberry verbunden. Der Arduino sendet mir in zeitlich unregelmäßigen Abständen eine "O" oder eine "1" über die serielle Schnittstelle an den RaspPi. Diese Werte sollen dann in eine MySQL-DB geschrieben werden.
Ich bin absoluter Newbie in Sachen Python, das ist mein erstes (und vermutlich auch letztes Projekt mit Python) und habe mir ein Script zusammen gebaut, mit dem das soweit auch funktioniert.
Rufe ich das Script im Terminal auf, empfange ich die Daten vom Arduino und schreibe sie in die Datenbank.
Da ich aber nicht weiß wann die Daten kommen, muss mein Script ja ständig auf der Schnittstelle lauschen, was ja scheinbar auch funktioniert.
Über einen Cronjob starte ich beim booten vom RaspPi das Script: @reboot python /home/pi/pythonscript.py
Und hier kommt mein Problem: es werden nach dem booten ein paar Datensätze gespeichert und dann passiert nichts mehr.
Wie gesagt, ich habe keine Ahnung von Python und will auch ehrlich gesagt keine Programmiersprache erlernen, welche ich nie mehr benutze, nur um eine Funktion zu verwirklichen.
Hier mal mein zusammen gewürfeltes Script:
Code: Alles auswählen
import time
import serial
import MySQLdb as mdb
ser = serial.Serial('/dev/ttyACM0',9600)
db_host = 'localhost'
db_user = 'user'
db_pass = 'passwort'
db_name = 'test_db'
ser.isOpen()
while(1==1):
# Vom Arduino empfangen
out = ''
while ser.inWaiting() > 0:
out += ser.read()
if out != '':
#Daten in Datenbank schreiben
try:
con = mdb.connect(db_host, db_user, db_pass, db_name);
cur = con.cursor()
cur.execute("INSERT INTO test_table (datumzeit, to_arduino, from_arduino, status) VALUES (NOW(),'', %s, 1)", out)
con.commit()
# print "Daten empfangen"
except mdb.Error, e:
if con:
con.rollback()
#print "Error %d: %s" % (e.args[0],e.args[1])
sys.exit(1)
time.sleep(0.5)
Irgendwo habe ich was von einem Timeout gelesen, ob das hier eine Rolle spielt?
Wäre echt froh wenn mir jemand helfen würde.
VG
Sascha