Arduino Daten auf eine Datenbank speichern?

3 Antworten

Direkt geht das auch nicht. Ihr müsst einen Webservice programmieren, der die Daten vom Arduino entgegennimmt. Dann müsst Ihr vom Arduino aus diesen WebService aufrufen. Der WebService kann eine ganz normale PHP-Seite sein, welche POST-Parameter entgegennimmt. Der Arduino muss dann diese PHP-Seite mit den entsprechenden Parametern als POST-Request öffnen.


Luca3102 
Beitragsersteller
 04.02.2020, 08:53

Inwiefern eine normale php Seite wir haben in phase 5 eine normale seite mit einer Tabelle wo auch Werte ausgegeben werden aber eben nur welche die wir per Hand eingegeben haben.

0
ohwehohach  04.02.2020, 09:09
@Luca3102

Naja, ein PHP Script eben... Nicht die Seite, die die Daten ausgibt - ein extra Script, welches nur per POST Request die Daten vom Arduino bekommt und in die Datenbank schreibt.

0

Kannst du mitd em arduino eine Website aufrufen?

Kann der Arduino SQL?

(Ich kenne mich nichtw irklich mit Arduino aus, deshalb frage ich).

Im Grund ist das eher trivial.

Mittels CREATE, INSERT und UPDATE Befehlen lässt sich in SQL das meiste bewerkstelligen.

Ihr müsst nur irgendwie die Verbindung zur Datenbank aufbauen und den Arduino entsprechende Befehle ausführen lassen.

Ich schau auch mal, ob ich etwas über das hgerausfidne, was ich zu Beginn meiner Antwort fragte.

EDIT:

Es scheint eine Ethernet-Library zu geben:

https://www.arduino.cc/en/Reference/Ethernet

Damit lässt sich mindestens eine PHP-Website aufrufen, die dann die eigentlichen Anfragen durchführt.

Evtl. kann man auch direkt mitd er Datenbank kommunizieren, das ist aber möglicherweise komplizierter bzw. fidnet man dazu weniger im Web.

EDIT2:

Wobei: Scheint auch über TCP/IP recht einfach zu gehen.


Luca3102 
Beitragsersteller
 04.02.2020, 08:55

Hey, die Libary haben wir schon ausprobiert klappt leider nicht trotzdem danke

0
Destranix  04.02.2020, 09:00
@Luca3102

Was genau habt ihr denn gemacht?

Hast du möglicherweise etwas Code für uns?

Die Variante über das Aufrufend er PHP-Seite wird die einfachste sein, denn bei der direkt über TCP/IP scheint die Authentifizierung schwierig zu sein.

Ihr baut also ersteinmal eine (scihere) Verbindung zu eurem Webserver auf.

Dorthin sendet ihr eine POST oder OPTION-Request, die entsprechend den Webserver dazu bringt, euer Script aufzurufen und die Operationen durchzuführen, die ihr durchführen wollt.

0
Luca3102 
Beitragsersteller
 04.02.2020, 09:03
@Destranix

<?php

$con = new PDO('mysql:host=localhost;dbname=wetterstation','root','root');

$query = "SELECT * FROM Messwerte";

echo '<table id="tblcss" border="1" align="center" width="100%">';

     echo "<tr> <th> ID </th>";

     echo "<th>Temperatur</th>";

     echo "<th>Luftfeuchtigkeit</th>";

     echo "<th>Luftdruck</th></tr>";

foreach($con->query($query) as $row)

{

      echo "<tr>";

      echo "<th>".$row['ID']."</th>";

      echo "<th>".$row['temperatur']."</th>";

      echo "<th>".$row['luftfeuchtigkeit']."</th>";

      echo "<th>".$row['luftdruck']."</th>";

      echo "</tr>";

   }

      echo "</table>";

?>

Das ist unser Code für unsere Seite wo wir unsere Tabelle ausgeben die Seite ist bereits mit der DB verbunden wir müssen wie gesagt nur noch den Arduino dazu bringen die Werte automatisch in die Datenbank von phpMyAdmin zu schreiben

0
Destranix  04.02.2020, 09:11
@Luca3102

Dazu musst du ein Script schreiben, dass die Daten dort einfügt.

Ein Beispiel ohne Authentification des Arduiono beim Webserver(ungetestet):

<?php

$con = new PDO('mysql:host=localhost;dbname=wetterstation','root','root',[PDO::ATTR_EMULATE_PREPARES => false]);

$query = "INSERT INTO Messwerte(ID, temperatur, luftfeuchtigkeit, luftdruck) Values(?, ?, ?, ?)";
$statement = $con->prepare($query);
$statement->execute(array($_POST['ID'], $_POST['temperatur'], $_POST['luftfeuchtigkeit'], $_POST['luftdruck']));

?>

Wenn eure ID AUTO_INCREMENT ist, dnan muss im Query glaube ich stattd es ersten Fragezeichens ein NULL stehen und im execute das erste arrayelemnt entefrnt werden.

Die Daten werden hier als POST-Parameter übergeben und lediglich von der Datenbank sanitized.

0
Destranix  04.02.2020, 09:15
@Luca3102

Du musst evtl. anders Sanitizen, da die Optionen wohl nicht allgemeingültig sind, sondern spezifisch.

0

Was habt ihr denn an Hardware ? Der Arduino hat ja selbst kein Ethernet / WLAN, da braucht es ein passendes Shield dazu....

Ansonsten könntet ihr die Daten auf dem Arduino als CSV auf SD-Karte speichern und die CSV von Hand in PHPmyadmin importieren. Oder den Arduino seriell am PC angeschlossen lassen, die Daten mit einem eigenen Programm von der seriellen Schnittstelle einlesen und in die Datenbank schreiben.

Wenn ihr nen Ethernet / WLAN Shield habt, müsst ihr mal die Beispiele dazu durchgehen, das Ding braucht schließlich auch erst einmal eine IP und muss ggf. ins WLAN kommen. Erst dann könnt ihr mit dem WebClient die Daten an ein PHP Script auf eurem Server übergeben, welcher die dann per INSERT in die Datenbank packt.

Woher ich das weiß:Berufserfahrung – Softwareentwickler & Admin