Praca inz. Mechatronika

Dependencies:   Cayenne-MQTT-mbed mbed X_NUCLEO_IDW01M1v2 NetworkSocketAPI

Committer:
pakito
Date:
Mon Feb 01 10:23:53 2021 +0000
Revision:
9:ac39920339f5
Parent:
8:d37ceed0cf58
Mechatronika K11

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jburhenn 0:d20655cd1f3c 1 /**
jburhenn 0:d20655cd1f3c 2 * Example app for using the Cayenne MQTT C++ library to send and receive example data. This example uses
jburhenn 0:d20655cd1f3c 3 * the X-NUCLEO-IDW01M1 WiFi expansion board via the X_NUCLEO_IDW01M1v2 library.
jburhenn 0:d20655cd1f3c 4 */
jburhenn 0:d20655cd1f3c 5
jburhenn 0:d20655cd1f3c 6 #include "MQTTTimer.h"
jburhenn 0:d20655cd1f3c 7 #include "CayenneMQTTClient.h"
jburhenn 0:d20655cd1f3c 8 #include "MQTTNetworkIDW01M1.h"
jburhenn 0:d20655cd1f3c 9 #include "SpwfInterface.h"
jburhenn 0:d20655cd1f3c 10
jburhenn 0:d20655cd1f3c 11 // WiFi network info.
pakito 9:ac39920339f5 12 char* ssid = "TP-LINK_9E4F";
pakito 9:ac39920339f5 13 char* wifiPassword = "81379101";
jburhenn 0:d20655cd1f3c 14
jburhenn 0:d20655cd1f3c 15 // Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
pakito 9:ac39920339f5 16 char* username = "b07cc1e0-6466-11eb-8779-7d56e82df461";
pakito 9:ac39920339f5 17 char* password = "ff7ea6d1ba46ada50b48d8b414e97877977f639e";
pakito 9:ac39920339f5 18 char* clientID = "d0c83450-6468-11eb-b767-3f1a8f1211ba";
jburhenn 0:d20655cd1f3c 19
jburhenn 0:d20655cd1f3c 20 SpwfSAInterface interface(D8, D2); // TX, RX
jburhenn 0:d20655cd1f3c 21 MQTTNetwork<SpwfSAInterface> network(interface);
jburhenn 2:445f09de09bd 22 CayenneMQTT::MQTTClient<MQTTNetwork<SpwfSAInterface>, MQTTTimer> mqttClient(network, username, password, clientID);
jburhenn 0:d20655cd1f3c 23
pakito 9:ac39920339f5 24 DigitalOut alarm(PH_0); // P21 sterowanie alarmem
pakito 8:d37ceed0cf58 25 DigitalIn drzwi1(PC_10); // P56 Drzwi wejściowe
pakito 8:d37ceed0cf58 26 DigitalIn drzwi2(PC_11); // P57 Drzwi balkonowe
pakito 8:d37ceed0cf58 27
pakito 8:d37ceed0cf58 28 DigitalOut str1(PC_7); // P48 SterowanieIn1
pakito 8:d37ceed0cf58 29 DigitalOut str2(PA_7); // P49 SterowanieIn2
pakito 8:d37ceed0cf58 30 DigitalOut str3(PA_6); // P50 SterowanieIn3
pakito 8:d37ceed0cf58 31 DigitalOut str4(PA_5); // P51 SterowanieIn4
pakito 8:d37ceed0cf58 32
pakito 8:d37ceed0cf58 33 DigitalOut swt1(PB_5); // P43 SwiatloIn1
pakito 8:d37ceed0cf58 34 DigitalOut swt2(PB_4); // P44 SwiatloIn2
pakito 8:d37ceed0cf58 35 DigitalOut swt3(PB_10); // P45 SwiatloIn3
pakito 8:d37ceed0cf58 36 DigitalOut swt4(PA_8); // P46 SwiatloIn3
pakito 8:d37ceed0cf58 37
pakito 8:d37ceed0cf58 38 DigitalIn okno1(PC_9); // P34 okno1
pakito 8:d37ceed0cf58 39 DigitalIn okno2(PC_6); // P35 okno2
pakito 8:d37ceed0cf58 40 DigitalIn okno3(PB_2); // P36 okno3
pakito 8:d37ceed0cf58 41 DigitalIn okno4(PB_1); // P37 okno4
pakito 8:d37ceed0cf58 42
pakito 8:d37ceed0cf58 43 DigitalIn czjn1(PC_1); // P39 czujnik1
pakito 8:d37ceed0cf58 44 DigitalIn czjn2(PC_2); // P40 czujnik2
pakito 8:d37ceed0cf58 45 DigitalIn czjn3(PC_3); // P41 czujnik3
pakito 8:d37ceed0cf58 46 DigitalIn czjn4(PC_0); // P42 czujnik4
jburhenn 1:a2d8aec2bb92 47
jburhenn 0:d20655cd1f3c 48 /**
jburhenn 0:d20655cd1f3c 49 * Print the message info.
jburhenn 0:d20655cd1f3c 50 * @param[in] message The message received from the Cayenne server.
jburhenn 0:d20655cd1f3c 51 */
jburhenn 2:445f09de09bd 52 void outputMessage(CayenneMQTT::MessageData& message)
jburhenn 0:d20655cd1f3c 53 {
jburhenn 0:d20655cd1f3c 54 switch (message.topic) {
jburhenn 0:d20655cd1f3c 55 case COMMAND_TOPIC:
jburhenn 0:d20655cd1f3c 56 printf("topic=Command");
jburhenn 0:d20655cd1f3c 57 break;
jburhenn 0:d20655cd1f3c 58 case CONFIG_TOPIC:
jburhenn 0:d20655cd1f3c 59 printf("topic=Config");
jburhenn 0:d20655cd1f3c 60 break;
jburhenn 0:d20655cd1f3c 61 default:
jburhenn 0:d20655cd1f3c 62 printf("topic=%d", message.topic);
jburhenn 0:d20655cd1f3c 63 break;
jburhenn 0:d20655cd1f3c 64 }
jburhenn 0:d20655cd1f3c 65 printf(" channel=%d", message.channel);
jburhenn 0:d20655cd1f3c 66 if (message.clientID) {
jburhenn 0:d20655cd1f3c 67 printf(" clientID=%s", message.clientID);
jburhenn 0:d20655cd1f3c 68 }
jburhenn 0:d20655cd1f3c 69 if (message.type) {
jburhenn 0:d20655cd1f3c 70 printf(" type=%s", message.type);
jburhenn 0:d20655cd1f3c 71 }
jburhenn 0:d20655cd1f3c 72 for (size_t i = 0; i < message.valueCount; ++i) {
jburhenn 2:445f09de09bd 73 if (message.getValue(i)) {
jburhenn 2:445f09de09bd 74 printf(" value=%s", message.getValue(i));
jburhenn 0:d20655cd1f3c 75 }
jburhenn 2:445f09de09bd 76 if (message.getUnit(i)) {
jburhenn 2:445f09de09bd 77 printf(" unit=%s", message.getUnit(i));
jburhenn 0:d20655cd1f3c 78 }
jburhenn 0:d20655cd1f3c 79 }
jburhenn 0:d20655cd1f3c 80 if (message.id) {
jburhenn 0:d20655cd1f3c 81 printf(" id=%s", message.id);
jburhenn 0:d20655cd1f3c 82 }
jburhenn 0:d20655cd1f3c 83 printf("\n");
jburhenn 0:d20655cd1f3c 84 }
jburhenn 0:d20655cd1f3c 85
jburhenn 0:d20655cd1f3c 86 /**
jburhenn 0:d20655cd1f3c 87 * Handle messages received from the Cayenne server.
pakito 8:d37ceed0cf58 88 * @param[in] message The message received from the Cayenne server. */
pakito 8:d37ceed0cf58 89
jburhenn 2:445f09de09bd 90 void messageArrived(CayenneMQTT::MessageData& message)
jburhenn 0:d20655cd1f3c 91 {
jburhenn 0:d20655cd1f3c 92 int error = 0;
jburhenn 0:d20655cd1f3c 93 outputMessage(message);
jburhenn 0:d20655cd1f3c 94
jburhenn 1:a2d8aec2bb92 95 if (message.topic == COMMAND_TOPIC) {
jburhenn 1:a2d8aec2bb92 96 switch(message.channel) {
pakito 8:d37ceed0cf58 97 case 0: // wirtualny kanał nr 0
pakito 8:d37ceed0cf58 98 alarm = atoi(message.getValue());
pakito 8:d37ceed0cf58 99 if ((error = mqttClient.publishData(DATA_TOPIC, message.channel, NULL, NULL, message.getValue())) != CAYENNE_SUCCESS) {
pakito 8:d37ceed0cf58 100 printf("Publish LED state failure, error: %d\n", error);
pakito 8:d37ceed0cf58 101 }
pakito 8:d37ceed0cf58 102 break;
pakito 8:d37ceed0cf58 103
pakito 8:d37ceed0cf58 104 case 3: // wirtualny kanał nr 3
pakito 8:d37ceed0cf58 105 str1 = atoi(message.getValue());
pakito 8:d37ceed0cf58 106 if ((error = mqttClient.publishData(DATA_TOPIC, message.channel, NULL, NULL, message.getValue())) != CAYENNE_SUCCESS) {
pakito 8:d37ceed0cf58 107 printf("Publish LED state failure, error: %d\n", error);
pakito 8:d37ceed0cf58 108 }
pakito 8:d37ceed0cf58 109 break;
pakito 8:d37ceed0cf58 110
pakito 8:d37ceed0cf58 111 case 6:
pakito 8:d37ceed0cf58 112 // Set the onboard LED state
pakito 8:d37ceed0cf58 113 str2 = atoi(message.getValue());
pakito 8:d37ceed0cf58 114 // Publish the updated LED state
pakito 8:d37ceed0cf58 115 if ((error = mqttClient.publishData(DATA_TOPIC, message.channel, NULL, NULL, message.getValue())) != CAYENNE_SUCCESS) {
pakito 8:d37ceed0cf58 116 printf("Publish LED state failure, error: %d\n", error);
pakito 8:d37ceed0cf58 117 }
pakito 8:d37ceed0cf58 118 break;
pakito 8:d37ceed0cf58 119
pakito 8:d37ceed0cf58 120 case 9:
pakito 8:d37ceed0cf58 121 // Set the onboard LED state
pakito 8:d37ceed0cf58 122 str3 = atoi(message.getValue());
pakito 8:d37ceed0cf58 123 // Publish the updated LED state
pakito 8:d37ceed0cf58 124 if ((error = mqttClient.publishData(DATA_TOPIC, message.channel, NULL, NULL, message.getValue())) != CAYENNE_SUCCESS) {
pakito 8:d37ceed0cf58 125 printf("Publish LED state failure, error: %d\n", error);
pakito 8:d37ceed0cf58 126 }
pakito 8:d37ceed0cf58 127 break;
pakito 8:d37ceed0cf58 128
pakito 8:d37ceed0cf58 129 case 12:
jburhenn 1:a2d8aec2bb92 130 // Set the onboard LED state
pakito 8:d37ceed0cf58 131 str4 = atoi(message.getValue());
pakito 8:d37ceed0cf58 132 // Publish the updated LED state
pakito 8:d37ceed0cf58 133 if ((error = mqttClient.publishData(DATA_TOPIC, message.channel, NULL, NULL, message.getValue())) != CAYENNE_SUCCESS) {
pakito 8:d37ceed0cf58 134 printf("Publish LED state failure, error: %d\n", error);
pakito 8:d37ceed0cf58 135 }
pakito 8:d37ceed0cf58 136 break;
pakito 8:d37ceed0cf58 137
pakito 8:d37ceed0cf58 138 case 15:
pakito 8:d37ceed0cf58 139 // Set the onboard LED state
pakito 8:d37ceed0cf58 140 swt1 = atoi(message.getValue());
pakito 8:d37ceed0cf58 141 // Publish the updated LED state
pakito 8:d37ceed0cf58 142 if ((error = mqttClient.publishData(DATA_TOPIC, message.channel, NULL, NULL, message.getValue())) != CAYENNE_SUCCESS) {
pakito 8:d37ceed0cf58 143 printf("Publish LED state failure, error: %d\n", error);
pakito 8:d37ceed0cf58 144 }
pakito 8:d37ceed0cf58 145 break;
pakito 8:d37ceed0cf58 146
pakito 8:d37ceed0cf58 147 case 16:
pakito 8:d37ceed0cf58 148 // Set the onboard LED state
pakito 8:d37ceed0cf58 149 swt2 = atoi(message.getValue());
pakito 8:d37ceed0cf58 150 // Publish the updated LED state
pakito 8:d37ceed0cf58 151 if ((error = mqttClient.publishData(DATA_TOPIC, message.channel, NULL, NULL, message.getValue())) != CAYENNE_SUCCESS) {
pakito 8:d37ceed0cf58 152 printf("Publish LED state failure, error: %d\n", error);
pakito 8:d37ceed0cf58 153 }
pakito 8:d37ceed0cf58 154 break;
pakito 8:d37ceed0cf58 155
pakito 8:d37ceed0cf58 156 case 17:
pakito 8:d37ceed0cf58 157 // Set the onboard LED state
pakito 8:d37ceed0cf58 158 swt3 = atoi(message.getValue());
pakito 8:d37ceed0cf58 159 // Publish the updated LED state
pakito 8:d37ceed0cf58 160 if ((error = mqttClient.publishData(DATA_TOPIC, message.channel, NULL, NULL, message.getValue())) != CAYENNE_SUCCESS) {
pakito 8:d37ceed0cf58 161 printf("Publish LED state failure, error: %d\n", error);
pakito 8:d37ceed0cf58 162 }
pakito 8:d37ceed0cf58 163 break;
pakito 8:d37ceed0cf58 164
pakito 8:d37ceed0cf58 165 case 18:
pakito 8:d37ceed0cf58 166 // Set the onboard LED state
pakito 8:d37ceed0cf58 167 swt4 = atoi(message.getValue());
jburhenn 1:a2d8aec2bb92 168 // Publish the updated LED state
jburhenn 2:445f09de09bd 169 if ((error = mqttClient.publishData(DATA_TOPIC, message.channel, NULL, NULL, message.getValue())) != CAYENNE_SUCCESS) {
jburhenn 1:a2d8aec2bb92 170 printf("Publish LED state failure, error: %d\n", error);
jburhenn 1:a2d8aec2bb92 171 }
jburhenn 1:a2d8aec2bb92 172 break;
jburhenn 1:a2d8aec2bb92 173 }
jburhenn 1:a2d8aec2bb92 174
jburhenn 1:a2d8aec2bb92 175 // If this is a command message we publish a response. Here we are just sending a default 'OK' response.
jburhenn 1:a2d8aec2bb92 176 // An error response should be sent if there are issues processing the message.
jburhenn 4:939f308d004a 177 if ((error = mqttClient.publishResponse(message.id, NULL, message.clientID)) != CAYENNE_SUCCESS) {
jburhenn 1:a2d8aec2bb92 178 printf("Response failure, error: %d\n", error);
jburhenn 1:a2d8aec2bb92 179 }
jburhenn 0:d20655cd1f3c 180 }
jburhenn 0:d20655cd1f3c 181 }
jburhenn 0:d20655cd1f3c 182
jburhenn 0:d20655cd1f3c 183 /**
jburhenn 0:d20655cd1f3c 184 * Connect to the Cayenne server.
jburhenn 0:d20655cd1f3c 185 * @return Returns CAYENNE_SUCCESS if the connection succeeds, or an error code otherwise.
jburhenn 0:d20655cd1f3c 186 */
jburhenn 0:d20655cd1f3c 187 int connectClient(void)
jburhenn 0:d20655cd1f3c 188 {
jburhenn 0:d20655cd1f3c 189 int error = 0;
jburhenn 0:d20655cd1f3c 190 // Connect to the server.
jburhenn 0:d20655cd1f3c 191 printf("Connecting to %s:%d\n", CAYENNE_DOMAIN, CAYENNE_PORT);
jburhenn 0:d20655cd1f3c 192 while ((error = network.connect(CAYENNE_DOMAIN, CAYENNE_PORT)) != 0) {
jburhenn 0:d20655cd1f3c 193 printf("TCP connect failed, error: %d\n", error);
jburhenn 0:d20655cd1f3c 194 wait(2);
jburhenn 0:d20655cd1f3c 195 }
jburhenn 0:d20655cd1f3c 196
jburhenn 2:445f09de09bd 197 if ((error = mqttClient.connect()) != MQTT::SUCCESS) {
jburhenn 0:d20655cd1f3c 198 printf("MQTT connect failed, error: %d\n", error);
jburhenn 0:d20655cd1f3c 199 return error;
jburhenn 0:d20655cd1f3c 200 }
jburhenn 0:d20655cd1f3c 201 printf("Connected\n");
jburhenn 0:d20655cd1f3c 202
jburhenn 0:d20655cd1f3c 203 // Subscribe to required topics.
jburhenn 0:d20655cd1f3c 204 if ((error = mqttClient.subscribe(COMMAND_TOPIC, CAYENNE_ALL_CHANNELS)) != CAYENNE_SUCCESS) {
jburhenn 0:d20655cd1f3c 205 printf("Subscription to Command topic failed, error: %d\n", error);
jburhenn 0:d20655cd1f3c 206 }
jburhenn 0:d20655cd1f3c 207 if ((error = mqttClient.subscribe(CONFIG_TOPIC, CAYENNE_ALL_CHANNELS)) != CAYENNE_SUCCESS) {
jburhenn 0:d20655cd1f3c 208 printf("Subscription to Config topic failed, error:%d\n", error);
jburhenn 0:d20655cd1f3c 209 }
jburhenn 0:d20655cd1f3c 210
jburhenn 0:d20655cd1f3c 211 // Send device info. Here we just send some example values for the system info. These should be changed to use actual system data, or removed if not needed.
jburhenn 0:d20655cd1f3c 212 mqttClient.publishData(SYS_VERSION_TOPIC, CAYENNE_NO_CHANNEL, NULL, NULL, CAYENNE_VERSION);
jburhenn 0:d20655cd1f3c 213 mqttClient.publishData(SYS_MODEL_TOPIC, CAYENNE_NO_CHANNEL, NULL, NULL, "mbedDevice");
jburhenn 2:445f09de09bd 214 //mqttClient.publishData(SYS_CPU_MODEL_TOPIC, CAYENNE_NO_CHANNEL, NULL, NULL, "CPU Model");
jburhenn 2:445f09de09bd 215 //mqttClient.publishData(SYS_CPU_SPEED_TOPIC, CAYENNE_NO_CHANNEL, NULL, NULL, "1000000000");
jburhenn 0:d20655cd1f3c 216
jburhenn 0:d20655cd1f3c 217 return CAYENNE_SUCCESS;
jburhenn 0:d20655cd1f3c 218 }
jburhenn 0:d20655cd1f3c 219
jburhenn 0:d20655cd1f3c 220 /**
jburhenn 0:d20655cd1f3c 221 * Main loop where MQTT code is run.
jburhenn 0:d20655cd1f3c 222 */
jburhenn 0:d20655cd1f3c 223 void loop(void)
jburhenn 0:d20655cd1f3c 224 {
jburhenn 7:78cefe0937ab 225 // Start the countdown timer for publishing data every 5 seconds. Change the timeout parameter to publish at a different interval.
pakito 8:d37ceed0cf58 226 MQTTTimer timer(2000);
jburhenn 0:d20655cd1f3c 227
jburhenn 0:d20655cd1f3c 228 while (true) {
jburhenn 0:d20655cd1f3c 229 // Yield to allow MQTT message processing.
jburhenn 0:d20655cd1f3c 230 mqttClient.yield(1000);
jburhenn 0:d20655cd1f3c 231
jburhenn 0:d20655cd1f3c 232 // Check that we are still connected, if not, reconnect.
jburhenn 0:d20655cd1f3c 233 if (!network.connected() || !mqttClient.connected()) {
jburhenn 0:d20655cd1f3c 234 network.disconnect();
jburhenn 0:d20655cd1f3c 235 mqttClient.disconnect();
jburhenn 0:d20655cd1f3c 236 printf("Reconnecting\n");
jburhenn 0:d20655cd1f3c 237 while (connectClient() != CAYENNE_SUCCESS) {
jburhenn 0:d20655cd1f3c 238 wait(2);
jburhenn 0:d20655cd1f3c 239 printf("Reconnect failed, retrying\n");
jburhenn 0:d20655cd1f3c 240 }
jburhenn 0:d20655cd1f3c 241 }
jburhenn 0:d20655cd1f3c 242
jburhenn 0:d20655cd1f3c 243 // Publish some example data every few seconds. This should be changed to send your actual data to Cayenne.
jburhenn 0:d20655cd1f3c 244 if (timer.expired()) {
jburhenn 0:d20655cd1f3c 245 int error = 0;
pakito 8:d37ceed0cf58 246 if ((error = mqttClient.publishData(DATA_TOPIC, 1, NULL, NULL, drzwi1)) != CAYENNE_SUCCESS) // wartośc 1 oznacza nr wirtualnego kanału
pakito 8:d37ceed0cf58 247 {
pakito 8:d37ceed0cf58 248 printf("Publish temperature failed, error: %d\n", error);
pakito 8:d37ceed0cf58 249 }
pakito 8:d37ceed0cf58 250 if ((error = mqttClient.publishData(DATA_TOPIC, 2, NULL, NULL, drzwi2)) != CAYENNE_SUCCESS) // wartośc 2 oznacza nr wirtualnego kanału
pakito 8:d37ceed0cf58 251 {
pakito 8:d37ceed0cf58 252 printf("Publish temperature failed, error: %d\n", error);
pakito 8:d37ceed0cf58 253 }
pakito 8:d37ceed0cf58 254 if ((error = mqttClient.publishData(DATA_TOPIC, 4, NULL, NULL, czjn1)) != CAYENNE_SUCCESS) // wartośc 4 oznacza nr wirtualnego kanału
pakito 8:d37ceed0cf58 255 {
pakito 8:d37ceed0cf58 256 printf("Publish temperature failed, error: %d\n", error);
pakito 8:d37ceed0cf58 257 }
pakito 8:d37ceed0cf58 258 if ((error = mqttClient.publishData(DATA_TOPIC, 7, NULL, NULL, czjn2)) != CAYENNE_SUCCESS)
pakito 8:d37ceed0cf58 259 {
pakito 8:d37ceed0cf58 260 printf("Publish temperature failed, error: %d\n", error);
pakito 8:d37ceed0cf58 261 }
pakito 8:d37ceed0cf58 262 if ((error = mqttClient.publishData(DATA_TOPIC, 10, NULL, NULL, czjn3)) != CAYENNE_SUCCESS)
pakito 8:d37ceed0cf58 263 {
jburhenn 0:d20655cd1f3c 264 printf("Publish temperature failed, error: %d\n", error);
jburhenn 0:d20655cd1f3c 265 }
pakito 8:d37ceed0cf58 266 if ((error = mqttClient.publishData(DATA_TOPIC, 13, NULL, NULL, czjn4)) != CAYENNE_SUCCESS)
pakito 8:d37ceed0cf58 267 {
pakito 8:d37ceed0cf58 268 printf("Publish temperature failed, error: %d\n", error);
pakito 8:d37ceed0cf58 269 }
pakito 8:d37ceed0cf58 270 if ((error = mqttClient.publishData(DATA_TOPIC, 5, NULL, NULL, okno1)) != CAYENNE_SUCCESS)
pakito 8:d37ceed0cf58 271 {
pakito 8:d37ceed0cf58 272 printf("Publish temperature failed, error: %d\n", error);
jburhenn 0:d20655cd1f3c 273 }
pakito 8:d37ceed0cf58 274 if ((error = mqttClient.publishData(DATA_TOPIC, 8, NULL, NULL, okno2)) != CAYENNE_SUCCESS)
pakito 8:d37ceed0cf58 275 {
pakito 8:d37ceed0cf58 276 printf("Publish temperature failed, error: %d\n", error);
pakito 8:d37ceed0cf58 277 }
pakito 8:d37ceed0cf58 278 if ((error = mqttClient.publishData(DATA_TOPIC, 11, NULL, NULL, okno3)) != CAYENNE_SUCCESS)
pakito 8:d37ceed0cf58 279 {
pakito 8:d37ceed0cf58 280 printf("Publish temperature failed, error: %d\n", error);
pakito 8:d37ceed0cf58 281 }
pakito 8:d37ceed0cf58 282 if ((error = mqttClient.publishData(DATA_TOPIC, 14, NULL, NULL, okno4)) != CAYENNE_SUCCESS)
pakito 8:d37ceed0cf58 283 {
pakito 8:d37ceed0cf58 284 printf("Publish temperature failed, error: %d\n", error);
jburhenn 0:d20655cd1f3c 285 }
jburhenn 7:78cefe0937ab 286 // Restart the countdown timer for publishing data every 5 seconds. Change the timeout parameter to publish at a different interval.
pakito 8:d37ceed0cf58 287 timer.countdown_ms(2000);
jburhenn 0:d20655cd1f3c 288 }
jburhenn 0:d20655cd1f3c 289 }
jburhenn 0:d20655cd1f3c 290 }
jburhenn 0:d20655cd1f3c 291
jburhenn 0:d20655cd1f3c 292 /**
jburhenn 0:d20655cd1f3c 293 * Main function.
jburhenn 0:d20655cd1f3c 294 */
jburhenn 0:d20655cd1f3c 295 int main()
jburhenn 0:d20655cd1f3c 296 {
jburhenn 0:d20655cd1f3c 297 // Initialize the network interface.
jburhenn 0:d20655cd1f3c 298 printf("Initializing interface\n");
jburhenn 0:d20655cd1f3c 299 interface.connect(ssid, wifiPassword, NSAPI_SECURITY_WPA2);
jburhenn 0:d20655cd1f3c 300
jburhenn 0:d20655cd1f3c 301 // Set the default function that receives Cayenne messages.
jburhenn 0:d20655cd1f3c 302 mqttClient.setDefaultMessageHandler(messageArrived);
jburhenn 0:d20655cd1f3c 303
jburhenn 0:d20655cd1f3c 304 // Connect to Cayenne.
jburhenn 0:d20655cd1f3c 305 if (connectClient() == CAYENNE_SUCCESS) {
jburhenn 0:d20655cd1f3c 306 // Run main loop.
jburhenn 0:d20655cd1f3c 307 loop();
jburhenn 0:d20655cd1f3c 308 }
jburhenn 0:d20655cd1f3c 309 else {
jburhenn 0:d20655cd1f3c 310 printf("Connection failed, exiting\n");
jburhenn 0:d20655cd1f3c 311 }
jburhenn 0:d20655cd1f3c 312
jburhenn 0:d20655cd1f3c 313 if (mqttClient.connected())
jburhenn 0:d20655cd1f3c 314 mqttClient.disconnect();
jburhenn 0:d20655cd1f3c 315 if (network.connected())
jburhenn 0:d20655cd1f3c 316 network.disconnect();
jburhenn 0:d20655cd1f3c 317
jburhenn 0:d20655cd1f3c 318 return 0;
jburhenn 0:d20655cd1f3c 319 }
jburhenn 0:d20655cd1f3c 320