#include <WiFi.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// --- Configurações de Conexão ---
const char* ssid = "Wokwi-GUEST"; // Padrão do simulador
const char* password = "";
const char* tb_server = "mqtt.thingsboard.cloud"; // Ou o IP do seu servidor
const char* access_token = "2kjWtrjWMKkZ0YuhUCsY";
// --- Pinos e Sensores ---
const int SENSOR_PIN = 4;
OneWire oneWire(SENSOR_PIN);
DallasTemperature sensors(&oneWire);
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
sensors.begin();
setup_wifi();
client.setServer(tb_server, 1883);
}
void setup_wifi() {
delay(10);
Serial.println("Conectando WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi conectado!");
}
void reconnect() {
while (!client.connected()) {
Serial.print("Tentando conectar ao ThingsBoard...");
if (client.connect("ESP32S3_Client", access_token, NULL)) {
Serial.println("Conectado!");
} else {
Serial.print("Falha, rc=");
Serial.print(client.state());
delay(5000);
}
}
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
// Leitura da Temperatura
sensors.requestTemperatures();
float t = sensors.getTempCByIndex(0);
if (t != DEVICE_DISCONNECTED_C) {
// Formata o JSON para o ThingsBoard
String payload = "{";
payload += "\"temperature\":";
payload += String(t);
payload += "}";
char attributes[100];
payload.toCharArray(attributes, 100);
// Envia para o tópico padrão de telemetria
client.publish("v1/devices/me/telemetry", attributes);
Serial.print("Enviado: ");
Serial.println(attributes);
}
delay(10000); // Envia a cada 10 segundos
}Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1