#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <PubSubClient.h>
// ------------------- PIN -------------------
int relaypin = 17;
int ptmPin = 34; // ใช้ ADC ขา 32/33/34/35/36/39 เท่านั้น (ESP32)
// ------------------- WiFi -------------------
const char* ssid = "Pach_2.4G"; //ชื่อไวไฟ
const char* password = "0851944933"; //รหัส
// ------------------- HiveMQ -------------------
const char* mqtt_server = "72d05c6395504b3e929ef3181fcdfd93.s1.eu.hivemq.cloud"; //ใส่ตามคลิป
const int mqtt_port = 8883; //ใส่ตามคลิป
const char* mqtt_user = "LED5555"; //ใส่ตามคลิป
const char* mqtt_pass = "0618610886Yg"; //ใส่ตามคลิป
WiFiClientSecure espClient;
PubSubClient client(espClient);
// ------------------- MQTT CALLBACK -------------------
void callback(char* topic, byte* payload, unsigned int length) {
String val = "";
for (int i = 0; i < length; i++) val += (char)payload;
Serial.print("MQTT Received: ");
Serial.println(val);
if (val == "1") {
digitalWrite(relaypin, HIGH);
Serial.println("LED -> OFF");
} else if (val == "0") {
digitalWrite(relaypin, LOW);
Serial.println("LED -> ON");
}
}
// ------------------- SETUP -------------------
void setup() {
Serial.begin(115200);
pinMode(relaypin, OUTPUT);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("กำลังเชื่อม WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nเชื่อม WiFi แล้ว");
espClient.setInsecure();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
reconnect();
}
// ------------------- MQTT RECONNECT -------------------
void reconnect() {
while (!client.connected()) {
Serial.print("กำลังเชื่อม MQTT...");
if (client.connect("esp32Client", mqtt_user, mqtt_pass)) {
Serial.println("เชื่อมแล้ว!");
client.subscribe("TOPIC"); // แก้ใส่ TOPIC ของ relay
} else {
Serial.print("failed, rc=");
Serial.println(client.state());
delay(2000);
}
}
}
// ------------------- LOOP -------------------
void loop() {
if (!client.connected()) reconnect();
client.loop();
int value = analogRead(ptmPin);
String msg = String(value);
client.publish("TOPIC", msg.c_str()); // แก้ใส่ TOPIC ของ TPM ส่งค่าไป Node-RED
delay(500);
}
MQTT+ESP32+PTM
#include <WiFiClientSecure.h>
#include <PubSubClient.h>
// ------------------- PIN -------------------
int relaypin = 17;
int ptmPin = 34; // ใช้ ADC ขา 32/33/34/35/36/39 เท่านั้น (ESP32)
// ------------------- WiFi -------------------
const char* ssid = "Pach_2.4G"; //ชื่อไวไฟ
const char* password = "0851944933"; //รหัส
// ------------------- HiveMQ -------------------
const char* mqtt_server = "72d05c6395504b3e929ef3181fcdfd93.s1.eu.hivemq.cloud"; //ใส่ตามคลิป
const int mqtt_port = 8883; //ใส่ตามคลิป
const char* mqtt_user = "LED5555"; //ใส่ตามคลิป
const char* mqtt_pass = "0618610886Yg"; //ใส่ตามคลิป
WiFiClientSecure espClient;
PubSubClient client(espClient);
// ------------------- MQTT CALLBACK -------------------
void callback(char* topic, byte* payload, unsigned int length) {
String val = "";
for (int i = 0; i < length; i++) val += (char)payload;
Serial.print("MQTT Received: ");
Serial.println(val);
if (val == "1") {
digitalWrite(relaypin, HIGH);
Serial.println("LED -> OFF");
} else if (val == "0") {
digitalWrite(relaypin, LOW);
Serial.println("LED -> ON");
}
}
// ------------------- SETUP -------------------
void setup() {
Serial.begin(115200);
pinMode(relaypin, OUTPUT);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("กำลังเชื่อม WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nเชื่อม WiFi แล้ว");
espClient.setInsecure();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
reconnect();
}
// ------------------- MQTT RECONNECT -------------------
void reconnect() {
while (!client.connected()) {
Serial.print("กำลังเชื่อม MQTT...");
if (client.connect("esp32Client", mqtt_user, mqtt_pass)) {
Serial.println("เชื่อมแล้ว!");
client.subscribe("TOPIC"); // แก้ใส่ TOPIC ของ relay
} else {
Serial.print("failed, rc=");
Serial.println(client.state());
delay(2000);
}
}
}
// ------------------- LOOP -------------------
void loop() {
if (!client.connected()) reconnect();
client.loop();
int value = analogRead(ptmPin);
String msg = String(value);
client.publish("TOPIC", msg.c_str()); // แก้ใส่ TOPIC ของ TPM ส่งค่าไป Node-RED
delay(500);
}