AlarmingTweet (6 / 6 stap)

Stap 6: Upload de Arduino-Code

Bewerk de onderstaande sketch en controleren of bijwerken voor uw netwerkinstellingen, alsmede uw ThingTweet API-sleutel. Zie de inline commentaar te krijgen van een beter inzicht in wat het gaande.

Ik heb ook een kopie van het bestand van de .pde dat kunt u ook downloaden bijgevoegd.

### Starten van Sketch ###

AlarmingTweet door willnue - www.nuewire.com
Tweet capabilties voegt aan het GE 45142 keuze-Alert Wireless Control Center
Ethernet-Shield vereist voor het verzenden van tweets

ThingTweet code details
//-----------------------
/*
ThingTweet App een Twitter Status Update

De schets van de ThingTweet is ontworpen voor de Arduino + Ethernet-Shield.
Deze sketch een Twitter status via de ThingTweet App bijgewerkt
(http://community.thingspeak.com/documentation/apps/thingtweet/) met behulp van HTTP POST.
ThingTweet is een Twitter proxy webapplicatie die de OAuth afhandelt.

Aan de slag met ThingSpeak en ThingTweet:

* Aanmelden voor een nieuwe gebruikersaccount voor ThingSpeak - https://www.thingspeak.com/users/new
* Je Twitter-account koppelen aan de ThingTweet App - Apps / ThingTweet
* Voer de ThingTweet API-sleutel in deze schets onder "ThingSpeak Settings"

Gemaakt: Maart 7, 2011 door Hans Scharler (http://www.iamshadowlord.com)
*/

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

Ethernet-shield instellingen
//------------------------
byte mac [] = {0xDE, 0xAD, 0xBE, 0xB2, 0xAD, 0xEF, 0xEF}; Moet uniek zijn op het lokale netwerk
byte ip [] = {192, 168, 1, 5}; Moet uniek zijn op het lokale netwerk
byte gateway [] = {192, 168, 1, 1};
byte subnet [] = {255, 255, 255, 0};

Define pinnen gebruikt
//-----------------------
#define pinPwr 5 //Analog pin voor de voedings-LED op Configuratiecentrum
#define pinArm 4 //Analog pin voor gewapende LED op Configuratiecentrum
#define pinZn1 0 //Analog pin voor Zone 1 LED op Configuratiecentrum
#define pinZn2 1 //Analog pin voor Zone 2 LED op Configuratiecentrum
#define pinZn3 2 //Analog pin voor Zone 3 LED op Configuratiecentrum
#define pinZn4 3 //Analog pin voor Zone 4 LED op Configuratiecentrum

Globale variabelen
//-----------------------
Boole prevPwr = false; Laatste stand van LED (= true, OFF = false)
Boole prevArm = false; Laatste stand van LED (= true, OFF = false)
Boole prevZn1 = false; Laatste stand van LED (= true, OFF = false)
Boole prevZn2 = false; Laatste stand van LED (= true, OFF = false)
Boole prevZn3 = false; Laatste stand van LED (= true, OFF = false)
Boole prevZn4 = false; Laatste stand van LED (= true, OFF = false)

LedReport koord = ""; tekenreeks voor het opslaan van LED statusbericht
Booleaanse pinAlerts [] {onwaar, onwaar, false, false, false, onwaar} =; Alert Status van pins
int i = 0; Teller

Twitter opties
//-----------------------
unsigned long tweetInterval = 300000; Minimale wachttijd tussen het verzenden van tweets (in milliseconden) - 60000 per minuut
unsigned long LastTweet = 0; Variabele voor laatste tweet keer (in milliseconden)
Boole sendTweet = waar; Vlag voor het verzenden van tweet
TweetText koord = ""; tekenreeks voor het opslaan van tweet

ThingSpeak instellingen
//-----------------------
byte server [] = {184, 106, 153, 149}; IP-adres voor de ThingSpeak API
ThingtweetAPIKey koord = "Uw API KEY hier"; Schrijven van API-sleutel voor een ThingSpeak kanaal
Cliënt (server, 80);
lange lastConnectionTime = 0;
Boole lastConnected = false;
int resetCounter = 0;

Debug opties
//-----------------------
Boole debugMode = waar; Inschakelen om te debuggen lezingen aan seriële console

VOID Setup {}

Ethernet.begin (mac, IP-gateway, subnet); Opstarten van de Ethernet-shield
delay(1000);

