#include "RTClib.h" //library RTC
#include <WiFi.h>
#include <PubSubClient.h>
#define WIFISSID "Wokwi-GUEST" // Put your WifiSSID here
#define PASSWORD "" // Put your wifi password here
#define TOKEN "BBUS-WJTC9GT8NYMQOJOY91gNG4tvCAc7YH" // Put your Ubidots' TOKEN
#define MQTT_CLIENT_NAME "RandomName"
#define VARIABLE_LABEL "led" // Assing the variable label
// #define VARIABLE_LABEL_SUBSCRIBE "servo" // Assing the variable label
#define DEVICE_LABEL "ESP32_Izal" // Assig the device label
#define led 19
// #define button 15
char mqttBroker[] = "stem.ubidots.com";
char payload[100];
char topic[150];
// char topicSubscribe[100];
// char str_sensor[10];
WiFiClient ubidots;
PubSubClient client(ubidots);
RTC_DS1307 rtc;
void reconnect() { // Loop until we're reconnected
while (!client.connected()) {
Serial.println("Attempting MQTT connection..."); // Attemp to connect
if (client.connect(MQTT_CLIENT_NAME, TOKEN, "")) {
Serial.println("Connected");
} else {
Serial.print("Failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 2 seconds"); // Wait 2 seconds before retrying
delay(2000);
}
}
}
char daysOfTheWeek[7][12] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
void setup() {
pinMode(led, OUTPUT);
WiFi.begin(WIFISSID, PASSWORD);
// put your setup code here, to run once:
Serial.begin(115200);
rtc.begin();
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//pembaruan otomatis dari waktu komputer
rtc.adjust(DateTime(2023, 1, 19, 13, 52, 0));// untuk mengatur waktu secara manual
Serial.println();
Serial.print("Wait for WiFi...");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi Connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
client.setServer(mqttBroker, 1883);
}
void loop() {
DateTime now = rtc.now();
Serial.println(
"Sekarang Tanggal " +
now.timestamp(DateTime::TIMESTAMP_DATE) +
" dan Pukul " +
now.timestamp(DateTime::TIMESTAMP_TIME)
);
if (now.second() % 2 == 0){
digitalWrite(19, LOW);
} else {
digitalWrite(19, HIGH);
}
delay(100);
}