Monitoring
Monitoring
#include <WiFi.h>
#include <MQTT.h>
#include "DHT.h"
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
WiFiClient net;
MQTTClient client;
#define DHT22Pin 5
#define ledRed 27
#define ledBlue 26
void connect(){
// Menghubungkan ke WiFi
Serial.print("Cek WiFi");
while(WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(1000);
}
Serial.println("");
Serial.println("Sukses Terhubung ke WiFi");
}
if(topic == "rumah/iot/led1"){
digitalWrite(ledRed, data.toInt()); //control led 1
if(data.toInt()==1){
client.publish("rumah/iot/statusled1",String("ON"), true, 1);
}else{
client.publish("rumah/iot/statusled1",String("OFF"), true, 1);
}
}
else if(topic == "rumah/iot/led2"){
digitalWrite(ledBlue, data.toInt()); //control led 2
if(data.toInt()==1){
client.publish("rumah/iot/statusled2",String("ON"), true, 1);
}else{
client.publish("rumah/iot/statusled2",String("OFF"), true, 1);
}
}
else if(topic == "rumah/iot/all LED ON"){
digitalWrite(ledBlue, HIGH);
digitalWrite(ledRed, HIGH);
client.publish("rumah/iot/statusled1",String("ON"), true, 1);
client.publish("rumah/iot/statusled2",String("ON"), true, 1);
}
else if(topic == "rumah/iot/all LED OFF"){
digitalWrite(ledBlue, LOW);
digitalWrite(ledRed, LOW);
client.publish("rumah/iot/statusled1",String("OFF"), true, 1);
client.publish("rumah/iot/statusled2",String("OFF"), true, 1);
}
}
void publish(){
float hum = dht.readHumidity();
float temp = dht.readTemperature();
Serial.print("Temperature : ");
Serial.print(temp);
Serial.print(" C ");
Serial.print("Humidity : ");
Serial.print(hum);
Serial.println(" % ");
ultrasonic();
client.publish("rumah/iot/dht/temp", String(temp), true, 1); //
client.publish("rumah/iot/dht/humi", String(hum), true, 1); // publish
variabel humidity ke topic rumah/iot/humi dengan QoS 1
client.publish("rumah/iot/level/cm", String(distance), true, 1);
}
void ultrasonic() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
if (distance>=0 && distance <51){
client.publish("rumah/iot/level/rendah",String("ON"), true, 1);
client.publish("rumah/iot/level/sedang",String("OFF"), true, 1);
client.publish("rumah/iot/level/tinggi",String("OFF"), true, 1);
} else if (distance >51 && distance<101){
client.publish("rumah/iot/level/rendah",String("OFF"), true, 1);
client.publish("rumah/iot/level/sedang",String("ON"), true, 1);
client.publish("rumah/iot/level/tinggi",String("OFF"), true, 1);
} else{
client.publish("rumah/iot/level/rendah",String("OFF"), true, 1);
client.publish("rumah/iot/level/sedang",String("OFF"), true, 1);
client.publish("rumah/iot/level/tinggi",String("ON"), true, 1);
}
}
void setup() {
pinMode(ledRed,OUTPUT);
pinMode(ledBlue,OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
dht.begin();
Serial.begin(9600);
WiFi.begin(ssid, pass);
connect();
broconnect();
}
void broconnect(){
client.begin("broker.emqx.io",net);
client.onMessage(subscribeData);
Serial.print("Cek Broker");
while(!client.connect("")){ // Client ID boleh dikosongkan
Serial.print(".");
delay(1000);
}
Serial.println("");
Serial.println("Sukses Terhubung ke Server");
client.subscribe("rumah/iot/#", 1);
}
void loop() {
client.loop();
broconnect();//connect ulang ke broker
// publish a message roughly every second.
if (millis() - lastMillis > 1000) {
lastMillis = millis();
publish();
}
delay(10);
}
1. Install dan Buka MQTT Panel dari Playsotre
2. Tambahkan koneksi
2.Buat Koneksi dengan nama smarthome 3.Tambah panel Switch untuk mengatur
dengan Client ID sembarangan dan LED 1 dan LED 2
simpan