Created
May 29, 2024 14:41
-
-
Save salmanfarisvp/d1c8ea59adebecb8d25cf4c8333a2dc2 to your computer and use it in GitHub Desktop.
MQTTS_ESP32
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Originally from MQTT ESP8266 Example | |
Basic XIAO-ESP32 MQTTS example | |
Before starting , You should have | |
- MQTT Broker Name | |
- MQTT Broker Username | |
- MQTT Borker Password | |
Modified by Salman Faris - Added MQTTS Implimenation as per ESP32 and MQTTS. | |
*/ | |
#include <WiFi.h> | |
#include <PubSubClient.h> | |
// Update these with values suitable for your network. | |
const char* ssid = ""; // WiFi Name | |
const char* password = ""; // WiFi Password | |
const char* mqtt_server = ""; //MQTT Broker Name | |
WiFiClient espClient; | |
PubSubClient client(espClient); | |
unsigned long lastMsg = 0; | |
#define MSG_BUFFER_SIZE (50) | |
char msg[MSG_BUFFER_SIZE]; | |
int value = 0; | |
void setup_wifi() { | |
delay(10); | |
// We start by connecting to a WiFi network | |
Serial.println(); | |
Serial.print("Connecting to "); | |
Serial.println(ssid); | |
WiFi.mode(WIFI_STA); | |
WiFi.begin(ssid, password); | |
while (WiFi.status() != WL_CONNECTED) { | |
delay(500); | |
Serial.print("."); | |
} | |
randomSeed(micros()); | |
Serial.println(""); | |
Serial.println("WiFi connected"); | |
Serial.println("IP address: "); | |
Serial.println(WiFi.localIP()); | |
} | |
void callback(char* topic, byte* payload, unsigned int length) { | |
Serial.print("Message arrived ["); | |
Serial.print(topic); | |
Serial.print("] "); | |
for (int i = 0; i < length; i++) { | |
Serial.print((char)payload[i]); | |
} | |
Serial.println(); | |
// Convert payload to a String | |
String message; | |
for (int i = 0; i < length; i++) { | |
message += (char)payload[i]; | |
} | |
Serial.print("This is the message"); | |
Serial.println(message); | |
// Switch on the LED if an 1 was received as first character | |
if ((char)payload[0] == '1') { | |
digitalWrite(BUILTIN_LED, LOW); // Turn the LED on (Note that LOW is the voltage level | |
// but actually the LED is on; this is because | |
} else { | |
digitalWrite(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH | |
} | |
} | |
void reconnect() { | |
// Loop until we're reconnected | |
while (!client.connected()) { | |
Serial.print("Attempting MQTT connection..."); | |
// Create a random client ID | |
String clientId = "XIAO-ESP32-Client-"; | |
clientId += String(random(0xffff), HEX); | |
// Attempt to connect | |
// if (client.connect(clientId.c_str())) { | |
if (client.connect(clientId.c_str(), "Username", "Pass")) { | |
Serial.println("connected"); | |
// Once connected, publish an announcement... | |
// client.publish("fabacademy/dionTest", "hello world"); | |
// ... and resubscribe | |
client.subscribe("fabacademy/dionTest"); | |
} else { | |
Serial.print("failed, rc="); | |
Serial.print(client.state()); | |
Serial.println(" try again in 5 seconds"); | |
// Wait 5 seconds before retrying | |
delay(5000); | |
} | |
} | |
} | |
void setup() { | |
pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output | |
Serial.begin(115200); | |
setup_wifi(); | |
client.setServer(mqtt_server, 1883); | |
client.setCallback(callback); | |
} | |
void loop() { | |
if (!client.connected()) { | |
reconnect(); | |
} | |
client.loop(); | |
unsigned long now = millis(); | |
if (now - lastMsg > 2000) { | |
lastMsg = now; | |
++value; | |
snprintf (msg, MSG_BUFFER_SIZE, "hello world #%ld", value); | |
Serial.print("Publish message: "); | |
Serial.println(msg); | |
client.publish("fabacademy/dionTest", msg); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment