#include <DHT.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <Arduino_JSON.h>
#define led 2
#define DHTPIN 15
#define DHTTYPE DHT22
#define PIRPIN 13
const char* ssid = "Wokwi-GUEST";
const char* password = "";
String serverName = "https://api.thingspeak.com/update?api_key=N068SN765UGJ45OR&field1=";
String serverName2 = "https://api.thingspeak.com/channels/2861278/feeds/last.json?api_key=FCARSJ9DWTR7CJXP";
DHT dht(DHTPIN, DHTTYPE);
int motionDetected;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(PIRPIN, INPUT);
dht.begin();
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("WiFi connected: ");
Serial.println(WiFi.localIP());
}
void loop() {
byte datalampu;
float temperature, humidity;
String mybuff;
// Baca sensor DHT22
temperature = dht.readTemperature();
humidity = dht.readHumidity();
motionDetected = digitalRead(PIRPIN);
Serial.print(F("Humidity: "));
Serial.print(humidity);
Serial.print(F("% Temperature: "));
Serial.print(temperature);
Serial.println(F("°C "));
Serial.print("Gerakan :");
Serial.println(motionDetected);
// Kirim ke ThingSpeak
if(WiFi.status() == WL_CONNECTED)
{
HTTPClient http;
String serverPath = serverName + String(temperature) + "&field2=" + String(humidity) + "&field4=" + String(motionDetected);
http.begin(serverPath);
int httpResponseCode = http.GET();
if (httpResponseCode == 200)
{
Serial.println("HTTP Response code: " + String(httpResponseCode));
}
http.end();
}
else
{
Serial.println("WiFi Disconnected");
}
delay(5000);
// Ambil data terakhir dari ThingSpeak
if(WiFi.status() == WL_CONNECTED)
{
HTTPClient http;
http.begin(serverName2);
int httpResponseCode = http.GET();
if (httpResponseCode == 200)
{
String payload = http.getString();
JSONVar myObject = JSON.parse(payload);
if (JSON.typeof(myObject) == "undefined")
{
Serial.println("Parsing error bro!");
}
else
{
JSONVar mykeys = myObject.keys();
mybuff = JSON.stringify(myObject[mykeys[3]]);
Serial.print("ini valuenya: ");
Serial.println(mybuff);
datalampu = mybuff.length();
mybuff.remove(datalampu - 1);
mybuff.remove(0, 1);
Serial.println(mybuff);
datalampu = mybuff.toInt();
Serial.println(datalampu);
if(datalampu == 50)
{
digitalWrite(led, HIGH);
}
else if(datalampu == 100)
{
digitalWrite(led, LOW);
}
if (motionDetected == HIGH)
{
Serial.println("Gerakan terdeteksi oleh sensor PIR!");
digitalWrite(led, HIGH);
} else
{
Serial.println("Tidak ada gerakan.");
}
}
}
Serial.println(httpResponseCode);
http.end();
}
else
{
Serial.println("WiFi Disconnected");
}
}