Initial release

Dependencies:   DHT11

Committer:
vikshin
Date:
Thu Feb 13 00:03:24 2020 +0000
Revision:
0:3e84b0310c96
Child:
1:0a30ef7e2613
Initial release;

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 /* MQTT */
vikshin 0:3e84b0310c96 62 #define MQTT_PORT 8883
vikshin 0:3e84b0310c96 63
vikshin 0:3e84b0310c96 64 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 65 // Variables
vikshin 0:3e84b0310c96 66 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 67 Serial pc(USBTX, USBRX);
vikshin 0:3e84b0310c96 68
vikshin 0:3e84b0310c96 69 UARTSerial *_serial;
vikshin 0:3e84b0310c96 70 ATCmdParser *_parser;
vikshin 0:3e84b0310c96 71
vikshin 0:3e84b0310c96 72 DigitalOut _RESET_WIZFI360(MBED_CONF_WIZFI360_RESET);
vikshin 0:3e84b0310c96 73 AnalogIn _cdsVal(MBED_CONF_WIZFI360_SENSOR_CDS);
vikshin 0:3e84b0310c96 74 Dht11 _dhtVal(MBED_CONF_WIZFI360_SENSOR_DHT);
vikshin 0:3e84b0310c96 75
vikshin 0:3e84b0310c96 76 /* Sensor info */
vikshin 0:3e84b0310c96 77 struct sensor
vikshin 0:3e84b0310c96 78 {
vikshin 0:3e84b0310c96 79 int ill; // illuminance
vikshin 0:3e84b0310c96 80 int cel; // celsius
vikshin 0:3e84b0310c96 81 float fah; // fahrenheit
vikshin 0:3e84b0310c96 82 int hum; // humidity
vikshin 0:3e84b0310c96 83 };
vikshin 0:3e84b0310c96 84
vikshin 0:3e84b0310c96 85 /* WiFi info */
vikshin 0:3e84b0310c96 86 char ssid[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
vikshin 0:3e84b0310c96 87 char password[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
vikshin 0:3e84b0310c96 88
vikshin 0:3e84b0310c96 89 /* MQTT info */
vikshin 0:3e84b0310c96 90 char hub_name[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
vikshin 0:3e84b0310c96 91 char device_id[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
vikshin 0:3e84b0310c96 92 char device_primary_key[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
vikshin 0:3e84b0310c96 93
vikshin 0:3e84b0310c96 94 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 95 // Functions
vikshin 0:3e84b0310c96 96 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 97 /* Util */
vikshin 0:3e84b0310c96 98 void delay(int ms);
vikshin 0:3e84b0310c96 99
vikshin 0:3e84b0310c96 100 /* Serial */
vikshin 0:3e84b0310c96 101 void serialPcInit(void);
vikshin 0:3e84b0310c96 102 void serialDeviceInit(PinName tx, PinName rx, int baudrate);
vikshin 0:3e84b0310c96 103 void serialAtParserInit(const char *delimiter, bool debug_en);
vikshin 0:3e84b0310c96 104
vikshin 0:3e84b0310c96 105 /* Device */
vikshin 0:3e84b0310c96 106 void deviceInit_WizFi360(void);
vikshin 0:3e84b0310c96 107 void deviceReset_WizFi360(void);
vikshin 0:3e84b0310c96 108 void deviceIsReady_WizFi360(void);
vikshin 0:3e84b0310c96 109
vikshin 0:3e84b0310c96 110 /* Sensor */
vikshin 0:3e84b0310c96 111 int deviceGetIllVal_WizFi360(void);
vikshin 0:3e84b0310c96 112 int deviceGetCelVal_WizFi360(void);
vikshin 0:3e84b0310c96 113 float deviceGetFahVal_WizFi360(void);
vikshin 0:3e84b0310c96 114 int deviceGetHumVal_WizFi360(void);
vikshin 0:3e84b0310c96 115
vikshin 0:3e84b0310c96 116 /* Wi-Fi */
vikshin 0:3e84b0310c96 117 int8_t deviceSetWifiMode_WizFi360(int mode);
vikshin 0:3e84b0310c96 118 int8_t deviceSetDhcp_WizFi360(int mode, int en_dhcp);
vikshin 0:3e84b0310c96 119 int8_t deviceConnAP_WizFi360(int mode, char *ssid, char *password);
vikshin 0:3e84b0310c96 120
vikshin 0:3e84b0310c96 121 /* MQTT */
vikshin 0:3e84b0310c96 122 int8_t deviceSetAzureConf_WizFi360(char *iot_hub, char *device_id, char *sas_token);
vikshin 0:3e84b0310c96 123 int8_t devicePublishMsg_WizFi360(char *device_id, sensor *sensor_info);
vikshin 0:3e84b0310c96 124 int8_t deviceAzureCon_WizFi360();
vikshin 0:3e84b0310c96 125 int8_t deviceSetTopic_WizFi360(char *device_id);
vikshin 0:3e84b0310c96 126
vikshin 0:3e84b0310c96 127
vikshin 0:3e84b0310c96 128 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 129 // Main
vikshin 0:3e84b0310c96 130 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 131 int main()
vikshin 0:3e84b0310c96 132 {
vikshin 0:3e84b0310c96 133 sensor sensor_info;
vikshin 0:3e84b0310c96 134
vikshin 0:3e84b0310c96 135 /* Set serial */
vikshin 0:3e84b0310c96 136 serialPcInit();
vikshin 0:3e84b0310c96 137
vikshin 0:3e84b0310c96 138 /* Set device */
vikshin 0:3e84b0310c96 139 deviceInit_WizFi360();
vikshin 0:3e84b0310c96 140 deviceReset_WizFi360();
vikshin 0:3e84b0310c96 141 deviceIsReady_WizFi360();
vikshin 0:3e84b0310c96 142
vikshin 0:3e84b0310c96 143 /* Set Wi-Fi */
vikshin 0:3e84b0310c96 144 deviceSetWifiMode_WizFi360(WIFI_MODE);
vikshin 0:3e84b0310c96 145 deviceSetDhcp_WizFi360(WIFI_MODE, ENABLE);
vikshin 0:3e84b0310c96 146 deviceConnAP_WizFi360(WIFI_MODE, ssid, password);
vikshin 0:3e84b0310c96 147
vikshin 0:3e84b0310c96 148 /* Set MQTT */
vikshin 0:3e84b0310c96 149
vikshin 0:3e84b0310c96 150 deviceSetAzureConf_WizFi360(hub_name,device_id,device_primary_key);
vikshin 0:3e84b0310c96 151 deviceSetTopic_WizFi360(device_id);
vikshin 0:3e84b0310c96 152 deviceAzureCon_WizFi360();
vikshin 0:3e84b0310c96 153
vikshin 0:3e84b0310c96 154 //deviceSetMqttConnConf_WizFi360(host_name, device_id, sas_token, alive_time);
vikshin 0:3e84b0310c96 155 //deviceSetTopic_WizFi360(device_id);
vikshin 0:3e84b0310c96 156 //deviceConnBroker_WizFi360(ENABLE, host_name, MQTT_PORT);
vikshin 0:3e84b0310c96 157
vikshin 0:3e84b0310c96 158 while(true)
vikshin 0:3e84b0310c96 159 {
vikshin 0:3e84b0310c96 160 /* Get sensor info */
vikshin 0:3e84b0310c96 161 sensor_info.ill = deviceGetIllVal_WizFi360();
vikshin 0:3e84b0310c96 162 sensor_info.cel = deviceGetCelVal_WizFi360();
vikshin 0:3e84b0310c96 163 sensor_info.fah = deviceGetFahVal_WizFi360();
vikshin 0:3e84b0310c96 164 sensor_info.hum = deviceGetHumVal_WizFi360();
vikshin 0:3e84b0310c96 165
vikshin 0:3e84b0310c96 166 /* Publish message */
vikshin 0:3e84b0310c96 167 devicePublishMsg_WizFi360(device_id, &sensor_info);
vikshin 0:3e84b0310c96 168
vikshin 0:3e84b0310c96 169 delay(3000);
vikshin 0:3e84b0310c96 170 }
vikshin 0:3e84b0310c96 171 }
vikshin 0:3e84b0310c96 172
vikshin 0:3e84b0310c96 173 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 174 // Functions : Util
vikshin 0:3e84b0310c96 175 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 176 void delay(int ms)
vikshin 0:3e84b0310c96 177 {
vikshin 0:3e84b0310c96 178 wait_us(ms * 1000);
vikshin 0:3e84b0310c96 179 }
vikshin 0:3e84b0310c96 180
vikshin 0:3e84b0310c96 181 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 182 // Functions : Serial
vikshin 0:3e84b0310c96 183 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 184 void serialPcInit(void)
vikshin 0:3e84b0310c96 185 {
vikshin 0:3e84b0310c96 186 pc.baud(115200);
vikshin 0:3e84b0310c96 187 pc.format(8, Serial::None, 1);
vikshin 0:3e84b0310c96 188 }
vikshin 0:3e84b0310c96 189
vikshin 0:3e84b0310c96 190 void serialDeviceInit(PinName tx, PinName rx, int baudrate)
vikshin 0:3e84b0310c96 191 {
vikshin 0:3e84b0310c96 192 _serial = new UARTSerial(tx, rx, baudrate);
vikshin 0:3e84b0310c96 193 }
vikshin 0:3e84b0310c96 194
vikshin 0:3e84b0310c96 195 void serialAtParserInit(const char *delimiter, bool debug_en)
vikshin 0:3e84b0310c96 196 {
vikshin 0:3e84b0310c96 197 _parser = new ATCmdParser(_serial);
vikshin 0:3e84b0310c96 198 _parser->debug_on(debug_en);
vikshin 0:3e84b0310c96 199 _parser->set_delimiter(delimiter);
vikshin 0:3e84b0310c96 200 _parser->set_timeout(WIZFI360_DEFAULT_TIMEOUT);
vikshin 0:3e84b0310c96 201 }
vikshin 0:3e84b0310c96 202
vikshin 0:3e84b0310c96 203 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 204 // Functions : Device
vikshin 0:3e84b0310c96 205 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 206 void deviceInit_WizFi360(void)
vikshin 0:3e84b0310c96 207 {
vikshin 0:3e84b0310c96 208 serialDeviceInit(MBED_CONF_WIZFI360_TX, MBED_CONF_WIZFI360_RX, WIZFI360_DEFAULT_BAUD_RATE);
vikshin 0:3e84b0310c96 209 serialAtParserInit(WIZFI360_PARSER_DELIMITER, WIZFI360_PARSER_DEBUG);
vikshin 0:3e84b0310c96 210 }
vikshin 0:3e84b0310c96 211
vikshin 0:3e84b0310c96 212 void deviceReset_WizFi360(void)
vikshin 0:3e84b0310c96 213 {
vikshin 0:3e84b0310c96 214 _RESET_WIZFI360 = 1;
vikshin 0:3e84b0310c96 215 delay(300);
vikshin 0:3e84b0310c96 216
vikshin 0:3e84b0310c96 217 _RESET_WIZFI360 = 0;
vikshin 0:3e84b0310c96 218 delay(400);
vikshin 0:3e84b0310c96 219
vikshin 0:3e84b0310c96 220 _RESET_WIZFI360 = 1;
vikshin 0:3e84b0310c96 221 delay(1000);
vikshin 0:3e84b0310c96 222 }
vikshin 0:3e84b0310c96 223
vikshin 0:3e84b0310c96 224 void deviceIsReady_WizFi360(void)
vikshin 0:3e84b0310c96 225 {
vikshin 0:3e84b0310c96 226 while(1)
vikshin 0:3e84b0310c96 227 {
vikshin 0:3e84b0310c96 228 if(_parser->recv("ready"))
vikshin 0:3e84b0310c96 229 {
vikshin 0:3e84b0310c96 230 pc.printf("WizFi360 is available\r\n");
vikshin 0:3e84b0310c96 231
vikshin 0:3e84b0310c96 232 return;
vikshin 0:3e84b0310c96 233 }
vikshin 0:3e84b0310c96 234 else if(_parser->send("AT") && _parser->recv("OK"))
vikshin 0:3e84b0310c96 235 {
vikshin 0:3e84b0310c96 236 pc.printf("WizFi360 is already available\r\n");
vikshin 0:3e84b0310c96 237
vikshin 0:3e84b0310c96 238 return;
vikshin 0:3e84b0310c96 239 }
vikshin 0:3e84b0310c96 240 else
vikshin 0:3e84b0310c96 241 {
vikshin 0:3e84b0310c96 242 pc.printf("WizFi360 is not available\r\n");
vikshin 0:3e84b0310c96 243
vikshin 0:3e84b0310c96 244 return;
vikshin 0:3e84b0310c96 245 }
vikshin 0:3e84b0310c96 246 }
vikshin 0:3e84b0310c96 247 }
vikshin 0:3e84b0310c96 248
vikshin 0:3e84b0310c96 249 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 250 // Functions : Sensor
vikshin 0:3e84b0310c96 251 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 252 /* illuminance */
vikshin 0:3e84b0310c96 253 int deviceGetIllVal_WizFi360(void)
vikshin 0:3e84b0310c96 254 {
vikshin 0:3e84b0310c96 255 int val = _cdsVal.read_u16() / 100;
vikshin 0:3e84b0310c96 256
vikshin 0:3e84b0310c96 257 return val;
vikshin 0:3e84b0310c96 258 }
vikshin 0:3e84b0310c96 259
vikshin 0:3e84b0310c96 260 /* celsius */
vikshin 0:3e84b0310c96 261 int deviceGetCelVal_WizFi360(void)
vikshin 0:3e84b0310c96 262 {
vikshin 0:3e84b0310c96 263 _dhtVal.read();
vikshin 0:3e84b0310c96 264
vikshin 0:3e84b0310c96 265 int val = _dhtVal.getCelsius();
vikshin 0:3e84b0310c96 266
vikshin 0:3e84b0310c96 267 return val;
vikshin 0:3e84b0310c96 268 }
vikshin 0:3e84b0310c96 269
vikshin 0:3e84b0310c96 270 /* fahrenheit */
vikshin 0:3e84b0310c96 271 float deviceGetFahVal_WizFi360(void)
vikshin 0:3e84b0310c96 272 {
vikshin 0:3e84b0310c96 273 _dhtVal.read();
vikshin 0:3e84b0310c96 274
vikshin 0:3e84b0310c96 275 int val = _dhtVal.getFahrenheit();
vikshin 0:3e84b0310c96 276
vikshin 0:3e84b0310c96 277 return val;
vikshin 0:3e84b0310c96 278 }
vikshin 0:3e84b0310c96 279
vikshin 0:3e84b0310c96 280 /* humidity */
vikshin 0:3e84b0310c96 281 int deviceGetHumVal_WizFi360(void)
vikshin 0:3e84b0310c96 282 {
vikshin 0:3e84b0310c96 283 _dhtVal.read();
vikshin 0:3e84b0310c96 284
vikshin 0:3e84b0310c96 285 int val = _dhtVal.getHumidity();
vikshin 0:3e84b0310c96 286
vikshin 0:3e84b0310c96 287 return val;
vikshin 0:3e84b0310c96 288 }
vikshin 0:3e84b0310c96 289
vikshin 0:3e84b0310c96 290 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 291 // Functions : Wi-Fi
vikshin 0:3e84b0310c96 292 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 293 int8_t deviceSetWifiMode_WizFi360(int mode)
vikshin 0:3e84b0310c96 294 {
vikshin 0:3e84b0310c96 295 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 296
vikshin 0:3e84b0310c96 297 if(_parser->send("AT+CWMODE_CUR=%d", mode) && _parser->recv("OK"))
vikshin 0:3e84b0310c96 298 {
vikshin 0:3e84b0310c96 299 pc.printf("Set Wi-Fi mode : %d\r\n", mode);
vikshin 0:3e84b0310c96 300
vikshin 0:3e84b0310c96 301 ret = RET_OK;
vikshin 0:3e84b0310c96 302 }
vikshin 0:3e84b0310c96 303 else
vikshin 0:3e84b0310c96 304 {
vikshin 0:3e84b0310c96 305 pc.printf("Set Wi-Fi mode : ERROR\r\n");
vikshin 0:3e84b0310c96 306 }
vikshin 0:3e84b0310c96 307
vikshin 0:3e84b0310c96 308 return ret;
vikshin 0:3e84b0310c96 309 }
vikshin 0:3e84b0310c96 310
vikshin 0:3e84b0310c96 311 int8_t deviceSetDhcp_WizFi360(int mode, int en_dhcp)
vikshin 0:3e84b0310c96 312 {
vikshin 0:3e84b0310c96 313 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 314 int mode_dhcp;
vikshin 0:3e84b0310c96 315
vikshin 0:3e84b0310c96 316 if(mode == STATION)
vikshin 0:3e84b0310c96 317 {
vikshin 0:3e84b0310c96 318 mode_dhcp = 1;
vikshin 0:3e84b0310c96 319 }
vikshin 0:3e84b0310c96 320 else if(mode == SOFTAP)
vikshin 0:3e84b0310c96 321 {
vikshin 0:3e84b0310c96 322 mode_dhcp = 0;
vikshin 0:3e84b0310c96 323 }
vikshin 0:3e84b0310c96 324 else if(mode == STATION_SOFTAP)
vikshin 0:3e84b0310c96 325 {
vikshin 0:3e84b0310c96 326 mode_dhcp = 2;
vikshin 0:3e84b0310c96 327 }
vikshin 0:3e84b0310c96 328 else
vikshin 0:3e84b0310c96 329 {
vikshin 0:3e84b0310c96 330 pc.printf("Set DHCP : ERROR\r\n");
vikshin 0:3e84b0310c96 331 }
vikshin 0:3e84b0310c96 332
vikshin 0:3e84b0310c96 333 if(_parser->send("AT+CWDHCP_CUR=%d,%d", mode_dhcp, en_dhcp) && _parser->recv("OK"))
vikshin 0:3e84b0310c96 334 {
vikshin 0:3e84b0310c96 335 pc.printf("Set DHCP : %d, %d\r\n", mode_dhcp, en_dhcp);
vikshin 0:3e84b0310c96 336
vikshin 0:3e84b0310c96 337 ret = RET_OK;
vikshin 0:3e84b0310c96 338 }
vikshin 0:3e84b0310c96 339 else
vikshin 0:3e84b0310c96 340 {
vikshin 0:3e84b0310c96 341 pc.printf("Set DHCP : ERROR\r\n");
vikshin 0:3e84b0310c96 342 }
vikshin 0:3e84b0310c96 343
vikshin 0:3e84b0310c96 344 return ret;
vikshin 0:3e84b0310c96 345 }
vikshin 0:3e84b0310c96 346
vikshin 0:3e84b0310c96 347 int8_t deviceConnAP_WizFi360(int mode, char *ssid, char *password)
vikshin 0:3e84b0310c96 348 {
vikshin 0:3e84b0310c96 349 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 350 bool done = false;
vikshin 0:3e84b0310c96 351 Timer t;
vikshin 0:3e84b0310c96 352
vikshin 0:3e84b0310c96 353 if((mode == STATION) || (mode == STATION_SOFTAP))
vikshin 0:3e84b0310c96 354 {
vikshin 0:3e84b0310c96 355 _parser->send("AT+CWJAP_CUR=\"%s\",\"%s\"", ssid ,password);
vikshin 0:3e84b0310c96 356
vikshin 0:3e84b0310c96 357 t.start();
vikshin 0:3e84b0310c96 358
vikshin 0:3e84b0310c96 359 while(done != true)
vikshin 0:3e84b0310c96 360 {
vikshin 0:3e84b0310c96 361 done = (_parser->recv("WIFI CONNECTED") && _parser->recv("WIFI GOT IP") && _parser->recv("OK"));
vikshin 0:3e84b0310c96 362
vikshin 0:3e84b0310c96 363 if(t.read_ms() >= (WIZFI360_DEFAULT_TIMEOUT * 20))
vikshin 0:3e84b0310c96 364 {
vikshin 0:3e84b0310c96 365 t.stop();
vikshin 0:3e84b0310c96 366 t.reset();
vikshin 0:3e84b0310c96 367
vikshin 0:3e84b0310c96 368 break;
vikshin 0:3e84b0310c96 369 }
vikshin 0:3e84b0310c96 370 }
vikshin 0:3e84b0310c96 371
vikshin 0:3e84b0310c96 372 if(done)
vikshin 0:3e84b0310c96 373 {
vikshin 0:3e84b0310c96 374 pc.printf("Connect AP : %s, %s\r\n", ssid, password);
vikshin 0:3e84b0310c96 375
vikshin 0:3e84b0310c96 376 ret = RET_OK;
vikshin 0:3e84b0310c96 377 }
vikshin 0:3e84b0310c96 378 else
vikshin 0:3e84b0310c96 379 {
vikshin 0:3e84b0310c96 380 pc.printf("Connect AP : ERROR\r\n");
vikshin 0:3e84b0310c96 381 }
vikshin 0:3e84b0310c96 382 }
vikshin 0:3e84b0310c96 383 else
vikshin 0:3e84b0310c96 384 {
vikshin 0:3e84b0310c96 385 pc.printf("Connect AP : ERROR\r\n");
vikshin 0:3e84b0310c96 386 }
vikshin 0:3e84b0310c96 387
vikshin 0:3e84b0310c96 388 return ret;
vikshin 0:3e84b0310c96 389 }
vikshin 0:3e84b0310c96 390
vikshin 0:3e84b0310c96 391 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 392 // Functions : MQTT
vikshin 0:3e84b0310c96 393 // ----------------------------------------------------------------------------------------------------
vikshin 0:3e84b0310c96 394
vikshin 0:3e84b0310c96 395 int8_t deviceSetAzureConf_WizFi360(char *iot_hub, char *device_id, char *sas_token)
vikshin 0:3e84b0310c96 396 {
vikshin 0:3e84b0310c96 397 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 398
vikshin 0:3e84b0310c96 399 if(_parser->send("AT+AZSET=\"%s\",\"%s\",\"%s\"", iot_hub, device_id, sas_token) && _parser->recv("OK"))
vikshin 0:3e84b0310c96 400 {
vikshin 0:3e84b0310c96 401 pc.printf("Azure Set configuration : %s, %s, %s\r\n", iot_hub, device_id, sas_token);
vikshin 0:3e84b0310c96 402
vikshin 0:3e84b0310c96 403 ret = RET_OK;
vikshin 0:3e84b0310c96 404 }
vikshin 0:3e84b0310c96 405 else
vikshin 0:3e84b0310c96 406 {
vikshin 0:3e84b0310c96 407 pc.printf("Azure Set configuration : ERROR\r\n");
vikshin 0:3e84b0310c96 408 }
vikshin 0:3e84b0310c96 409
vikshin 0:3e84b0310c96 410 return ret;
vikshin 0:3e84b0310c96 411
vikshin 0:3e84b0310c96 412 }
vikshin 0:3e84b0310c96 413
vikshin 0:3e84b0310c96 414
vikshin 0:3e84b0310c96 415
vikshin 0:3e84b0310c96 416 int8_t deviceSetTopic_WizFi360(char *device_id)
vikshin 0:3e84b0310c96 417 {
vikshin 0:3e84b0310c96 418 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 419
vikshin 0:3e84b0310c96 420 if(_parser->send("AT+MQTTTOPIC=\"devices/%s/messages/events/\",\"devices/%s/messages/devicebound/#\"", device_id, device_id) && _parser->recv("OK"))
vikshin 0:3e84b0310c96 421 {
vikshin 0:3e84b0310c96 422 pc.printf("Set topic : %s\r\n", device_id);
vikshin 0:3e84b0310c96 423
vikshin 0:3e84b0310c96 424 ret = RET_OK;
vikshin 0:3e84b0310c96 425 }
vikshin 0:3e84b0310c96 426 else
vikshin 0:3e84b0310c96 427 {
vikshin 0:3e84b0310c96 428 pc.printf("Set topic : ERROR\r\n");
vikshin 0:3e84b0310c96 429 }
vikshin 0:3e84b0310c96 430
vikshin 0:3e84b0310c96 431 return ret;
vikshin 0:3e84b0310c96 432 }
vikshin 0:3e84b0310c96 433
vikshin 0:3e84b0310c96 434 int8_t deviceAzureCon_WizFi360()
vikshin 0:3e84b0310c96 435 {
vikshin 0:3e84b0310c96 436 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 437 bool done = false;
vikshin 0:3e84b0310c96 438 Timer t;
vikshin 0:3e84b0310c96 439
vikshin 0:3e84b0310c96 440 _parser->send("AT+AZCON");
vikshin 0:3e84b0310c96 441
vikshin 0:3e84b0310c96 442 t.start();
vikshin 0:3e84b0310c96 443
vikshin 0:3e84b0310c96 444 while(done != true)
vikshin 0:3e84b0310c96 445 {
vikshin 0:3e84b0310c96 446 done = (_parser->recv("CONNECT") && _parser->recv("OK"));
vikshin 0:3e84b0310c96 447
vikshin 0:3e84b0310c96 448 if(t.read_ms() >= (WIZFI360_DEFAULT_TIMEOUT * 3))
vikshin 0:3e84b0310c96 449 {
vikshin 0:3e84b0310c96 450 t.stop();
vikshin 0:3e84b0310c96 451 t.reset();
vikshin 0:3e84b0310c96 452
vikshin 0:3e84b0310c96 453 break;
vikshin 0:3e84b0310c96 454 }
vikshin 0:3e84b0310c96 455 }
vikshin 0:3e84b0310c96 456
vikshin 0:3e84b0310c96 457 if(done)
vikshin 0:3e84b0310c96 458 {
vikshin 0:3e84b0310c96 459 pc.printf("Connected to Azure successfully\r\n");
vikshin 0:3e84b0310c96 460
vikshin 0:3e84b0310c96 461 ret = RET_OK;
vikshin 0:3e84b0310c96 462 }
vikshin 0:3e84b0310c96 463 else
vikshin 0:3e84b0310c96 464 {
vikshin 0:3e84b0310c96 465 pc.printf("Connection to Azure failed: ERROR\r\n");
vikshin 0:3e84b0310c96 466 }
vikshin 0:3e84b0310c96 467
vikshin 0:3e84b0310c96 468 return ret;
vikshin 0:3e84b0310c96 469 }
vikshin 0:3e84b0310c96 470
vikshin 0:3e84b0310c96 471 int8_t devicePublishMsg_WizFi360(char *device_id, sensor *sensor_info)
vikshin 0:3e84b0310c96 472 {
vikshin 0:3e84b0310c96 473 int8_t ret = RET_NOK;
vikshin 0:3e84b0310c96 474
vikshin 0:3e84b0310c96 475 if(_parser->send("AT+MQTTPUB=\"{\"deviceId\":\"%s\",\"temperature\":%d,\"humidity\":%d}\"",device_id, sensor_info->cel, sensor_info->hum))
vikshin 0:3e84b0310c96 476 {
vikshin 0:3e84b0310c96 477 pc.printf("Publish message : %d, %d\r\n", sensor_info->cel, sensor_info->hum);
vikshin 0:3e84b0310c96 478 }
vikshin 0:3e84b0310c96 479
vikshin 0:3e84b0310c96 480 return ret;
vikshin 0:3e84b0310c96 481 }