#include <WiFi.h>
#include <MQTT.h>
#include "DHT.h"
#define led1pin 4
#define led1pin 16
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
WiFiClient net;
MQTTClient client;
unsigned long lastMillis = 0;
void connect() {
Serial.print("checking wifi...");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.print("\nconnecting...");
while (!client.connect("wemos32", "alatsena", "aUlAPnAPteOEGJ7m")) {
Serial.print(".");
delay(1000);
}
Serial.println("\nconnected!");
client.subscribe("smarthome/lampu1");
client.subscribe("smarthome/lampu2");
client.subscribe("smarthome/lampu3");
client.subscribe("smarthome/lampu4");
//client.unsubscribe("smarthome/lampu1");
//client.unsubscribe("smarthome/lampu2");
//client.unsubscribe("smarthome/lampu3");
//client.unsubscribe("smarthome/lampu4");
}
// Kontrol
void messageReceived(String &topic, String &payload) {
if (topic == "smarthome/lampu1") {
if (payload == "1") {
digitalWrite(led1pin, HIGH);
Serial.println("Lampu 1 Nyala");
} else {
digitalWrite(led1pin, LOW);
Serial.println("Lampu 1 Mati");
}
}
if (topic == "smarthome/lampu2") {
if (payload == "1") {
digitalWrite(led2pin, HIGH);
Serial.println("Lampu 2 Nyala");
} else {
digitalWrite(led2pin, LOW);
Serial.println("Lampu 2 Mati");
}
}
if (topic == "smarthome/lampu3") {
if (payload == "1") {
Serial.println("Lampu 3 Nyala");
} else {
Serial.println("Lampu 3 Mati");
}
}
if (topic == "smarthome/lampu4") {
if (payload == "1") {
Serial.println("Lampu 4 Nyala");
} else {
Serial.println("Lampu 4 Mati");
}
}
Serial.println(topic + ": " + payload);
}
String readDHT22Temperature() {
float t = dht.readTemperature();
if (isnan(t)) {
Serial.println("Failed to read from DHT22 sensor!");
return "";
} else {
return String(t);
}
}
String readDHT22Humidity() {
float h = dht.readHumidity();
if (isnan(h)) {
Serial.println("Failed to read from DHT22 sensor!");
return "";
} else {
return String(h);
}
}
void setup() {
Serial.begin(115200);
// Initialize DHT sensor
dht.begin();
// initialize led
pinMode(led1pin, OUTPUT);
pinMode(led2pin, OUTPUT);
// start wifi and mqtt
WiFi.begin(ssid, pass);
client.begin("alatsena.cloud.shiftr.io", net);
client.onMessage(messageReceived);
connect();
}
void loop() {
client.loop();
delay(10);
// check if connected
if (!client.connected()) {
connect();
}
// Pemantauan
// publish a message roughly every second.
if (millis() - lastMillis > 3000) {
lastMillis = millis();
// client.publish("smarthome/testsensor", "world");
client.publish("smarthome/suhu", readDHT22Temperature());
client.publish("smarthome/lembab", readDHT22Humidity());
}
}