ifocus smart light sample v0.9
Dependencies: MbedJSONValue MQTT
Revision 5:9b664d736a6a, committed 2019-12-11
- Comitter:
- zixuanlim
- Date:
- Wed Dec 11 09:52:56 2019 +0000
- Parent:
- 4:dffb6c949dbf
- Child:
- 6:cd4d7e943f96
- Commit message:
- Milestone 01 - Updated to latest MBED and WiFi driver. But still failed to receive network changesx callback now.; ;
Changed in this revision
--- a/main.cpp Wed Dec 11 07:17:16 2019 +0000 +++ b/main.cpp Wed Dec 11 09:52:56 2019 +0000 @@ -7,13 +7,13 @@ #define WIFI_IDW0XX1 2 #define MQTTCLIENT_QOS2 1 -#define RELAY_TIMEOUT 10 -#define RELAY_TIMEOUT 10 +#define RELAY_TIMEOUT 1 #if (defined(TARGET_DISCO_L475VG_IOT01A) || defined(TARGET_DISCO_F413ZH)) #include "ISM43362Interface.h" -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); +//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); +ISM43362Interface _Wifi(false); // //#else // External WiFi modules // @@ -25,9 +25,14 @@ #endif +//WiFi LED region + +#define WIFI_LED_ON {_wifiLed.output(); _wifiLed = 1;_isWifiLedOn = 1;} +#define WIFI_LED_OFF {_wifiLed.input(); _isWifiLedOn = 0;} + DigitalOut _pirSensorLed(LED1); DigitalOut _relayLed(LED2); -DigitalOut _wiFiLED(LED3); +DigitalInOut _wifiLed(LED3); DigitalOut _relay1(D7); @@ -50,19 +55,30 @@ Timer _resetRelayTimer; bool _isRelayTriggered = false; +bool _isWifiConnected = false; + +int _isWifiLedOn = 0; void OnRelay() { - _relayLed = 1; + //_relayLed = 1; _relay1 = 1; _isRelayTriggered = true; } void OffRelay() { - _relayLed = 0; - _relay1 = 0; - _isRelayTriggered = false; + if(!_pirSensorLed) + { + //_relayLed = 0; + _relay1 = 0; + _isRelayTriggered = false; + _resetRelayTimer.stop(); + } + else + { + _resetRelayTimer.reset(); + } } void OnTrigger() @@ -79,7 +95,7 @@ void OffTrigger() { - _pirSensorLed = 0; + _pirSensorLed = 0; //When no more motion trigger, off the PIR LED } void HandlePIR() @@ -89,43 +105,91 @@ while(true) { - if(_isRelayTriggered) + if(_isRelayTriggered) //If relay is triggering { - if(_resetRelayTimer.read() > _currentRelayTimeout) + if(_resetRelayTimer.read() > _currentRelayTimeout) //Read Timer, if timer read above target time { - OffRelay(); - _resetRelayTimer.stop(); + OffRelay(); //Turn off the relay } } - wait(0.5); + thread_sleep_for(500); } } void ConnectWifi() -{ - _wiFiLED = 0; - - int ret = 0; - +{ do { - wait(0.5); - ret = _Wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); - }while(ret != 0); - - _wiFiLED = 1; + if(!_isWifiConnected) + { + _Wifi.disconnect(); + int ret = 0; + do + { + ret = _Wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); + if(ret != 0) + { + thread_sleep_for(500); + } + }while(ret != 0); + + //Connected to WiFi interface or WIFI? + + //Start connectivity + } + else + { + _relayLed = !_relayLed; + } + thread_sleep_for(500); + }while(true); } +void status_callback(nsapi_event_t status, intptr_t param) +{ + if (status == NSAPI_EVENT_CONNECTION_STATUS_CHANGE) { + switch(param) { + case NSAPI_STATUS_GLOBAL_UP: + { + _isWifiConnected = true; + _currentRelayTimeout = 10; //ZXLIM - Assume connected to broker and control by broker + WIFI_LED_ON; + break; + } + default: + { + _isWifiConnected = false; //ZXLIM - Ignore connected LAN 1st. + _currentRelayTimeout = 1; + break; + } + } + } +} + + int main() { - _dioManagerThread.start(callback(HandlePIR)); + _dioManagerThread.start(callback(HandlePIR)); + _Wifi.attach(&status_callback); _wifiManagerThread.start(callback(ConnectWifi)); while(true) { - wait(0.5); + while(!_isWifiConnected) + { + if(!_isWifiLedOn) + { + WIFI_LED_ON; + } + else + { + WIFI_LED_OFF; + } + thread_sleep_for(100); + } + thread_sleep_for(500); } } \ No newline at end of file
--- a/mbed-os.lib Wed Dec 11 07:17:16 2019 +0000 +++ b/mbed-os.lib Wed Dec 11 09:52:56 2019 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/mbed-os/#569159b784f70feaa32ce226aaca896fb83452f7 +https://github.com/ARMmbed/mbed-os/#679d24833acf0a0b5b0d528576bb37c70863bc4e
--- a/wifi-ism43362.lib Wed Dec 11 07:17:16 2019 +0000 +++ b/wifi-ism43362.lib Wed Dec 11 09:52:56 2019 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/wifi-ism43362/#e4ecc27e87d96072f7df62a25ef007986dc95c4e +https://github.com/ARMmbed/wifi-ism43362/#6aee6e996e2c74c9903cf2e0cc2e7e8b6f4ac0ec