Last active
January 14, 2019 00:01
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/********************* 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