#include "config.h"
#include <EEPROM.h>
#include <WiFi.h> // Tambahkan library WiFi
// door gpio pin
#define DOOR 35
#define SLEEP_LENGTH 3
int lastSwitchState = LOW; // Menyimpan status terakhir switch
#include <PubSubClient.h>
// Konfigurasi MQTT
const char* mqttServer = "mqtt.my.id";
const int mqttPort = 1883;
const char* mqttUser = "";
const char* mqttPassword = "";
const char* mqttTopic = "inikosanda";
// Objek WiFi dan MQTT Client
WiFiClient wifiClient;
PubSubClient client(wifiClient);
void setup() {
// start the serial connection
Serial.begin(115200);
while (!Serial);
Serial.println("Door Notification Project");
EEPROM.begin(512);
pinMode(DOOR, INPUT_PULLUP);
// WiFi.begin(WIFI_SSID, WIFI_PASS, 6); //sambungin WIFI
// Menghubungkan ke MQTT Broker
// client.setServer(mqttServer, mqttPort);
// if (!client.connected()){
// reconnectMQTT();
// }
// kalo pintu ketutup ga ngapa2in
String statusStr;
if(digitalRead(DOOR) == LOW) {
Serial.println("Pintu tertutup!");
statusStr = "Pintu Tertutup";
// ngasih log doang
}
else {
// kalo pintu kebuka kita jalankan door_open()
Serial.println("Pintu terbuka!");
statusStr = "Pintu Terbuka";
door_open();
}
// Kirim status ke MQTT
// if (client.publish(mqttTopic, statusStr.c_str())) {
// Serial.println("Status terkirim ke MQTT: " + statusStr);
// } else {
// Serial.println("Gagal mengirim status ke MQTT.");
// }
// we are done here. go back to sleep.
Serial.println("zzzz");
ESP.deepSleep(SLEEP_LENGTH * 1000000);
}
void loop(){
}
void door_open(){
// konek ke adafruit
connect_AIO();
// mendapatkan feed door
AdafruitIO_Feed *door = io.feed("door");
Serial.println("Mengirim data value ke door feed IO...");
door->save(1); //kirim data baru ke feed
io.run();
}
void connect_AIO() {
Serial.println("Connecting to Adafruit IO...");
// Cek status koneksi WiFi
if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi is not connected. Attempting to connect...");
WiFi.begin(WIFI_SSID, WIFI_PASS, 6); //sambungin WIFI
// Menunggu sampai WiFi tersambung
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected!");
} else {
Serial.println("WiFi is already connected.");
}
io.connect();
// sabar nunggu konek
while (io.status() < AIO_CONNECTED) {
Serial.print(".");
delay(500);
}
// connected
Serial.println();
Serial.println(io.statusText());
}
// Fungsi untuk menghubungkan ke MQTT Broker
void reconnectMQTT() {
while (!client.connected()) {
Serial.print("Menghubungkan ke MQTT...");
String clientId = "ESP32Client-";
clientId += String(WiFi.macAddress());
if (client.connect(clientId.c_str(), mqttUser, mqttPassword)) {
Serial.println("Terhubung ke MQTT!");
client.subscribe(mqttTopic); // Subscribe jika diperlukan
} else {
Serial.print("Gagal, rc=");
Serial.print(client.state());
delay(5000);
}
}
}Loading
esp32-devkit-c-v4
esp32-devkit-c-v4