Arduino Uno Daten in Postgres schreiben

Hallo Zusammen

Ich wollte nachfragen ob von euch jemand Erfahrung hat wie man die Daten von zum bsp. Digital Pin2 und Pin4 auslesen kann und in eine Datenbank (Postgres) schreiben kann. Hat das schon jemand gemacht oder kennt eine gute Anleitung dazu? Nach langem googeln habe ich mich jetzt für den Eintrag hier im Forum entschienden.

Hoffe jemand kann helfen.

Danke und Gruss

Hi

Worauf läuft die Datenbank?
Der Arduino kann Daten z.B. seriell versenden - wenn Du die Daten empfangen und überarbeiten kannst, daß Diese der Datenbank 'schmecken'?

MfG

Der einfachste Weg dürfte über ein PHP-Script auf einem Webserver sein, dem Du die Daten per GET (wenige) oder POST (wenn es mehr werden) übergibst und dass diese in die Postgress-DB schreibt.

Beim ESP8266-12E (WEMOS/LOLIN D1 mini) kannst Du das auch per HTTPS machen. Ob das auch mit den Ethernet-Libs der Arduinos geht, weiß ich nicht. Da könnte es aber ein RAM-Problem geben.
Im lokalen Netz brauchst Du aber kein HTTPS.

Gruß Tommy

Hallo Zusammen

Danke für die Posts.
Also die Datenbank läuft auf einem linux ubuntu system welche ich über Docker installiert habe. Konkret habe ich auf dem Arduino zwei Temperatursensoren DS18B20 verkabelt, diese senden die Daten über die USB Schnittstelle auf den PC (aktuell über die Arduino IDE Port: "/dev/ttyACM3" auslesbar. Ich habe mir auch überlegt mit Python eine Abfrage alle x sekunden zu machen und dann werden die Daten direkt in die Postgres Datenbank geschrieben. Bin mir jedoch unsicher ob dies so funktioniert.

LG

Die Abfrage sollte schon alles mitbekommen, was der Arduino sendet. Die zeitliche Staffelung sollte der Arduino beim Senden machen.
Denke an ein Endekennzeichen, z.B. NL ('\n') bei der Übertragung.

Gruß Tommy

Hallo Zusammen habe nun ein erstes Script mit Python geschrieben:

import serial
import psycopg2


con = None




try:
   connection = psycopg2.connect(user="postgres",
                                  password="mysecretpassword",
                                  host="127.0.0.1",
                                  port="5432",
                                  database="mydb")
except (Exception, psycopg2.Error) as error :
    print ("Error while fetching data from PostgreSQL", error)

ser = serial.Serial('/dev/ttyACM3', 9600)
cur = con.cursor()

cur.execute("CREATE TABLE sensors(Id INTEGER PRIMARY KEY, Name VARCHAR(20), Price INT)")

a = ser.readline()

cur.execute("INSERT INTO sensors VALUES(a)")

Die Verbindung zur Datenbank funktioniert, jedoch erhalte ich noch folgende Fehlermeldung welche ich nicht wegbringe:

"line 20, in
cur = con.cursor()
AttributeError: 'NoneType' object has no attribute 'cursor'"

Das solltest Du eher in einem Python-Forum fragen.

Ich vermute, dass con = None kein Objekt kennzeichnet, das eine Methode cursor() hat.
Das [p]con[/p] klingt nach console oder connection, als Suchansatz.

Gruß Tommy