#include <ThingSpeak.h>
#include <WiFi.h>
#include <DHTesp.h>
const char * SSID = "Wokwi-GUEST";
const char * PASS = "";
WiFiClient client;
DHTesp dhtSensor;
const int DHT_PIN = 15;
int lampu1 = 14;
int lampu2 = 4;
int trigPin = 13; // Trigger Ultrasonic
int echoPin = 2; // Echo Ultrasonic
int buzzerPin = 5;
unsigned long ChannelNumber = 1976271;
const char * ReadAPIKey = "15QTT5ZFMDVKN33P";
const char * WriteAPIKey = "HVJDCU0P3ID12XVG";
unsigned long FieldNumber1 = 1;
unsigned long FieldNumber2 = 2;
unsigned long FieldNumber3 = 3;
unsigned long FieldNumber4 = 4;
unsigned long FieldNumber5 = 5;
unsigned long FieldNumber6 = 6;
float readDistanceCM() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
int duration = pulseIn(echoPin, HIGH);
float durasi = duration * 0.034 / 2;
return durasi;
}
void setup() {
pinMode(lampu1, OUTPUT);
pinMode(lampu2, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
Serial.begin(115200);
Serial.println();
WiFi.begin(SSID, PASS);
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected, IP address: ");
Serial.println(WiFi.localIP());
ThingSpeak.begin(client);
}
void loop() {
int A = ThingSpeak.readLongField(ChannelNumber, FieldNumber1, ReadAPIKey);
int B = ThingSpeak.readLongField(ChannelNumber, FieldNumber2, ReadAPIKey);
int Buzzer = ThingSpeak.readLongField(ChannelNumber, FieldNumber6, ReadAPIKey);
int distance = ThingSpeak.writeField(ChannelNumber, FieldNumber5, readDistanceCM(), WriteAPIKey);
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float sensorTemp = data.temperature;
float sensorHumidity = data.humidity;
int temp = ThingSpeak.writeField(ChannelNumber, FieldNumber3, sensorTemp, WriteAPIKey);
int humidity = ThingSpeak.writeField(ChannelNumber, FieldNumber4, sensorHumidity, WriteAPIKey);
readDistanceCM();
Serial.println("Temp: " + String(sensorTemp, 2) + "°C");
Serial.println("Humidity: " + String(sensorHumidity, 1) + "%");
Serial.println(readDistanceCM());
if (Buzzer == 1) {
tone(buzzerPin, 2000);
}
else if (Buzzer == 0) {
noTone(buzzerPin);
}
if (temp == 200 && humidity == 200) {
Serial.println("Channel update successful.");
}
else {
Serial.println("Problem updating channel. HTTP error code " + String(temp));
}
// Menghidupkan dan mematikan lampu1
if (A == 1) {
Serial.println("lampu1 Nyala");
digitalWrite(lampu1, HIGH);
} else if (A == 0) {
Serial.println("lampu1 Mati");
digitalWrite(lampu1, LOW);
}
// Menghidupkan dan mematikan lampu2
if (B == 1) {
Serial.println("lampu2 Nyala");
digitalWrite(lampu2, HIGH);
} else if (B == 0) {
Serial.println("lampu2 Mati");
digitalWrite(lampu2, LOW);
}
delay(100);
}