#include <ESP32Servo.h>
#include "DHTesp.h"
#include <LiquidCrystal_I2C.h>
#include <CayenneMQTTESP32.h>
#include <PubSubClient.h>
#define CAYENNE_PRINT Serial
const int servoPin = 18;
const int DHT_PIN = 15;
Servo servo;
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(0x27, 16, 2);
// WiFi network info.
char ssid[] = "Wokwi-GUEST";
char wifiPassword[] = "";
// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = "d6bd92e0-41a9-11ed-bf0a-bb4ba43bd3f6";
char password[] = "ad2cca0d3f8fab50eebbce95b81eaca61ec4d4d4";
char clientID[] = "eb04c760-41ad-11ed-bf0a-bb4ba43bd3f6";
void setup() {
Serial.begin(9600);
Cayenne.begin(username, password, clientID, ssid, wifiPassword);
servo.attach(servoPin, 500, 2400);
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
Wire.begin(21, 22);
lcd.init();
lcd.backlight();
}
int pos = 0;
int umidade = 0;
int temperatura = 0;
void loop() {
Cayenne.loop();
TempAndHumidity data = dhtSensor.getTempAndHumidity();
lcd.setCursor(1, 0);
lcd.print("Umidade " + String(data.humidity, 1) + "%");
lcd.setCursor(2, 1);
lcd.print("Temp " + String(data.temperature, 2) + "C");
delay(1000);
umidade = data.humidity;
temperatura = data.temperature;
if (temperatura >= 25, umidade <= 40)
servo.write(90);
else
servo.write(0);
delay(1000);
}
// This function is called at intervals to send temperature sensor data to Cayenne in Celsius.
CAYENNE_OUT(0)
{
Cayenne.virtualWrite(0, temperatura, "temp", "c");
}
CAYENNE_OUT(1)
{
Cayenne.virtualWrite(1, umidade, "umidade", "p");
}