AlarmingTweet (6 / 6 paso)

Paso 6: Subir el código de Arduino

Editar el siguiente bosquejo asegurándose de actualización para su configuración de red así como su clave de API de ThingTweet. Ver lo comentarios en línea para obtener un mejor comprender sobre lo que pasa.

También he adjuntado una copia del archivo .pde que puede descargar así.

### Iniciar bosquejo ###

AlarmingTweet de willnue - www.nuewire.com
Agrega capacidades de tweet al centro de Control de GE 45142 opción alerta inalámbrica
Requiere Ethernet Shield para el envío de tweets

Información de código de ThingTweet
//-----------------------
/*
ThingTweet aplicación para actualizar Twitter estado

El bosquejo de ThingTweet está diseñado para el Arduino + Ethernet Shield.
Este bosquejo actualiza un estatus de Twitter a través de la App ThingTweet
(http://community.thingspeak.com/documentation/apps/thingtweet/) utilizando HTTP POST.
ThingTweet es una aplicación de web de proxy de Twitter que maneja el OAuth.

Primeros pasos con ThingSpeak y ThingTweet:

* Para registrarse para una cuenta de usuario nueva para ThingSpeak - https://www.thingspeak.com/users/new
* Vincular su cuenta de Twitter a la App ThingTweet - Apps / ThingTweet
* Introduzca la clave de la API de ThingTweet en este sketch en "Configuración de ThingSpeak"

Creado: 07 de marzo de 2011 por Hans Scharler (http://www.iamshadowlord.com)
*/

Bibliotecas
//------------------------
#include < SPI.h >
#include < Ethernet.h >

Protector Ethernet configuración
//------------------------
mac de bytes [] = {0xDE, 0xAD, 0xBE, 0xB2, 0xAD, 0xEF, 0xEF}; Debe ser exclusivo en red local
byte ip [] = {192, 168, 1, 5}; Debe ser exclusivo en red local
puerta de entrada de bytes [] = {192, 168, 1, 1};
subred de bytes [] = {255, 255, 255, 0};

Definir pines utilizados
//-----------------------
#define pinPwr 5 //Analog pin para el LED de encendido en el centro de control de
#define pinArm 4 //Analog pin para el LED de armado en el centro de control de
#define pinZn1 0 //Analog pin para el LED de zona 1 centro de control
#define pinZn2 //Analog 1 pin para el LED de zona 2 en el centro de control de
#define pinZn3 //Analog 2 pin para el LED de zona 3 centro de control
#define pinZn4 3 //Analog pin para el LED de zona 4 centro de control

Variables globales
//-----------------------
Boolean prevPwr = false; Último estado de LED (encendido = true, apagado = false)
Boolean prevArm = false; Último estado de LED (encendido = true, apagado = false)
Boolean prevZn1 = false; Último estado de LED (encendido = true, apagado = false)
Boolean prevZn2 = false; Último estado de LED (encendido = true, apagado = false)
Boolean prevZn3 = false; Último estado de LED (encendido = true, apagado = false)
Boolean prevZn4 = false; Último estado de LED (encendido = true, apagado = false)

String ledReport = ""; cadena para almacenar el mensaje de estado del LED
pinAlerts Boolean [] = {falso, falso, falso, falso, falso, falso}; Estado de alerta de los pernos de
int i = 0; Contador

Opciones de Twitter
//-----------------------
tweetInterval largo sin signo = 300000; Mínimo de espera entre el envío de tweets (en milisegundos) - 60000 por minuto
unsigned LastTweet largo = 0; Variable que contenga la última vez que tweet (en milisegundos)
Boolean sendTweet = true; Bandera para enviar tweet
String tweetText = ""; cadena para almacenar tweet

Configuración de ThingSpeak
//-----------------------
servidor de bytes [] = {184, 106, 153 149}; Dirección IP de ThingSpeak API
String thingtweetAPIKey = "YOUR API KEY aquí"; Escriba la clave de API para un canal de ThingSpeak
Cliente cliente (servidor, 80);
lastConnectionTime largo = 0;
Boolean lastConnected = false;
int resetCounter = 0;

Opciones de depuración
//-----------------------
debugMode booleano = true; Permiten depurar las lecturas a consola serial

void setup() {}

Ethernet.Begin (mac, ip, puerta de enlace, subred); Poner en marcha el shield Ethernet
Delay(1000);

Actualizar Twitter via ThingTweet
if(!Client.Connected())
{
updateTwitterStatus ("AlarmingTweet puso en marcha!");
}

Si (debugMode == true) {}
Serial.Begin (9600); Abrir el puerto serie para la salida de depuración
tweetInterval = 60000; Overide el intervalo tweet para las pruebas
}
}

void loop() {}

