#include <WiFi.h>
#include <PubSubClient.h>
#include <WiFiClientSecure.h>
const char* ssid = "WIFI";
const char* password = "";
const char* mqtt_server = "mqtt.thingsboard.cloud";
const int mqtt_port = 1883;
const char* token = "vGXdNnU8xbHqIOUJfZGB";
const char* topic = "v1/devices/me/telemetry";
WiFiClientSecure espClient;
PubSubClient client(espClient);
const int sensorPin = 15;
const float thresholdCurrent = 3.0; // Simulated threshold
void setup_wifi() {
delay(100);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
if (client.connect("ESP32Client")) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
delay(2000);
}
}
}
void setup() {
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
int rawValue = analogRead(sensorPin);
float voltage = rawValue * (3.3 / 4095.0);
float current = (voltage - 1.65) / 0.185; // Simulating ACS712
char msg[100];
snprintf(msg, sizeof(msg), "{\"current\": %.2f}", current);
client.publish(topic, msg);
Serial.print("Current: ");
Serial.print(current);
Serial.println(" A");
if (current > thresholdCurrent) {
client.publish(topic, "⚠️ High energy consumption detected!");
}
delay(2000); // Send every 2 seconds
}Loading
esp32-s2-devkitm-1
esp32-s2-devkitm-1