//Incluindo bibliotecas
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <Wire.h>
//Adicionando Sinric Pro
#include "SinricPro.h"
#include "SinricProSwitch.h"
//Adicionando Wifi
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""
// Conectando ao sinric
#define APP_KEY "Coloque aqui a Chave do App do Sinric"
#define APP_SECRET "Coloque aqui a senha do App Sinric"
#define SOIL_SENSOR_ID ""
//Definindo PINs
#define sensor 33
#define relay 4
SSesp ssensor; //Sensor de solo
bool deviceIsOn; //Estado do sensor
float humidity; //Umidade atual
float lastHumidity; //Último valor da Umidade
unsigned long lastEvent = (-EVENT_WAIT_TIME); // Última mudança
//Initialize the LCD display
LiquidCrystal_I2C lcd(0x27, 16, 2);
//Configurando o sensor
void soilsensor()
{
//Sensor desconectado
if (deviceIsOn == false)return;
// Obtém horário atual da medição.
unsigned long actualMillis = millis();
// Se a última medição ocorreu antes do limite estabelecido (60s) sai da função
if (actualMillis - lastEvent < EVENT_WAIT_TIME) return;
//Obtém umidade do sensor
humidity data = ssensor.gethumidity();
humidity = data.humidity;
// Se ocorreu algum erro na leitura, imprime mensagem e sai da função
if (isnan(temperature))
{
Serial.printf("Falha na leitura do sensor DHT!\n");
return;
}
// Se não houve alteração na temperatura não faz nada e sai da função.
if (humidity == lastHumidity) return;
// Envia a temperatura e a umidade para o dispositivo no Sinric.
SinricProSoilsensor &mySensor = SinricPro[SOIL_SENSOR_ID];
bool success = mySensor.sendHumidityEvent(humidity);