#include <WiFi.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
WiFiClient espClient;
int button_pin = 34;
int led_merah = 5;
#include "PubSubClient.h"
PubSubClient client(espClient);
const char* mqttServer = "broker.emqx.io";
int port = 1883;
char clientId[] = "Febri1STN23";
char topic_led[] = "/wabot/mqtt/GarudArdumeka/lampu";
char topic_suhu[] = "/wabot/mqtt/GarudArdumeka/suhu";
#define MSG_BUFFER_SIZE (50)
char msg[MSG_BUFFER_SIZE];
void wifiConnect() {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Terhubung ke WiFi");
Serial.println("Alamat IP: ");
Serial.println(WiFi.localIP());
}
void mqttReconnect() {
while (!client.connected()) {
Serial.print("Menghubungkan ke MQTT Server... ");
if (client.connect(clientId)) {
Serial.print(clientId);
Serial.println(" Terhubung");
client.subscribe(topic_led);
} else {
Serial.print("Gagal Terhubung, stataus=");
Serial.print(client.state());
Serial.println(" tunggu 2 detik");
delay(2000);
}
}
}
void callback(char* topic, byte* message, unsigned int length) {
Serial.print("Pesan Baru, Topik: ");
Serial.print(topic);
Serial.print(" Pesan: ");
String stMessage;
for (int i = 0; i < length; i++) {stMessage += (char)message[i];}
Serial.println(stMessage);
if(String(topic) == topic_led){
if(stMessage == "ON"){digitalWrite(led_merah, HIGH);}
if(stMessage == "OFF"){digitalWrite(led_merah, LOW);}
}
}
void setup() {
Serial.begin(115200);
pinMode(led_merah,OUTPUT);
pinMode(button_pin,INPUT);
wifiConnect();
client.setServer(mqttServer, port);
client.setCallback(callback);
}
unsigned const long jeda = 10000;
unsigned long zero = 0;
void loop() {
delay(10);
if(!client.connected()){mqttReconnect();}
client.loop();
if(millis() - zero >= jeda){
Serial.println("Mqtt Publish..." + String(digitalRead(button_pin)));
snprintf (msg, MSG_BUFFER_SIZE,"%ld", digitalRead(button_pin));
client.publish(topic_suhu, msg);
bool kirim_suhu = true;
zero = millis();
}
}