AlarmingTweet (6 / 6 étapes)

Etape 6: Télécharger le Code de l’Arduino

Modifier le suit esquisse en veillant à mettre à jour vos paramètres réseau, ainsi votre clé API ThingTweet. Voir commentaires en ligne pour obtenir un meilleur comprendre tout ce qu’il passe.

J’ai également joint une copie du fichier .pde que vous pouvez télécharger aussi bien.

### Commencer esquisse ###

AlarmingTweet par willnue - www.nuewire.com
Ajoute la capacité tweet pour le centre de contrôle de GE 45142 choix-alerte sans fil
Ethernet Shield a besoin pour envoyer des tweets

Détails du code ThingTweet
//-----------------------
/*
ThingTweet App pour mettre à jour un statut Twitter

L’esquisse de ThingTweet est conçu pour l’Arduino + Ethernet Shield.
Cette esquisse met à jour un statut Twitter via l’application ThingTweet
(http://community.thingspeak.com/documentation/apps/thingtweet/) à l’aide de HTTP POST.
ThingTweet est une application de web proxy Twitter qui gère la OAuth.

Premiers pas avec ThingSpeak et ThingTweet :

* Inscrivez-vous pour un compte d’utilisateur pour ThingSpeak - https://www.thingspeak.com/users/new
* Lier votre compte Twitter à l’App ThingTweet - Apps / ThingTweet
* Entrez la clé API de ThingTweet dans cette esquisse sous « Paramètres de ThingSpeak »

Créé le: 7 mars 2011 par Hans Scharler (http://www.iamshadowlord.com)
*/

Bibliothèques
//------------------------
#include < SPI.h >
#include < Ethernet.h >

Bouclier Ethernet réglages
//------------------------
la mac de Byte [] = {0xDE, 0xAD, 0xBE, 0xB2, 0xAD, 0xEF, 0xEF} ; Doit être unique sur le réseau local
la propriété intellectuelle de Byte [] = {192, 168, 1, 5} ; Doit être unique sur le réseau local
la passerelle de Byte [] = {192, 168, 1, 1} ;
sous-réseau Byte = {255, 255, 255, 0} ;

Définir les axes utilisés
//-----------------------
#define pinPwr 5 //Analog broche pour Power LED afficheur
#define pinArm 4 //Analog broche pour armés LED afficheur
#define pinZn1 0 //Analog broche pour Zone 1 LED afficheur
#define pinZn2 //Analog 1 broche pour Zone 2 LED afficheur
#define pinZn3 //Analog 2 broches pour la Zone 3 LED afficheur
#define pinZn4 //Analog 3 broches pour la Zone 4 LED afficheur

Variables globales
//-----------------------
prevPwr booléen = false ; Dernier état des LED (= true, OFF = false)
prevArm booléen = false ; Dernier état des LED (= true, OFF = false)
prevZn1 booléen = false ; Dernier état des LED (= true, OFF = false)
prevZn2 booléen = false ; Dernier état des LED (= true, OFF = false)
prevZn3 booléen = false ; Dernier état des LED (= true, OFF = false)
prevZn4 booléen = false ; Dernier état des LED (= true, OFF = false)

String ledReport = "" ; chaîne pour stocker des messages de statut de LED
pinAlerts Boolean [] = {faux, faux, faux, faux, faux, faux} ; État d’alerte des broches
int i = 0 ; Compteur

Options de Twitter
//-----------------------
unsigned long tweetInterval = 300000 ; Moins d’attente entre l’envoi de tweets (en millisecondes) - 60000 / minute
unsigned long LastTweet = 0 ; Variable destinée à contenir la dernière fois que tweet (en millisecondes)
Boolean sendTweet = true ; Drapeau pour l’envoi de tweet
String tweetText = "" ; chaîne pour stocker des tweet

Paramètres de ThingSpeak
//-----------------------
serveur de Byte = {184, 106, 153, 149} ; Adresse IP pour le ThingSpeak API
String thingtweetAPIKey = « Votre API KEY ici » ; Écrire la clé API d’un canal de ThingSpeak
Client client (serveur, 80) ;
long lastConnectionTime = 0 ;
lastConnected booléen = false ;
int resetCounter = 0 ;

Options de débogage
//-----------------------
debugMode boolean = true ; Permettre de déboguer les lectures de console série

void setup() {}

Ethernet.Begin (mac, ip, passerelle, sous-réseau) ; Démarrer le bouclier Ethernet
Delay(1000) ;

Mise à jour Twitter via ThingTweet
if(!client.Connected())
{
updateTwitterStatus ("AlarmingTweet a commencé vers le haut!") ;
}

Si (debugMode == true) {}
Serial.Begin (9600) ; Ouvrir le port série pour la sortie de débogage
tweetInterval = 60000 ; Overide l’intervalle tweet pour le test
}
}

void loop() {}

