http://http://diytec.web.fc2.com/mark2r2/
Dependencies: EthernetNetIf NTPClient_NetServices mbed ConfigFile
pachube.c@0:08a4d61cd84c, 2011-09-20 (annotated)
- Committer:
- mark2r2
- Date:
- Tue Sep 20 12:46:26 2011 +0000
- Revision:
- 0:08a4d61cd84c
V1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mark2r2 | 0:08a4d61cd84c | 1 | /************************************************************* |
mark2r2 | 0:08a4d61cd84c | 2 | |
mark2r2 | 0:08a4d61cd84c | 3 | pachube.c |
mark2r2 | 0:08a4d61cd84c | 4 | |
mark2r2 | 0:08a4d61cd84c | 5 | *************************************************************/ |
mark2r2 | 0:08a4d61cd84c | 6 | #include "PachubeV2CSV.h" |
mark2r2 | 0:08a4d61cd84c | 7 | #include "TextLCD.h" |
mark2r2 | 0:08a4d61cd84c | 8 | #include "appconf.h" |
mark2r2 | 0:08a4d61cd84c | 9 | #define PACHUBE_CODE_OK 200 |
mark2r2 | 0:08a4d61cd84c | 10 | #define CONFIG_FILENAME "/local/PACHUBE.CFG" |
mark2r2 | 0:08a4d61cd84c | 11 | |
mark2r2 | 0:08a4d61cd84c | 12 | extern float uSv; |
mark2r2 | 0:08a4d61cd84c | 13 | extern float cpm; |
mark2r2 | 0:08a4d61cd84c | 14 | extern TextLCD lcd; |
mark2r2 | 0:08a4d61cd84c | 15 | extern int mode; |
mark2r2 | 0:08a4d61cd84c | 16 | extern appconf_t appconf; |
mark2r2 | 0:08a4d61cd84c | 17 | extern float long_cpm; |
mark2r2 | 0:08a4d61cd84c | 18 | extern float long_uSv; |
mark2r2 | 0:08a4d61cd84c | 19 | |
mark2r2 | 0:08a4d61cd84c | 20 | void convertDoubleToChar(double val, char *buf, size_t bufsiz) { |
mark2r2 | 0:08a4d61cd84c | 21 | snprintf(buf, bufsiz, "%f", val); |
mark2r2 | 0:08a4d61cd84c | 22 | } |
mark2r2 | 0:08a4d61cd84c | 23 | |
mark2r2 | 0:08a4d61cd84c | 24 | void pachube_setup(appconf_t *appconf){ |
mark2r2 | 0:08a4d61cd84c | 25 | lcd.cls(); |
mark2r2 | 0:08a4d61cd84c | 26 | lcd.locate(0, 0); |
mark2r2 | 0:08a4d61cd84c | 27 | lcd.printf("cfg file Reading..."); |
mark2r2 | 0:08a4d61cd84c | 28 | lcd.locate(0, 1); |
mark2r2 | 0:08a4d61cd84c | 29 | lcd.printf("Setup: "); |
mark2r2 | 0:08a4d61cd84c | 30 | appconf_init(appconf); |
mark2r2 | 0:08a4d61cd84c | 31 | if (appconf_read(CONFIG_FILENAME, appconf) != 0) { |
mark2r2 | 0:08a4d61cd84c | 32 | lcd.printf("[NG]"); |
mark2r2 | 0:08a4d61cd84c | 33 | error("Failure to read a configuration file.\n"); |
mark2r2 | 0:08a4d61cd84c | 34 | } |
mark2r2 | 0:08a4d61cd84c | 35 | else{ |
mark2r2 | 0:08a4d61cd84c | 36 | lcd.printf("[OK]"); |
mark2r2 | 0:08a4d61cd84c | 37 | wait(1); |
mark2r2 | 0:08a4d61cd84c | 38 | } |
mark2r2 | 0:08a4d61cd84c | 39 | printf("pachube apikey %s\n",appconf->apikey); |
mark2r2 | 0:08a4d61cd84c | 40 | } |
mark2r2 | 0:08a4d61cd84c | 41 | |
mark2r2 | 0:08a4d61cd84c | 42 | int web_post(PachubeV2CSV *web, int feed_id, int stream_no, double value, HTTPClient *pClient) { |
mark2r2 | 0:08a4d61cd84c | 43 | char value_text[16]; |
mark2r2 | 0:08a4d61cd84c | 44 | convertDoubleToChar(value, value_text, sizeof(value_text)); |
mark2r2 | 0:08a4d61cd84c | 45 | char stream_no_text[8]; |
mark2r2 | 0:08a4d61cd84c | 46 | stream_no_text[0] = "0123456789"[stream_no]; |
mark2r2 | 0:08a4d61cd84c | 47 | stream_no_text[1] = '\0'; |
mark2r2 | 0:08a4d61cd84c | 48 | return web->updateDataStream(feed_id, stream_no_text, std::string(value_text), pClient); |
mark2r2 | 0:08a4d61cd84c | 49 | |
mark2r2 | 0:08a4d61cd84c | 50 | } |
mark2r2 | 0:08a4d61cd84c | 51 | |
mark2r2 | 0:08a4d61cd84c | 52 | void pachube_output(PachubeV2CSV* web, HTTPClient *pClient){ |
mark2r2 | 0:08a4d61cd84c | 53 | int feed_id = atoi(appconf.feedid); |
mark2r2 | 0:08a4d61cd84c | 54 | |
mark2r2 | 0:08a4d61cd84c | 55 | if (appconf.stream_nsv0 >= 0) { |
mark2r2 | 0:08a4d61cd84c | 56 | if (web_post(web, feed_id, appconf.stream_nsv0,(double)uSv*1000, pClient) != PACHUBE_CODE_OK) { |
mark2r2 | 0:08a4d61cd84c | 57 | lcd.printf("Checking Pachube status:x"); |
mark2r2 | 0:08a4d61cd84c | 58 | printf("upload failed -stream1 \n"); |
mark2r2 | 0:08a4d61cd84c | 59 | wait(3); |
mark2r2 | 0:08a4d61cd84c | 60 | } else { |
mark2r2 | 0:08a4d61cd84c | 61 | printf("upload -stream1 \r\n"); |
mark2r2 | 0:08a4d61cd84c | 62 | } |
mark2r2 | 0:08a4d61cd84c | 63 | } |
mark2r2 | 0:08a4d61cd84c | 64 | |
mark2r2 | 0:08a4d61cd84c | 65 | if (appconf.stream_cpm0 >= 0) { |
mark2r2 | 0:08a4d61cd84c | 66 | if (web_post(web, feed_id, appconf.stream_cpm0, (double)cpm, pClient) != PACHUBE_CODE_OK){ |
mark2r2 | 0:08a4d61cd84c | 67 | lcd.printf("Checking Pachube status:x"); |
mark2r2 | 0:08a4d61cd84c | 68 | printf("upload failed -stream2 \n"); |
mark2r2 | 0:08a4d61cd84c | 69 | wait(3); |
mark2r2 | 0:08a4d61cd84c | 70 | } else { |
mark2r2 | 0:08a4d61cd84c | 71 | printf("upload -stream2 \r\n"); |
mark2r2 | 0:08a4d61cd84c | 72 | } |
mark2r2 | 0:08a4d61cd84c | 73 | } |
mark2r2 | 0:08a4d61cd84c | 74 | |
mark2r2 | 0:08a4d61cd84c | 75 | if (appconf.stream_nsvlong0 >= 0) { |
mark2r2 | 0:08a4d61cd84c | 76 | if (web_post(web, feed_id, appconf.stream_nsvlong0, (double)long_uSv*1000, pClient) != PACHUBE_CODE_OK){ // 2011/08/23 |
mark2r2 | 0:08a4d61cd84c | 77 | lcd.printf("Checking Pachube status:x"); |
mark2r2 | 0:08a4d61cd84c | 78 | printf("upload failed -stream3 \n"); |
mark2r2 | 0:08a4d61cd84c | 79 | wait(3); |
mark2r2 | 0:08a4d61cd84c | 80 | } else { |
mark2r2 | 0:08a4d61cd84c | 81 | printf("upload -stream3 \r\n"); |
mark2r2 | 0:08a4d61cd84c | 82 | } |
mark2r2 | 0:08a4d61cd84c | 83 | } |
mark2r2 | 0:08a4d61cd84c | 84 | if (appconf.stream_cpmlong0 >= 0) { |
mark2r2 | 0:08a4d61cd84c | 85 | if (web_post(web, feed_id, appconf.stream_cpmlong0, (double)long_cpm, pClient) != PACHUBE_CODE_OK){ // 2011/08/23 |
mark2r2 | 0:08a4d61cd84c | 86 | lcd.printf("Checking Pachube status:x"); |
mark2r2 | 0:08a4d61cd84c | 87 | printf("upload failed -stream4 \n"); |
mark2r2 | 0:08a4d61cd84c | 88 | wait(3); |
mark2r2 | 0:08a4d61cd84c | 89 | } else { |
mark2r2 | 0:08a4d61cd84c | 90 | printf("upload -stream4 \r\n"); |
mark2r2 | 0:08a4d61cd84c | 91 | } |
mark2r2 | 0:08a4d61cd84c | 92 | } |
mark2r2 | 0:08a4d61cd84c | 93 | } |