#include <WiFi.h> //Import two new library
#include <PubSubClient.h>
#include "DHTesp.h"
#define WIFI_SSID "Wokwi-GUEST" //WIFI SSID NAME
#define WIFI_PW "" //WIFI PASSWORD
#define MQTT_BROKER "broker.hivemq.com" //MQTT BROKER IP
#define MQTT_PORT 1883 //MQTT BROKER PORT
const int DHT_PIN = 15;
WiFiClient espClient; // ESP8266 Wifi Client
PubSubClient client(espClient); // MQTT Client using the Wifi-Client
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
WiFi.begin(WIFI_SSID, WIFI_PW); // Start Wi-Fi connection
while (WiFi.status() != WL_CONNECTED) { // Waiting for connection success
delay(250);
Serial.println(".");
}
Serial.println("Hello from ESP8266");
Serial.print("Connected to hotspot: ");
Serial.println(WIFI_SSID);
Serial.print("IP address is: ");
Serial.println(WiFi.localIP());
Serial.println("-------------------------");
client.setServer(MQTT_BROKER, MQTT_PORT); //Start MQTT connection
client.setCallback(callback);
while (!client.connected()) {
Serial.println("Connecting to MQTT...");
if (client.connect("ESPGM", "GrigoriyMokrenko", "GrigoriyMokrenko" )) { //Sign in to the broker
Serial.println("Connected to broker");
} else {
Serial.print("failed with state ");
Serial.print(client.state());
delay(2000);
}
}
client.subscribe("GM-T");
client.subscribe("GM-H");
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 2) + "%");
if (!client.connected()) {
Serial.println("No connected");;
}
client.loop();
delay(2000);
client.publish("GM-T", String(data.temperature, 2).c_str());
client.publish("GM-H", String(data.humidity, 2).c_str());
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived in topic: "); // Print out the topic
Serial.print(topic);
Serial.print("=");
String stMessage;
for (int i = 0; i < length; i++)
{
stMessage += (char)payload[i];
}
Serial.println(stMessage);
Serial.println("-----------------------");
}