MQTT+ESP32+PTM

กระทู้สนทนา
#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);
}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่