Pachube feed API/v2 with json, temp/humid with DHT22
Dependencies: NetServices mbed DHT22
main.cpp@1:a744fc1728b8, 2011-11-14 (annotated)
- Committer:
- takashikojo
- Date:
- Mon Nov 14 10:26:34 2011 +0000
- Revision:
- 1:a744fc1728b8
- Parent:
- 0:b936b6f3df8f
Pachube feed for DHT22 sensor
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:a744fc1728b8 | 43 | string environmentID = "xxxxx"; |
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 | } |