modular-2 access china mobile's OneNet By Http
Dependencies: MbedJSONValue mbed-http
main.cpp
- Committer:
- yao6116601
- Date:
- 2018-06-22
- Revision:
- 0:19ff9eff4dc2
File content as of revision 0:19ff9eff4dc2:
#include "mbed.h" #include "EthernetInterface.h" #include "http_request.h" #include "http_response.h" #include "MbedJSONValue.h" #include <string> static const char* mbedIp = "192.168.31.28"; //IP static const char* mbedMask = "255.255.255.0"; // Mask static const char* mbedGateway = "192.168.31.1"; //Gateway DigitalOut myled(PF_14); EthernetInterface eth; TCPSocket socket; char uri[256]; char devid[] = "34485081"; char api_key[] ="m7ARDyXF2QmO5O7u7UaBO8HHPpU="; char host[] = "api.heclouds.com"; int softTime; int main() { float temp; char body[64]; MbedJSONValue demo; HttpRequest*request; HttpResponse* response; printf("modular-2 Connect to OneNet\n"); eth.set_network(mbedIp,mbedMask,mbedGateway); eth.connect(); socket.open(ð); socket.connect("api.heclouds.com", 80); softTime=0; while(1) { wait(1.0); // 1 sec softTime++; if (softTime>4) { softTime=0; temp=(((double) rand() / (RAND_MAX)) + 1)*100; sprintf(body,"{\"temperature\":%f}",temp); uri[0] = 0; strcat(uri,"http://api.heclouds.com/devices/"); strcat(uri,devid); strcat(uri,"/datapoints?type=3"); request=new HttpRequest(ð,HTTP_POST,uri); request->set_header("api-key",api_key); request->set_header("Content-Type", "application/json"); sprintf(body,"{\"temperature\":%f}",temp); response= request->send(body, strlen(body)); printf("status is %d - %s\n", response->get_status_code(), response->get_status_message().c_str()); // printf("body is:\n%s\n", response->get_body_as_string().c_str()); delete request; } // get switch uri[0] = 0; strcat(uri,"http://api.heclouds.com/devices/"); strcat(uri,devid); strcat(uri,"/datastreams/switch"); // strcat(http_cmd,"switch"); request=new HttpRequest(ð,HTTP_GET,uri); request->set_header("api-key",api_key); request->set_header("Content-Type", "application/json"); response= request->send(body, strlen(body)); // printf("body is:\n%s\n", response->get_body_as_string().c_str()); parse(demo, response->get_body_as_string().c_str()); int sw; sw=demo["data"]["current_value"].get<int>(); printf("sw=%d\n",sw); myled=sw; delete request; } }