Si (sendTweet == true) {}
Si (millis() > = (LastTweet + tweetInterval)) {//Check para ver si ha pasado suficiente tiempo para enviar otra vez

tweetText = "alerta de AlarmingTweet:";
Si (pinAlerts [0] == true) {}
tweetText += "zona 1 /";}
Si (pinAlerts [1] == true) {}
tweetText += "zona 2 /";}
Si (pinAlerts [2] == true) {}
tweetText += "zona 3 /";}
Si (pinAlerts [3] == true) {}
tweetText += "zona 4 /";}
Si (pinAlerts [4] == true) {}
tweetText += "estado brazo /";}
Si (pinAlerts [5] == true) {}
tweetText += "estado de alarma /";}

Actualizar Twitter via ThingTweet
if(!Client.Connected())
{
updateTwitterStatus(tweetText);
Si (debugMode == true) {/ / imprime valores en la consola
Serial.Print ("twitteando:");
Serial.println(tweetText);
Serial.println();
}
}

Desconecte de ThingSpeak
Si (! client.connected() & & lastConnected)
{
Si (debugMode == true) {/ / imprime valores en la consola
Serial.println();
Serial.println("...disconnected.");
Serial.println();
}
Client.STOP();
}

lastConnected = client.connected();

LastTweet = millis(); Restablecer el tiempo del último tweet
para (i = 0; i < 6; i ++) {//Clear la alerta de banderas
pinAlerts [i] = false;
}
}
}

sendTweet = false; Bandera de Tweet de reset antes de verificar LEDs

prevPwr = checkLED (pinPwr, prevPwr); Compruebe el estado del LED
prevArm = checkLED (pinArm, prevArm); Compruebe el estado del LED
prevZn1 = checkLED (pinZn1, prevZn1); Compruebe el estado del LED
prevZn2 = checkLED (pinZn2, prevZn2); Compruebe el estado del LED
prevZn3 = checkLED (pinZn3, prevZn3); Compruebe el estado del LED
prevZn4 = checkLED (pinZn4, prevZn4); Compruebe el estado del LED

Actualización impresión ante Monitor Serial
Si (client.available())
{
char c = client.read();
Serial.Print(c);
}

Delay(500); Retraso general entre lazos
}

Boolean checkLED (int ledPin, prevVal boolean) {}
curVal boolean = false; Estado actual del LED (encendido = true, apagado = false)
int ledReading = 1023; variable para almacenar la lectura del LED (sistema de 5v/1023 por defecto)

ledReading = analogRead(ledPin); leer el valor del LED
Delay(10); retardo de 10 ms para permitir la recuperación de la ADC

Si (ledReading < 100) {//Check a ver si está encendido el LED (lectura < 0, 5V)
curVal = true;
}

Si (prevVal! = curVal) {//Check para ver si cambia el valor de la lectura anterior
sendTweet = true; Establece el indicador para enviar un tweet
pinAlerts [ledPin] = true; Una alerta para este pin de la bandera
}

Si (debugMode == true) {/ / imprime valores en la consola
Serial.Print ("Pin");
Serial.Print(ledPin);
Serial.Print(":");
Serial.Print(ledReading);
Serial.Print (",");
Si (prevVal == true)
Serial.Print("ON");
otra cosa
Serial.Print("OFF");
Serial.Print("/");
Si (curVal == true)
Serial.Print("ON");
otra cosa
Serial.Print("OFF");
Serial.Print (",");
Si (sendTweet == true)
Serial.Print("Tweet");
otra cosa
Serial.Print("---");
Serial.println();

Serial.Print ("alertas:");
para (i = 0; i < 6; i ++) {}
Si (pinAlerts [i] == true)
Serial.Print("Y");
otra cosa
Serial.Print("N");
Serial.Print (",");
}
Serial.println();

Un comentario abajo para comprobar cada LED individual
sendTweet = false; Bandera de Tweet RESET individual para la prueba
}

volver curVal; Volver la lectura actual
}

void updateTwitterStatus(String tsData)
{
Si (client.connect() & & tsData.length() > 0)
{
Crear datos POST de HTTP
tsData = "api_key ="+ thingtweetAPIKey +"& Estado =" + tsData;

Si (debugMode == true) {/ / imprime valores en la consola
Serial.println ("conectado a ThingTweet...");
Serial.println();
}

Client.Print ("POST /apps/thingtweet/1/statuses/update HTTP/1.1\n");
Client.Print ("Host: api.thingspeak.com\n");
Client.Print ("conexión: close\n");
Client.Print ("Content-Type: aplicación/x--www-form-urlencoded \n");
Client.Print ("Content-Length:");
Client.Print(tsData.length());
Client.Print("\n\n");

Client.Print(tsData);
}
otra cosa
{
Si (debugMode == true) {/ / imprime valores en la consola
Serial.println ("fallada la conexión.");
Serial.println();
}
}
}

### Fin bosquejo ###

Artículos Relacionados