Mengatur LED dan menampilkan status LED, Menampilkan nilai
suhu dan Kelembaban pada panel MQTT
[Link]
[Link]
#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
DHT dht(DHT22Pin, DHT22);
const int trigPin = 23;
const int echoPin = 22;
long duration;
int distance;
unsigned long lastMillis = 0;
void connect(){
// Menghubungkan ke WiFi
[Link]("Cek WiFi");
while([Link]() != WL_CONNECTED){
[Link](".");
delay(1000);
}
[Link]("");
[Link]("Sukses Terhubung ke WiFi");
}
void subscribeData(String &topic, String &data){
[Link]("Topic: ");
[Link](topic);
[Link]("Data: ");
[Link](data);
if(topic == "rumah/iot/led1"){
digitalWrite(ledRed, [Link]()); //control led 1
if([Link]()==1){
[Link]("rumah/iot/statusled1",String("ON"), true, 1);
}else{
[Link]("rumah/iot/statusled1",String("OFF"), true, 1);
}
}
else if(topic == "rumah/iot/led2"){
digitalWrite(ledBlue, [Link]()); //control led 2
if([Link]()==1){
[Link]("rumah/iot/statusled2",String("ON"), true, 1);
}else{
[Link]("rumah/iot/statusled2",String("OFF"), true, 1);
}
}
else if(topic == "rumah/iot/all LED ON"){
digitalWrite(ledBlue, HIGH);
digitalWrite(ledRed, HIGH);
[Link]("rumah/iot/statusled1",String("ON"), true, 1);
[Link]("rumah/iot/statusled2",String("ON"), true, 1);
}
else if(topic == "rumah/iot/all LED OFF"){
digitalWrite(ledBlue, LOW);
digitalWrite(ledRed, LOW);
[Link]("rumah/iot/statusled1",String("OFF"), true, 1);
[Link]("rumah/iot/statusled2",String("OFF"), true, 1);
}
}
void publish(){
float hum = [Link]();
float temp = [Link]();
[Link]("Temperature : ");
[Link](temp);
[Link](" C ");
[Link]("Humidity : ");
[Link](hum);
[Link](" % ");
ultrasonic();
[Link]("rumah/iot/dht/temp", String(temp), true, 1); //
[Link]("rumah/iot/dht/humi", String(hum), true, 1); // publish
variabel humidity ke topic rumah/iot/humi dengan QoS 1
[Link]("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;
[Link]("Distance: ");
[Link](distance);
if (distance>=0 && distance <51){
[Link]("rumah/iot/level/rendah",String("ON"), true, 1);
[Link]("rumah/iot/level/sedang",String("OFF"), true, 1);
[Link]("rumah/iot/level/tinggi",String("OFF"), true, 1);
} else if (distance >51 && distance<101){
[Link]("rumah/iot/level/rendah",String("OFF"), true, 1);
[Link]("rumah/iot/level/sedang",String("ON"), true, 1);
[Link]("rumah/iot/level/tinggi",String("OFF"), true, 1);
} else{
[Link]("rumah/iot/level/rendah",String("OFF"), true, 1);
[Link]("rumah/iot/level/sedang",String("OFF"), true, 1);
[Link]("rumah/iot/level/tinggi",String("ON"), true, 1);
}
}
void setup() {
pinMode(ledRed,OUTPUT);
pinMode(ledBlue,OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
[Link]();
[Link](9600);
[Link](ssid, pass);
connect();
broconnect();
}
void broconnect(){
[Link]("[Link]",net);
[Link](subscribeData);
[Link]("Cek Broker");
while(){ // Client ID boleh dikosongkan
[Link](".");
delay(1000);
}
[Link]("");
[Link]("Sukses Terhubung ke Server");
[Link]("rumah/iot/#", 1);
}
void loop() {
[Link]();
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
[Link] Koneksi dengan nama smarthome [Link] panel Switch untuk mengatur
dengan Client ID sembarangan dan LED 1 dan LED 2
simpan
[Link] Panel Button untuk [Link] Panel LED INDICATOR
mengatur ALL LED ON dan ALL LED OFF sebagai kondisi LED 1 dan LED 2
[Link] Panel Gauge untuk [Link] Panel Progres untuk
Temperatur Kelembaban dengan type Vertical
[Link] Panel Line Graph untuk
Grafik Suhu dan Kelembaban
9. Koneksikan dengan mengclick tanda awan di atas