#include <Ethernet.h> #include <OneWire.h> #include <DallasTemperature.h> char PACHUBE_API_STRING[] = ""; // Your API key int PACHUBE_FEED_ID = 0; // Your feed ID // Digital IO port used for one wire interface int ONE_WIRE_BUS = 8 ; // Ethernet mac address - this needs to be unique byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // IP addres of www.pachube.com byte server[] = { 209,40,205,190 }; // Arduino address byte ip[] = { 10, 0, 0, 223 }; byte gateway[] = { 10, 0, 0, 2 }; char version[] = "PachubeClient Ver 0.01c"; #define CRLF "rn" // simple web client to connect to Pachube.com Client client(server, 80); // Setup a oneWire instance to communicate with any OneWire device OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); // 1wire device address DeviceAddress thermometer; void setup() { // Note: Ethernet shield uses digitial IO pins 10,11,12, and 13 Serial.begin(9600); Serial.println(version); Serial.println(); // locate devices on the 1Wire bus Serial.print("Locating devices on 1Wire bus..."); sensors.begin(); int count = sensors.getDeviceCount(); Serial.print("Found "); Serial.print( count ); Serial.println(" devices on 1wire bus"); // select the first sensor for ( int i=0; i<count; i++ ) { if ( sensors.getAddress(thermometer, i) ) { Serial.print("1wire device "); Serial.print(i); Serial.print(" has address: "); printAddress(thermometer); Serial.println(); } else { Serial.print("Unable to find address for 1wire device "); Serial.println( i ); } } // show the addresses we found on the bus Serial.print("Using 1wire device: "); printAddress(thermometer); Serial.println(); // set the resolution to 9 bit sensors.setResolution(thermometer, 9); Serial.print("Initializing ethernet..."); delay(5000); Ethernet.begin(mac, ip, gateway); delay(5000); Serial.println(" done."); } void sendData() { float temp = sensors.getTempC(thermometer); //float temp = sensors.getTempF(thermometer); Serial.print("Temp="); Serial.println(temp); Serial.println("connecting..."); if (client.connect()) { Serial.println("connected"); client.print( "PUT /api/feeds/" ); client.print(PACHUBE_FEED_ID); client.print(".csv HTTP/1.1" CRLF "User-Agent: Fluffy Arduino Ver 0.01" CRLF "Host: www.pachube.com" CRLF "Accept: */" "*" CRLF // need to fix this "X-PachubeApiKey: " ); client.print(PACHUBE_API_STRING); client.print( CRLF "Content-Length: 5" CRLF "Content-Type: application/x-www-form-urlencoded" CRLF CRLF ); client.println(temp); unsigned long reqTime = millis(); // wait for a response and disconnect while ( millis() < reqTime + 10000) // wait 10 seconds for response { if (client.available()) { char c = client.read(); Serial.print(c); } if (!client.connected()) { Serial.println(); Serial.println("server disconnected"); break; } } Serial.println("client disconnecting"); Serial.println(""); client.stop(); } else { Serial.println("connection failed"); } } void printAddress(DeviceAddress deviceAddress) { for (uint8_t i = 0; i < 8; i++) { if (deviceAddress[i] < 16) Serial.print("0"); Serial.print(deviceAddress[i], HEX); } } void loop() { sensors.requestTemperatures(); // Send the command to get temperatures sendData(); delay( ( 5l * 60l * 1000l) - 11000l ); // wait 5 minutes }
Categorised as: experimental