Update Twitter via ThingTweet
if(!client.Connected())
{
updateTwitterStatus ("AlarmingTweet opgestart!");
}

Als (debugMode == true) {}
Serial.begin (9600); Open de seriële poort voor debug output
tweetInterval = 60000; Overide de tweet interval voor het testen
}
}

void loop {}

Als (sendTweet == true) {}
Als (millis() > = (LastTweet + tweetInterval)) {//Check om te zien als voldoende tijd verstreken om opnieuw te verzenden

tweetText = "AlarmingTweet ALERT:";
Als (pinAlerts [0] == true) {}
tweetText += "Zone 1 /";}
Als (pinAlerts [1] == true) {}
tweetText += "Zone 2 /";}
Als (pinAlerts [2] == true) {}
tweetText += "Zone 3 /";}
Als (pinAlerts [3] == true) {}
tweetText += "Zone 4 /";}
Als (pinAlerts [4] == true) {}
tweetText += "ARM staat /";}
Als (pinAlerts [5] == true) {}
tweetText += "ALARM staat /";}

Update Twitter via ThingTweet
if(!client.Connected())
{
updateTwitterStatus(tweetText);
Als (debugMode == true) {/ / waarden uitprinten bij de console
Serial.Print ("Tweeting:");
Serial.println(tweetText);
Serial.println();
}
}

ThingSpeak verbreken
Als (! client.connected() & & lastConnected)
{
Als (debugMode == true) {/ / waarden uitprinten bij de console
Serial.println();
Serial.println("...disconnected.");
Serial.println();
}
client.stop();
}

lastConnected = client.connected();

LastTweet = millis(); Opnieuw instellen van de tijd van de laatste tweet
voor (ik = 0; ik < 6; i ++) {//Clear de waarschuwing vlaggen
pinAlerts [i] = false;
}
}
}

sendTweet = false; Reset Tweet vlag voor het controleren van de LEDs

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

Update reactie op seriële Monitor afdrukken
Als (client.available())
{
char c = client.read();
Serial.Print(c);
}

delay(500); Algemene vertraging tussen lussen
}

Booleaanse checkLED (int ledPin, boolean prevVal) {}
Boole curVal = false; Huidige stand van LED (= true, OFF = false)
int ledReading = 1023; variabele op te slaan bij het lezen van LED (standaard ingesteld op 5v/1023)

ledReading = analogRead(ledPin); luiden naar de waarde van de LED
delay(10); vertraging 10ms om te laten herstellen van de ADC

Als (ledReading < 100) {//Check de LED te zien als het brandt (lezen < 0.5v)
curVal = true;
}

Als (prevVal! = curVal) {//Check om te zien als de waarde van de vorige lezing gewijzigd
sendTweet = true; Stel de vlag voor het verzenden van een tweet
pinAlerts [ledPin] = true; Een waarschuwing voor deze pin markeren
}

Als (debugMode == true) {/ / waarden uitprinten bij de console
Serial.Print ("Pin");
Serial.Print(ledPin);
Serial.Print(":");
Serial.Print(ledReading);
Serial.Print (",");
Als (prevVal == true)
Serial.Print("on");
anders
Serial.Print("off");
Serial.Print("/");
Als (curVal == true)
Serial.Print("on");
anders
Serial.Print("off");
Serial.Print (",");
Als (sendTweet == true)
Serial.Print("Tweet");
anders
Serial.Print("---");
Serial.println();

Serial.Print ("waarschuwingen:");
voor (ik = 0; ik < 6; i ++) {}
Als (pinAlerts [i] == true)
Serial.Print("Y");
anders
Serial.Print("N");
Serial.Print (",");
}
Serial.println();

Un-comment hieronder om te controleren van elk individueel geleid
sendTweet = false; Reset Tweet vlag afzonderlijk voor het testen
}

Return curVal; Terugkeer de huidige lezing
}

VOID updateTwitterStatus(String tsData)
{
Als (client.connect() & & tsData.length() > 0)
{
HTTP POST-gegevens maken
tsData = "api_key ="+ thingtweetAPIKey +"& status =" + tsData;

Als (debugMode == true) {/ / waarden uitprinten bij de console
Serial.println ("Connected to ThingTweet...");
Serial.println();
}

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

client.Print(tsData);
}
anders
{
Als (debugMode == true) {/ / waarden uitprinten bij de console
Serial.println ("verbinding mislukt.");
Serial.println();
}
}
}

### Einde schets ###

Gerelateerde Artikelen