Thermometer connected to internet
Dependencies: BME280 EthernetInterface FXOS8700Q HTTPClient-wolfSSL NTPClient NetworkAPI OAuth4Tw TSL2561_I2C eCompass_FPU_Lib mbed-rtos mbed wolfSSL
Fork of TCP_Server_Example by
Twitter.cpp
- Committer:
- zeus3110
- Date:
- 2015-09-27
- Revision:
- 12:12369ee344ab
File content as of revision 12:12369ee344ab:
#include <string.h> #include "mbed.h" #include "rtos.h" #include "EthernetInterface.h" #include "NTPClient.h" #include "OAuth4Tw.h" #include "Twitter.h" #include "OAuthKey.h" #include "Sensor.h" // NTP Client to correct RTC NTPClient ntp; // Twitter API URL const char url[] = "https://api.twitter.com/1.1/statuses/update.json"; char response_buffer[RESPONSE_BUFFER_SIZE]; HTTPText response(response_buffer, sizeof(response_buffer)); void TwitterClient(void const *arg) { int i; for(;;) { EnvTweet(); example_getUserData(); for(i=0; i<10; i++) { Thread::wait(60*1000); } } } void updateTime() { printf("Trying to update time...\n"); time_t ctTime; NTPResult result; while (1) { //result = ntp.setTime("pool.ntp.org"); //result = ntp.setTime("pool.ntp.org", NTP_DEFAULT_PORT, 2000); result = ntp.setTime("ntp.nict.jp"); if (result == NTP_OK) { time(&ctTime); printf("Time is set to (UTC): %s\n", ctime(&ctTime)); break; } switch (result) { case NTP_CONN: ///<Connection error printf("Connection error\n"); break; case NTP_TIMEOUT: ///<Connection timeout printf("Connection timeout\n"); break; case NTP_PRTCL: ///<Protocol error printf("Protocol error\n"); break; case NTP_DNS: ///<Could not resolve name printf("Could not resolve name\n"); break; default: printf("Error result=%d\n", result); break; } wait(5); } } void EnvTweet() { std::vector<std::string> post; post.reserve(3); struct tm tmptr; char tmstr[34]; char status[150]; char location_lat[24]; char location_long[24]; time_t ctTime; time(&ctTime); ctTime += 9 * 60 * 60; // Timezone: JST(+9h) localtime_r(&ctTime, &tmptr); // Tweets in Japanese strftime(tmstr, sizeof(tmstr), "%Y年%m月%d日 %H時%M分%S秒", &tmptr); snprintf(status, sizeof(status), "status=只今%sですよ~\n温度:%2.2f℃ 気圧:%04.2fhPa 湿度:%2.2f%% 照度:%5.2flx", tmstr, pSensor->getTemperature(), pSensor->getPressure(), pSensor->getHumidity(),pLumSensor->getLux()); post.push_back(status); // Option: add Location information // snprintf(location_lat, sizeof(location_lat), "lat=%f", 35.359577); // snprintf(location_long, sizeof(location_long), "long=%f", 138.731414); // post.push_back(location_lat); // post.push_back(location_long); HTTPResult result = oa4t.post(url, &post, &response); if (result == HTTP_OK) { printf("POST success.\n%s\n", response_buffer); } else { printf("POST error. (result = %d)\n", result); } } void example_getUserData() { const char url[] = "https://api.twitter.com/1.1/users/show.json" "?screen_name=twitter"; HTTPResult result = oa4t.get(url, &response); if (result == HTTP_OK) { printf("GET success.\n%s\n", response_buffer); } else { printf("GET error. (result = %d)\n", result); } }