Ahora vamos a ver el centro de la cuestión. Examinaremos el código que debemos cargar en nuestro arduino. Y aunque en la página de pacube/cosm tenemos unos estupendos ejemplos con arduino explicados, claro esta, en perfecto inglés, nosotros utilizaremos una librería que nos va a simplificar mucho las cosas, "escondiendo" la parte del código más dificil de entender.
Por otra parte, en la pagina oficial de arduino tambien disponemos de una explicación detallada de la comunicación con pachube/cosm: http://arduino.cc/en/Tutorial/PachubeCient. Incluso las últimas versiones del IDE de arduino ya traen ejemplos integrados de esto como se puede ver con la versión 1.5.2 en la siguiente figura:
Asi que nos vamos a el siguiente repositorio y nos bajamos la librería en custión:
La tenemos en la opción "downloads": ERxPachube-I-3.2.zip.
Después de ello la descargarmos en el subdirectorio "libraries" de la carpeta arduino, con lo cúal al abrillo ya tendremos el ejemplo "PachubeOut" disponible, que debemos modificar para personalizarlo de acuerdo con nuestras necesidades.
El Código modificado es el siguiente:
/*
Pachube Data Out
Demuestra el uso de la librería ERxPachube
Sube datos de temperatura al servidor Pachube/cosm.
Primero en registráte en (http://www.cosm.com/).
Para correr este sketch, necesitamos:
1. Crear un propio " feed" o fuente de datos
2. Usar tú propia "API key" y remplázala donde pone: PACHUBE_API_KEY.
3. Usa tú propia "feed " y remplázala donde pone: PACHUBE_FEED_ID.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Created 22 April 2011
* By Jeffrey Sun
* http://code.google.com/p/pachubelibrary/
*/
#include <Arduino.h>
#include <HardwareSerial.h>
#include <ERxPachube.h>
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xF4, 0x61 };
// Aquí podemos la MAC de nuestra shield Etrhenet
byte ip[] = { 192, 168, 0, 15 };
// Aquí podemos la IP asignada por nuestro Router( en este mi Vodafone)
#define PACHUBE_API_KEY "ngJ6D7RYoZCc3LwiF175iBGIppCSAKx3eGdMdGVhL2hhdz0g"
// Aquí pondemos la API key PACHUBE_API_KEY
#define PACHUBE_FEED_ID "126168"
// Aqúi ponemos el identificador de temperatura (FEED) de nuestro arduino
ERxPachubeDataOut dataout(PACHUBE_API_KEY, PACHUBE_FEED_ID);
void PrintDataStream(const ERxPachube& pachube);
void setup() {
Serial.begin(9600);
Ethernet.begin(mac, ip);
dataout.addData(0);
//dataout.addData(1); // Lineas comentadas porque solo tenemos un FEED
//dataout.addData(2);
}
void loop() {
Serial.println("+++++++++++++++++++++++++++++++++++++++++++++++++");
//float fSensorData = 15.23;
float tempC;
int tempPin = 0;
tempC = analogRead(tempPin);
tempC = (5.0 * tempC * 100.0)/1024.0;
dataout.updateData(0, tempC);
//dataout.updateData(1, fSensorData); // Lineas comentadas porque solo tenemos un FEED
//dataout.updateData(1, "Arduino Data");
int status = dataout.updatePachube();
Serial.print("sync status code <OK == 200> => "); // Sólo para propósitos de DEBUG
Serial.println(status);
PrintDataStream(dataout); //Enviamos el dato de temperatura
delay(5000);
}
void PrintDataStream(const ERxPachube& pachube)
{
unsigned int count = pachube.countDatastreams();
Serial.print("data count=> ");
Serial.println(count);
Serial.println("<id>,<value>");
for(unsigned int i = 0; i < count; i++)
{
Serial.print(pachube.getIdByIndex(i));
Serial.print(",");
Serial.print(pachube.getValueByIndex(i));
Serial.println();
}
}
/*
Pachube Data Out
Demuestra el uso de la librería ERxPachube
Sube datos de temperatura al servidor Pachube/cosm.
Primero en registráte en (http://www.cosm.com/).
Para correr este sketch, necesitamos:
1. Crear un propio " feed" o fuente de datos
2. Usar tú propia "API key" y remplázala donde pone: PACHUBE_API_KEY.
3. Usa tú propia "feed " y remplázala donde pone: PACHUBE_FEED_ID.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Created 22 April 2011
* By Jeffrey Sun
* http://code.google.com/p/pachubelibrary/
*/
#include <Arduino.h>
#include <HardwareSerial.h>
#include <ERxPachube.h>
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xF4, 0x61 };
// Aquí podemos la MAC de nuestra shield Etrhenet
byte ip[] = { 192, 168, 0, 15 };
// Aquí podemos la IP asignada por nuestro Router( en este mi Vodafone)
#define PACHUBE_API_KEY "ngJ6D7RYoZCc3LwiF175iBGIppCSAKx3eGdMdGVhL2hhdz0g"
// Aquí pondemos la API key PACHUBE_API_KEY
#define PACHUBE_FEED_ID "126168"
// Aqúi ponemos el identificador de temperatura (FEED) de nuestro arduino
ERxPachubeDataOut dataout(PACHUBE_API_KEY, PACHUBE_FEED_ID);
void PrintDataStream(const ERxPachube& pachube);
void setup() {
Serial.begin(9600);
Ethernet.begin(mac, ip);
dataout.addData(0);
//dataout.addData(1); // Lineas comentadas porque solo tenemos un FEED
//dataout.addData(2);
}
void loop() {
Serial.println("+++++++++++++++++++++++++++++++++++++++++++++++++");
//float fSensorData = 15.23;
float tempC;
int tempPin = 0;
tempC = analogRead(tempPin);
tempC = (5.0 * tempC * 100.0)/1024.0;
dataout.updateData(0, tempC);
//dataout.updateData(1, fSensorData); // Lineas comentadas porque solo tenemos un FEED
//dataout.updateData(1, "Arduino Data");
int status = dataout.updatePachube();
Serial.print("sync status code <OK == 200> => "); // Sólo para propósitos de DEBUG
Serial.println(status);
PrintDataStream(dataout); //Enviamos el dato de temperatura
delay(5000);
}
void PrintDataStream(const ERxPachube& pachube)
{
unsigned int count = pachube.countDatastreams();
Serial.print("data count=> ");
Serial.println(count);
Serial.println("<id>,<value>");
for(unsigned int i = 0; i < count; i++)
{
Serial.print(pachube.getIdByIndex(i));
Serial.print(",");
Serial.print(pachube.getValueByIndex(i));
Serial.println();
}
}
En el siguiente video explico como conseguir la PACHUBE_API_KEY y la PACHUBE_FEED_ID
necesarias para comunicar el arduino con el servidor pachube/cosm.
No hay comentarios:
Publicar un comentario