Bonjour,
Je souhaite récupérer des données d'un capteur et les envoyer via GSM pour les enregister sur une base de données. Je ne souhaite pas qu'à terme l'arduino soit connecté à un ordinateur.
J'aimerais savoir si en faisant une requête HTTP avec client.print et client.write, j'obtiendrai ce que je veux.
Je n'ai pas encore l'hébergement pour mon serveur et la carte sim. J'aimerais valider mon code pour que tout soit prêt dès que je les aurais. Je possède un arduino uno et un shield GSM.
N'hésitez pas à faire des remarques sur mon code, je ne sais pas s'il est bien optimisé.
Voici mon code :
#include <TimeLib.h>
#include "arduino_secrets.h"
#include <GSM.h>
#include <Ethernet.h>
#include <SPI.h>
int temps= minute();
int duree= second();
int i;
float somDeb ;
float moyDeb;
int pinContact = 10;
boolean connected = false;
boolean Contact=digitalRead(pinContact);
EthernetClient client;
//envoi
// PIN Number
const char PINNUMBER[] = SECRET_PINNUMBER;
// APN data, données orange
const char GPRS_APN[] = SECRET_GPRS_APN;
const char GPRS_LOGIN[] = SECRET_GPRS_LOGIN;
const char GPRS_PASSWORD[] = SECRET_GPRS_PASSWORD;
//Données du serveur
char writeAPIKey[] = SECRET_WRITE_APIKEY;
char readAPIKey[] = SECRET_READ_APIKEY;
char channelID[] = SECRET_CHANEL_ID;
// initialize the library instance
//GSMSSLClient client;
GSM gsmAccess;
GPRS gprs;
GSMScanner scanner;
// Domain name and port that we will connect too (for example: api.thingspeak.com)
char server[] = "api.thingspeak.com";
int port = 443; // port 443 is the default for HTTPS
void setup() {
Serial.begin(9600); // initialisation de la connexion série
somDeb = 0;
i = 0;
}
void loop() {
while (!connected)
{
if ((gsmAccess.begin(pinContact) == GSM_READY) &&
(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY))
{
connected = true;
}
else
{
Serial.println("Not connected");
delay(1000);
}
}
if (Contact)
{
if (duree>59)
{
duree= 1+ minute();
float debit= 0.1/((duree*60)/3600);
Serial.println("duree:");
Serial.println(duree*60);//renvoi le temps si contact
Serial.println("debit:");
Serial.println(debit);
somDeb = somDeb + debit ;
i = i+1;
delay (1000);
duree= 0;
}
else {
float debit= 0.1/(duree/3600);
Serial.println("duree:");
Serial.println(duree);//renvoi le temps si contact
Serial.println("debit:");
Serial.println(debit);
somDeb = somDeb + debit ;
i = i+1;
delay (1000);
duree=0;
}}
else {
Serial.println("Pas de contact");
}
if (temps=10){
moyDeb = somDeb/i;
// Make a HTTP request:
client.print("GET ");
//client.print(path);
client.println(" HTTP/1.1");
client.print("Host: ");
client.println(server);
client.println("Connection: close");
client.println();
} else {
// if you didn't get a connection to the server:
Serial.println("connection failed");
}
if (client.available()) {
client.write(moyDeb);
Serial.print(moyDeb);
temps=0;
somDeb=0;
i=0;
moyDeb=0;
}
}
Merci d'avance pour vos réponses.