Arduino input naar MySQL sturen

Om iedereen op weg te helpen is het handig om de data van de Arduino in de database te zetten. Hiervoor maak ik gebruik van PHP, die de Arduino met een GET-statement aanroept en op de URL/command-line de parameters doorgeeft

Hoe dat gaat…

<?php
header('Content-type: text/plain');
echo date("Y-m-d H:i:s");
$_GET['t0'];
$_GET['t1'];
$datum= date ("Y-m-d");
$moment= date ("H:i:s");
$jaar=date("Y");
$maand=date("m");
$dag=date("d");
$uur=date("H");
$minuut=date("i");
$seconde=date("s");
echo $uur;
echo $minuut;
echo $seconde;
$link = mysql_connect("DBserverVanProvidre", "UserIDopDBserver", "WachtwoordDbUser") or die("Mysql verbinding niet mogelijk: " . mysql_error());
mysql_select_db("renewableenergynow_org_arduino") or die("kan niet met database verbinden");
$query = "INSERT INTO wx_data(dallas_1_wire_lightning_count, actual_solar_reading, date, time, day, month, jaar, uur, minuut, seconde) VALUES ('". $_GET['t0'] . "', '". $_GET['t1']."', '". $datum . "', '" . $moment ."', '" . $dag . "', '" . $maand . "', '" . $jaar."', '" . $uur . "', '" . $minuut . "', '" . $seconde . "')";
$result = mysql_query($query) or die("Helaas, mislukt: " . mysql_error());
mysql_close($link);
?>

Zoals je ziet, redelijk recht-toe-recht-aan schrijven naar de database. Met de query (“INSERT INTO….” wordt de data van de arduino dan feitelijk weggeschreven (met aanvullende informatie omtrent tijd/datum).

Het bovenstaande PHP-script zet je met een tekst-editor in een eenvoudig tekstbestand, welke je upload met FTP naar je domein.

Overigens, ik trof een belgische site aan waar een compleet pakket voor de Arduino te downloaden is. Aangezien ik overweeg naar ZonPHP over te gaan, is dat eigenlijk de koers die ik momenteel kies.

Andre Saegerman Arduino & ZonPHP scripts.

 

2 Comments

  1. Ha Niels,

    Je moet om die $_GET[‘t0’] en $_GET[‘t1’] even een mysql_real_escap_string() zetten. Zoals je het nu hebt is je database kwetsbaar voor SQL-injectie aanvallen. Niet dat waarschijnlijk iemand weet wat de URL van het script is (security through obscurity), maar het kan geen kwaad om je database te beveiligen voor het geval dat het een keer mis gaat.

    Verder kun je voor die timestamps gewoon MySQL code gebruiken zoals NOW():
    INSERT INTO wx_data(‘”. $_GET[‘t0’] . “‘, ‘”. $_GET[‘t1’].”‘,NOW(), DAY(NOW()), MONTH(NOW()), etc…);

    Ik geloof dat je al overgestapt bent op ZonPHP, dus weet niet of je dit nog nodig hebt, maar anders ter bevordering van jouw SQL kennis of een willekeurige bezoeker die dit systeem wenst te gebruiken.

  2. @Paul: je hebt gelijk. Ik stel je gelijk gerust, de getoonde database & tabellen zijn al niet meer op de server aanwezig 🙂
    TIMESTAMPS willen echter nogal wijzigen zodra je een UPDATE-query er op los laat….. daar kwam ik dus ook iets te laat achter….

Leave a Reply

Your email address will not be published. Required fields are marked *