Stap 9: Xively en ARDUINO code
Ik gehecht hier de volledige code (bètaversie) voor energie meter met uitzondering van SD-kaartgegevens logboekregistratie die afzonderlijk in de volgende stap is gekoppeld.
/**
Energie monitoring gegevens uploaden naar xively ** / #include #include #include #include
#define API_KEY "xxxxxxxx" / / Voer uw Xively API-sleutel
#define FEED_ID xxxxxxxxx / / Voer uw feed ID Xively
MAC-adres voor de Ethernet-shield
byte mac [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
Analoge pin die wij aan het volgen bent (0 en 1 worden gebruikt door de Ethernet-shield) int sensorPin = 2;
unsigned long lastConnectionTime = 0; laatste keer dat we verbonden zijn met Cosm
Const unsigned long connectionInterval = 15000; de wachttijd tussen het verbinden met Cosm in milliseconden
Initialiseren van de Cosm-bibliotheek
De tekenreeks voor onze datastream ID definiëren
char [sensorId] = "POWER";
char [sensorId2] = "Energie";
XivelyDatastream datastreams [] {} =
XivelyDatastream (sensorId, strlen(sensorId), DATASTREAM_FLOAT),
XivelyDatastream (sensorId2, strlen(sensorId2), DATASTREAM_FLOAT),
DATASTREAM_FLOAT),};
Wikkel de datastream in een feed
XivelyFeed feed (FEED_ID, datastreams, 2 / * aantal datastreams * /);
EthernetClient de klant;
XivelyClient xivelyclient(client);
VOID Setup
{
Serial.begin(9600);
Serial.println ("initialiseren netwerk");
terwijl (Ethernet.begin(mac)! = 1)
{
Serial.println ("fout bij IP-adres via DHCP ophalen, trying weer...");
delay(15000);
}
Serial.println ("Network geïnitialiseerd");
Serial.println();
}
void loop
{
Als (millis() - lastConnectionTime > connectionInterval)
{
sendData(); gegevens verzenden xively
getData(); Lees de datastream terug van xively
lastConnectionTime = millis(); bijwerken van verbindingstijd, dus we wachten voordat u opnieuw verbinding maakt
}
}
VOID sendData()
{
int sensor1 = watt;
int sensor2 = energie;
datastreams[0].setFloat(sensor1); waarde van de macht
datastreams[1].setFloat(sensor2); energetische waarde
Serial.Print ("Read kracht");
Serial.println(datastreams[0].getFloat());
Serial.Print ("Read-energie");
Serial.println(datastreams[1].getFloat());
Serial.println ("uploaden naar Xively");
int ret = xivelyclient.put (feed, API_KEY);
Serial.Print ("PUT-retourcode:");
Serial.println(RET);
Serial.println();
}
de waarde van de datastream krijgen van xively, afdrukken van de waarde die we ontvangen
VOID getData()
{
Serial.println ("lezen van gegevens uit Xively");
int ret = xivelyclient.get (feed, API_KEY);
Serial.Print ("GET retourcode:");
Serial.println(RET);
Als (ret > 0)
{
Serial.Print ("Datastream is:");
Serial.println(feed[0]);
Serial.Print ("Power waarde is:");
Serial.println(feed[0].getFloat());
Serial.Print ("Datastream is:");
Serial.println(feed[1]);
Serial.Print ("energetische waarde is:");
Serial.println(feed[1].getFloat());
}
Serial.println();