#include <Adafruit_Sensor.h>
#include <Arduino.h>
#include <DHT.h>
#include <DHT_U.h>
#include <PubSubClient.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include "secret.h"
#define DHTPIN 15
#define DHTTYPE DHT22
#define NTCPIN 34
#define MQTT_SERVER "iot.devinci.online"
#define MQTT_PORT 1883
const float BETA = 3950;
DHT_Unified dht(DHTPIN, DHTTYPE);
static WiFiClient wifiClient;
static PubSubClient mqttClient(MQTT_SERVER, MQTT_PORT, wifiClient);
void setup() {
Serial.begin(115200);
dht.begin();
Serial.print("Connecting to WiFi");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Connected!");
if (mqttClient.connect("iot-bot", MQTT_USERNAME, MQTT_PASSWORD)) {
Serial.print("Successfully connected to ");
} else {
Serial.print("Failed to connect to ");
}
Serial.println(MQTT_SERVER);
}
void loop() {
if (!mqttClient.connected()) {
mqttClient.connect("iot-bot", MQTT_USERNAME, MQTT_PASSWORD);
}
mqttClient.publish("iotbot/ntc/temp", String(ntcTemperature()).c_str());
mqttClient.publish("iotbot/dht/temp", String(dhtTemperature()).c_str());
mqttClient.publish("iotbot/dht/humidity", String(dhtHumidity()).c_str());
delay(5000);
}
float ntcTemperature() {
int analogValue = analogRead(NTCPIN);
return 1 / (log(1 / (4095. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
}
float dhtTemperature() {
sensors_event_t event;
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
return -1;
} else {
return event.temperature;
}
}
float dhtHumidity() {
sensors_event_t event;
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
return -1;
} else {
return event.relative_humidity;
}
}