Paso 9: Xively y ARDUINO código
Aquí os adjunto el código completo (versión beta) para medidor de energía, excepto el registro que se adjunta por separado en el siguiente paso de datos por tarjeta SD.
/**
Energía control subir datos a xively ** / #include #include #include #include
#define API_KEY "xxxxxxxx" / / Ingrese su clave de API de Xively
#define FEED_ID xxxxxxxxx / Enter tu Xively feed ID
Dirección MAC para el shield Ethernet
mac de bytes [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
Pin analógico que estamos supervisando (0 y 1 son utilizados por el shield Ethernet) int sensorPin = 2;
lastConnectionTime largo sin signo = 0; última vez que nos conectamos para Cosm
const unsigned connectionInterval largo = 15000; retardo entre conexión a Cosm en milisegundos
Inicializar la biblioteca de Cosm
Definir la cadena de nuestra ID de flujo de datos
Char [] sensorId = "Energía";
char sensorId2 [] = "Energía";
XivelyDatastream datastreams [] = {}
XivelyDatastream (sensorId, strlen(sensorId), DATASTREAM_FLOAT),
XivelyDatastream (sensorId2, strlen(sensorId2), DATASTREAM_FLOAT),
DATASTREAM_FLOAT),};
Envuelva el flujo de datos en una alimentación
XivelyFeed de alimentación (FEED_ID, datastreams, 2 / * número de datastreams * /);
Cliente EthernetClient;
Xivelyclient(client) de XivelyClient;
void setup()
{
Serial.Begin(9600);
Serial.println ("inicializando red");
mientras que (Ethernet.begin(mac)! = 1)
{
Serial.println ("Error obteniendo dirección IP vía DHCP, intentando otra vez...");
Delay(15000);
}
Serial.println ("red inicializada");
Serial.println();
}
void loop()
{
Si (millis() - lastConnectionTime > connectionInterval)
{
sendData(); enviar datos a xively
getData(); leer el flujo de datos de xively
lastConnectionTime = millis(); actualizar el tiempo de conexión por lo que esperamos antes de conectar nuevamente
}
}
sendData() vacío
{
int sensor1 = vatios;
int sensor2 = energía;
datastreams[0].setFloat(sensor1); valor de la potencia
datastreams[1].setFloat(sensor2); valor energético
Serial.Print ("poder leer");
Serial.println(datastreams[0].getFloat());
Serial.Print ("energía de la lectura");
Serial.println(datastreams[1].getFloat());
Serial.println ("cargando a Xively");
int ret = xivelyclient.put (alimentación, API_KEY);
Serial.Print ("código de retorno de poner:");
Serial.println(RET);
Serial.println();
}
obtener el valor del flujo de datos de xively, el valor de la impresión que recibimos
getData() vacío
{
Serial.println ("leyendo datos de Xively");
int ret = xivelyclient.get (alimentación, API_KEY);
Serial.Print ("obtener código de retorno:");
Serial.println(RET);
Si (r > 0)
{
Serial.Print ("flujo de datos es:");
Serial.println(feed[0]);
Serial.Print ("valor de la potencia es:");
Serial.println(feed[0].getFloat());
Serial.Print ("flujo de datos es:");
Serial.println(feed[1]);
Serial.Print ("valor de la energía es:");
Serial.println(feed[1].getFloat());
}
Serial.println();