#include "RTClib.h"
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
#include <ESP32Servo.h>
Servo myservo; // create servo object to control a servo
int val;
#if defined(ESP8266)
#include <ESP8266WiFi.h>
#elif defined(ESP32)
#include <WiFi.h>
#endif
#include "ThingsBoard.h"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
//#define TOKEN "O4IgVplBERIGlVddjuVr"
#define TOKEN "orKjN5dtvtqULpMqZxFA"
#define THINGSBOARD_SERVER "thingsboard.cloud"
// Baud rate for debug serial
#define SERIAL_DEBUG_BAUD 115200
#define pinLDR 34
const float GAMMA = 0.7;
const float RL10 = 50;
// Initialize ThingsBoard client
WiFiClient espClient;
// Initialize ThingsBoard instance
ThingsBoard tb(espClient);
// the Wifi radio's status
int status = WL_IDLE_STATUS;
float readLDR() {
int analogValue = analogRead(pinLDR);
float voltage = analogValue / 4096. * 3.3;
float resistance = 3030 * voltage / (1 - voltage / 3.3);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
return lux;
}
void InitWiFi()
{
Serial.println("Connecting to AP ...");
// attempt to connect to WiFi network
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
void reconnect() {
// Loop until we're reconnected
status = WiFi.status();
if ( status != WL_CONNECTED) {
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to AP");
}
}
void setup () {
Serial.begin(115200);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
myservo.attach(13); // attaches the servo on pin D13 to the servo object
//myservo.write(0);
InitWiFi();
}
void loop () {
DateTime now = rtc.now();
//Tampilkan string jam dan menit
int jam = now.hour();
int menit = now.minute();
String waktu = String(jam) + ":" + String(menit);
Serial.print("waktu : ");
Serial.print (waktu);
Serial.println();
delay(1000);
if (waktu == "6:0") {
val = 0;
}
else if (waktu == "6:4") {
val = 1;
}
else if (waktu == "6:8") {
val = 2;
}
else if (waktu == "6:12") {
val = 3;
}
else if (waktu == "6:16") {
val = 4;
}
else if (waktu == "6:20") {
val = 5;
}
else if (waktu == "6:24") {
val = 6;
}
else if (waktu == "6:28") {
val = 7;
}
else if (waktu == "6:32") {
val = 8;
}
else if (waktu == "6:36") {
val = 9;
}
else if (waktu == "6:40") {
val = 10;
}
else if (waktu == "6:44") {
val = 11;
}
else if (waktu == "6:48") {
val = 12;
}
else if (waktu == "6:52") {
val = 13;
}
else if (waktu == "6:56") {
val = 14;
}
else if (waktu == "7:0") {
val = 15;
}
else if (waktu == "7:4") {
val = 16;
}
else if (waktu == "7:8") {
val = 17;
}
else if (waktu == "7:12") {
val = 18;
}
else if (waktu == "7:16") {
val = 19;
}
else if (waktu == "7:20") {
val = 20;
}
else if (waktu == "7:24") {
val = 21;
}
else if (waktu == "7:28") {
val = 22;
}
else if (waktu == "7:32") {
val = 23;
}
else if (waktu == "7:36") {
val = 24;
}
else if (waktu == "7:40") {
val = 25;
}
else if (waktu == "7:44") {
val = 26;
}
else if (waktu == "7:48") {
val = 27;
}
else if (waktu == "7:52") {
val = 28;
}
else if (waktu == "7:56") {
val = 29;
}
else if (waktu == "8:00") {
val = 30;
}
else if (waktu == "8:04") {
val = 31;
}
else if (waktu == "8:08") {
val = 32;
}
else if (waktu == "8:12") {
val = 33;
}
else if (waktu == "8:16") {
val = 34;
}
else if (waktu == "8:20") {
val = 35;
}
else if (waktu == "8:24") {
val = 36;
}
else if (waktu == "8:28") {
val = 37;
}
else if (waktu == "8:32") {
val = 38;
}
else if (waktu == "8:36") {
val = 39;
}
else if (waktu == "8:40") {
val = 40;
}
else if (waktu == "8:44") {
val = 41;
}
else if (waktu == "8:48") {
val = 42;
}
else if (waktu == "8:52") {
val = 43;
}
else if (waktu == "8:56") {
val = 44;
}
else if (waktu == "9:0") {
val = 45;
}
else if (waktu == "9:4") {
val = 46;
}
else if (waktu == "9:8") {
val = 47;
}
else if (waktu == "9:12") {
val = 48;
}
else if (waktu == "9:16") {
val = 49;
}
else if (waktu == "9:20") {
val = 50;
}
else if (waktu == "9:24") {
val = 51;
}
else if (waktu == "9:28") {
val = 52;
}
else if (waktu == "9:32") {
val = 53;
}
else if (waktu == "9:36") {
val = 54;
}
else if (waktu == "9:40") {
val = 55;
}
else if (waktu == "9:44") {
val = 56;
}
else if (waktu == "9:48") {
val = 57;
}
else if (waktu == "9:52") {
val = 58;
}
else if (waktu == "9:56") {
val = 59;
}
else if (waktu == "10:0") {
val = 60;
}
else if (waktu == "10:4") {
val = 61;
}
else if (waktu == "10:8") {
val = 62;
}
else if (waktu == "10:12") {
val = 63;
}
else if (waktu == "10:16") {
val = 64;
}
else if (waktu == "10:20") {
val = 65;
}
else if (waktu == "10:24") {
val = 66;
}
else if (waktu == "10:28") {
val = 67;
}
else if (waktu == "10:32") {
val = 68;
}
else if (waktu == "10:36") {
val = 69;
}
else if (waktu == "10:40") {
val = 70;
}
else if (waktu == "10:44") {
val = 71;
}
else if (waktu == "10:48") {
val = 72;
}
else if (waktu == "10:52") {
val = 73;
}
else if (waktu == "10:56") {
val = 74;
}
else if (waktu == "11:0") {
val = 75;
}
else if (waktu == "11:4") {
val = 76;
}
else if (waktu == "11:8") {
val = 77;
}
else if (waktu == "11:12") {
val = 78;
}
else if (waktu == "11:16") {
val = 79;
}
else if (waktu == "11:20") {
val = 80;
}
else if (waktu == "11:24") {
val = 81;
}
else if (waktu == "11:28") {
val = 82;
}
else if (waktu == "11:32") {
val = 83;
}
else if (waktu == "11:36") {
val = 84;
}
else if (waktu == "11:40") {
val = 85;
}
else if (waktu == "11:44") {
val = 86;
}
else if (waktu == "11:48") {
val = 87;
}
else if (waktu == "11:52") {
val = 88;
}
else if (waktu == "11:56") {
val = 89;
}
else if (waktu == "12:0") {
val = 90;
}
else if (waktu == "12:4") {
val = 91;
}
else if (waktu == "12:8") {
val = 92;
}
else if (waktu == "12:12") {
val = 93;
}
else if (waktu == "12:16") {
val = 94;
}
else if (waktu == "12:20") {
val = 95;
}
else if (waktu == "12:24") {
val = 96;
}
else if (waktu == "12:28") {
val = 97;
}
else if (waktu == "12:32") {
val = 98;
}
else if (waktu == "12:36") {
val = 99;
}
else if (waktu == "12:40") {
val = 100;
}
else if (waktu == "12:44") {
val = 101;
}
else if (waktu == "12:48") {
val = 102;
}
else if (waktu == "12:52") {
val = 103;
}
else if (waktu == "12:56") {
val = 104;
}
else if (waktu == "13:0") {
val = 105;
}
else if (waktu == "13:4") {
val = 106;
}
else if (waktu == "13:8") {
val = 107;
}
else if (waktu == "13:12") {
val = 108;
}
else if (waktu == "13:16") {
val = 109;
}
else if (waktu == "13:20") {
val = 110;
}
else if (waktu == "13:24") {
val = 111;
}
else if (waktu == "13:28") {
val = 112;
}
else if (waktu == "13:32") {
val = 113;
}
else if (waktu == "13:36") {
val = 114;
}
else if (waktu == "13:40") {
val = 115;
}
else if (waktu == "13:44") {
val = 116;
}
else if (waktu == "13:48") {
val = 117;
}
else if (waktu == "13:52") {
val = 118;
}
else if (waktu == "13:56") {
val = 119;
}
else if (waktu == "14:0") {
val = 120;
}
else if (waktu == "14:4") {
val = 121;
}
else if (waktu == "14:8") {
val = 122;
}
else if (waktu == "14:12") {
val = 123;
}
else if (waktu == "14:16") {
val = 124;
}
else if (waktu == "14:20") {
val = 125;
}
else if (waktu == "14:24") {
val = 126;
}
else if (waktu == "14:28") {
val = 127;
}
else if (waktu == "14:32") {
val = 128;
}
else if (waktu == "14:36") {
val = 129;
}
else if (waktu == "14:40") {
val = 130;
}
else if (waktu == "14:44") {
val = 131;
}
else if (waktu == "14:48") {
val = 132;
}
else if (waktu == "14:52") {
val = 133;
}
else if (waktu == "14:56") {
val = 134;
}
else if (waktu == "15:0") {
val = 135;
}
else if (waktu == "15:4") {
val = 136;
}
else if (waktu == "15:8") {
val = 137;
}
else if (waktu == "15:12") {
val = 138;
}
else if (waktu == "15:16") {
val = 139;
}
else if (waktu == "15:20") {
val = 140;
}
else if (waktu == "15:24") {
val = 141;
}
else if (waktu == "15:28") {
val = 142;
}
else if (waktu == "15:32") {
val = 143;
}
else if (waktu == "15:36") {
val = 144;
}
else if (waktu == "15:40") {
val = 145;
}
else if (waktu == "15:44") {
val = 146;
}
else if (waktu == "15:48") {
val = 147;
}
else if (waktu == "15:52") {
val = 148;
}
else if (waktu == "15:56") {
val = 149;
}
else if (waktu == "16:0") {
val = 150;
}
else if (waktu == "16:4") {
val = 151;
}
else if (waktu == "16:8") {
val = 152;
}
else if (waktu == "16:12") {
val = 153;
}
else if (waktu == "16:16") {
val = 154;
}
else if (waktu == "16:20") {
val = 155;
}
else if (waktu == "16:24") {
val = 156;
}
else if (waktu == "16:28") {
val = 157;
}
else if (waktu == "16:32") {
val = 158;
}
else if (waktu == "16:36") {
val = 159;
}
else if (waktu == "16:40") {
val = 160;
}
else if (waktu == "16:44") {
val = 161;
}
else if (waktu == "16:48") {
val = 162;
}
else if (waktu == "16:52") {
val = 163;
}
else if (waktu == "16:56") {
val = 164;
}
else if (waktu == "17:0") {
val = 165;
}
else if (waktu == "17:4") {
val = 166;
}
else if (waktu == "17:8") {
val = 167;
}
else if (waktu == "17:12") {
val = 168;
}
else if (waktu == "17:16") {
val = 169;
}
else if (waktu == "17:20") {
val = 170;
}
else if (waktu == "17:24") {
val = 171;
}
else if (waktu == "17:28") {
val = 172;
}
else if (waktu == "17:32") {
val = 173;
}
else if (waktu == "17:36") {
val = 174;
}
else if (waktu == "17:40") {
val = 175;
}
else if (waktu == "17:44") {
val = 176;
}
else if (waktu == "17:48") {
val = 177;
}
else if (waktu == "17:52") {
val = 178;
}
else if (waktu == "17:56") {
val = 179;
}
else if (waktu == "18:0") {
val = 180;
}
else if (waktu == "18:4" ) {
val = 90;
}
myservo.write(val);
if (WiFi.status() != WL_CONNECTED) {
reconnect();
}
if (!tb.connected()) {
// Connect to the ThingsBoard
Serial.print("Connecting to: ");
Serial.print(THINGSBOARD_SERVER);
Serial.print(" with token ");
Serial.println(TOKEN);
if (!tb.connect(THINGSBOARD_SERVER, TOKEN)) {
Serial.println("Failed to connect");
return;
}
}
Serial.println("Sending data...");
tb.sendTelemetryFloat("Intensitas", readLDR());
tb.sendTelemetryFloat("Sudut", val);
Serial.print("Intensitas : " );
Serial.println (readLDR());
Serial.print("Sudut : " );
Serial.println(val);
tb.loop();
}