· 3 months ago · Jul 03, 2025, 02:30 AM
1#include <WiFi.h>
2#include <PubSubClient.h>
3
4const char* ssid = "Wokwi-GUEST";
5const char* password = "";
6const char* mqtt_server = "test.mosquitto.org";
7const char* topic_temp = "DHT22/suhu";
8const char* topic_hum = "DHT22/kelembapan";
9
10WiFiClient espClient;
11PubSubClient client(espClient);
12
13void setup_wifi()
14{
15 Serial.println();
16 Serial.print("Connecting to ");
17 Serial.println(ssid);
18
19 WiFi.mode(WIFI_STA);
20 WiFi.begin(ssid, password);
21
22 while (WiFi.status() != WL_CONNECTED)
23 {
24 delay(500);
25 Serial.print(".");
26 }
27
28 Serial.println("");
29 Serial.println("WiFi connected");
30 Serial.println("IP address: ");
31 Serial.println(WiFi.localIP());
32}
33
34void callback(char* topic, byte* payload, unsigned int length)
35{
36 Serial.print("Message arrived in topic: ");
37 Serial.println(topic);
38
39 Serial.print("Message:");
40 for (int i = 0; i < length; i++)
41 {
42 Serial.print((char)payload[i]);
43 }
44
45 Serial.println();
46 Serial.println("-----------------------");
47}
48
49void reconnect()
50{
51 while (!client.connected())
52 {
53 Serial.print("Attempting MQTT connection...");
54 // Create a random client ID
55 String clientId = "mqtt-explorer-584bcd18";
56 clientId += String(random(0xffff), HEX);
57 // Attempt to connect
58 if (client.connect(clientId.c_str()))
59 {
60 Serial.println("Connected");
61 client.subscribe(topic_temp);
62 client.subscribe(topic_hum);
63 }
64 else
65 {
66 Serial.print("failed, rc=");
67 Serial.print(client.state());
68 Serial.println(" try again in 5 seconds");
69 // Wait 5 seconds before retrying
70 delay(5000);
71 }
72 }
73}
74
75void setup()
76{
77 Serial.begin(115200);
78 setup_wifi();
79 client.setServer(mqtt_server, 1883);
80 client.setCallback(callback);
81}
82
83void loop()
84{
85
86 if (!client.connected())
87 {
88 reconnect();
89 }
90 client.loop();
91}