diff --git a/examples/FullyFeatured-ESP32/FullyFeatured-ESP32.ino b/examples/FullyFeatured-ESP32/FullyFeatured-ESP32.ino index c226569..cf8b015 100644 --- a/examples/FullyFeatured-ESP32/FullyFeatured-ESP32.ino +++ b/examples/FullyFeatured-ESP32/FullyFeatured-ESP32.ino @@ -2,133 +2,132 @@ This example uses FreeRTOS softwaretimers as there is no built-in Ticker library */ - #include extern "C" { - #include "freertos/FreeRTOS.h" - #include "freertos/timers.h" +#include "freertos/FreeRTOS.h" +#include "freertos/timers.h" } #include #define WIFI_SSID "yourSSID" #define WIFI_PASSWORD "yourpass" -#define MQTT_HOST IPAddress(192, 168, 1, 10) -#define MQTT_PORT 1883 +const char* mqttServiceName = "_mqtt"; +const char* protocol = "_tcp"; AsyncMqttClient mqttClient; TimerHandle_t mqttReconnectTimer; TimerHandle_t wifiReconnectTimer; void connectToWifi() { - Serial.println("Connecting to Wi-Fi..."); - WiFi.begin(WIFI_SSID, WIFI_PASSWORD); + Serial.println("Connecting to Wi-Fi..."); + WiFi.begin(WIFI_SSID, WIFI_PASSWORD); } void connectToMqtt() { - Serial.println("Connecting to MQTT..."); - mqttClient.connect(); + Serial.println("Connecting to MQTT..."); + mqttClient.connect(); } void WiFiEvent(WiFiEvent_t event) { Serial.printf("[WiFi-event] event: %d\n", event); - switch(event) { - case SYSTEM_EVENT_STA_GOT_IP: - Serial.println("WiFi connected"); - Serial.println("IP address: "); - Serial.println(WiFi.localIP()); - connectToMqtt(); - break; - case SYSTEM_EVENT_STA_DISCONNECTED: - Serial.println("WiFi lost connection"); - xTimerStop(mqttReconnectTimer, 0); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi - xTimerStart(wifiReconnectTimer, 0); - break; + switch (event) { + case SYSTEM_EVENT_STA_GOT_IP: + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + connectToMqtt(); + break; + case SYSTEM_EVENT_STA_DISCONNECTED: + Serial.println("WiFi lost connection"); + xTimerStop(mqttReconnectTimer, 0); // ensure we don't reconnect to MQTT while reconnecting to Wi-Fi + xTimerStart(wifiReconnectTimer, 0); + break; } } void onMqttConnect(bool sessionPresent) { - Serial.println("Connected to MQTT."); - Serial.print("Session present: "); - Serial.println(sessionPresent); - uint16_t packetIdSub = mqttClient.subscribe("test/lol", 2); - Serial.print("Subscribing at QoS 2, packetId: "); - Serial.println(packetIdSub); - mqttClient.publish("test/lol", 0, true, "test 1"); - Serial.println("Publishing at QoS 0"); - uint16_t packetIdPub1 = mqttClient.publish("test/lol", 1, true, "test 2"); - Serial.print("Publishing at QoS 1, packetId: "); - Serial.println(packetIdPub1); - uint16_t packetIdPub2 = mqttClient.publish("test/lol", 2, true, "test 3"); - Serial.print("Publishing at QoS 2, packetId: "); - Serial.println(packetIdPub2); + Serial.println("Connected to MQTT."); + Serial.print("Session present: "); + Serial.println(sessionPresent); + uint16_t packetIdSub = mqttClient.subscribe("test/lol", 2); + Serial.print("Subscribing at QoS 2, packetId: "); + Serial.println(packetIdSub); + mqttClient.publish("test/lol", 0, true, "test 1"); + Serial.println("Publishing at QoS 0"); + uint16_t packetIdPub1 = mqttClient.publish("test/lol", 1, true, "test 2"); + Serial.print("Publishing at QoS 1, packetId: "); + Serial.println(packetIdPub1); + uint16_t packetIdPub2 = mqttClient.publish("test/lol", 2, true, "test 3"); + Serial.print("Publishing at QoS 2, packetId: "); + Serial.println(packetIdPub2); } void onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { - Serial.println("Disconnected from MQTT."); + Serial.println("Disconnected from MQTT."); - if (WiFi.isConnected()) { - xTimerStart(mqttReconnectTimer, 0); - } + if (WiFi.isConnected()) { + xTimerStart(mqttReconnectTimer, 0); + } } void onMqttSubscribe(uint16_t packetId, uint8_t qos) { - Serial.println("Subscribe acknowledged."); - Serial.print(" packetId: "); - Serial.println(packetId); - Serial.print(" qos: "); - Serial.println(qos); + Serial.println("Subscribe acknowledged."); + Serial.print(" packetId: "); + Serial.println(packetId); + Serial.print(" qos: "); + Serial.println(qos); } void onMqttUnsubscribe(uint16_t packetId) { - Serial.println("Unsubscribe acknowledged."); - Serial.print(" packetId: "); - Serial.println(packetId); + Serial.println("Unsubscribe acknowledged."); + Serial.print(" packetId: "); + Serial.println(packetId); } void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { - Serial.println("Publish received."); - Serial.print(" topic: "); - Serial.println(topic); - Serial.print(" qos: "); - Serial.println(properties.qos); - Serial.print(" dup: "); - Serial.println(properties.dup); - Serial.print(" retain: "); - Serial.println(properties.retain); - Serial.print(" len: "); - Serial.println(len); - Serial.print(" index: "); - Serial.println(index); - Serial.print(" total: "); - Serial.println(total); + Serial.println("Publish received."); + Serial.print(" topic: "); + Serial.println(topic); + Serial.print(" qos: "); + Serial.println(properties.qos); + Serial.print(" dup: "); + Serial.println(properties.dup); + Serial.print(" retain: "); + Serial.println(properties.retain); + Serial.print(" len: "); + Serial.println(len); + Serial.print(" index: "); + Serial.println(index); + Serial.print(" total: "); + Serial.println(total); } void onMqttPublish(uint16_t packetId) { - Serial.println("Publish acknowledged."); - Serial.print(" packetId: "); - Serial.println(packetId); + Serial.println("Publish acknowledged."); + Serial.print(" packetId: "); + Serial.println(packetId); } void setup() { - Serial.begin(115200); - Serial.println(); - Serial.println(); + Serial.begin(115200); + Serial.println(); + Serial.println(); - mqttReconnectTimer = xTimerCreate("mqttTimer", pdMS_TO_TICKS(2000), pdFALSE, (void*)0, reinterpret_cast(connectToMqtt)); - wifiReconnectTimer = xTimerCreate("wifiTimer", pdMS_TO_TICKS(2000), pdFALSE, (void*)0, reinterpret_cast(connectToWifi)); + mqttReconnectTimer = xTimerCreate("mqttTimer", pdMS_TO_TICKS(2000), pdFALSE, (void*)0, reinterpret_cast(connectToMqtt)); + wifiReconnectTimer = xTimerCreate("wifiTimer", pdMS_TO_TICKS(2000), pdFALSE, (void*)0, reinterpret_cast(connectToWifi)); - WiFi.onEvent(WiFiEvent); + WiFi.onEvent(WiFiEvent); - mqttClient.onConnect(onMqttConnect); - mqttClient.onDisconnect(onMqttDisconnect); - mqttClient.onSubscribe(onMqttSubscribe); - mqttClient.onUnsubscribe(onMqttUnsubscribe); - mqttClient.onMessage(onMqttMessage); - mqttClient.onPublish(onMqttPublish); - mqttClient.setServer(MQTT_HOST, MQTT_PORT); + mqttClient.onConnect(onMqttConnect); + mqttClient.onDisconnect(onMqttDisconnect); + mqttClient.onSubscribe(onMqttSubscribe); + mqttClient.onUnsubscribe(onMqttUnsubscribe); + mqttClient.onMessage(onMqttMessage); + mqttClient.onPublish(onMqttPublish); + mqttClient.setServer(mqttServiceName, protocol); - connectToWifi(); + connectToWifi(); } void loop() {