AlarmingTweet (6 / 6 steg)

Steg 6: Ladda upp Arduino koden

Redigera den följande skiss att vara säker på att uppdatera den för dina nätverksinställningar som din ThingTweet API-nyckel. Se kommentarer inline att få en bättre förståelse om vad det händer.

Jag har även bifogat en kopia av filen .pde som du kan ladda ner också.

### Starta skiss ###

AlarmingTweet av willnue - www.nuewire.com
Lägger till tweet capabilties till GE 45142 val-Alert Wireless Control Center
Kräver Ethernet Shield för att skicka tweets

ThingTweet kod Detaljer
//-----------------------
/*
ThingTweet App att uppdatera Twitter Status

ThingTweet skissen är utformad för Arduino + Ethernet Shield.
Denna skiss uppdaterar Twitter status via ThingTweet App
(http://community.thingspeak.com/documentation/apps/thingtweet/) med hjälp av HTTP POST.
ThingTweet är en Twitter proxy webbapplikation som hanterar OAuth.

Komma igång med ThingSpeak och ThingTweet:

* Registrera dig för ett nytt användarkonto för ThingSpeak - https://www.thingspeak.com/users/new
* Länka ditt Twitter-konto till den ThingTweet App - Apps / ThingTweet
* Ange ThingTweet API-nyckel i denna skiss under "ThingSpeak inställningar"

Skapad: Mars 7, 2011 av Hans Scharler (http://www.iamshadowlord.com)
*/

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

Ethernet-shield inställningar
//------------------------
byte [mac] = {0xDE, 0xAD, 0xBE, 0xB2, 0xAD, 0xEF, 0xEF}; Måste vara unika på lokala nätverket
byte ip [] = {192, 168, 1, 5}; Måste vara unika på lokala nätverket
byte gateway [] = {192, 168, 1, 1};
byte undernät [] = {255, 255, 255, 0};

Definiera stift används
//-----------------------
#define pinPwr 5 //Analog PIN-kod för Power LED på ledningscentral
#define pinArm 4 //Analog PIN-kod för beväpnade LED på ledningscentral
#define pinZn1 0 //Analog PIN-kod för zon 1 LED på ledningscentral
#define pinZn2 1 //Analog PIN-kod för zon 2 LED på ledningscentral
#define pinZn3 2 //Analog PIN-kod för zon 3 LED på ledningscentral
#define pinZn4 3 //Analog PIN-kod för zon 4 LED på ledningscentral

Globala variabler
//-----------------------
booleska prevPwr = false; Senaste av LED (å = true, OFF = false)
booleska prevArm = false; Senaste av LED (å = true, OFF = false)
booleska prevZn1 = false; Senaste av LED (å = true, OFF = false)
booleska prevZn2 = false; Senaste av LED (å = true, OFF = false)
booleska prevZn3 = false; Senaste av LED (å = true, OFF = false)
booleska prevZn4 = false; Senaste av LED (å = true, OFF = false)

String ledReport = ""; strängen för att lagra LED statusmeddelande
booleska pinAlerts [] = {falskt, falskt, falskt, falskt, falskt, falskt}; Alert Status Pins
int jag = 0; Räknaren

Twitter alternativ
//-----------------------
osignerade långa tweetInterval = 300000; Minimum att vänta mellan skicka tweets (i millisekunder) - 60000 per minut
osignerade långa LastTweet = 0; Variabel att hålla senaste tweet tid (i millisekunder)
booleska sendTweet = sant; Flagga för att skicka tweet
String tweetText = ""; strängen för att lagra tweet

ThingSpeak inställningar
//-----------------------
byte [server] = {184, 106, 153, 149}; IP-adressen för ThingSpeak API
String thingtweetAPIKey = "Ditt API nyckel här"; Skriv API-nyckel för en ThingSpeak kanal
Klient-klient (server, 80);
lång lastConnectionTime = 0;
booleska lastConnected = false;
int resetCounter = 0;

Felsöka alternativ
//-----------------------
booleska debugMode = sant; Aktivera för att felsöka läsningar till seriekonsoll

void setup() {

Ethernet.BEGIN (mac, ip, gateway, undernät); Starta upp Ethernet shield
Delay(1000);

Uppdatera Twitter via ThingTweet
IF(!client.Connected())
{
updateTwitterStatus ("AlarmingTweet startade upp!");
}

om (debugMode == true) {
Serial.BEGIN (9600); Öppna den seriella porten för debug utmatning
tweetInterval = 60000; Overide tweet intervallet för testning
}
}

