#include "DHTesp.h"
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <PubSubClient.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
String payload;
//secret channel token at Beebotte (https://beebotte.com/)
const char channelToken[] = "";
// Channel name at Beebotte
String channel = "esp82ss";
// resource name at Beebotte
String resourcetemp = "temp";
String resourcehum = "hum";
// client ID
const char clientID[] = "";
// The Beebotte server
const char host[] = "mqtt.beebotte.com";
const int DHT_PIN = 23;
float temperature;
float humidity;
DHTesp capteur;
WiFiClient Clientwifi;
PubSubClient clientmqtt(host,1883,Clientwifi);
void setup() {
Serial.begin(115200);
capteur.setup(DHT_PIN, DHTesp::DHT22);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
}
}
void loop() {
if (! clientmqtt.connected()) {
Serial.println("MQTT NOT connected");
delay(5000);
String username = "token:";
username += channelToken;
Serial.print("username=");Serial.println(username.c_str());
clientmqtt.connect(clientID, username.c_str(),NULL);
Serial.println("MQTT connected");
}
else { // Client connected
Serial.println("MQTT connected");
delay(1000);
temperature = capteur.getTemperature();
humidity = capteur.getHumidity();
Serial.print("Temperature: "); Serial.println(temperature);
Serial.print("Humidity (%): "); Serial.println(humidity);
publishdata(temperature, resourcetemp);
publishdata(humidity, resourcehum);
Serial.println("MQTT DATA sent");
}
clientmqtt.loop();
Serial.println();
delay(8000);
}
void publishdata (float t, String res){
String d;
StaticJsonDocument <1024> T;
T["channel"]= channel;
T["resource"]= res;
T["write"]= true;
T["data"]= t;
serializeJson (T, d);
String top = channel + "/" + res;
const char * topic= top.c_str();
const char * data= d.c_str();
clientmqtt.publish(topic,data );
}