test

Dependencies:   BME280 EthernetInterface HTTPClient-wolfSSL NTPClient OAuth4Tw TSL2561_I2C mbed-rtos mbed wolfSSL

Committer:
zeus3110
Date:
Sat Sep 05 13:49:28 2015 +0000
Revision:
0:14479f8183a0
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zeus3110 0:14479f8183a0 1 #include <string.h>
zeus3110 0:14479f8183a0 2 #include "mbed.h"
zeus3110 0:14479f8183a0 3 #include "EthernetInterface.h"
zeus3110 0:14479f8183a0 4 #include "NTPClient.h"
zeus3110 0:14479f8183a0 5 #include "OAuth4Tw.h"
zeus3110 0:14479f8183a0 6 #include "BME280.h"
zeus3110 0:14479f8183a0 7 #include "TSL2561_I2C.h"
zeus3110 0:14479f8183a0 8
zeus3110 0:14479f8183a0 9 Serial pc(USBTX, USBRX);
zeus3110 0:14479f8183a0 10 DigitalOut myled(LED1);
zeus3110 0:14479f8183a0 11 #ifndef USE_FIXEDIP
zeus3110 0:14479f8183a0 12 EthernetInterface eth;
zeus3110 0:14479f8183a0 13 #else
zeus3110 0:14479f8183a0 14 EthernetNetIf eth(
zeus3110 0:14479f8183a0 15 IpAddr(192,168,0,210), //IP Address
zeus3110 0:14479f8183a0 16 IpAddr(255,255,255,0), //Network Mask
zeus3110 0:14479f8183a0 17 IpAddr(192,168,0,1), //Gateway
zeus3110 0:14479f8183a0 18 IpAddr(192,168,0,1) //DNS
zeus3110 0:14479f8183a0 19 );
zeus3110 0:14479f8183a0 20 #endif
zeus3110 0:14479f8183a0 21
zeus3110 0:14479f8183a0 22 NTPClient ntp;
zeus3110 0:14479f8183a0 23 BME280 sensor(p9, p10);
zeus3110 0:14479f8183a0 24 TSL2561_I2C lum_sensor( p9, p10 );
zeus3110 0:14479f8183a0 25
zeus3110 0:14479f8183a0 26 OAuth4Tw oa4t("Your Consumer key", // Consumer key
zeus3110 0:14479f8183a0 27 "Your Consumer secret", // Consumer secret
zeus3110 0:14479f8183a0 28 "Your Access token", // Access token
zeus3110 0:14479f8183a0 29 "Your Access token secret"); // Access token secret
zeus3110 0:14479f8183a0 30
zeus3110 0:14479f8183a0 31 #if defined(TARGET_LPC1768)
zeus3110 0:14479f8183a0 32 #define RESPONSE_BUFFER_SIZE 512
zeus3110 0:14479f8183a0 33 #elif defined(TARGET_K64F) || defined(TARGET_LPC4088)
zeus3110 0:14479f8183a0 34 #define RESPONSE_BUFFER_SIZE 4096
zeus3110 0:14479f8183a0 35 #else
zeus3110 0:14479f8183a0 36 #error not tested platform.
zeus3110 0:14479f8183a0 37 #endif
zeus3110 0:14479f8183a0 38
zeus3110 0:14479f8183a0 39 char response_buffer[RESPONSE_BUFFER_SIZE];
zeus3110 0:14479f8183a0 40 HTTPText response(response_buffer, sizeof(response_buffer));
zeus3110 0:14479f8183a0 41
zeus3110 0:14479f8183a0 42 // prototype
zeus3110 0:14479f8183a0 43 void updateTime();
zeus3110 0:14479f8183a0 44 void EnvTweet();
zeus3110 0:14479f8183a0 45 void example_getUserData();
zeus3110 0:14479f8183a0 46
zeus3110 0:14479f8183a0 47 // Constant Value
zeus3110 0:14479f8183a0 48 const int TweetIntervalSec=600; // 600sec 10min
zeus3110 0:14479f8183a0 49
zeus3110 0:14479f8183a0 50 int main()
zeus3110 0:14479f8183a0 51 {
zeus3110 0:14479f8183a0 52 pc.baud(115200);
zeus3110 0:14479f8183a0 53
zeus3110 0:14479f8183a0 54 eth.init(); //Use DHCP
zeus3110 0:14479f8183a0 55 printf("Initialized, MAC: %s\n", eth.getMACAddress());
zeus3110 0:14479f8183a0 56
zeus3110 0:14479f8183a0 57 int ret;
zeus3110 0:14479f8183a0 58 while ((ret = eth.connect()) != 0) {
zeus3110 0:14479f8183a0 59 printf("Error eth.connect() - ret = %d\n", ret);
zeus3110 0:14479f8183a0 60 }
zeus3110 0:14479f8183a0 61
zeus3110 0:14479f8183a0 62 printf("Connected, IP: %s, MASK: %s, GW: %s\n",
zeus3110 0:14479f8183a0 63 eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway());
zeus3110 0:14479f8183a0 64
zeus3110 0:14479f8183a0 65 // requires accurate time, for OAuth Authorization.
zeus3110 0:14479f8183a0 66 updateTime();
zeus3110 0:14479f8183a0 67
zeus3110 0:14479f8183a0 68 while (1) {
zeus3110 0:14479f8183a0 69
zeus3110 0:14479f8183a0 70 EnvTweet();
zeus3110 0:14479f8183a0 71
zeus3110 0:14479f8183a0 72 example_getUserData();
zeus3110 0:14479f8183a0 73
zeus3110 0:14479f8183a0 74 // Wait 600 seconds for next time.
zeus3110 0:14479f8183a0 75 for (int t=0; t<TweetIntervalSec; t++) {
zeus3110 0:14479f8183a0 76 myled = 1;
zeus3110 0:14479f8183a0 77 wait(0.2);
zeus3110 0:14479f8183a0 78 myled = 0;
zeus3110 0:14479f8183a0 79 wait(0.8);
zeus3110 0:14479f8183a0 80 }
zeus3110 0:14479f8183a0 81
zeus3110 0:14479f8183a0 82 printf("\n");
zeus3110 0:14479f8183a0 83 }
zeus3110 0:14479f8183a0 84 }
zeus3110 0:14479f8183a0 85
zeus3110 0:14479f8183a0 86
zeus3110 0:14479f8183a0 87 void updateTime()
zeus3110 0:14479f8183a0 88 {
zeus3110 0:14479f8183a0 89 printf("Trying to update time...\n");
zeus3110 0:14479f8183a0 90
zeus3110 0:14479f8183a0 91 time_t ctTime;
zeus3110 0:14479f8183a0 92 NTPResult result;
zeus3110 0:14479f8183a0 93
zeus3110 0:14479f8183a0 94 while (1) {
zeus3110 0:14479f8183a0 95 result = ntp.setTime("pool.ntp.org");
zeus3110 0:14479f8183a0 96 //result = ntp.setTime("pool.ntp.org", NTP_DEFAULT_PORT, 2000);
zeus3110 0:14479f8183a0 97
zeus3110 0:14479f8183a0 98 if (result == NTP_OK) {
zeus3110 0:14479f8183a0 99 time(&ctTime);
zeus3110 0:14479f8183a0 100 printf("Time is set to (UTC): %s\n", ctime(&ctTime));
zeus3110 0:14479f8183a0 101 break;
zeus3110 0:14479f8183a0 102 }
zeus3110 0:14479f8183a0 103
zeus3110 0:14479f8183a0 104 switch (result) {
zeus3110 0:14479f8183a0 105 case NTP_CONN: ///<Connection error
zeus3110 0:14479f8183a0 106 printf("Connection error\n");
zeus3110 0:14479f8183a0 107 break;
zeus3110 0:14479f8183a0 108 case NTP_TIMEOUT: ///<Connection timeout
zeus3110 0:14479f8183a0 109 printf("Connection timeout\n");
zeus3110 0:14479f8183a0 110 break;
zeus3110 0:14479f8183a0 111 case NTP_PRTCL: ///<Protocol error
zeus3110 0:14479f8183a0 112 printf("Protocol error\n");
zeus3110 0:14479f8183a0 113 break;
zeus3110 0:14479f8183a0 114 case NTP_DNS: ///<Could not resolve name
zeus3110 0:14479f8183a0 115 printf("Could not resolve name\n");
zeus3110 0:14479f8183a0 116 break;
zeus3110 0:14479f8183a0 117 default:
zeus3110 0:14479f8183a0 118 printf("Error result=%d\n", result);
zeus3110 0:14479f8183a0 119 break;
zeus3110 0:14479f8183a0 120 }
zeus3110 0:14479f8183a0 121
zeus3110 0:14479f8183a0 122 wait(5);
zeus3110 0:14479f8183a0 123 }
zeus3110 0:14479f8183a0 124 }
zeus3110 0:14479f8183a0 125
zeus3110 0:14479f8183a0 126 void EnvTweet()
zeus3110 0:14479f8183a0 127 {
zeus3110 0:14479f8183a0 128 const char url[] = "https://api.twitter.com/1.1/statuses/update.json"
zeus3110 0:14479f8183a0 129 "?status=%s";
zeus3110 0:14479f8183a0 130 char url2[128];
zeus3110 0:14479f8183a0 131 char status[90];
zeus3110 0:14479f8183a0 132
zeus3110 0:14479f8183a0 133 time_t ctTime;
zeus3110 0:14479f8183a0 134 time(&ctTime);
zeus3110 0:14479f8183a0 135
zeus3110 0:14479f8183a0 136 sprintf(status,"温度:%2.2f℃ 気圧:%04.2fhPa 湿度:%2.2f%% 照度:%4.2flx\n", sensor.getTemperature(), sensor.getPressure(), sensor.getHumidity(),lum_sensor.getLux());
zeus3110 0:14479f8183a0 137
zeus3110 0:14479f8183a0 138 snprintf(url2, sizeof(url2), url, status);
zeus3110 0:14479f8183a0 139
zeus3110 0:14479f8183a0 140 HTTPResult result = oa4t.post(url2, &response);
zeus3110 0:14479f8183a0 141
zeus3110 0:14479f8183a0 142 if (result == HTTP_OK) {
zeus3110 0:14479f8183a0 143 printf("POST success.\n%s\n", response_buffer);
zeus3110 0:14479f8183a0 144 } else {
zeus3110 0:14479f8183a0 145 printf("POST error. (result = %d)\n", result);
zeus3110 0:14479f8183a0 146 }
zeus3110 0:14479f8183a0 147 }
zeus3110 0:14479f8183a0 148
zeus3110 0:14479f8183a0 149 void example_getUserData()
zeus3110 0:14479f8183a0 150 {
zeus3110 0:14479f8183a0 151 const char url[] = "https://api.twitter.com/1.1/users/show.json"
zeus3110 0:14479f8183a0 152 "?screen_name=twitter";
zeus3110 0:14479f8183a0 153
zeus3110 0:14479f8183a0 154 HTTPResult result = oa4t.get(url, &response);
zeus3110 0:14479f8183a0 155
zeus3110 0:14479f8183a0 156 if (result == HTTP_OK) {
zeus3110 0:14479f8183a0 157 printf("GET success.\n%s\n", response_buffer);
zeus3110 0:14479f8183a0 158 } else {
zeus3110 0:14479f8183a0 159 printf("GET error. (result = %d)\n", result);
zeus3110 0:14479f8183a0 160 }
zeus3110 0:14479f8183a0 161 }