Ressources
Nous allons stocker nos mesures dans une base de données MySQL.
Liens utiles pour débuter :
Structure de notre base
Pour notre projet nous allons créer 2 tables :
- consignes : elle stocke les consignes pH bas, pH haut....
- piscine : elle stocke les mesures avec pour champs : Identité, date, t_piscine, t_ext, pH, pile
- Rem :
Id est en
auto_increment, c'est la clé primaire qui doit être unique. Elle
est générée automatiquement par MySQL.
- date est un timestamp généré automatiquement à partir de l'horloge du serveur.
- grâce au lien
nous pouvons obtenir le code PHP de la requête qu'il faudra insérer dans notre script PHP
Script php :
Notre programme Arduino va générer une url du type : bts2m.free.fr/PH/sql.php?Text=38.2&Tpiscine=24.5&pH=7.2&pile=3.85
Puis le script php va insérer les mesures transmises dans la base de donnée.
La version PHP disponible sur le serveur free est PHP
4.4.3-dev.
Cette version ne permet pas l'utilisation de la classe PDO.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<title>Transfert SQL</title>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
<meta http-equiv="Expires" content="0" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<body>
<?php
// bts2m.free.fr/PH/sql.php?Text=38.2&Tpiscine=24.5&pH=7.2&pile=3.85
// roupet.free.fr/informatique/mysql.php
//--Connexion au serveur
define("NOM","tpil.projet"); //nom = login chez free
define("PASSE","motDePasse"); // passe=votre mot de passe free
define("SERVEUR","sql.free.fr"); // adresse du serveur free
define("BASE","tpil.projet"); // nombase = login chez free
define("TABLE","piscine"); // nom de ma Table
$link = mysql_connect('sql.free.fr','tpil.projet',PASSE);
if(!$link) {echo"Impossible de se connecter au serveur".mysql_error();exit;}
else {echo "connection au serveur réussie !";}
//--Connexion à la table consignes
mysql_select_db(consignes,$link);
$requete= "SELECT * FROM consignes"; // Requete 1 : explorer consignes
$reponse=mysql_query($requete, $link);
$ligne=mysql_fetch_row($reponse);$Cb = $ligne[2];
$ligne=mysql_fetch_row($reponse);$Ch = $ligne[2];
$ligne=mysql_fetch_row($reponse);$pH_B = $ligne[2];
$ligne=mysql_fetch_row($reponse);$pH_H = $ligne[2];
if (isset($_GET['Text']) && isset($_GET['Tpiscine']) && isset($_GET['pH'] )&& isset($_GET['pile']) )
{
$requete = "INSERT INTO piscine (`date`, `t_piscine`, `t_ext`, `pH`,`pile`) VALUES (CURRENT_TIMESTAMP,".$_GET['Tpiscine'].",".$_GET['Text'].",".$_GET['pH'].",".$_GET['pile'].");";
if (mysql_query($requete, $link)) {
echo "<p>Insertion réussie : t-piscine = ".$_GET['Tpiscine']."°C, text =".$_GET['Text']."°C, pH = ".$_GET['pH'].", pile = ".$_GET['pile']." V</p>";
echo "<p>Ch=".$Ch." Cb=".$Cb." </p>"; // Envoi consigne temperature pour Arduino
echo "<p>pH_H=".$pH_H." pH_B=".$pH_B." </p>"; // Envoi consigne pH pour Arduino
}
else echo "<p>Echec d'insertion </p><p>".mysql_error()."</p>;";
mysql_close($link);
}
else // Sinon, on affiche un message d'erreur
{echo '<p>Pas de transmission</p><p>Rappel format : /PH/sql.phpText=38.2&Tpiscine=24.5&pH=7.2&pile=3.85</p>';}
?>
</body>
</html>