Viktor Shin
/
Mbed-Azure-Atcmd-WizFi360
Initial release
main.cpp@0:3e84b0310c96, 2020-02-13 (annotated)
- 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?
User | Revision | Line number | New 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 | } |