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é.