lunes, 29 de abril de 2013

COMO MONOTORIZAR TEMPERATURAS EN PACHUBE CON ARDUINO UNO Y ARDUINO SHIELD ETHERNET (PARTE 2)

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();
    }
}

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.


Fotos diversas del proyecto:




No hay comentarios:

Publicar un comentario