#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
// กำหนดค่า WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// กำหนดค่า MQTT Broker
const char* mqtt_server = "mqtt.netpie.io";
const char* mqtt_user = "d2BRM9A6gY1XT6ox9iT84jJz4huPzaQb";
const char* mqtt_password = "EHzjjPx9AzyHnUbLKx6qkfwAk34s4oKD";
const char* mqtt_client_id = "c3f0dbe4-cafb-4483-a18b-73b63f7e03d6";
// กำหนดค่า DHT Sensor
#define DHTPIN 22 // หมายเลขพินที่เชื่อมต่อกับ DHT22
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
char msg[100];
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
delay(10);
// เชื่อมต่อ WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void reconnect() {
// ลูปจนกว่าจะเชื่อมต่อ MQTT
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
if (client.connect(mqtt_client_id, mqtt_user, mqtt_password)) {
// เชื่อมต่อสำเร็จ
Serial.println("connected");
} else {
// รอ 5 วินาทีก่อนลองใหม่
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println("try again in 5 seconds");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
Serial.println();
Serial.print("Connection to ");
Serial.println(ssid);
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("");
Serial.println("Wifi Connected");
client.setServer(mqtt_server, 1883);
dht.begin();
}
void loop() {
// อ่านค่าจาก DHT22
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (!client.connected()) {
reconnect();
}
client.loop();
// สร้างสตริง payloadtemperature
String data = "{\"data\":{\"temperature\" : " +String(temperature)+
", \"humidity\":"+String(humidity) +"\"}}";
Serial.println(data);
data.toCharArray(msg, (data.length() + 1));
// ส่งข้อมูลไปยัง NETPIE.IO
client.publish("@shadow/data/update", msg);
delay(2000); // รอ 2 วินาทีก่อนอ่านค่าใหม่
}