#include <WiFi.h>
#include <MQTT.h>
#include <NusabotSimpleTimer.h>
#include "DHTesp.h"
#include "time.h"
WiFiClient net;
MQTTClient client;
NusabotSimpleTimer timer;
DHTesp dhtSensor;
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
// NTP server
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 25200;
const int daylightOffset_sec = 0;
// Pin initialization
constexpr uint8_t PIN_RGB_RED = 16;
constexpr uint8_t PIN_RGB_GREEN = 17;
constexpr uint8_t PIN_RGB_BLUE = 18;
constexpr uint8_t PIN_RELAY_UV = 19;
constexpr uint8_t PIN_RELAY_PUMP = 23;
constexpr uint8_t PIN_SOIL = 33;
constexpr uint8_t PIN_DHT22 = 13;
// Threshold
int thresholdSiram = 0;
// ID unik perangkat
String globalDeviceID = "";
void setup() {
generateUniqueID();
pinMode(PIN_RGB_RED, OUTPUT);
pinMode(PIN_RGB_GREEN, OUTPUT);
pinMode(PIN_RGB_BLUE, OUTPUT);
pinMode(PIN_RELAY_UV, OUTPUT);
pinMode(PIN_RELAY_PUMP, OUTPUT);
pinMode(PIN_SOIL, INPUT);
dhtSensor.setup(PIN_DHT22, DHTesp::DHT22);
Serial.begin(115200);
WiFi.begin(ssid, pass);
timer.setInterval(2000, publishSensor);
timer.setInterval(1000, updateTime);
client.begin("public.cloud.shiftr.io", net);
client.onMessage(subscribe);
connect();
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
updateTime();
}
void loop() {
client.loop();
timer.run();
updateTime();
delay(10); // <- Kadang ada isu terkait stabilitas wifi, salah satu solusi
if (!client.connected()) {
connect();
}
}Lampu UV
Pompa