test
Dependencies: BME280 EthernetInterface HTTPClient-wolfSSL NTPClient OAuth4Tw TSL2561_I2C mbed-rtos mbed wolfSSL
main.cpp
- Committer:
- zeus3110
- Date:
- 2015-09-05
- Revision:
- 0:14479f8183a0
File content as of revision 0:14479f8183a0:
#include <string.h> #include "mbed.h" #include "EthernetInterface.h" #include "NTPClient.h" #include "OAuth4Tw.h" #include "BME280.h" #include "TSL2561_I2C.h" Serial pc(USBTX, USBRX); DigitalOut myled(LED1); #ifndef USE_FIXEDIP EthernetInterface eth; #else EthernetNetIf eth( IpAddr(192,168,0,210), //IP Address IpAddr(255,255,255,0), //Network Mask IpAddr(192,168,0,1), //Gateway IpAddr(192,168,0,1) //DNS ); #endif NTPClient ntp; BME280 sensor(p9, p10); TSL2561_I2C lum_sensor( p9, p10 ); OAuth4Tw oa4t("Your Consumer key", // Consumer key "Your Consumer secret", // Consumer secret "Your Access token", // Access token "Your Access token secret"); // Access token secret #if defined(TARGET_LPC1768) #define RESPONSE_BUFFER_SIZE 512 #elif defined(TARGET_K64F) || defined(TARGET_LPC4088) #define RESPONSE_BUFFER_SIZE 4096 #else #error not tested platform. #endif char response_buffer[RESPONSE_BUFFER_SIZE]; HTTPText response(response_buffer, sizeof(response_buffer)); // prototype void updateTime(); void EnvTweet(); void example_getUserData(); // Constant Value const int TweetIntervalSec=600; // 600sec 10min int main() { pc.baud(115200); eth.init(); //Use DHCP printf("Initialized, MAC: %s\n", eth.getMACAddress()); int ret; while ((ret = eth.connect()) != 0) { printf("Error eth.connect() - ret = %d\n", ret); } printf("Connected, IP: %s, MASK: %s, GW: %s\n", eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway()); // requires accurate time, for OAuth Authorization. updateTime(); while (1) { EnvTweet(); example_getUserData(); // Wait 600 seconds for next time. for (int t=0; t<TweetIntervalSec; t++) { myled = 1; wait(0.2); myled = 0; wait(0.8); } printf("\n"); } } 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); 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() { const char url[] = "https://api.twitter.com/1.1/statuses/update.json" "?status=%s"; char url2[128]; char status[90]; time_t ctTime; time(&ctTime); sprintf(status,"温度:%2.2f℃ 気圧:%04.2fhPa 湿度:%2.2f%% 照度:%4.2flx\n", sensor.getTemperature(), sensor.getPressure(), sensor.getHumidity(),lum_sensor.getLux()); snprintf(url2, sizeof(url2), url, status); HTTPResult result = oa4t.post(url2, &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); } }