#include<WiFi.h>
#include<ThingSpeak.h>
#include <DHTesp.h>
DHTesp dhtsensor;
TempAndHumidity data;
const int DHT_PIN=15;
const int tri=13;
const int echo=12;
float distance;
long dur;
char ssid[]="Wokwi-GUEST";
char pass[]="";
WiFiClient client;
unsigned long myChannelNumber=2089322;
const char * myWriteAPIKey="222W9BD6PKDQ4EIL";;
int statusCode;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
dhtsensor.setup(DHT_PIN,DHTesp::DHT22);
pinMode(tri, OUTPUT);
pinMode(echo, INPUT);
}
long getdistance(){
digitalWrite(tri, LOW);
delayMicroseconds(2);
digitalWrite(tri, HIGH);
delayMicroseconds(10);
digitalWrite(tri, LOW);
dur=pulseIn(echo,HIGH);
return(dur*0.034/2)+1;
Serial.println(dur);
}
void loop() {
data=dhtsensor.getTempAndHumidity();
if(WiFi.status()!=WL_CONNECTED){
Serial.println("attempting to connected");
while(WiFi.status()!=WL_CONNECTED){
WiFi.begin(ssid,pass);
Serial.println(".");
delay(5000);
}
Serial.println("\nconnected");
}
Serial.println("humidity:"+String(data.humidity,1));
Serial.println("temperature:"+String(data.temperature,2));
distance=getdistance();
Serial.println("distance:"+String(distance));
Serial.println("------------------");
ThingSpeak.setField(1,data.humidity);
ThingSpeak.setField(2,data.temperature);
ThingSpeak.setField(3,distance);
statusCode=ThingSpeak.writeFields(myChannelNumber,myWriteAPIKey);
if(statusCode==200){
Serial.println("channel update successful");
}
else{
Serial.println("problem writing data,http error code:"+String(statusCode));
}
delay(15000); // this speeds up the simulation
}