#include <WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#include "DHT.h"
// WiFi credentials
#define WLAN_SSID "POCO MS"
#define WLAN_PASS "your_wifi_password" // <-- Replace this with your actual WiFi password
// Adafruit IO credentials
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "your_aio_username" // <-- Replace this with your Adafruit IO username
#define AIO_KEY "your_aio_key" // <-- Replace this with your Adafruit IO key
// DHT Sensor setup
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// WiFi and MQTT client setup
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
// MQTT feeds
Adafruit_MQTT_Publish sensor_1 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Temperature");
Adafruit_MQTT_Publish sensor_2 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Humidity");
void MQTT_connect();
void setup()
{
Serial.begin(115200);
delay(10);
dht.begin();
Serial.println("Connecting to WiFi...");
WiFi.begin(WLAN_SSID, WLAN_PASS);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected");
}
void loop()
{
MQTT_connect();
Serial.println(F("Reading sensor values..."));
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
// Publish temperature
if (!sensor_1.publish(temperature))
{
Serial.println(F("Failed to publish temperature"));
}
else
{
Serial.println(F("Temperature published successfully!"));
}
delay(3000); // Optional wait between publishes
// Publish humidity
if (!sensor_2.publish(humidity))
{
Serial.println(F("Failed to publish humidity"));
}
else
{
Serial.println(F("Humidity published successfully!"));
}
delay(5000); // Delay before next reading
}
// MQTT connection handler
void MQTT_connect()
{
int8_t ret;
if (mqtt.connected())
{
return;
}
Serial.print("Connecting to MQTT... ");
while ((ret = mqtt.connect()) != 0)
{
Serial.print("MQTT connect failed: ");
Serial.println(mqtt.connectErrorString(ret));
mqtt.disconnect();
delay(5000);
}
Serial.println("MQTT Connected!");
}