#include<WiFi.h>
#include<HTTPClient.h>
#include<WiFiClient.h>
#include<ArduinoJson.h>
#include<DHTesp.h>
#include<PubSubClient.h>
const char *ssid = "Wokwi-GUEST";
const char *password = "";
const char * server1 = "http://api.thingspeak.com/update?" ;
const char * server2 = "http://api.thingspeak.com/channels/2376287/feeds.json?api_key=KU4LJJS2QDMJR1RA&results=5";
const int port = 1883 ;
String token = "I1B8DTGK69IRT4YD" ;
const char *server3 = "mqtt.beebotte.com" ;
const char *username = "token:token_ewCsAXEb8GkPJXCb";
HTTPClient http ;
WiFiClient wifi ;
DHTesp dht ;
String temp22 ;
char ClientId[] ="" ;
PubSubClient mqtt(server3,port,wifi);
void setup() {
Serial.begin(115200);
dht.setup(23,DHTesp::DHT22);
WiFi.begin(ssid,password);
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(500);
}
Serial.println("connected");
mqtt.setServer(server3,port);
Serial.println("server ready");
}
void PubTemp(String temp) {
DynamicJsonDocument doc(1024) ;
doc["channel"] = "avantDS";
doc["resource"] = "temp";
doc["write"] = true ;
doc["data"] = temp;
char payload[256] ;
serializeJson(doc,payload,sizeof(payload));
int resp = mqtt.publish("avantDS/temp",payload);
Serial.println("resp MQTT = "+ String(resp));
}
void loop() {
/////POST using url encoded to thing speak
http.begin(server1);
http.addHeader("Content-Type","application/x-www-form-urlencoded");
String url1 = "api_key=" + token + "&field1=" + String(dht.getTemperature());
int httpResponsePost = http.POST(url1);
http.end() ;
delay(500);
/////POST using json to humidity
http.begin(server1);
http.addHeader("Content-Type","application/json");
DynamicJsonDocument doc(1024);
doc["api_key"] = token ;
doc["field2"] = String(dht.getHumidity()) ;
String payload ;
serializeJson(doc,payload);
int httpResponsePost1 = http.POST(payload);
Serial.println(httpResponsePost1);
http.end();
delay(500);
/////GET using temp and humi using http json
http.begin(server2) ;
int httpResp = http.GET();
if (httpResp > 0) {
String payload1 = http.getString() ;
StaticJsonDocument<1500> doc1 ;
deserializeJson(doc1,payload1);
Serial.println(payload1);
String temp23 = doc1["feeds"][1]["field1"] ;
temp22 = temp23;
}
delay(500);
/////MQTT publish to azure
if (!mqtt.connected()) {
sprintf(ClientId, "%s%s", "mot", String(random(10)));
if (mqtt.connect(ClientId,username,NULL))
{
Serial.println("MQTT connected");
}
}else{
PubTemp(temp22);
mqtt.loop();
}
delay(500);
}