Étape 9: Xively et ARDUINO code
Ici, j’ai joint le code complet (version beta) pour compteur d’énergie à l’exclusion des données de carte SD connexion joint séparément à l’étape suivante.
/**
Énergie, suivi de transfert de données à xively ** / #include #include #include #include
#define API_KEY "xxxxxxxx" / / Entrez votre clé API Xively
#define FEED_ID xxxxxxxxx / / entrez votre Xively nourrir ID
Adresse MAC de votre bouclier Ethernet
la mac de Byte [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED} ;
Broche analogique qui nous surveillons (0 et 1 sont utilisés par le shield Ethernet) int sensorPin = 2 ;
unsigned long lastConnectionTime = 0 ; Nous avons branché à Cosm
connectionInterval long non signé const = 15000 ; le délai entre la connexion à Cosm en millisecondes
Initialiser la bibliothèque de Cosm
Définir la chaîne pour nos ID de flux de données
char sensorId [] = "Alimentation" ;
Char [] sensorId2 = "L’énergie" ;
XivelyDatastream espaces de données [] = {}
XivelyDatastream (sensorId, strlen(sensorId), DATASTREAM_FLOAT),
XivelyDatastream (sensorId2, strlen(sensorId2), DATASTREAM_FLOAT),
DATASTREAM_FLOAT),} ;
Encapsuler le flux de données dans un flux
XivelyFeed d’alimentation (FEED_ID, flux de données, 2 / * nombre d’espaces de données * /) ;
EthernetClient client ;
XivelyClient xivelyclient(client) ;
void setup()
{
Serial.Begin(9600) ;
Serial.println ("Initializing network") ;
tandis que (Ethernet.begin(mac)! = 1)
{
Serial.println ("erreur obtention d’adresse IP via DHCP, essayer encore une fois...") ;
Delay(15000) ;
}
Serial.println ("réseau initialisée") ;
Serial.println() ;
}
void loop()
{
Si (millis() - lastConnectionTime > connectionInterval)
{
sendData() ; Envoyer des données à xively
getData() ; lire le flux de données à partir de xively
lastConnectionTime = millis() ; mise à jour de temps de connexion, donc nous attendre avant de vous reconnecter
}
}
Sub sendData()
{
Capteur1 int = watt ;
sensor2 int = énergie ;
Datastreams[0].SetFloat(Sensor1) ; valeur de puissance
Datastreams[1].SetFloat(sensor2) ; valeur énergétique
Serial.Print ("Read power") ;
Serial.println(Datastreams[0].GetFloat()) ;
Serial.Print ("énergie de lecture") ;
Serial.println(Datastreams[1].GetFloat()) ;
Serial.println ("Uploading to Xively") ;
int ret = xivelyclient.put (API_KEY, aliments) ;
Serial.Print ("mettre le code de retour:") ;
Serial.println(ret) ;
Serial.println() ;
}
Obtenez la valeur de la datastream de xively, impression de la valeur que nous avons reçu
void GetData
{
Serial.println (« lecture des données Xively") ;
int ret = xivelyclient.get (API_KEY, aliments) ;
Serial.Print ("GET code de retour:") ;
Serial.println(ret) ;
Si (retraité > 0)
{
Serial.Print (« flux de données est: ") ;
Serial.println(Feed[0]) ;
Serial.Print ("valeur de puissance est:") ;
Serial.println(Feed[0].GetFloat()) ;
Serial.Print (« flux de données est: ") ;
Serial.println(Feed[1]) ;
Serial.Print ("valeur énergétique est:") ;
Serial.println(Feed[1].GetFloat()) ;
}
Serial.println() ;