Xively, pour quoi faire ?
Le site Xively permet de lire les valeurs courantes d’un ou de plusieurs capteurs reliés à Arduino, et de visualiser automatiquement leurs évolutions en fonction du temps sous la forme de graphiques.
Comment faire ?
– Télécharger les librairies suivantes, et les dézipper dans votre répertoire « libraries/ » en faisant attention à ce que le nom des répertoires ne contiennent que des lettres :
https://github.com/xively/xively_arduino/archive/master.zip
https://github.com/amcewen/HttpClient/archive/master.zip
– Se créer un compte sur le site Xively.
– Aller dans le menu « DEVELOP », puis ajouter un appareil « DEVICE » (par exemple : MyArduino).
Vous allez alors voir se créer dans la partie droite un numéro « FEED » et une clé « KEY » que vous devrez utiliser dans le code à utiliser par la suite.
Un exemple : le potentiomètre
Nous allons lire depuis internet une valeur définie par un potentiomètre branché au pin A0.
le code suivant devra être modifier :
– mettre une IP compatible avec le réseau ;
– changer la valeur de « xivelyKey[] » en prenant votre API KEY »
– changer le premier paramètre de « XivelyFeed feed() » en y mettant votre numéro personnel de feed ;
– le nom du « SensorId[] » sera le nom qui apparaîtra sur le site.
#include <SPI.h>
#include <Ethernet.h>
#include <HttpClient.h>
#include <Xively.h>
// MAC address for your Ethernet shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// The IP address will be dependent on your local network:
IPAddress ip(192,168,1,210);
// Your Xively key to let you upload data
char xivelyKey[] = "YsPUR0DSV425yvDSvFBzzdnYSoVM1baXnY36H3K0rOYYgzzW";
// Analog pin which we're monitoring (0 and 1 are used by the Ethernet shield)
int sensorPin = 0;
// Define the strings for our datastream IDs
char sensorId[] = "Potentiometre";
XivelyDatastream datastreams[] = {
XivelyDatastream(sensorId, strlen(sensorId), DATASTREAM_FLOAT),
};
// Finally, wrap the datastreams into a feed
XivelyFeed feed(533380935, datastreams, 1 /* number of datastreams */);
EthernetClient client;
XivelyClient xivelyclient(client);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("Starting single datastream upload to Xively...");
Serial.println();
Ethernet.begin(mac, ip);
}
void loop() {
int sensorValue = analogRead(sensorPin);
datastreams[0].setFloat(sensorValue);
Serial.print("Read sensor value ");
Serial.println(datastreams[0].getFloat());
Serial.println("Uploading it to Xively");
int ret = xivelyclient.put(feed, xivelyKey);
Serial.print("xivelyclient.put returned ");
Serial.println(ret);
Serial.println();
delay(1000);
}
Pour aller plus loin : des alertes avec Zapier
Pour l’instant, nos mesures sont enregistrées sur le site Xively. Mais en ajoutant ce qu’on appelle sur ce site un « trigger », on peut créer une ou plusieurs alertes. On peut par exemple, dans notre cas, décider d’envoyer un email si notre valeur est supérieur à 1000.
Pour cela, on aura besoin d’un compte sur le site https://zapier.com/. Ensuite :
– Make a new zap
– On choisit pour la gauche : « Web Hook » et en dessous « Catch Hook ».
– On choisit pour la partie droite par exemple « Gmail ».
– On continue et on copie le lien.
– on termine cette partie en se laissant guider.
On revient sur le site Xively et on recopie le lien dans la partie « Add Trigger ».
Voila ! Et tout fonctionne sans aucune intervention de votre part. A chaque fois que votre valeur dépassera 1000, un email sera envoyé.