Si (sendTweet == true) {}
Si (millis() > = (LastTweet + tweetInterval)) {//Check pour vérifier si le temps a passé pour envoyer à nouveau

tweetText = "AlarmingTweet alerte:" ;
Si (pinAlerts [0] == true) {}
tweetText += "Zone 1 /";}
Si (pinAlerts [1] == true) {}
tweetText += "Zone 2 /";}
Si (pinAlerts [2] == true) {}
tweetText += "Zone 3 /";}
Si (pinAlerts [3] == true) {}
tweetText += "Zone 4 /";}
Si (pinAlerts [4] == true) {}
tweetText += "bras État /";}
Si (pinAlerts [5] == true) {}
tweetText += "état d’alarme /";}

Mise à jour Twitter via ThingTweet
if(!client.Connected())
{
updateTwitterStatus(tweetText) ;
Si (debugMode == true) {/ / imprimer des valeurs dans la console
Serial.Print (« Twitter: ") ;
Serial.println(tweetText) ;
Serial.println() ;
}
}

Déconnecter ThingSpeak
Si (! client.connected() & & lastConnected)
{
Si (debugMode == true) {/ / imprimer des valeurs dans la console
Serial.println() ;
Serial.println("...disconnected.") ;
Serial.println() ;
}
client.Stop() ;
}

lastConnected = client.connected() ;

LastTweet = millis() ; Réinitialiser l’heure du dernier tweet
pour (i = 0; j’ai 6 <; i ++) {//Clear l’alerte drapeaux
pinAlerts [i] = false ;
}
}
}

sendTweet = false ; Drapeau de Tweet RESET avant de vérifier les LEDs

prevPwr = checkLED (pinPwr, prevPwr) ; Vérifiez le statut de LED
prevArm = checkLED (pinArm, prevArm) ; Vérifiez le statut de LED
prevZn1 = checkLED (pinZn1, prevZn1) ; Vérifiez le statut de LED
prevZn2 = checkLED (pinZn2, prevZn2) ; Vérifiez le statut de LED
prevZn3 = checkLED (pinZn3, prevZn3) ; Vérifiez le statut de LED
prevZn4 = checkLED (pinZn4, prevZn4) ; Vérifiez le statut de LED

Imprimer la réponse mise à jour de Serial Monitor
Si (client.available())
{
char c = client.read() ;
Serial.Print(c) ;
}

Delay(500) ; Délai général entre les boucles
}

Boolean checkLED (int ledPin, prevVal boolean) {}
curVal booléen = false ; État actuel de la LED (= true, OFF = false)
int ledReading = 1023 ; variable pour stocker la lecture à partir de LED (valeur par défaut à 5v/1023)

ledReading = analogRead(ledPin) ; lire la valeur de la LED
Delay(10) ; retarder de 10 ms pour permettre la récupération de l’ADC

Si (ledReading < 100) {//Check la LED pour voir si il est sous tension (lecture < 0.5V)
curVal = true ;
}

Si (prevVal! = curVal) //Check {pour voir si la valeur passée de la lecture précédente
sendTweet = true ; Définissez l’indicateur d’envoyer un tweet
pinAlerts [ledPin] = true ; Drapeau d’alerte pour cette broche
}

Si (debugMode == true) {/ / imprimer des valeurs dans la console
Serial.Print (« NIP ») ;
Serial.Print(ledPin) ;
Serial.Print(":") ;
Serial.Print(ledReading) ;
Serial.Print (",") ;
Si (prevVal == true)
Serial.Print("on") ;
d’autre
Serial.Print("OFF") ;
Serial.Print("/") ;
Si (curVal == true)
Serial.Print("on") ;
d’autre
Serial.Print("OFF") ;
Serial.Print (",") ;
Si (sendTweet == true)
Serial.Print("Tweet") ;
d’autre
Serial.Print("---") ;
Serial.println() ;

Serial.Print ("alertes:") ;
pour (i = 0; i < 6; i ++) {}
Si (pinAlerts [i] == true)
Serial.Print("Y") ;
d’autre
Serial.Print("N") ;
Serial.Print (",") ;
}
Serial.println() ;

Un commentaire ci-dessous pour vérifier chacun conduit individuellement
sendTweet = false ; Réinitialiser l’indicateur Tweet individuellement pour les tests
}

retour curVal ; Retourner à la lecture courante
}

Sub updateTwitterStatus(String tsData)
{
Si (client.connect() & & tsData.length() > 0)
{
Créer les données HTTP POST
tsData = "api_key = « + thingtweetAPIKey + » & status =" + tsData ;

Si (debugMode == true) {/ / imprimer des valeurs dans la console
Serial.println ("connecté à ThingTweet...") ;
Serial.println() ;
}

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

client.Print(tsData) ;
}
d’autre
{
Si (debugMode == true) {/ / imprimer des valeurs dans la console
Serial.println ("connexion a échoué.") ;
Serial.println() ;
}
}
}

### End Sketch ###

Articles Liés