post sensor data to esp yun

Dependencies:   WIZnetInterface mbed

Fork of espyun by root root

Committer:
846354866
Date:
Fri Nov 04 12:09:56 2016 +0000
Revision:
4:e1d2c6f94c69
Parent:
2:00baa8aaaaf1
Child:
6:bc4901a948b1
sensor iot for espressif(no chinese) version0.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jehoon 0:af541535ef54 1 #include "mbed.h"
jehoon 0:af541535ef54 2 #include "EthernetInterface.h"
jh_ndm 1:3550659bd872 3 #include "cJSON.h"
jehoon 0:af541535ef54 4
846354866 4:e1d2c6f94c69 5 DigitalInOut myIOD10(D10);
846354866 4:e1d2c6f94c69 6 DigitalOut myOutD12(D12);
846354866 4:e1d2c6f94c69 7 AnalogIn myInA1(A1);
jh_ndm 1:3550659bd872 8 int socketPort = 8000;
jh_ndm 1:3550659bd872 9 int httpPort = 80;
jh_ndm 1:3550659bd872 10
jh_ndm 1:3550659bd872 11 Serial pc(PA_13,PA_14);
jh_ndm 1:3550659bd872 12
jh_ndm 1:3550659bd872 13 char path[]="/v1/datastreams/test/datapoint/";
jh_ndm 1:3550659bd872 14
jh_ndm 1:3550659bd872 15 int MallocSize = 800*sizeof(char);
jh_ndm 1:3550659bd872 16 bool socket_GET(TCPSocketConnection &conn);
jh_ndm 1:3550659bd872 17 bool http_GET(TCPSocketConnection &conn);
846354866 4:e1d2c6f94c69 18 bool http_POST(TCPSocketConnection &conn,int vall);
jh_ndm 1:3550659bd872 19 bool socket_POST(TCPSocketConnection &conn,int vall);
jh_ndm 1:3550659bd872 20 bool closeConnect(TCPSocketConnection &conn);
846354866 4:e1d2c6f94c69 21 void receive_dht11();
846354866 4:e1d2c6f94c69 22 unsigned char receive_byte();
846354866 4:e1d2c6f94c69 23 Timeout receive_dht11Timeout;
846354866 4:e1d2c6f94c69 24
846354866 4:e1d2c6f94c69 25 void delay(unsigned char ms)
846354866 4:e1d2c6f94c69 26 {
846354866 4:e1d2c6f94c69 27 unsigned int y;
846354866 4:e1d2c6f94c69 28 while(ms--)
846354866 4:e1d2c6f94c69 29 for(y=1920; y>0; y--);
846354866 4:e1d2c6f94c69 30 }
846354866 4:e1d2c6f94c69 31
846354866 4:e1d2c6f94c69 32 void Delay_us(unsigned char us)
846354866 4:e1d2c6f94c69 33 {
846354866 4:e1d2c6f94c69 34 unsigned char y;
846354866 4:e1d2c6f94c69 35 while(us--)
846354866 4:e1d2c6f94c69 36 for(y=2; y>0; y--);
846354866 4:e1d2c6f94c69 37 }
jh_ndm 1:3550659bd872 38
jh_ndm 1:3550659bd872 39 float val;
jh_ndm 1:3550659bd872 40 int mathtest;
jh_ndm 1:3550659bd872 41 bool out=false;
846354866 4:e1d2c6f94c69 42 unsigned char RH,RL,TH,TL;
846354866 4:e1d2c6f94c69 43 unsigned char data_byte;
846354866 4:e1d2c6f94c69 44 unsigned int U8FLAG;
846354866 4:e1d2c6f94c69 45 static unsigned char num = 4;
846354866 4:e1d2c6f94c69 46 const char receive_module[4][5] = {"Led", "Gas", "Hum", "Temp", };
jh_ndm 1:3550659bd872 47
jh_ndm 1:3550659bd872 48 int main() {
jehoon 0:af541535ef54 49 int phy_link;
jh_ndm 1:3550659bd872 50 pc.printf("Wait a second...\r\n");
jh_ndm 1:3550659bd872 51 uint8_t mac_addr[6] = {0x78, 0x08, 0xDC, 0x1c, 0xa8, 0x95};
846354866 4:e1d2c6f94c69 52 receive_dht11Timeout.attach(&receive_dht11,0.2f);
jehoon 0:af541535ef54 53
jehoon 0:af541535ef54 54 EthernetInterface eth;
jehoon 0:af541535ef54 55 eth.init(mac_addr); //Use DHCP
jehoon 0:af541535ef54 56 eth.connect();
jh_ndm 1:3550659bd872 57 pc.printf("start IP Address is %s\r\n", eth.getIPAddress());
jh_ndm 1:3550659bd872 58 /*
jh_ndm 1:3550659bd872 59 do{
jh_ndm 1:3550659bd872 60 phy_link = eth.ethernet_link();
jh_ndm 1:3550659bd872 61 pc.printf("...");
jh_ndm 1:3550659bd872 62 wait(2);
jh_ndm 1:3550659bd872 63 }while(!phy_link);
jh_ndm 1:3550659bd872 64 printf("\r\n");
jh_ndm 1:3550659bd872 65 */
jh_ndm 1:3550659bd872 66 pc.printf("IP Address is %s\r\n", eth.getIPAddress());
jh_ndm 1:3550659bd872 67
jh_ndm 1:3550659bd872 68 TCPSocketConnection conn;
jehoon 0:af541535ef54 69
jh_ndm 1:3550659bd872 70 while(true)
jh_ndm 1:3550659bd872 71 {
jh_ndm 1:3550659bd872 72 wait(1);
846354866 4:e1d2c6f94c69 73 int temp = TH;
846354866 4:e1d2c6f94c69 74 int hum = RH;
846354866 4:e1d2c6f94c69 75 int gas = myInA1.read();
846354866 4:e1d2c6f94c69 76 int led = myOutD12.read();
846354866 4:e1d2c6f94c69 77 static int val;
846354866 4:e1d2c6f94c69 78 if(num)
846354866 4:e1d2c6f94c69 79 {
846354866 4:e1d2c6f94c69 80 if (num == 4)
846354866 4:e1d2c6f94c69 81 val = TH;
846354866 4:e1d2c6f94c69 82 else if (num == 3)
846354866 4:e1d2c6f94c69 83 val = RH;
846354866 4:e1d2c6f94c69 84 else if (num == 2)
846354866 4:e1d2c6f94c69 85 val = gas;
846354866 4:e1d2c6f94c69 86 else if (num == 1)
846354866 4:e1d2c6f94c69 87 val = led;
846354866 4:e1d2c6f94c69 88 }
846354866 4:e1d2c6f94c69 89 //ceil(val);//math.h
846354866 4:e1d2c6f94c69 90 pc.printf("send_data=%d,n=%d\r\n",val,mathtest);
jh_ndm 1:3550659bd872 91 pc.printf("start http_post\r\n");
846354866 4:e1d2c6f94c69 92 if(http_POST(conn, val))
jh_ndm 1:3550659bd872 93 {
jh_ndm 1:3550659bd872 94 if(!conn.close()){//短连接,断开一次连接一次
jh_ndm 1:3550659bd872 95 pc.printf("conn.close OK\r\n");
jh_ndm 1:3550659bd872 96 }else{
jh_ndm 1:3550659bd872 97 pc.printf("conn.close ERR\r\n");
jh_ndm 1:3550659bd872 98 break;
jh_ndm 1:3550659bd872 99 }
jh_ndm 1:3550659bd872 100 }else{
jh_ndm 1:3550659bd872 101 if(out)break;
jh_ndm 1:3550659bd872 102 pc.printf("connect close err!!!to do something\r\n");
jh_ndm 1:3550659bd872 103
jh_ndm 1:3550659bd872 104 }
jh_ndm 1:3550659bd872 105
846354866 4:e1d2c6f94c69 106 val = 0.0;
846354866 4:e1d2c6f94c69 107 mathtest = 0;
jh_ndm 1:3550659bd872 108
jh_ndm 1:3550659bd872 109 if(out)break;
jh_ndm 1:3550659bd872 110 }
jh_ndm 1:3550659bd872 111
jh_ndm 1:3550659bd872 112 eth.disconnect();
jh_ndm 1:3550659bd872 113 pc.printf("out the program!\r\n");
jh_ndm 1:3550659bd872 114 return 0;
jh_ndm 1:3550659bd872 115 }
jh_ndm 1:3550659bd872 116
846354866 4:e1d2c6f94c69 117 /*http POST*/
846354866 4:e1d2c6f94c69 118 bool http_POST(TCPSocketConnection &conn, int val)
846354866 4:e1d2c6f94c69 119 {
846354866 4:e1d2c6f94c69 120 pc.printf("1111\r\n");
846354866 4:e1d2c6f94c69 121 //wait(0.5);
846354866 4:e1d2c6f94c69 122 if(conn.is_connected()){
846354866 4:e1d2c6f94c69 123 pc.printf("connect is already ok!\r\n");
846354866 4:e1d2c6f94c69 124 }else{
846354866 4:e1d2c6f94c69 125 if(!conn.connect("iot.espressif.cn", httpPort)) //80 for http,8000 for socket
846354866 4:e1d2c6f94c69 126 pc.printf("connect OK!\r\n");
846354866 4:e1d2c6f94c69 127 else{
846354866 4:e1d2c6f94c69 128 pc.printf("connct ERR!\r\n");
846354866 4:e1d2c6f94c69 129 out = true;
846354866 4:e1d2c6f94c69 130 return false;
846354866 4:e1d2c6f94c69 131 }
846354866 4:e1d2c6f94c69 132 }
846354866 4:e1d2c6f94c69 133 pc.printf("2222\r\n");
846354866 4:e1d2c6f94c69 134 cJSON* http_post=NULL;
846354866 4:e1d2c6f94c69 135 http_post = cJSON_CreateObject();
846354866 4:e1d2c6f94c69 136 if(NULL == http_post)
846354866 4:e1d2c6f94c69 137 {
846354866 4:e1d2c6f94c69 138 pc.printf("OUT4\r\n");
846354866 4:e1d2c6f94c69 139 out = true;
846354866 4:e1d2c6f94c69 140 return false;
846354866 4:e1d2c6f94c69 141 }
846354866 4:e1d2c6f94c69 142 pc.printf("3333\r\n");
846354866 4:e1d2c6f94c69 143 cJSON* http_post_json=NULL;
846354866 4:e1d2c6f94c69 144 http_post_json = cJSON_CreateObject();
846354866 4:e1d2c6f94c69 145 if(NULL == http_post_json)
846354866 4:e1d2c6f94c69 146 {
846354866 4:e1d2c6f94c69 147 cJSON_Delete(http_post);
846354866 4:e1d2c6f94c69 148 pc.printf("OUT5\r\n");
846354866 4:e1d2c6f94c69 149 out = true;
846354866 4:e1d2c6f94c69 150 return false;
846354866 4:e1d2c6f94c69 151 }
846354866 4:e1d2c6f94c69 152 cJSON_AddNumberToObject(http_post_json, "x", val);
846354866 4:e1d2c6f94c69 153 //cJSON_AddNumberToObject(http_post_json, "y", 2);
846354866 4:e1d2c6f94c69 154 //cJSON_AddNumberToObject(http_post_json, "z", 2);
846354866 4:e1d2c6f94c69 155 cJSON_AddItemToObject(http_post, "datapoint", http_post_json);
846354866 4:e1d2c6f94c69 156 char* pJSON_http_post = cJSON_PrintUnformatted(http_post);
846354866 4:e1d2c6f94c69 157 pc.printf("4444\r\n");
846354866 4:e1d2c6f94c69 158 if(NULL == pJSON_http_post)
846354866 4:e1d2c6f94c69 159 {
846354866 4:e1d2c6f94c69 160 cJSON_Delete(http_post);
846354866 4:e1d2c6f94c69 161 pc.printf("OUT6\r\n");
846354866 4:e1d2c6f94c69 162 out = true;
846354866 4:e1d2c6f94c69 163 return false;
846354866 4:e1d2c6f94c69 164 }
846354866 4:e1d2c6f94c69 165
846354866 4:e1d2c6f94c69 166 //Pay attention to out of memory
846354866 4:e1d2c6f94c69 167 //char http_POST_cmd[500] = "POST /v1/datastreams/jhtest/datapoint/ HTTP/1.1\r\nUser-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\n"\
846354866 4:e1d2c6f94c69 168 // "Host:iot.espressif.cn\r\nAccept: */*\r\nAuthorization: token ebe1671e9d9f42a5231d017ec550552b9bae2cdf\r\n"\
846354866 4:e1d2c6f94c69 169 // "Content-Length: 33\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n";
846354866 4:e1d2c6f94c69 170 char http_POST_cmd[500];// = "POST /v1/datastreams/test/datapoint/ HTTP/1.1\r\nUser-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\n"\
846354866 4:e1d2c6f94c69 171 // "Host:iot.espressif.cn\r\nAccept: */*\r\nAuthorization: token b1e92cf17fe4482647924941949ab2b07ffab548\r\n"\
846354866 4:e1d2c6f94c69 172 // "Content-Length: ";
846354866 4:e1d2c6f94c69 173 sprintf(http_POST_cmd,"POST /v1/datastreams/%s/datapoint/ HTTP/1.1\r\nUser-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\n"\
846354866 4:e1d2c6f94c69 174 "Host:iot.espressif.cn\r\nAccept: */*\r\nAuthorization: token b1e92cf17fe4482647924941949ab2b07ffab548\r\n"\
846354866 4:e1d2c6f94c69 175 "Content-Length: ", receive_module[num-1]);
846354866 4:e1d2c6f94c69 176 num--;
846354866 4:e1d2c6f94c69 177 if (num == 0)
846354866 4:e1d2c6f94c69 178 num = 4;
846354866 4:e1d2c6f94c69 179
846354866 4:e1d2c6f94c69 180 char len[2];
846354866 4:e1d2c6f94c69 181 len[0]=strlen(pJSON_http_post)/10%10+48;
846354866 4:e1d2c6f94c69 182 len[1]=strlen(pJSON_http_post)%10+48;
846354866 4:e1d2c6f94c69 183 strcat(http_POST_cmd,len);
846354866 4:e1d2c6f94c69 184 strcat(http_POST_cmd,"\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n");
846354866 4:e1d2c6f94c69 185
846354866 4:e1d2c6f94c69 186 strcat(http_POST_cmd,pJSON_http_post);
846354866 4:e1d2c6f94c69 187 conn.send_all(http_POST_cmd, strlen(http_POST_cmd));//http_cmd for http,pJSON for socket,should be three changes
846354866 4:e1d2c6f94c69 188 pc.printf("%s\r\n",http_POST_cmd);
846354866 4:e1d2c6f94c69 189 pc.printf("5555\r\n");
846354866 4:e1d2c6f94c69 190 char *buffer = NULL;
846354866 4:e1d2c6f94c69 191 buffer = (char *)malloc(MallocSize);
846354866 4:e1d2c6f94c69 192 if(!buffer)pc.printf("malloc buffer err\r\n");
846354866 4:e1d2c6f94c69 193
846354866 4:e1d2c6f94c69 194 int ret;
846354866 4:e1d2c6f94c69 195 pc.printf("6666\r\n");
846354866 4:e1d2c6f94c69 196 while (true) {
846354866 4:e1d2c6f94c69 197 wait(1);
846354866 4:e1d2c6f94c69 198 ret = conn.receive(buffer, MallocSize-1);
846354866 4:e1d2c6f94c69 199 pc.printf("ret = %d\r\n",ret);
846354866 4:e1d2c6f94c69 200 if (ret <= 0) {
846354866 4:e1d2c6f94c69 201 break;
846354866 4:e1d2c6f94c69 202 }
846354866 4:e1d2c6f94c69 203 buffer[ret] = '\0';
846354866 4:e1d2c6f94c69 204 pc.printf("Received %d chars from server: %s\n", ret, buffer);
846354866 4:e1d2c6f94c69 205 }
846354866 4:e1d2c6f94c69 206 pc.printf("http_POST OUT\r\n");
846354866 4:e1d2c6f94c69 207
846354866 4:e1d2c6f94c69 208 free(pJSON_http_post);
846354866 4:e1d2c6f94c69 209 free(buffer);
846354866 4:e1d2c6f94c69 210 cJSON_Delete(http_post);
846354866 4:e1d2c6f94c69 211 pc.printf("7777\r\n");
846354866 4:e1d2c6f94c69 212 return true;
846354866 4:e1d2c6f94c69 213 }
846354866 4:e1d2c6f94c69 214
jh_ndm 1:3550659bd872 215 /*socket GET*/
jh_ndm 1:3550659bd872 216 bool socket_GET(TCPSocketConnection &conn)
jh_ndm 1:3550659bd872 217 {
jh_ndm 1:3550659bd872 218 if(conn.is_connected()){
jh_ndm 1:3550659bd872 219 pc.printf("connect is already ok!\r\n");
jh_ndm 1:3550659bd872 220 }else{
jh_ndm 1:3550659bd872 221 if(!conn.connect("iot.espressif.cn", socketPort)) //80 for http,8000 for socket,处理超时,拔掉网线后,卡在conn.connect
jh_ndm 1:3550659bd872 222 pc.printf("connect OK!\r\n");
jh_ndm 1:3550659bd872 223 else{
jh_ndm 1:3550659bd872 224 pc.printf("connct ERR!\r\n");
jh_ndm 1:3550659bd872 225 out = true;
jh_ndm 1:3550659bd872 226 return false;
jh_ndm 1:3550659bd872 227 }
jh_ndm 1:3550659bd872 228 }
jh_ndm 1:3550659bd872 229
jh_ndm 1:3550659bd872 230 cJSON * pJsonRoot = NULL;
jh_ndm 1:3550659bd872 231 pJsonRoot = cJSON_CreateObject();
jh_ndm 1:3550659bd872 232 if(NULL == pJsonRoot)
jh_ndm 1:3550659bd872 233 {
jh_ndm 1:3550659bd872 234 pc.printf("socket_GET OUT1\r\n");
jh_ndm 1:3550659bd872 235 out = true;
jh_ndm 1:3550659bd872 236 return false;
jh_ndm 1:3550659bd872 237 }
jh_ndm 1:3550659bd872 238
jh_ndm 1:3550659bd872 239 cJSON * pSubJson = NULL;
jh_ndm 1:3550659bd872 240 pSubJson = cJSON_CreateObject();
jh_ndm 1:3550659bd872 241 if(NULL == pSubJson)
jh_ndm 1:3550659bd872 242 {
jh_ndm 1:3550659bd872 243 cJSON_Delete(pJsonRoot);
jh_ndm 1:3550659bd872 244 pc.printf("socket_GET OUT2\r\n");
jh_ndm 1:3550659bd872 245 out = true;
jh_ndm 1:3550659bd872 246 return false;
jh_ndm 1:3550659bd872 247 }
jh_ndm 1:3550659bd872 248
jh_ndm 1:3550659bd872 249 cJSON_AddStringToObject(pJsonRoot, "path", "/v1/datastreams/test/datapoint/");
jh_ndm 1:3550659bd872 250 cJSON_AddStringToObject(pSubJson, "Authorization", "token 48661aa81484f501362ed5ef4cc85e67eb2a3e3d");
jh_ndm 1:3550659bd872 251 cJSON_AddItemToObject(pJsonRoot, "meta", pSubJson);
jh_ndm 1:3550659bd872 252 cJSON_AddStringToObject(pJsonRoot, "method", "GET");
jh_ndm 1:3550659bd872 253
jh_ndm 1:3550659bd872 254 char* pJSON = cJSON_PrintUnformatted(pJsonRoot);
jh_ndm 1:3550659bd872 255 strcat(pJSON,"\n");//socket at the end should have '\n',use wireshark
jh_ndm 1:3550659bd872 256
jh_ndm 1:3550659bd872 257 if(NULL == pJSON)
jh_ndm 1:3550659bd872 258 {
jh_ndm 1:3550659bd872 259 cJSON_Delete(pJsonRoot);
jh_ndm 1:3550659bd872 260 pc.printf("socket_GET OUT3\r\n");
jh_ndm 1:3550659bd872 261 out = true;
jh_ndm 1:3550659bd872 262 return false;
jh_ndm 1:3550659bd872 263 }
jh_ndm 1:3550659bd872 264
jh_ndm 1:3550659bd872 265 conn.send_all(pJSON, strlen(pJSON));//http_cmd for http,pJSON for socket,should be three changes
jh_ndm 1:3550659bd872 266 pc.printf("%s\r\n",pJSON);
jh_ndm 1:3550659bd872 267
jh_ndm 1:3550659bd872 268 char *buffer = NULL;
jh_ndm 1:3550659bd872 269 buffer = (char *)malloc(MallocSize);
jh_ndm 1:3550659bd872 270 if(!buffer)pc.printf("malloc buffer err\r\n");
jh_ndm 1:3550659bd872 271 int ret;
jh_ndm 1:3550659bd872 272
jh_ndm 1:3550659bd872 273 while (true) {
jh_ndm 1:3550659bd872 274 wait(1);
jh_ndm 1:3550659bd872 275 ret = conn.receive(buffer, MallocSize-1);
jh_ndm 1:3550659bd872 276 pc.printf("ret = %d\r\n",ret);
jh_ndm 1:3550659bd872 277 if (ret <= 0) {
jh_ndm 1:3550659bd872 278 break;
jh_ndm 1:3550659bd872 279 }
jh_ndm 1:3550659bd872 280 buffer[ret] = '\0';
jh_ndm 1:3550659bd872 281 pc.printf("Received %d chars from server: %s\n", ret, buffer);
jh_ndm 1:3550659bd872 282 }
jh_ndm 1:3550659bd872 283 pc.printf("socket_GET OUT\r\n");
jh_ndm 1:3550659bd872 284
jh_ndm 1:3550659bd872 285 free(pJSON);//for socket
jh_ndm 1:3550659bd872 286 cJSON_Delete(pJsonRoot);//for socket
jh_ndm 1:3550659bd872 287 free(buffer);
jh_ndm 1:3550659bd872 288 return true;
jh_ndm 1:3550659bd872 289 }
jh_ndm 1:3550659bd872 290
jh_ndm 1:3550659bd872 291 /*http_GET*/
jh_ndm 1:3550659bd872 292 bool http_GET(TCPSocketConnection &conn)
jh_ndm 1:3550659bd872 293 {
jh_ndm 1:3550659bd872 294 if(conn.is_connected()){
jh_ndm 1:3550659bd872 295 pc.printf("connect is already ok!\r\n");
jh_ndm 1:3550659bd872 296 }else{
jh_ndm 1:3550659bd872 297 if(!conn.connect("iot.espressif.cn", httpPort)) //80 for http,8000 for socket
jh_ndm 1:3550659bd872 298 pc.printf("connect OK!\r\n");
jh_ndm 1:3550659bd872 299 else{
jh_ndm 1:3550659bd872 300 pc.printf("connct ERR!\r\n");
jh_ndm 1:3550659bd872 301 out = true;
jh_ndm 1:3550659bd872 302 return false;
jh_ndm 1:3550659bd872 303 }
jh_ndm 1:3550659bd872 304 }
jh_ndm 1:3550659bd872 305
846354866 4:e1d2c6f94c69 306 char http_cmd[] = "GET /v1/datastreams/test/datapoint/ HTTP/1.1\r\nUser-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3\r\n"\
jh_ndm 1:3550659bd872 307 "Host:iot.espressif.cn\r\nAccept: */*\r\nAuthorization: token ebe1671e9d9f42a5231d017ec550552b9bae2cdf\r\n\r\n";
jh_ndm 1:3550659bd872 308
jh_ndm 1:3550659bd872 309 conn.send_all(http_cmd, strlen(http_cmd));//http_cmd for http,pJSON for socket,should be three changes
jh_ndm 1:3550659bd872 310 pc.printf("%s\r\n",http_cmd);
jh_ndm 1:3550659bd872 311
jh_ndm 1:3550659bd872 312 //char *buffer = NULL;
jh_ndm 1:3550659bd872 313 //buffer = (char *)malloc(MallocSize);
jh_ndm 1:3550659bd872 314 //if(!buffer)pc.printf("malloc buffer err\r\n");
jh_ndm 1:3550659bd872 315 char buffer[500];
jh_ndm 1:3550659bd872 316 int ret;
jh_ndm 1:3550659bd872 317
jh_ndm 1:3550659bd872 318 while (true) {
jh_ndm 1:3550659bd872 319 wait(1);
jh_ndm 1:3550659bd872 320 ret = conn.receive(buffer, 500-1);
jh_ndm 1:3550659bd872 321 pc.printf("ret = %d\r\n",ret);
jh_ndm 1:3550659bd872 322 if (ret <= 0) {
jh_ndm 1:3550659bd872 323 break;
jh_ndm 1:3550659bd872 324 }
jh_ndm 1:3550659bd872 325 buffer[ret] = '\0';
jh_ndm 1:3550659bd872 326 pc.printf("Received %d chars from server: %s\n", ret, buffer);
jh_ndm 1:3550659bd872 327 }
jh_ndm 1:3550659bd872 328 pc.printf("http_GET OUT\r\n");
846354866 4:e1d2c6f94c69 329 /* ///conn.close
jh_ndm 1:3550659bd872 330 if(conn.close()){
jh_ndm 1:3550659bd872 331 pc.printf("conn.close OK\r\n");
jh_ndm 1:3550659bd872 332 }else{
jh_ndm 1:3550659bd872 333 pc.printf("conn.close ERR\r\n");
jh_ndm 1:3550659bd872 334 }
jh_ndm 1:3550659bd872 335 */
jh_ndm 1:3550659bd872 336 //free(buffer);
jh_ndm 1:3550659bd872 337 return true;
jh_ndm 1:3550659bd872 338 }
jh_ndm 1:3550659bd872 339
jh_ndm 1:3550659bd872 340 /*socket POST*/
jh_ndm 1:3550659bd872 341 bool socket_POST(TCPSocketConnection &conn,int vall)
jh_ndm 1:3550659bd872 342 {
jh_ndm 1:3550659bd872 343 if(conn.is_connected()){
jh_ndm 1:3550659bd872 344 pc.printf("connect is already ok!\r\n");
jh_ndm 1:3550659bd872 345 }else{
jh_ndm 1:3550659bd872 346 if(!conn.connect("iot.espressif.cn", socketPort)) //80 for http,8000 for socket
jh_ndm 1:3550659bd872 347 pc.printf("connect OK!\r\n");
jh_ndm 1:3550659bd872 348 else{
jh_ndm 1:3550659bd872 349 pc.printf("connct ERR!\r\n");
jh_ndm 1:3550659bd872 350 out = true;
jh_ndm 1:3550659bd872 351 return false;
jh_ndm 1:3550659bd872 352 }
jh_ndm 1:3550659bd872 353 }
jh_ndm 1:3550659bd872 354 cJSON* socket_post=NULL;
jh_ndm 1:3550659bd872 355 socket_post = cJSON_CreateObject();
jh_ndm 1:3550659bd872 356 if(NULL == socket_post)
jh_ndm 1:3550659bd872 357 {
jh_ndm 1:3550659bd872 358 pc.printf("OUT4\r\n");
jh_ndm 1:3550659bd872 359 out = true;
jh_ndm 1:3550659bd872 360 return false;
jh_ndm 1:3550659bd872 361 }
jh_ndm 1:3550659bd872 362
jh_ndm 1:3550659bd872 363
jh_ndm 1:3550659bd872 364 cJSON_AddStringToObject(socket_post, "path", path);
jh_ndm 1:3550659bd872 365 cJSON_AddStringToObject(socket_post, "method", "POST");
jh_ndm 1:3550659bd872 366
jh_ndm 1:3550659bd872 367 cJSON* sock_post_token=NULL;
jh_ndm 1:3550659bd872 368 sock_post_token = cJSON_CreateObject();
jh_ndm 1:3550659bd872 369 if(NULL == sock_post_token)
jh_ndm 1:3550659bd872 370 {
jh_ndm 1:3550659bd872 371 cJSON_Delete(socket_post);
jh_ndm 1:3550659bd872 372 pc.printf("OUT5\r\n");
jh_ndm 1:3550659bd872 373 out = true;
jh_ndm 1:3550659bd872 374 return false;
jh_ndm 1:3550659bd872 375 }
jh_ndm 1:3550659bd872 376 cJSON_AddStringToObject(sock_post_token, "Authorization", "token 514cc9c3aa07a4a56246cb9259c8264fd2ae56f6");
jh_ndm 1:3550659bd872 377 cJSON_AddItemToObject(socket_post, "meta", sock_post_token);
jehoon 0:af541535ef54 378
jh_ndm 1:3550659bd872 379 cJSON* sock_post_xyz=NULL;
jh_ndm 1:3550659bd872 380 sock_post_xyz = cJSON_CreateObject();
jh_ndm 1:3550659bd872 381 if(NULL == sock_post_xyz)
jh_ndm 1:3550659bd872 382 {
jh_ndm 1:3550659bd872 383 cJSON_Delete(socket_post);
jh_ndm 1:3550659bd872 384 pc.printf("OUT6\r\n");
jh_ndm 1:3550659bd872 385 out = true;
jh_ndm 1:3550659bd872 386 return false;
jh_ndm 1:3550659bd872 387 }
jh_ndm 1:3550659bd872 388 cJSON_AddNumberToObject(sock_post_xyz, "x", vall);
jh_ndm 1:3550659bd872 389 //cJSON_AddNumberToObject(sock_post_xyz, "y", 8);
jh_ndm 1:3550659bd872 390 //cJSON_AddNumberToObject(sock_post_xyz, "z", 8);
jh_ndm 1:3550659bd872 391 cJSON* sock_post_datapoint=NULL;
jh_ndm 1:3550659bd872 392 sock_post_datapoint = cJSON_CreateObject();
jh_ndm 1:3550659bd872 393 if(NULL == sock_post_datapoint)
jh_ndm 1:3550659bd872 394 {
jh_ndm 1:3550659bd872 395 cJSON_Delete(socket_post);
jh_ndm 1:3550659bd872 396 pc.printf("OUT6\r\n");
jh_ndm 1:3550659bd872 397 out = true;
jh_ndm 1:3550659bd872 398 return false;
jh_ndm 1:3550659bd872 399 }
jh_ndm 1:3550659bd872 400 cJSON_AddItemToObject(sock_post_datapoint, "datapoint", sock_post_xyz);
jh_ndm 1:3550659bd872 401 cJSON_AddItemToObject(socket_post, "body", sock_post_datapoint);
jh_ndm 1:3550659bd872 402
jh_ndm 1:3550659bd872 403 char* pJSON_sock_post = cJSON_PrintUnformatted(socket_post);
jh_ndm 1:3550659bd872 404
jh_ndm 1:3550659bd872 405 if(NULL == pJSON_sock_post)
jh_ndm 1:3550659bd872 406 {
jh_ndm 1:3550659bd872 407 cJSON_Delete(socket_post);
jh_ndm 1:3550659bd872 408 pc.printf("OUT7\r\n");
jh_ndm 1:3550659bd872 409 out = true;
jh_ndm 1:3550659bd872 410 return false;
jh_ndm 1:3550659bd872 411 }
jh_ndm 1:3550659bd872 412 strcat(pJSON_sock_post,"\n");
jh_ndm 1:3550659bd872 413
jh_ndm 1:3550659bd872 414 conn.send_all(pJSON_sock_post, strlen(pJSON_sock_post));//http_cmd for http,pJSON for socket,should be three changes
jh_ndm 1:3550659bd872 415 pc.printf("%s\r\n",pJSON_sock_post);
jh_ndm 1:3550659bd872 416
jh_ndm 1:3550659bd872 417 char *buffer = NULL;
jh_ndm 1:3550659bd872 418 buffer = (char *)malloc(MallocSize);
jh_ndm 1:3550659bd872 419 if(!buffer)pc.printf("malloc buffer err\r\n");
jh_ndm 1:3550659bd872 420
jh_ndm 1:3550659bd872 421 int ret;
jh_ndm 1:3550659bd872 422
jh_ndm 1:3550659bd872 423 while (true) {
jh_ndm 1:3550659bd872 424 ret = conn.receive(buffer, MallocSize-1);
jh_ndm 1:3550659bd872 425 pc.printf("ret = %d\r\n",ret);
jh_ndm 1:3550659bd872 426 if (ret <= 0) {
jh_ndm 1:3550659bd872 427 break;
jh_ndm 1:3550659bd872 428 }
jh_ndm 1:3550659bd872 429 buffer[ret] = '\0';
jh_ndm 1:3550659bd872 430 pc.printf("Received %d chars from server: %s\n", ret, buffer);
jh_ndm 1:3550659bd872 431 }
jh_ndm 1:3550659bd872 432 pc.printf("socket_POST OUT\r\n");
jh_ndm 1:3550659bd872 433
jh_ndm 1:3550659bd872 434 free(pJSON_sock_post);
jh_ndm 1:3550659bd872 435 free(buffer);
jh_ndm 1:3550659bd872 436 cJSON_Delete(socket_post);
jh_ndm 1:3550659bd872 437
jh_ndm 1:3550659bd872 438 return true;
jh_ndm 1:3550659bd872 439 }
jh_ndm 1:3550659bd872 440
jh_ndm 1:3550659bd872 441 bool closeConnect(TCPSocketConnection &conn)
jh_ndm 1:3550659bd872 442 {
jh_ndm 1:3550659bd872 443 if(conn.is_connected()){
jh_ndm 1:3550659bd872 444 pc.printf("connect is already ok!\r\n");
jh_ndm 1:3550659bd872 445 }else{
jh_ndm 1:3550659bd872 446 if(!conn.connect("iot.espressif.cn", socketPort)) //80 for http,8000 for socket
jh_ndm 1:3550659bd872 447 pc.printf("connect OK!\r\n");
jh_ndm 1:3550659bd872 448 else{
jh_ndm 1:3550659bd872 449 pc.printf("connct ERR!\r\n");
jh_ndm 1:3550659bd872 450 out = true;
jh_ndm 1:3550659bd872 451 return false;
jh_ndm 1:3550659bd872 452 }
jh_ndm 1:3550659bd872 453 }
jehoon 0:af541535ef54 454
jehoon 0:af541535ef54 455
jh_ndm 1:3550659bd872 456 cJSON* close_post=NULL;
jh_ndm 1:3550659bd872 457 close_post = cJSON_CreateObject();
jh_ndm 1:3550659bd872 458 if(NULL == close_post)
jh_ndm 1:3550659bd872 459 {
jh_ndm 1:3550659bd872 460 pc.printf("OUT4\r\n");
jh_ndm 1:3550659bd872 461 out = true;
jh_ndm 1:3550659bd872 462 return false;
jh_ndm 1:3550659bd872 463 }
jh_ndm 1:3550659bd872 464
jh_ndm 1:3550659bd872 465
jh_ndm 1:3550659bd872 466 cJSON_AddStringToObject(close_post, "path", "/v1/The_Gas/quit/");
jh_ndm 1:3550659bd872 467 cJSON_AddStringToObject(close_post, "method", "POST");
jh_ndm 1:3550659bd872 468
jh_ndm 1:3550659bd872 469 cJSON* close_post_token=NULL;
jh_ndm 1:3550659bd872 470 close_post_token = cJSON_CreateObject();
jh_ndm 1:3550659bd872 471 if(NULL == close_post_token)
jh_ndm 1:3550659bd872 472 {
jh_ndm 1:3550659bd872 473 cJSON_Delete(close_post);
jh_ndm 1:3550659bd872 474 pc.printf("OUT5\r\n");
jh_ndm 1:3550659bd872 475 out = true;
jh_ndm 1:3550659bd872 476 return false;
jh_ndm 1:3550659bd872 477 }
jh_ndm 1:3550659bd872 478 cJSON_AddStringToObject(close_post_token, "Authorization", "token 514cc9c3aa07a4a56246cb9259c8264fd2ae56f6");
jh_ndm 1:3550659bd872 479 cJSON_AddItemToObject(close_post, "meta", close_post_token);
jh_ndm 1:3550659bd872 480
jh_ndm 1:3550659bd872 481 char* close_pJSON = cJSON_PrintUnformatted(close_post);
jehoon 0:af541535ef54 482
jh_ndm 1:3550659bd872 483 if(NULL == close_pJSON)
jh_ndm 1:3550659bd872 484 {
jh_ndm 1:3550659bd872 485 cJSON_Delete(close_post);
jh_ndm 1:3550659bd872 486 pc.printf("OUT7\r\n");
jh_ndm 1:3550659bd872 487 out = true;
jh_ndm 1:3550659bd872 488 return false;
jh_ndm 1:3550659bd872 489 }
jh_ndm 1:3550659bd872 490 strcat(close_pJSON,"\n");
jh_ndm 1:3550659bd872 491
jh_ndm 1:3550659bd872 492 conn.send_all(close_pJSON, strlen(close_pJSON));//http_cmd for http,pJSON for socket,should be three changes
jh_ndm 1:3550659bd872 493 pc.printf("%s\r\n",close_pJSON);
jh_ndm 1:3550659bd872 494
jh_ndm 1:3550659bd872 495 char *buffer = NULL;
jh_ndm 1:3550659bd872 496 buffer = (char *)malloc(MallocSize);
jh_ndm 1:3550659bd872 497 if(!buffer)pc.printf("malloc buffer err\r\n");
jh_ndm 1:3550659bd872 498
jehoon 0:af541535ef54 499 int ret;
jh_ndm 1:3550659bd872 500
jehoon 0:af541535ef54 501 while (true) {
jh_ndm 1:3550659bd872 502 ret = conn.receive(buffer, MallocSize-1);
jh_ndm 1:3550659bd872 503 pc.printf("ret = %d\r\n",ret);
jh_ndm 1:3550659bd872 504 if (ret <= 0) {
jh_ndm 1:3550659bd872 505 break;
jh_ndm 1:3550659bd872 506 }
jehoon 0:af541535ef54 507 buffer[ret] = '\0';
jh_ndm 1:3550659bd872 508 pc.printf("Received %d chars from server: %s\n", ret, buffer);
jehoon 0:af541535ef54 509 }
jh_ndm 1:3550659bd872 510 pc.printf("close_POST OUT\r\n");
jh_ndm 1:3550659bd872 511
jh_ndm 1:3550659bd872 512 free(close_pJSON);
jh_ndm 1:3550659bd872 513 free(buffer);
jh_ndm 1:3550659bd872 514 cJSON_Delete(close_post);
jehoon 0:af541535ef54 515
jh_ndm 1:3550659bd872 516 return true;
jh_ndm 1:3550659bd872 517 }
846354866 4:e1d2c6f94c69 518
846354866 4:e1d2c6f94c69 519 unsigned char receive_byte()
846354866 4:e1d2c6f94c69 520 {
846354866 4:e1d2c6f94c69 521 unsigned char i,temp;
846354866 4:e1d2c6f94c69 522 for(i=0;i<8;i++)
846354866 4:e1d2c6f94c69 523 {
846354866 4:e1d2c6f94c69 524 U8FLAG = 2;
846354866 4:e1d2c6f94c69 525 while(!myIOD10.read() && U8FLAG++);
846354866 4:e1d2c6f94c69 526 Delay_us(30);
846354866 4:e1d2c6f94c69 527 temp=0;
846354866 4:e1d2c6f94c69 528 if(myIOD10.read()==1)
846354866 4:e1d2c6f94c69 529 temp=1;
846354866 4:e1d2c6f94c69 530 U8FLAG = 2;
846354866 4:e1d2c6f94c69 531 while(myIOD10.read() && U8FLAG++);
846354866 4:e1d2c6f94c69 532
846354866 4:e1d2c6f94c69 533 if(U8FLAG==1)break;
846354866 4:e1d2c6f94c69 534 data_byte<<=1;//
846354866 4:e1d2c6f94c69 535 data_byte|=temp;
846354866 4:e1d2c6f94c69 536 }
846354866 4:e1d2c6f94c69 537 return data_byte;
846354866 4:e1d2c6f94c69 538 }
846354866 4:e1d2c6f94c69 539
846354866 4:e1d2c6f94c69 540 void receive_dht11()
846354866 4:e1d2c6f94c69 541 {
846354866 4:e1d2c6f94c69 542 unsigned char T_H,T_L,R_H,R_L,check,num_check;
846354866 4:e1d2c6f94c69 543
846354866 4:e1d2c6f94c69 544
846354866 4:e1d2c6f94c69 545 myIOD10.output();
846354866 4:e1d2c6f94c69 546 myIOD10.write(0);
846354866 4:e1d2c6f94c69 547 delay(20);
846354866 4:e1d2c6f94c69 548
846354866 4:e1d2c6f94c69 549 myIOD10.write(1);
846354866 4:e1d2c6f94c69 550 Delay_us(25);
846354866 4:e1d2c6f94c69 551 myIOD10.write(1);
846354866 4:e1d2c6f94c69 552
846354866 4:e1d2c6f94c69 553 myIOD10.input();
846354866 4:e1d2c6f94c69 554 if(!myIOD10.read())
846354866 4:e1d2c6f94c69 555 {
846354866 4:e1d2c6f94c69 556 while(!myIOD10.read());
846354866 4:e1d2c6f94c69 557 while(myIOD10.read());
846354866 4:e1d2c6f94c69 558 R_H=receive_byte();
846354866 4:e1d2c6f94c69 559 R_L=receive_byte();
846354866 4:e1d2c6f94c69 560 T_H=receive_byte();
846354866 4:e1d2c6f94c69 561 T_L=receive_byte();
846354866 4:e1d2c6f94c69 562 check=receive_byte();
846354866 4:e1d2c6f94c69 563 pc.printf("--R_H--%d---R_L---%d--T_H--%d---T_L---%d\r\n", R_H,R_L,T_H,T_L);
846354866 4:e1d2c6f94c69 564 Delay_us(20);
846354866 4:e1d2c6f94c69 565 num_check=R_H+R_L+T_H+T_L;pc.printf("--num_check--%d---check---%d\r\n", num_check,check);
846354866 4:e1d2c6f94c69 566 if(num_check==check)
846354866 4:e1d2c6f94c69 567 {
846354866 4:e1d2c6f94c69 568 RH=R_H;
846354866 4:e1d2c6f94c69 569 RL=R_L;
846354866 4:e1d2c6f94c69 570 TH=T_H;
846354866 4:e1d2c6f94c69 571 TL=T_L;
846354866 4:e1d2c6f94c69 572 check=num_check;
846354866 4:e1d2c6f94c69 573 }
846354866 4:e1d2c6f94c69 574 }
846354866 4:e1d2c6f94c69 575
846354866 4:e1d2c6f94c69 576 //pc.printf("humidity [H] -out--%d\r\n", RH);
846354866 4:e1d2c6f94c69 577 //pc.printf("humidity [L] -out--%d\r\n", RL);
846354866 4:e1d2c6f94c69 578 //pc.printf("temperature [H] -out--%d\r\n", TH);
846354866 4:e1d2c6f94c69 579 //pc.printf("temperature [L] -out--%d\r\n", TL);
846354866 4:e1d2c6f94c69 580
846354866 4:e1d2c6f94c69 581 receive_dht11Timeout.attach(&receive_dht11,0.2f);
846354866 4:e1d2c6f94c69 582 }