#include <WiFi.h>
#include "PubSubClient.h"
#include "DHTesp.h"
const char*ssid = "Wokwi-GUEST";
const char*password = "";
const char*mqttServer = "mqtt.netpie.io";
const int mqtt_port = 1883;
const char*mqtt_Client = "37627736-0034-4c05-96ad-efcf8c8c7322";
const char*mqtt_username = "ig1Nb5wFqyMsNjuv9KWPG1BHcJPNugyc";
const char*mqtt_password = "bdIA(TfEvHwV!H8Ln-*4~v(-vVWzO7ue";
WiFiClient espClient;
PubSubClient client(espClient);
int DHTpin = 15;
DHTesp dhtSensor;
long lastMsg = 0;
void setup()
{
Serial.begin(9600);
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
wifiConnect();
Serial.println("");
Serial.println("WiFi connected");
client.setServer(mqttServer, mqtt_port);
client.setCallback(callback);
dhtSensor.setup(DHTpin, DHTesp::DHT22);
}
void wifiConnect()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status()!= WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
}
void mqttReconnect()
{
while (!client.connected())
{
if(client.connect(mqtt_Client, mqtt_username, mqtt_password))
client.subscribe("@msg/#");
else
delay(5000);
}
}
void callback(char*topic, byte*payload, unsigned int length)
{
String message;
for(int i = 0;i<length;i++)
message = message + (char)payload[i];
}
void loop()
{
delay(10);
if(!client.connected())
{
mqttReconnect();
}
client.loop();
long now = millis();
if(now-lastMsg>1000)
{
lastMsg = now;
TempAndHumidity data = dhtSensor.getTempAndHumidity();
client.publish("@msg/temp",String(data.temperature, 1).c_str());
client.publish("@msg/humi",String(data.humidity, 1).c_str());
}
}