void loop() {

om (sendTweet == true) {
om (millis() > = (LastTweet + tweetInterval)) {//Check att se om tillräckligt med tid klarat för att skicka igen

tweetText = "AlarmingTweet varning:";
om (pinAlerts [0] == true) {
tweetText += "zon 1 /";}
om (pinAlerts [1] == true) {
tweetText += "zon 2 /";}
om (pinAlerts [2] == true) {
tweetText += "zon 3 /";}
om (pinAlerts [3] == true) {
tweetText += "zon 4 /";}
om (pinAlerts [4] == true) {
tweetText += "ARM staten /";}
om (pinAlerts [5] == true) {
tweetText += "larm State /";}

Uppdatera Twitter via ThingTweet
IF(!client.Connected())
{
updateTwitterStatus(tweetText);
om (debugMode == true) {/ / skriva värden ut till konsolen
Serial.Print ("Tweeting:");
Serial.println(tweetText);
Serial.println();
}
}

Koppla från ThingSpeak
om (! client.connected() & & lastConnected)
{
om (debugMode == true) {/ / skriva värden ut till konsolen
Serial.println();
Serial.println("...Disconnected.");
Serial.println();
}
client.stop();
}

lastConnected = client.connected();

LastTweet = millis(); Återställa tiden av senaste tweet
för (jag = 0; jag < 6; i ++) {//Clear aviseringen flaggor
pinAlerts [i] = false;
}
}
}

sendTweet = false; Återställa Tweet flagga innan du kontrollerar lysdioder

prevPwr = checkLED (pinPwr, prevPwr); Kontrollera status för LED
prevArm = checkLED (pinArm, prevArm); Kontrollera status för LED
prevZn1 = checkLED (pinZn1, prevZn1); Kontrollera status för LED
prevZn2 = checkLED (pinZn2, prevZn2); Kontrollera status för LED
prevZn3 = checkLED (pinZn3, prevZn3); Kontrollera status för LED
prevZn4 = checkLED (pinZn4, prevZn4); Kontrollera status för LED

Skriva ut uppdateringen svar på Serial Monitor
om (client.available())
{
char c = client.read();
Serial.Print(c);
}

Delay(500); De allmänna förseningen mellan slingor
}

booleska checkLED (int ledPin, boolean prevVal) {
booleska curVal = false; Aktuell status för LED (å = true, OFF = false)
int ledReading = 1023; variabel att lagra läsning från LED (inställd på 5v/1023 som standard)

ledReading = analogRead(ledPin); läsa av värdet av LED
Delay(10); fördröja 10ms låta ADC återvinna

om (ledReading < 100) {//Check LED att se om det är på (läsa < 0,5 v)
curVal = sant;
}

om (prevVal! = curVal) {//Check att se om värdet ändras från den föregående behandlingen
sendTweet = sant; Ange flaggan att skicka en tweet
pinAlerts [ledPin] = true; Flagga en varning för detta stift
}

om (debugMode == true) {/ / skriva värden ut till konsolen
Serial.Print ("stift");
Serial.Print(ledPin);
Serial.Print(":");
Serial.Print(ledReading);
Serial.Print (",");
om (prevVal == true)
Serial.Print("on");
annat
Serial.Print("off");
Serial.Print("/");
om (curVal == true)
Serial.Print("on");
annat
Serial.Print("off");
Serial.Print (",");
om (sendTweet == true)
Serial.Print("TWEET");
annat
Serial.Print("---");
Serial.println();

Serial.Print ("varningar:");
för (jag = 0; jag < 6; i ++) {
om (pinAlerts [i] == true)
Serial.Print("Y");
annat
Serial.Print("N");
Serial.Print (",");
}
Serial.println();

FN-kommentar nedan att kontrollera varje LED individuellt
sendTweet = false; Återställa Tweet flagga individuellt för testning
}

återvända curVal; Returnera den aktuella behandlingen
}

void updateTwitterStatus(String tsData)
{
om (client.connect() & & tsData.length() > 0)
{
Skapa HTTP post-data
tsData = "api_key ="+ thingtweetAPIKey +"& status =" + tsData;

om (debugMode == true) {/ / skriva värden ut till konsolen
Serial.println ("ansluten till ThingTweet...");
Serial.println();
}

client.Print ("POST /apps/thingtweet/1/statuses/update HTTP/1.1\n");
client.Print ("Host: api.thingspeak.com\n");
client.Print ("anslutning: close\n");
client.Print ("Content-Type: application/x-www-formuläret-urlencoded \n");
client.Print ("Content-Length:");
client.Print(tsData.length());
client.Print("\n\n");

client.Print(tsData);
}
annat
{
om (debugMode == true) {/ / skriva värden ut till konsolen
Serial.println ("Anslutning misslyckades.");
Serial.println();
}
}
}

### Avsluta skiss ###

Se Steg
Relaterade Ämnen