/* M2T IoT Prototipo Inicial
Lucas Martín Treser
Juan Manuel Mercadin
Abril de 2026
*/
#include "secrets.h"
#include <WiFi.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// #include "DHT.h"
// Constantes y variables
const int ONE_WIRE_BUS = 15;
const int MSG_SIZE = 50;
char mensaje[MSG_SIZE];
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensor(&oneWire);
// DHT dht(4, DHT22);
WiFiClient espClient;
PubSubClient client(espClient);
void setup(void) {
Serial.begin(115200);
// dht.begin();
sensor.begin();
// -- Conexión WiFi -- //
WiFi.begin(ssid, password, 6);
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(250);
}
Serial.println("");
Serial.println("WiFi conectado con IP: ");
Serial.println(WiFi.localIP());
// -- Conexión al broker MQTT --
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
// -- Tratar de conectarse al broker MQTT -- //
while (!client.connected()) {
Serial.print("Tratando de conectar al broker MQTT...");
if (client.connect(mqtt_id)) { // id, user, password
Serial.println("conectado");
} else {
Serial.print("fallo, error=");
Serial.print(client.state());
Serial.println(" intentando nuevamente en 2 segundos");
delay(2000);
}
}
// -- Subscribirse a un topic -- //
// client.subscribe(mqtt_topic);
}
void loop(void) {
client.loop();
// -- Sensor DS18B20 -- //
Serial.print("Requesting temperature...");
sensor.requestTemperatures();
float temperature0 = sensor.getTempCByIndex(0);
Serial.println("DONE");
Serial.print("Sensor 1(*C): ");
Serial.println(temperature0);
// Sensor DHT22 -- //
// float humedad = dht.readHumidity();
// float temperatura = dht.readTemperature();
// -- Formatear y publicar datos -- //
// snprintf(mensaje, MSG_SIZE, "%.2f, %.2f", humedad, temperatura);
String datos = String("{temperature:") + String(temperature0)
+ String("}");
datos.toCharArray(mensaje, MSG_SIZE);
client.publish(mqtt_topic, mensaje);
delay(5000);
}
// -- Callback MQTT -- //
void callback(char *topic, byte *payload, unsigned int length) {
Serial.print("Mensaje recibido desde el topic \"");
Serial.print(topic);
Serial.print("\": ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}