Initial release

Dependencies:   DHT11

Committer:
vikshin
Date:
Thu Feb 13 00:24:36 2020 +0000
Revision:
1:0a30ef7e2613
Parent:
0:3e84b0310c96
Minor updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vikshin 0:3e84b0310c96 1
vikshin 0:3e84b0310c96 2 /* mbed Example Program
vikshin 0:3e84b0310c96 3 * Copyright (c) 2006-2014 ARM Limited
vikshin 0:3e84b0310c96 4 *
vikshin 0:3e84b0310c96 5 * Licensed under the Apache License, Version 2.0 (the "License");
vikshin 0:3e84b0310c96 6 * you may not use this file except in compliance with the License.
vikshin 0:3e84b0310c96 7 * You may obtain a copy of the License at
vikshin 0:3e84b0310c96 8 *
vikshin 0:3e84b0310c96 9 * http://www.apache.org/licenses/LICENSE-2.0
vikshin 0:3e84b0310c96 10 *
vikshin 0:3e84b0310c96 11 * Unless required by applicable law or agreed to in writing, software
vikshin 0:3e84b0310c96 12 * distributed under the License is distributed on an "AS IS" BASIS,
vikshin 0:3e84b0310c96 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
vikshin 0:3e84b0310c96 14 * See the License for the specific language governing permissions and
vikshin 0:3e84b0310c96 15 * limitations under the License.
vikshin 0:3e84b0310c96 16 */
vikshin 0:3e84b0310c96 17 #include "mbed.h"
vikshin 0:3e84b0310c96 18
vikshin 0:3e84b0310c96 19 #include "Dht11.h"
vikshin 0:3e84b0310c96 20
vikshin 0:3e84b0310c96 21 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 22 // Define
vikshin 0:3e84b0310c96 23 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 24 /* Default setting */
vikshin 0:3e84b0310c96 25 #define ON 1
vikshin 0:3e84b0310c96 26 #define OFF 0
vikshin 0:3e84b0310c96 27 #define ENABLE 1
vikshin 0:3e84b0310c96 28 #define DISABLE 0
vikshin 0:3e84b0310c96 29 #define RET_OK 1
vikshin 0:3e84b0310c96 30 #define RET_NOK -1
vikshin 0:3e84b0310c96 31
vikshin 0:3e84b0310c96 32 /* Pin configuraiton */
vikshin 0:3e84b0310c96 33 #define MBED_CONF_WIZFI360_TX D8
vikshin 0:3e84b0310c96 34 #define MBED_CONF_WIZFI360_RX D2
vikshin 0:3e84b0310c96 35 #define MBED_CONF_WIZFI360_RESET D9
vikshin 0:3e84b0310c96 36 #define MBED_CONF_WIZFI360_SENSOR_CDS A0
vikshin 0:3e84b0310c96 37 #define MBED_CONF_WIZFI360_SENSOR_DHT D14
vikshin 0:3e84b0310c96 38
vikshin 0:3e84b0310c96 39 /* Serial setting */
vikshin 0:3e84b0310c96 40 #define WIZFI360_DEFAULT_BAUD_RATE 115200
vikshin 0:3e84b0310c96 41
vikshin 0:3e84b0310c96 42 /* Parser setting */
vikshin 0:3e84b0310c96 43 #define WIZFI360_PARSER_DELIMITER "\r\n"
vikshin 0:3e84b0310c96 44
vikshin 0:3e84b0310c96 45 /* Debug message setting */
vikshin 0:3e84b0310c96 46 #define DEBUG_ENABLE 1
vikshin 0:3e84b0310c96 47 #define DEBUG_DISABLE 0
vikshin 0:3e84b0310c96 48
vikshin 0:3e84b0310c96 49 #define WIZFI360_PARSER_DEBUG DEBUG_DISABLE
vikshin 0:3e84b0310c96 50
vikshin 0:3e84b0310c96 51 /* Timeout setting */
vikshin 0:3e84b0310c96 52 #define WIZFI360_DEFAULT_TIMEOUT 1000
vikshin 0:3e84b0310c96 53
vikshin 0:3e84b0310c96 54 /* Wi-Fi */
vikshin 0:3e84b0310c96 55 #define STATION 1
vikshin 0:3e84b0310c96 56 #define SOFTAP 2
vikshin 0:3e84b0310c96 57 #define STATION_SOFTAP 3
vikshin 0:3e84b0310c96 58
vikshin 0:3e84b0310c96 59 #define WIFI_MODE STATION
vikshin 0:3e84b0310c96 60
vikshin 0:3e84b0310c96 61 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 62 // Variables
vikshin 0:3e84b0310c96 63 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 64 Serial pc(USBTX, USBRX);
vikshin 0:3e84b0310c96 65
vikshin 0:3e84b0310c96 66 UARTSerial *_serial;
vikshin 0:3e84b0310c96 67 ATCmdParser *_parser;
vikshin 0:3e84b0310c96 68
vikshin 0:3e84b0310c96 69 DigitalOut _RESET_WIZFI360(MBED_CONF_WIZFI360_RESET);
vikshin 0:3e84b0310c96 70 AnalogIn _cdsVal(MBED_CONF_WIZFI360_SENSOR_CDS);
vikshin 0:3e84b0310c96 71 Dht11 _dhtVal(MBED_CONF_WIZFI360_SENSOR_DHT);
vikshin 0:3e84b0310c96 72
vikshin 0:3e84b0310c96 73 /* Sensor info */
vikshin 0:3e84b0310c96 74 struct sensor
vikshin 0:3e84b0310c96 75 {
vikshin 0:3e84b0310c96 76 int ill; // illuminance
vikshin 0:3e84b0310c96 77 int cel; // celsius
vikshin 0:3e84b0310c96 78 float fah; // fahrenheit
vikshin 0:3e84b0310c96 79 int hum; // humidity
vikshin 0:3e84b0310c96 80 };
vikshin 0:3e84b0310c96 81
vikshin 0:3e84b0310c96 82 /* WiFi info */
vikshin 0:3e84b0310c96 83 char ssid[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
vikshin 0:3e84b0310c96 84 char password[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
vikshin 0:3e84b0310c96 85
vikshin 0:3e84b0310c96 86 /* MQTT info */
vikshin 0:3e84b0310c96 87 char hub_name[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
vikshin 0:3e84b0310c96 88 char device_id[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
vikshin 0:3e84b0310c96 89 char device_primary_key[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
vikshin 0:3e84b0310c96 90
vikshin 0:3e84b0310c96 91 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 92 // Functions
vikshin 0:3e84b0310c96 93 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 94 /* Util */
vikshin 0:3e84b0310c96 95 void delay(int ms);
vikshin 0:3e84b0310c96 96
vikshin 0:3e84b0310c96 97 /* Serial */
vikshin 0:3e84b0310c96 98 void serialPcInit(void);
vikshin 0:3e84b0310c96 99 void serialDeviceInit(PinName tx, PinName rx, int baudrate);
vikshin 0:3e84b0310c96 100 void serialAtParserInit(const char *delimiter, bool debug_en);
vikshin 0:3e84b0310c96 101
vikshin 0:3e84b0310c96 102 /* Device */
vikshin 0:3e84b0310c96 103 void deviceInit_WizFi360(void);
vikshin 0:3e84b0310c96 104 void deviceReset_WizFi360(void);
vikshin 0:3e84b0310c96 105 void deviceIsReady_WizFi360(void);
vikshin 0:3e84b0310c96 106
vikshin 0:3e84b0310c96 107 /* Sensor */
vikshin 0:3e84b0310c96 108 int deviceGetIllVal_WizFi360(void);
vikshin 0:3e84b0310c96 109 int deviceGetCelVal_WizFi360(void);
vikshin 0:3e84b0310c96 110 float deviceGetFahVal_WizFi360(void);
vikshin 0:3e84b0310c96 111 int deviceGetHumVal_WizFi360(void);
vikshin 0:3e84b0310c96 112
vikshin 0:3e84b0310c96 113 /* Wi-Fi */
vikshin 0:3e84b0310c96 114 int8_t deviceSetWifiMode_WizFi360(int mode);
vikshin 0:3e84b0310c96 115 int8_t deviceSetDhcp_WizFi360(int mode, int en_dhcp);
vikshin 0:3e84b0310c96 116 int8_t deviceConnAP_WizFi360(int mode, char *ssid, char *password);
vikshin 0:3e84b0310c96 117
vikshin 1:0a30ef7e2613 118 /* Azure */
vikshin 0:3e84b0310c96 119 int8_t deviceSetAzureConf_WizFi360(char *iot_hub, char *device_id, char *sas_token);
vikshin 0:3e84b0310c96 120 int8_t devicePublishMsg_WizFi360(char *device_id, sensor *sensor_info);
vikshin 0:3e84b0310c96 121 int8_t deviceAzureCon_WizFi360();
vikshin 0:3e84b0310c96 122 int8_t deviceSetTopic_WizFi360(char *device_id);
vikshin 0:3e84b0310c96 123
vikshin 0:3e84b0310c96 124
vikshin 0:3e84b0310c96 125 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 126 // Main
vikshin 0:3e84b0310c96 127 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 128 int main()
vikshin 0:3e84b0310c96 129 {
vikshin 0:3e84b0310c96 130 sensor sensor_info;
vikshin 0:3e84b0310c96 131
vikshin 0:3e84b0310c96 132 /* Set serial */
vikshin 0:3e84b0310c96 133 serialPcInit();
vikshin 0:3e84b0310c96 134
vikshin 0:3e84b0310c96 135 /* Set device */
vikshin 0:3e84b0310c96 136 deviceInit_WizFi360();
vikshin 0:3e84b0310c96 137 deviceReset_WizFi360();
vikshin 0:3e84b0310c96 138 deviceIsReady_WizFi360();
vikshin 0:3e84b0310c96 139
vikshin 0:3e84b0310c96 140 /* Set Wi-Fi */
vikshin 0:3e84b0310c96 141 deviceSetWifiMode_WizFi360(WIFI_MODE);
vikshin 0:3e84b0310c96 142 deviceSetDhcp_WizFi360(WIFI_MODE, ENABLE);
vikshin 0:3e84b0310c96 143 deviceConnAP_WizFi360(WIFI_MODE, ssid, password);
vikshin 0:3e84b0310c96 144
vikshin 1:0a30ef7e2613 145 /* Set Azure */
vikshin 0:3e84b0310c96 146
vikshin 0:3e84b0310c96 147 deviceSetAzureConf_WizFi360(hub_name,device_id,device_primary_key);
vikshin 0:3e84b0310c96 148 deviceSetTopic_WizFi360(device_id);
vikshin 0:3e84b0310c96 149 deviceAzureCon_WizFi360();
vikshin 0:3e84b0310c96 150
vikshin 0:3e84b0310c96 151 while(true)
vikshin 0:3e84b0310c96 152 {
vikshin 0:3e84b0310c96 153 /* Get sensor info */
vikshin 0:3e84b0310c96 154 sensor_info.ill = deviceGetIllVal_WizFi360();
vikshin 0:3e84b0310c96 155 sensor_info.cel = deviceGetCelVal_WizFi360();
vikshin 0:3e84b0310c96 156 sensor_info.fah = deviceGetFahVal_WizFi360();
vikshin 0:3e84b0310c96 157 sensor_info.hum = deviceGetHumVal_WizFi360();
vikshin 0:3e84b0310c96 158
vikshin 0:3e84b0310c96 159 /* Publish message */
vikshin 0:3e84b0310c96 160 devicePublishMsg_WizFi360(device_id, &sensor_info);
vikshin 0:3e84b0310c96 161
vikshin 0:3e84b0310c96 162 delay(3000);
vikshin 0:3e84b0310c96 163 }
vikshin 0:3e84b0310c96 164 }
vikshin 0:3e84b0310c96 165
vikshin 0:3e84b0310c96 166 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 167 // Functions : Util
vikshin 0:3e84b0310c96 168 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 169 void delay(int ms)
vikshin 0:3e84b0310c96 170 {
vikshin 0:3e84b0310c96 171 wait_us(ms * 1000);
vikshin 0:3e84b0310c96 172 }
vikshin 0:3e84b0310c96 173
vikshin 0:3e84b0310c96 174 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 175 // Functions : Serial
vikshin 0:3e84b0310c96 176 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 177 void serialPcInit(void)
vikshin 0:3e84b0310c96 178 {
vikshin 0:3e84b0310c96 179 pc.baud(115200);
vikshin 0:3e84b0310c96 180 pc.format(8, Serial::None, 1);
vikshin 0:3e84b0310c96 181 }
vikshin 0:3e84b0310c96 182
vikshin 0:3e84b0310c96 183 void serialDeviceInit(PinName tx, PinName rx, int baudrate)
vikshin 0:3e84b0310c96 184 {
vikshin 0:3e84b0310c96 185 _serial = new UARTSerial(tx, rx, baudrate);
vikshin 0:3e84b0310c96 186 }
vikshin 0:3e84b0310c96 187
vikshin 0:3e84b0310c96 188 void serialAtParserInit(const char *delimiter, bool debug_en)
vikshin 0:3e84b0310c96 189 {
vikshin 0:3e84b0310c96 190 _parser = new ATCmdParser(_serial);
vikshin 0:3e84b0310c96 191 _parser->debug_on(debug_en);
vikshin 0:3e84b0310c96 192 _parser->set_delimiter(delimiter);
vikshin 0:3e84b0310c96 193 _parser->set_timeout(WIZFI360_DEFAULT_TIMEOUT);
vikshin 0:3e84b0310c96 194 }
vikshin 0:3e84b0310c96 195
vikshin 0:3e84b0310c96 196 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 197 // Functions : Device
vikshin 0:3e84b0310c96 198 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 199 void deviceInit_WizFi360(void)
vikshin 0:3e84b0310c96 200 {
vikshin 0:3e84b0310c96 201 serialDeviceInit(MBED_CONF_WIZFI360_TX, MBED_CONF_WIZFI360_RX, WIZFI360_DEFAULT_BAUD_RATE);
vikshin 0:3e84b0310c96 202 serialAtParserInit(WIZFI360_PARSER_DELIMITER, WIZFI360_PARSER_DEBUG);
vikshin 0:3e84b0310c96 203 }
vikshin 0:3e84b0310c96 204
vikshin 0:3e84b0310c96 205 void deviceReset_WizFi360(void)
vikshin 0:3e84b0310c96 206 {
vikshin 0:3e84b0310c96 207 _RESET_WIZFI360 = 1;
vikshin 0:3e84b0310c96 208 delay(300);
vikshin 0:3e84b0310c96 209
vikshin 0:3e84b0310c96 210 _RESET_WIZFI360 = 0;
vikshin 0:3e84b0310c96 211 delay(400);
vikshin 0:3e84b0310c96 212
vikshin 0:3e84b0310c96 213 _RESET_WIZFI360 = 1;
vikshin 0:3e84b0310c96 214 delay(1000);
vikshin 0:3e84b0310c96 215 }
vikshin 0:3e84b0310c96 216
vikshin 0:3e84b0310c96 217 void deviceIsReady_WizFi360(void)
vikshin 0:3e84b0310c96 218 {
vikshin 0:3e84b0310c96 219 while(1)
vikshin 0:3e84b0310c96 220 {
vikshin 0:3e84b0310c96 221 if(_parser->recv("ready"))
vikshin 0:3e84b0310c96 222 {
vikshin 0:3e84b0310c96 223 pc.printf("WizFi360 is available\r\n");
vikshin 0:3e84b0310c96 224
vikshin 0:3e84b0310c96 225 return;
vikshin 0:3e84b0310c96 226 }
vikshin 0:3e84b0310c96 227 else if(_parser->send("AT") && _parser->recv("OK"))
vikshin 0:3e84b0310c96 228 {
vikshin 0:3e84b0310c96 229 pc.printf("WizFi360 is already available\r\n");
vikshin 0:3e84b0310c96 230
vikshin 0:3e84b0310c96 231 return;
vikshin 0:3e84b0310c96 232 }
vikshin 0:3e84b0310c96 233 else
vikshin 0:3e84b0310c96 234 {
vikshin 0:3e84b0310c96 235 pc.printf("WizFi360 is not available\r\n");
vikshin 0:3e84b0310c96 236
vikshin 0:3e84b0310c96 237 return;
vikshin 0:3e84b0310c96 238 }
vikshin 0:3e84b0310c96 239 }
vikshin 0:3e84b0310c96 240 }
vikshin 0:3e84b0310c96 241
vikshin 0:3e84b0310c96 242 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 243 // Functions : Sensor
vikshin 0:3e84b0310c96 244 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 245 /* illuminance */
vikshin 0:3e84b0310c96 246 int deviceGetIllVal_WizFi360(void)
vikshin 0:3e84b0310c96 247 {
vikshin 0:3e84b0310c96 248 int val = _cdsVal.read_u16() / 100;
vikshin 0:3e84b0310c96 249
vikshin 0:3e84b0310c96 250 return val;
vikshin 0:3e84b0310c96 251 }
vikshin 0:3e84b0310c96 252
vikshin 0:3e84b0310c96 253 /* celsius */
vikshin 0:3e84b0310c96 254 int deviceGetCelVal_WizFi360(void)
vikshin 0:3e84b0310c96 255 {
vikshin 0:3e84b0310c96 256 _dhtVal.read();
vikshin 0:3e84b0310c96 257
vikshin 0:3e84b0310c96 258 int val = _dhtVal.getCelsius();
vikshin 0:3e84b0310c96 259
vikshin 0:3e84b0310c96 260 return val;
vikshin 0:3e84b0310c96 261 }
vikshin 0:3e84b0310c96 262
vikshin 0:3e84b0310c96 263 /* fahrenheit */
vikshin 0:3e84b0310c96 264 float deviceGetFahVal_WizFi360(void)
vikshin 0:3e84b0310c96 265 {
vikshin 0:3e84b0310c96 266 _dhtVal.read();
vikshin 0:3e84b0310c96 267
vikshin 0:3e84b0310c96 268 int val = _dhtVal.getFahrenheit();
vikshin 0:3e84b0310c96 269
vikshin 0:3e84b0310c96 270 return val;
vikshin 0:3e84b0310c96 271 }
vikshin 0:3e84b0310c96 272
vikshin 0:3e84b0310c96 273 /* humidity */
vikshin 0:3e84b0310c96 274 int deviceGetHumVal_WizFi360(void)
vikshin 0:3e84b0310c96 275 {
vikshin 0:3e84b0310c96 276 _dhtVal.read();
vikshin 0:3e84b0310c96 277
vikshin 0:3e84b0310c96 278 int val = _dhtVal.getHumidity();
vikshin 0:3e84b0310c96 279
vikshin 0:3e84b0310c96 280 return val;
vikshin 0:3e84b0310c96 281 }
vikshin 0:3e84b0310c96 282
vikshin 0:3e84b0310c96 283 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 284 // Functions : Wi-Fi
vikshin 0:3e84b0310c96 285 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 286 int8_t deviceSetWifiMode_WizFi360(int mode)
vikshin 0:3e84b0310c96 287 {
vikshin 0:3e84b0310c96 288 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 289
vikshin 0:3e84b0310c96 290 if(_parser->send("AT+CWMODE_CUR=%d", mode) && _parser->recv("OK"))
vikshin 0:3e84b0310c96 291 {
vikshin 0:3e84b0310c96 292 pc.printf("Set Wi-Fi mode : %d\r\n", mode);
vikshin 0:3e84b0310c96 293
vikshin 0:3e84b0310c96 294 ret = RET_OK;
vikshin 0:3e84b0310c96 295 }
vikshin 0:3e84b0310c96 296 else
vikshin 0:3e84b0310c96 297 {
vikshin 0:3e84b0310c96 298 pc.printf("Set Wi-Fi mode : ERROR\r\n");
vikshin 0:3e84b0310c96 299 }
vikshin 0:3e84b0310c96 300
vikshin 0:3e84b0310c96 301 return ret;
vikshin 0:3e84b0310c96 302 }
vikshin 0:3e84b0310c96 303
vikshin 0:3e84b0310c96 304 int8_t deviceSetDhcp_WizFi360(int mode, int en_dhcp)
vikshin 0:3e84b0310c96 305 {
vikshin 0:3e84b0310c96 306 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 307 int mode_dhcp;
vikshin 0:3e84b0310c96 308
vikshin 0:3e84b0310c96 309 if(mode == STATION)
vikshin 0:3e84b0310c96 310 {
vikshin 0:3e84b0310c96 311 mode_dhcp = 1;
vikshin 0:3e84b0310c96 312 }
vikshin 0:3e84b0310c96 313 else if(mode == SOFTAP)
vikshin 0:3e84b0310c96 314 {
vikshin 0:3e84b0310c96 315 mode_dhcp = 0;
vikshin 0:3e84b0310c96 316 }
vikshin 0:3e84b0310c96 317 else if(mode == STATION_SOFTAP)
vikshin 0:3e84b0310c96 318 {
vikshin 0:3e84b0310c96 319 mode_dhcp = 2;
vikshin 0:3e84b0310c96 320 }
vikshin 0:3e84b0310c96 321 else
vikshin 0:3e84b0310c96 322 {
vikshin 0:3e84b0310c96 323 pc.printf("Set DHCP : ERROR\r\n");
vikshin 0:3e84b0310c96 324 }
vikshin 0:3e84b0310c96 325
vikshin 0:3e84b0310c96 326 if(_parser->send("AT+CWDHCP_CUR=%d,%d", mode_dhcp, en_dhcp) && _parser->recv("OK"))
vikshin 0:3e84b0310c96 327 {
vikshin 0:3e84b0310c96 328 pc.printf("Set DHCP : %d, %d\r\n", mode_dhcp, en_dhcp);
vikshin 0:3e84b0310c96 329
vikshin 0:3e84b0310c96 330 ret = RET_OK;
vikshin 0:3e84b0310c96 331 }
vikshin 0:3e84b0310c96 332 else
vikshin 0:3e84b0310c96 333 {
vikshin 0:3e84b0310c96 334 pc.printf("Set DHCP : ERROR\r\n");
vikshin 0:3e84b0310c96 335 }
vikshin 0:3e84b0310c96 336
vikshin 0:3e84b0310c96 337 return ret;
vikshin 0:3e84b0310c96 338 }
vikshin 0:3e84b0310c96 339
vikshin 0:3e84b0310c96 340 int8_t deviceConnAP_WizFi360(int mode, char *ssid, char *password)
vikshin 0:3e84b0310c96 341 {
vikshin 0:3e84b0310c96 342 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 343 bool done = false;
vikshin 0:3e84b0310c96 344 Timer t;
vikshin 0:3e84b0310c96 345
vikshin 0:3e84b0310c96 346 if((mode == STATION) || (mode == STATION_SOFTAP))
vikshin 0:3e84b0310c96 347 {
vikshin 0:3e84b0310c96 348 _parser->send("AT+CWJAP_CUR=\"%s\",\"%s\"", ssid ,password);
vikshin 0:3e84b0310c96 349
vikshin 0:3e84b0310c96 350 t.start();
vikshin 0:3e84b0310c96 351
vikshin 0:3e84b0310c96 352 while(done != true)
vikshin 0:3e84b0310c96 353 {
vikshin 0:3e84b0310c96 354 done = (_parser->recv("WIFI CONNECTED") && _parser->recv("WIFI GOT IP") && _parser->recv("OK"));
vikshin 0:3e84b0310c96 355
vikshin 0:3e84b0310c96 356 if(t.read_ms() >= (WIZFI360_DEFAULT_TIMEOUT * 20))
vikshin 0:3e84b0310c96 357 {
vikshin 0:3e84b0310c96 358 t.stop();
vikshin 0:3e84b0310c96 359 t.reset();
vikshin 0:3e84b0310c96 360
vikshin 0:3e84b0310c96 361 break;
vikshin 0:3e84b0310c96 362 }
vikshin 0:3e84b0310c96 363 }
vikshin 0:3e84b0310c96 364
vikshin 0:3e84b0310c96 365 if(done)
vikshin 0:3e84b0310c96 366 {
vikshin 0:3e84b0310c96 367 pc.printf("Connect AP : %s, %s\r\n", ssid, password);
vikshin 0:3e84b0310c96 368
vikshin 0:3e84b0310c96 369 ret = RET_OK;
vikshin 0:3e84b0310c96 370 }
vikshin 0:3e84b0310c96 371 else
vikshin 0:3e84b0310c96 372 {
vikshin 0:3e84b0310c96 373 pc.printf("Connect AP : ERROR\r\n");
vikshin 0:3e84b0310c96 374 }
vikshin 0:3e84b0310c96 375 }
vikshin 0:3e84b0310c96 376 else
vikshin 0:3e84b0310c96 377 {
vikshin 0:3e84b0310c96 378 pc.printf("Connect AP : ERROR\r\n");
vikshin 0:3e84b0310c96 379 }
vikshin 0:3e84b0310c96 380
vikshin 0:3e84b0310c96 381 return ret;
vikshin 0:3e84b0310c96 382 }
vikshin 0:3e84b0310c96 383
vikshin 0:3e84b0310c96 384 // ----------------------------------------------------------------------------------------------------
vikshin 1:0a30ef7e2613 385 // Functions : Azure
vikshin 0:3e84b0310c96 386 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 387
vikshin 0:3e84b0310c96 388 int8_t deviceSetAzureConf_WizFi360(char *iot_hub, char *device_id, char *sas_token)
vikshin 0:3e84b0310c96 389 {
vikshin 0:3e84b0310c96 390 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 391
vikshin 0:3e84b0310c96 392 if(_parser->send("AT+AZSET=\"%s\",\"%s\",\"%s\"", iot_hub, device_id, sas_token) && _parser->recv("OK"))
vikshin 0:3e84b0310c96 393 {
vikshin 0:3e84b0310c96 394 pc.printf("Azure Set configuration : %s, %s, %s\r\n", iot_hub, device_id, sas_token);
vikshin 0:3e84b0310c96 395
vikshin 0:3e84b0310c96 396 ret = RET_OK;
vikshin 0:3e84b0310c96 397 }
vikshin 0:3e84b0310c96 398 else
vikshin 0:3e84b0310c96 399 {
vikshin 0:3e84b0310c96 400 pc.printf("Azure Set configuration : ERROR\r\n");
vikshin 0:3e84b0310c96 401 }
vikshin 0:3e84b0310c96 402
vikshin 0:3e84b0310c96 403 return ret;
vikshin 0:3e84b0310c96 404
vikshin 0:3e84b0310c96 405 }
vikshin 0:3e84b0310c96 406
vikshin 0:3e84b0310c96 407
vikshin 0:3e84b0310c96 408
vikshin 0:3e84b0310c96 409 int8_t deviceSetTopic_WizFi360(char *device_id)
vikshin 0:3e84b0310c96 410 {
vikshin 0:3e84b0310c96 411 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 412
vikshin 0:3e84b0310c96 413 if(_parser->send("AT+MQTTTOPIC=\"devices/%s/messages/events/\",\"devices/%s/messages/devicebound/#\"", device_id, device_id) && _parser->recv("OK"))
vikshin 0:3e84b0310c96 414 {
vikshin 0:3e84b0310c96 415 pc.printf("Set topic : %s\r\n", device_id);
vikshin 0:3e84b0310c96 416
vikshin 0:3e84b0310c96 417 ret = RET_OK;
vikshin 0:3e84b0310c96 418 }
vikshin 0:3e84b0310c96 419 else
vikshin 0:3e84b0310c96 420 {
vikshin 0:3e84b0310c96 421 pc.printf("Set topic : ERROR\r\n");
vikshin 0:3e84b0310c96 422 }
vikshin 0:3e84b0310c96 423
vikshin 0:3e84b0310c96 424 return ret;
vikshin 0:3e84b0310c96 425 }
vikshin 0:3e84b0310c96 426
vikshin 0:3e84b0310c96 427 int8_t deviceAzureCon_WizFi360()
vikshin 0:3e84b0310c96 428 {
vikshin 0:3e84b0310c96 429 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 430 bool done = false;
vikshin 0:3e84b0310c96 431 Timer t;
vikshin 0:3e84b0310c96 432
vikshin 0:3e84b0310c96 433 _parser->send("AT+AZCON");
vikshin 0:3e84b0310c96 434
vikshin 0:3e84b0310c96 435 t.start();
vikshin 0:3e84b0310c96 436
vikshin 0:3e84b0310c96 437 while(done != true)
vikshin 0:3e84b0310c96 438 {
vikshin 0:3e84b0310c96 439 done = (_parser->recv("CONNECT") && _parser->recv("OK"));
vikshin 0:3e84b0310c96 440
vikshin 0:3e84b0310c96 441 if(t.read_ms() >= (WIZFI360_DEFAULT_TIMEOUT * 3))
vikshin 0:3e84b0310c96 442 {
vikshin 0:3e84b0310c96 443 t.stop();
vikshin 0:3e84b0310c96 444 t.reset();
vikshin 0:3e84b0310c96 445
vikshin 0:3e84b0310c96 446 break;
vikshin 0:3e84b0310c96 447 }
vikshin 0:3e84b0310c96 448 }
vikshin 0:3e84b0310c96 449
vikshin 0:3e84b0310c96 450 if(done)
vikshin 0:3e84b0310c96 451 {
vikshin 0:3e84b0310c96 452 pc.printf("Connected to Azure successfully\r\n");
vikshin 0:3e84b0310c96 453
vikshin 0:3e84b0310c96 454 ret = RET_OK;
vikshin 0:3e84b0310c96 455 }
vikshin 0:3e84b0310c96 456 else
vikshin 0:3e84b0310c96 457 {
vikshin 0:3e84b0310c96 458 pc.printf("Connection to Azure failed: ERROR\r\n");
vikshin 0:3e84b0310c96 459 }
vikshin 0:3e84b0310c96 460
vikshin 0:3e84b0310c96 461 return ret;
vikshin 0:3e84b0310c96 462 }
vikshin 0:3e84b0310c96 463
vikshin 0:3e84b0310c96 464 int8_t devicePublishMsg_WizFi360(char *device_id, sensor *sensor_info)
vikshin 0:3e84b0310c96 465 {
vikshin 0:3e84b0310c96 466 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 467
vikshin 0:3e84b0310c96 468 if(_parser->send("AT+MQTTPUB=\"{\"deviceId\":\"%s\",\"temperature\":%d,\"humidity\":%d}\"",device_id, sensor_info->cel, sensor_info->hum))
vikshin 0:3e84b0310c96 469 {
vikshin 0:3e84b0310c96 470 pc.printf("Publish message : %d, %d\r\n", sensor_info->cel, sensor_info->hum);
vikshin 0:3e84b0310c96 471 }
vikshin 0:3e84b0310c96 472
vikshin 0:3e84b0310c96 473 return ret;
vikshin 0:3e84b0310c96 474 }