project
Dependencies: MbedJSONValue DISCO_L475VG_IOT01A_wifi mbed-http
main.cpp
- Committer:
- Eason0505
- Date:
- 2019-01-07
- Revision:
- 0:8bcd728684c5
File content as of revision 0:8bcd728684c5:
#include "mbed.h" #include "wifi.h" #include "US100.h" #include "NetworkInterface.h" #include "ISM43362Interface.h" #include "http_request.h" #include "ServoMove.h" #include <string> /* Private defines -----------------------------------------------------------*/ #define WIFI_WRITE_TIMEOUT 10000 #define WIFI_READ_TIMEOUT 10000 #define CONNECTION_TRIAL_MAX 10 /* Private typedef------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ Serial pc(SERIAL_TX, SERIAL_RX); ISM43362Interface wifi(MBED_CONF_APP_WIFI_SPI_MOSI, MBED_CONF_APP_WIFI_SPI_MISO, MBED_CONF_APP_WIFI_SPI_SCLK, MBED_CONF_APP_WIFI_SPI_NSS, MBED_CONF_APP_WIFI_RESET, MBED_CONF_APP_WIFI_DATAREADY, MBED_CONF_APP_WIFI_WAKEUP, false); uint8_t MAC_Addr[6]; uint8_t IP_Addr[4]; // Interval(second) to do tasking &sensing const int INTERVAL = 1; // Distance sensor US100 sensor(PC_3, PC_4); // Select network interface NetworkInterface* network = &wifi; int main() { pc.baud(9600); printf("\n"); printf("************************************************************\n"); printf("*** IoT Final Project - TSENG, I-SHENG ***\n"); printf("************************************************************\n"); /*Initialize WIFI module */ if(WIFI_Init() == WIFI_STATUS_OK) { printf("> WIFI Module Initialized.\n"); if(WIFI_GetMAC_Address(MAC_Addr) == WIFI_STATUS_OK) { printf("> es-wifi module MAC Address : %X:%X:%X:%X:%X:%X\n", MAC_Addr[0], MAC_Addr[1], MAC_Addr[2], MAC_Addr[3], MAC_Addr[4], MAC_Addr[5]); } else { printf("> ERROR : CANNOT get MAC address\n"); } if( WIFI_Connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, WIFI_ECN_WPA2_PSK) == WIFI_STATUS_OK) { printf("> es-wifi module connected \n"); if(WIFI_GetIP_Address(IP_Addr) == WIFI_STATUS_OK) { printf("> es-wifi module got IP Address : %d.%d.%d.%d\n", IP_Addr[0], IP_Addr[1], IP_Addr[2], IP_Addr[3]); } else { printf("> ERROR : es-wifi module CANNOT get IP address\n"); } } else { printf("> ERROR : es-wifi module NOT connected\n"); } } else { printf("> ERROR : WIFI Module cannot be initialized.\n"); } while(1){ char c[] = ""; int d = sensor.distance(); sprintf(c, "%d", d); printf("Distance = %d \n", d); char body[] = "{\"result\":"; char body_1[] = "}"; strcat(body,c); strcat(body,body_1); HttpRequest* POST_request = new HttpRequest(network, HTTP_POST, "http://140.115.111.187:8080/Ray/v1.0/Datastreams(1)/Observations"); POST_request->set_header("Content-Type", "application/json"); HttpResponse* POST_response = POST_request->send(body, strlen(body)); printf("HTTP POST sending...\n"); // if response is NULL, check response->get_error() printf("status is %d - %s\n", POST_response->get_status_code(), POST_response->get_status_message()); printf("body is:\n%s\n", POST_response->get_body_as_string().c_str()); delete POST_request; // also clears out the response HttpRequest* request = new HttpRequest(network, HTTP_GET, "http://140.115.111.187:8080/Ray/v1.0/Datastreams(2)/Observations?$top=1&$orderby=phenomenonTime%20desc"); HttpResponse* response = request->send(); // if response is NULL, check response->get_error() // printf("status is %d - %s\n", response->get_status_code(), response->get_status_message()); // printf("body is:\n%s\n", response->get_body_as_string().c_str()); string JSON = response->get_body_as_string(); string LOCK = "LOCK"; string UNLOCK = "unlock"; if(strstr(JSON.c_str(),LOCK.c_str()) != NULL){ printf("LOCK\n"); servo.pulsewidth_us(700); /* const char lock[] = "{\"result\":\"LOCK\"}"; HttpRequest* LOCK_request = new HttpRequest(network, HTTP_POST, "http://140.115.111.187:8080/Ray/v1.0/Datastreams(2)/Observations"); LOCK_request->set_header("Content-Type", "application/json"); HttpResponse* LOCK_response = LOCK_request->send(lock, strlen(lock)); // if response is NULL, check response->get_error() printf("status is %d - %s\n", LOCK_response->get_status_code(), LOCK_response->get_status_message()); // printf("body is:\n%s\n", LOCK_response->get_body_as_string().c_str()); delete LOCK_request; // also clears out the response */ }else if(strstr(JSON.c_str(),UNLOCK.c_str()) != NULL){ printf("UNLOCK\n"); servo.pulsewidth_us(2500); /* const char unlock[] = "{\"result\":\"unlock\"}"; HttpRequest* UNLOCK_request = new HttpRequest(network, HTTP_POST, "http://140.115.111.187:8080/Ray/v1.0/Datastreams(2)/Observations"); UNLOCK_request->set_header("Content-Type", "application/json"); HttpResponse* UNLOCK_response = UNLOCK_request->send(unlock, strlen(unlock)); // if response is NULL, check response->get_error() printf("status is %d - %s\n", UNLOCK_response->get_status_code(), UNLOCK_response->get_status_message()); // printf("body is:\n%s\n", UNLOCK_response->get_body_as_string().c_str()); delete UNLOCK_request; // also clears out the response */ } delete request; printf("%s\n","END..."); wait(INTERVAL); } }