Bonjour,
je dois envoyer des informations de plusieurs capteurs (j'ai mis des potentiomètres pour l'exemple ci-dessous) sur une base de donnée mysql. J'ai décidé d'envoyer les informations avec un GET et de les récupérer avec un script PHP pour les stocker dans ma BDD. J'ai réussi a envoyer des données avec un seul potentiomètre. Mais lorsque je veux envoyer les données de plusieurs capteurs en passant par un tableau, je ne sais pas comment faire. Quelqu'un aurai un exemple ou pourrait m'aider?
Voici le programme arduino
#include <SPI.h>
#include <Ethernet.h> //Inclure la bibliothèque Ethernet
#define pot1 A0
#define pot2 A1
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x15, 0x15 }; //90-A2-DA-0F-15-15
//IPAddress ip(192,168,1,62); //192.168.1.62 à choisir sur votre réseau local
int potentio[2]={pot1,pot2};
float valPot[2] = {0,0};
EthernetClient client;
float val=0;
char i=0;
EthernetServer server(80);
void setup()
{
Serial.begin(9600);
// Ethernet.begin(mac);
}
void loop()
{
for(i=0;i<2;i++)
{
valPot[i] = analogRead(potentio[i]);
}
for(i=0;i<2;i++)
{
Serial.print("Valeur potentio :");
Serial.print(i+1);
Serial.print(" : ");
Serial.println(valPot[i]);
delay(2000);
}
if (client.connect("X.X.X.X",80)) { // remplacer par l'adresse IP de votre serveur-ordi
client.print( "GET /test2/add3.php?");
client.print("valPot[i]=");
client.print(valPot[i]);
client.println( " HTTP/1.1");
client.println( "Host: X.X.X.X" );
client.println( "Content-Type: application/x-www-form-urlencoded" );
client.println( "Connection: close" );
client.println();
client.println();
client.stop();
}
else
{
Serial.println("problème de connection");
}
if (client.connected()) {
client.stop(); // DISCONNECT FROM THE SERVER
}
//delay(5000); // attente en millisecondes
}
Et voici le script PHP
<?php
try
{ // connection à la base de données
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage()); // En cas d'erreur, on affiche un message et on arrête tout
}
if (isset($_GET['valPot[i]'])) // test si la variable existe
{
$_GET['valPot[i]'] = floatval($_GET['valPot[i]']); // force le type float pour la variable
echo ('donnee ' .$_GET["valPot[i]"]. ' en cours d\'ecriture
');
$bdd->exec('INSERT INTO poten (valPot[i]) VALUES('.$_GET["valPot[i]"].')');
echo ('donnee ' .$_GET['valPot[i]']. ' ecrite!');
}
?>
JE donnerais des valeurs plus parlantes que valPot*;* exemple: si Pot[0] est un amperemètre, je transmettrais "ValAmp=" puis sa valeur (ça rajoute un tableau de 6 noms à gérer dans une boucle). Je ne connais pas mysql, -oracle et sqlite- , mais je doute qu'une requête puisse nommer une colonne "valPot*" ... transmettre des noms serait plus simple...*
https://docs.postgresql.fr/8.2/sql-syntax.html Les identifieurs et les mots clés SQL doivent commencer avec une lettre (a-z, mais aussi des lettres de marques diacritiques différentes et des lettres non latines) ou un tiret bas (_). Les caractères suivants dans un identifieur ou dans un mot clé peuvent être des lettres, des tirets-bas, des chiffres (0-9) ou des signes dollar ($).
En aucun cas, ils n'envisagent d'autoriser des crochets carrés ("brackets")pour nommer une colonne...
Bonjour,
J-M-L faire passer les informations de cette façon "GET /test2/add3.php?v1=2&v2=5&v3=10" n'est pas possible avec un tableau si?
dbrion les noms que j'ai mis la sont juste pour vous faire comprendre l'idée de ce que je veux faire donc il ne faut pas y prêter attention, pareil pour les [] je sais que je ne peux pas les mettre, c'était pour faire comprendre l'idée de ce que je désire faire.
C'est surtout pour voir si quelqu'un à un exemple de code arduino avec sont php pour envoyer un tableau.
Merci de votre aide.
Ou alors récolter toutes les données du tableau et puis envoyer le tableau en entier et récupérer le tableau en entier du côté du php.
Mais je ne sais pas si cela est possible.
Merci de votre aide
et donc.. ? c'est que de l'ASCII à imprimer pour fabriquer du texte... comme sur votre console série sauf que là ça part sur votre communication IP
de l'autre côté celui qui reçoit la requête ne saura pas si vous avez tout balancé d'un coup ou par petits bouts.. il ne verra qu'une ligne GET /test2/add3.php?v1=2&v2=5&v3=10