Skip to content

Instantly share code, notes, and snippets.

@ypelletier
Last active January 14, 2019 00:01
Show Gist options
  • Save ypelletier/93c757c19d16047e5ce6 to your computer and use it in GitHub Desktop.
Save ypelletier/93c757c19d16047e5ce6 to your computer and use it in GitHub Desktop.
Exemple de Data Logger avec carriots.com. Les valeurs de trois capteurs analogiques branchés à A0, A1 et A2 sont envoyées à carriots.com à intervalles réguliers.
/********************* Carriots_Data_Logger.ino ***********************
*
* Exemple de Data Logger avec carriots.com
*
* Les valeurs de trois capteurs analogiques branchés à A0, A1 et A2
* sont envoyées à carriots.com à intervalles réguliers
*
* http://electroniqueamateur.blogspot.com/2013/08/data-logging-avec-carriots-arduino-et.html
*
**********************************************************************/
#include <SPI.h>
#include <Ethernet.h>
// Votre "full device APIKey" se trouve dans le control panel de carriots.com: My Settings -> My Account
// "id_developer" de votre "device" est de la forme defaultDevice@votre_login
const String APIKEY = "Mettre ici votre Full Privileges Apikey"; // Mettre ici votre Full Privileges Apikey
const String DEVICE = "Mettre le id_developer de votre appareil"; // Mettre le "id_developer" de votre "device"
// Adresse MAC de votre Shield Ethernet. Il faut simplement éviter que deux appareils de votre réseau
// local aient la même adresse MAC (vous pouvez laisser la ligne suivante telle quelle dans la plupart
// des cas.
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(82,223,244,60); // C'est l'adresse IP de api.carriots.com
EthernetClient client;
int capteurPin1 = A0; // premier capteur à la pin A0
int capteurPin2 = A1; // premier capteur à la pin A1
int capteurPin3 = A2; // premier capteur à la pin A2
long previousMillis = 0;
long interval = 30000; // nombre de millisecondes entre 2 prises de mesure consécutives
void setup() {
Serial.begin(9600);
Serial.println("Demarrage");
// DHCP (dynamic host configuration protocol): on cherche une adresse ip pour
// notre shield Ethernet.
if (Ethernet.begin(mac) == 0) {
Serial.println("Echec de la configuration DHCP Ethernet");
while(true); // alors pas la peine d'aller plus loin
}
Serial.println("Reussite de la configuration DHCP Ethernet");
delay(1000); // on se laisse le temps de souffler
}
void loop() {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
sendStream(); // on envoie les données au serveur carriots
}
// Si on reçoit des données de l'internet, on les envoit au moniteur
// série (utile pour déboguer).
while (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
client.stop();
}
}
// Envoi des données
void sendStream()
{
int valeur;
// on lit les valeurs des capteurs et on en fait des strings
valeur = analogRead(capteurPin1);
String txt1 = String(valeur); //String contenant la valeur du premier capteur
Serial.print("Valeur du premier capteur: " );
Serial.println(txt1); // pour débogage
valeur = analogRead(capteurPin2);
String txt2 = String(valeur); //String contenant la valeur du deuxieme capteur
Serial.print("Valeur du deuxieme capteur: " );
Serial.println(txt2); // pour débogage
valeur = analogRead(capteurPin3);
String txt3 = String(valeur); //String contenant la valeur du troisieme capteur
Serial.print("Valeur du troisieme capteur: " );
Serial.println(txt3); // pour débogage
if (client.connect(server, 80)) { // Si la connexion fonctionne
Serial.println("Connection etablie");
String json = "{\"protocol\":\"v2\",\"device\":\""+DEVICE+"\",\"at\":\"now\",\"data\":{\"valeur1\":\""+txt1+"\",\"valeur2\":\""+txt2+"\",\"valeur3\":\""+txt3+"\"}}";
// HTTP request
client.println("POST /streams HTTP/1.1");
client.println("Host: api.carriots.com");
client.println("Accept: application/json");
client.println("User-Agent: Arduino-Carriots");
client.println("Content-Type: application/json");
client.print("carriots.apikey: ");
client.println(APIKEY);
client.print("Content-Length: ");
int thisLength = json.length();
client.println(thisLength);
client.println("Connection: close");
client.println();
client.println(json);
}
else {
// la connexion n'a pas fonctionné
Serial.println("Echec de la connexion!");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment