#include <DHTesp.h>
#include <WiFi.h>
#include <ThingSpeak.h>
DHTesp dht;
TempAndHumidity data;
const int dhtPin = 26;
const int trigPin = 14;
const int echoPin = 12;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
WiFiClient client;
unsigned long myChannelNumber = 2581089;
const char* myWriteAPIKey = "YO4SIO7EHQDPJEJ6";
unsigned long myChannelNumber2 = 2581403;
const char* myWriteAPIKey2 = "KCNW8HSX0G1BJZLL";
int statusCode;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
dht.setup(dhtPin, DHTesp::DHT22);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
delay(1000);
}
void getwifi()
{
if(WiFi.status()!=WL_CONNECTED)
{
Serial.print("Attempting to connect");
while(WiFi.status()!=WL_CONNECTED)
{
WiFi.begin(ssid, pass);
Serial.print(".");
delay(5000);
}
}
Serial.println("\nConnected");
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
getwifi();
data = dht.getTempAndHumidity();
Serial.println("Humidity = "+String(data.humidity));
Serial.println("Temperature = "+String(data.temperature));
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
float duration = pulseIn(echoPin, HIGH);
int dist = (duration*0.03405)/2;
Serial.println("Distance = "+String(dist));
ThingSpeak.setField(1, data.humidity);
ThingSpeak.setField(2, data.temperature);
statusCode=ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
ThingSpeak.setField(1, dist);
statusCode=ThingSpeak.writeFields(myChannelNumber2, myWriteAPIKey2);
if(statusCode == 200)
{
Serial.println("Channel update successful");
}
else
{
Serial.println("Problem Writing data: HTTp error code:"+String(statusCode));
}
delay(15000);
}