#include <DHTesp.h>
#include <PubSubClient.h>
#include <WiFi.h>
const char *WIFI_SSID = "Wokwi-GUEST";
const char *WIFI_PWD = "";
const char *MQTT_SERVER = "broker.hivemq.com";
const uint16_t MQTT_PORT = 1883;
const byte DHT_PIN = 15;
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
DHTesp dhtSensor;
void CallbackMqtt(char* topic, byte* payload, unsigned int length)
{
Serial.print("Callback - ");
Serial.print("Message:");
for (int i = 0; i < length; i++)
{
Serial.print((char)payload[i]);
}
Serial.println();
}
void SetupMqtt()
{
mqttClient.setServer(MQTT_SERVER, MQTT_PORT);
//set the callback function
mqttClient.setCallback(CallbackMqtt);
}
void ConnectToMqtt()
{
Serial.println("Connecting to MQTT Broker...");
while (!mqttClient.Connected())
{
char clientId[100] = "\0";
sprintf(clientId, "ESP32Client-%04X", random(0xffff));
Serial.println(clientId);
if (mqttClient.connect(clientId))
{
Serial.println("Connected to MQTT broker.");
// subcribe to topic
mqttClient.subcribe("/sensors/commands");
}
}
}
void ConnectToWiFi()
{
Serial.print("Connecting to WiFi ");
Serial.println(WIFI_SSID);
Wifi.begin(WIFI_SSID, WIFI_PWD, 6);
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.print("\nConnected to");
Serial.println(WIFI_SSID);
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Setup Begin");
ConnectToWiFi();
SetupMqtt();
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
Serial.println("Setup End");
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}