Enthernet Code
Enthernet Code
DIIDevHeads IoT Integration Server
Created by Boss lady on 6/14/2024 in #firmware-and-baremetal
How to Implement OTA Updates for ESP32 with FreeRTOS on Google Cloud IoT Core?
Your code should be identical or similar to 👇
#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoOTA.h>

const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const char* mqttServer = "mqtt.googleapis.com";
const char* mqttUsername = "unused";
const int mqttPort = 8883;
const char* devicePrivateKey = "YOUR_DEVICE_PRIVATE_KEY";

WiFiClientSecure wifiClient;
PubSubClient client(wifiClient);

void connectWiFi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
}

void connectMQTT() {
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);
while (!client.connected()) {
if (client.connect("ESP32-device", mqttUsername, devicePrivateKey)) {
client.subscribe("your_topic");
} else {
delay(1000);
}
}
}

void callback(char* topic, byte* payload, unsigned int length) {
// Handle incoming MQTT messages here
}

void setup() {
Serial.begin(115200);

connectWiFi();

ArduinoOTA.setHostname("ESP32-device");
ArduinoOTA.setPassword("Your_OTA_Password");

// Callbacks to handle OTA updates
ArduinoOTA.onStart([]() {
Serial.println("OTA update started...");
});

ArduinoOTA.onEnd([]() {
Serial.println("\nOTA update complete!");
ESP.restart();
});

ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));

// You can use progress/total to publish update progress to Google Cloud IoT Core
});

ArduinoOTA.begin();

connectMQTT();
}

void loop() {
ArduinoOTA.handle();

if (!client.connected()) {
connectMQTT();
}
client.loop();

// Perform your regular tasks here

delay(1000);
}
#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoOTA.h>

const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const char* mqttServer = "mqtt.googleapis.com";
const char* mqttUsername = "unused";
const int mqttPort = 8883;
const char* devicePrivateKey = "YOUR_DEVICE_PRIVATE_KEY";

WiFiClientSecure wifiClient;
PubSubClient client(wifiClient);

void connectWiFi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
}

void connectMQTT() {
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);
while (!client.connected()) {
if (client.connect("ESP32-device", mqttUsername, devicePrivateKey)) {
client.subscribe("your_topic");
} else {
delay(1000);
}
}
}

void callback(char* topic, byte* payload, unsigned int length) {
// Handle incoming MQTT messages here
}

void setup() {
Serial.begin(115200);

connectWiFi();

ArduinoOTA.setHostname("ESP32-device");
ArduinoOTA.setPassword("Your_OTA_Password");

// Callbacks to handle OTA updates
ArduinoOTA.onStart([]() {
Serial.println("OTA update started...");
});

ArduinoOTA.onEnd([]() {
Serial.println("\nOTA update complete!");
ESP.restart();
});

ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));

// You can use progress/total to publish update progress to Google Cloud IoT Core
});

ArduinoOTA.begin();

connectMQTT();
}

void loop() {
ArduinoOTA.handle();

if (!client.connected()) {
connectMQTT();
}
client.loop();

// Perform your regular tasks here

delay(1000);
}
7 replies