/****************************************
* Include Libraries
****************************************/
#include <WiFi.h>
#include <PubSubClient.h>
/****************************************
* Define Constants
****************************************/
#define TOKEN "BBUS-XMrMFgUbqCtvHkjztFmaxM3nHR89eC"
#define VARIABLE_LABEL "esp_wokwi"
#define DEVICE_LABEL "esp32_1"
#define MQTT_CLIENT_NAME "0001"
const char* WIFISSID = "Wokwi-GUEST";
const char* PASSWORD = "";
char mqttBroker[] = "industrial.api.ubidots.com";
char payload[300];
char topic[150];
char str_val[10];
unsigned int analogPin = 34;
/****************************************
* Initializate constructors
****************************************/
WiFiClient ubidots;
PubSubClient client(ubidots);
/****************************************
* Functions
****************************************/
void callback(char* topic, byte* payload, unsigned int length) {}
void reconnect() {
while (!client.connected()) {
Serial.println("Attempting MQTT connection...");
if (client.connect(MQTT_CLIENT_NAME, TOKEN, "")) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 2 seconds");
delay(2000);
}
}
}
/****************************************
* Setup
****************************************/
void setup() {
Serial.begin(115200);
analogReadResolution(12); // ESP32 ADC 0-4095
WiFi.begin(WIFISSID, PASSWORD);
Serial.print("Connecting to WiFi ");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(400);
}
Serial.println("\nWiFi connected");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
client.setServer(mqttBroker, 1883);
client.setCallback(callback);
}
/****************************************
* Loop
****************************************/
void loop() {
if (!client.connected()) {
reconnect();
}
// Leer el potenciómetro
float raw = analogRead(analogPin);
// Mapear 0–4095 a 0–100 (opcional)
float valor = (raw / 4095.0) * 100.0;
// Convertir a string para JSON
dtostrf(valor, 1, 2, str_val);
// Topic Ubidots
sprintf(topic, "/v1.6/devices/%s", DEVICE_LABEL);
// JSON final
sprintf(payload,
"{\"%s\":{\"value\":%s}}",
VARIABLE_LABEL, str_val
);
Serial.print("Payload enviado: ");
Serial.println(payload);
client.publish(topic, payload);
client.loop();
delay(2000);
}