Pachube feed API/v2 with json, temp/humid with DHT22

Dependencies:   NetServices mbed DHT22

Committer:
takashikojo
Date:
Sun Nov 13 12:54:18 2011 +0000
Revision:
0:b936b6f3df8f
Child:
1:a744fc1728b8

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
takashikojo 0:b936b6f3df8f 1 // includes
takashikojo 0:b936b6f3df8f 2
takashikojo 0:b936b6f3df8f 3 #include "mbed.h"
takashikojo 0:b936b6f3df8f 4 #include "EthernetNetIf.h"
takashikojo 0:b936b6f3df8f 5 #include "HTTPClient.h"
takashikojo 0:b936b6f3df8f 6 #include "DHT22.h"
takashikojo 0:b936b6f3df8f 7
takashikojo 0:b936b6f3df8f 8 EthernetNetIf eth;
takashikojo 0:b936b6f3df8f 9 HTTPClient http;
takashikojo 0:b936b6f3df8f 10
takashikojo 0:b936b6f3df8f 11 // feed with 2 streams
takashikojo 0:b936b6f3df8f 12 char contentTemplate[] = "{ \
takashikojo 0:b936b6f3df8f 13 \"title\":\"TITLE HERE\", \"version\":\"1.0.0\",\
takashikojo 0:b936b6f3df8f 14 \"datastreams\":[\
takashikojo 0:b936b6f3df8f 15 { \"id\":\"STREAM ID\", \"current_value\":\"%d\"},\
takashikojo 0:b936b6f3df8f 16 { \"id\":\"STREAM ID\", \"current_value\":\"%d\"}\
takashikojo 0:b936b6f3df8f 17 ]\
takashikojo 0:b936b6f3df8f 18 }" ;
takashikojo 0:b936b6f3df8f 19
takashikojo 0:b936b6f3df8f 20
takashikojo 0:b936b6f3df8f 21 char content[200] ;
takashikojo 0:b936b6f3df8f 22
takashikojo 0:b936b6f3df8f 23 DHT22 dht22(p15) ;
takashikojo 0:b936b6f3df8f 24
takashikojo 0:b936b6f3df8f 25 int main() {
takashikojo 0:b936b6f3df8f 26
takashikojo 0:b936b6f3df8f 27 HTTPText txt;
takashikojo 0:b936b6f3df8f 28 int r ;
takashikojo 0:b936b6f3df8f 29
takashikojo 0:b936b6f3df8f 30 printf("Start\n");
takashikojo 0:b936b6f3df8f 31 printf("\r\nSetting up...\r\n");
takashikojo 0:b936b6f3df8f 32 EthernetErr ethErr = eth.setup();
takashikojo 0:b936b6f3df8f 33 if (ethErr) {
takashikojo 0:b936b6f3df8f 34 printf("Error %d in setup.\n", ethErr);
takashikojo 0:b936b6f3df8f 35 return -1;
takashikojo 0:b936b6f3df8f 36 }
takashikojo 0:b936b6f3df8f 37 printf("\r\nSetup OK\r\n");
takashikojo 0:b936b6f3df8f 38
takashikojo 0:b936b6f3df8f 39 // copy API key from settings
takashikojo 0:b936b6f3df8f 40 string apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
takashikojo 0:b936b6f3df8f 41
takashikojo 0:b936b6f3df8f 42 // use feed ID
takashikojo 0:b936b6f3df8f 43 string environmentID = "38632";
takashikojo 0:b936b6f3df8f 44
takashikojo 0:b936b6f3df8f 45 // for authentication, API key is set in client header
takashikojo 0:b936b6f3df8f 46 HTTPClient client;
takashikojo 0:b936b6f3df8f 47 client.setRequestHeader("X-PachubeApiKey", apiKey);
takashikojo 0:b936b6f3df8f 48
takashikojo 0:b936b6f3df8f 49 // text object holds data to be posted
takashikojo 0:b936b6f3df8f 50 HTTPText jsonContent("text/json");
takashikojo 0:b936b6f3df8f 51
takashikojo 0:b936b6f3df8f 52 while (1) {
takashikojo 0:b936b6f3df8f 53 dht22.sample() ;
takashikojo 0:b936b6f3df8f 54 sprintf(content, contentTemplate, dht22.getHumidity()/10.0, dht22.getTemperature()/10.0) ;
takashikojo 0:b936b6f3df8f 55 printf("Json: %s\n", content) ;
takashikojo 0:b936b6f3df8f 56 jsonContent.set(content) ;
takashikojo 0:b936b6f3df8f 57
takashikojo 0:b936b6f3df8f 58 // uri for post includes feed ID
takashikojo 0:b936b6f3df8f 59 string uri = "http://api.pachube.com/v2/feeds/" + environmentID + ".json?_method=put";
takashikojo 0:b936b6f3df8f 60
takashikojo 0:b936b6f3df8f 61 // result should be 0 and response should be 200 for successful post
takashikojo 0:b936b6f3df8f 62 HTTPResult result = client.post(uri.c_str(), jsonContent, NULL);
takashikojo 0:b936b6f3df8f 63
takashikojo 0:b936b6f3df8f 64 if (result==HTTP_OK) {
takashikojo 0:b936b6f3df8f 65 printf("Result :\"%s\"\n", txt.gets());
takashikojo 0:b936b6f3df8f 66 } else {
takashikojo 0:b936b6f3df8f 67 printf("Error %d\n", result);
takashikojo 0:b936b6f3df8f 68 }
takashikojo 0:b936b6f3df8f 69
takashikojo 0:b936b6f3df8f 70
takashikojo 0:b936b6f3df8f 71 r = client.getHTTPResponseCode();
takashikojo 0:b936b6f3df8f 72 if (result==HTTP_OK) {
takashikojo 0:b936b6f3df8f 73 printf("Result :\"%d\"\n", r);
takashikojo 0:b936b6f3df8f 74 } else {
takashikojo 0:b936b6f3df8f 75 printf("Error %d\n", r);
takashikojo 0:b936b6f3df8f 76 }
takashikojo 0:b936b6f3df8f 77
takashikojo 0:b936b6f3df8f 78 wait(60) ;
takashikojo 0:b936b6f3df8f 79 }
takashikojo 0:b936b6f3df8f 80 }