test
Dependencies: BME280 EthernetInterface HTTPClient-wolfSSL NTPClient OAuth4Tw TSL2561_I2C mbed-rtos mbed wolfSSL
Diff: main.cpp
- Revision:
- 0:14479f8183a0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Sep 05 13:49:28 2015 +0000 @@ -0,0 +1,161 @@ +#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); + } +} \ No newline at end of file