3. สร้าง mqtt_user และ mqtt_pass แล้วบันทึก
4, หลังสร้าง mqtt_user แล้ว เลื่อนมาด้านล่างหน้าเดิม ในส่วน ACLs กำหนดตามรูปเลยย
(โดยต้องลง library pubsubclient และ dht ไว้ก่อน)
โดยให้ เซนเซอร์ DHT11 ต่อสายสัญญาณเข้าที่ D5
(ไม่งั้นก็แก้ code เอา)
ในโค็ดให้ใส่ ssid, pass, mqtt_server, mqtt_port, mqtt_user, mqtt_pass, mqtt_client_name
ให้เรียบร้อย
---------------------------
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"
const char *ssid = "YOUR_ACCESS_POINT"; // cannot be longer than 32 characters!
const char *pass = "YOUR_PASSWORD"; //
const char *mqtt_server = "m10.cloudmqtt.com"; // ดูจาก cloudmqtt ตอนเพิ่ม
const int mqtt_port = 10525; // ค่านี้เลย
const char *mqtt_user = "test"; // ดูจาก cloudmqtt ตอนเพิ่ม
const char *mqtt_pass = "test"; // ดูจาก cloudmqtt ตอนเพิ่ม
const char *mqtt_client_name = "PCPanis"; // Client connections cant have the same connection name
const int dhtPin = D5; // ต่อสัญญาณ sensor DHT11 เข้าที่ขา D5 ของ NodeMCU
//#define DHTTYPE DHT22
#define DHTTYPE DHT11
DHT dht(dhtPin, DHTTYPE, 12); // The 12 might need tuning so play with 10-15 till it works for the ESP8266
unsigned long previousMillis = 0;
const long interval = 10000;
WiFiClient wclient;
PubSubClient client(wclient, mqtt_server, mqtt_port);
void SendTempHumid();
void setup() {
// Setup console
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
dht.begin();
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
Serial.print("Connecting to ");
Serial.print(ssid);
Serial.println("...");
WiFi.begin(ssid, pass);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println("WiFi connected");
}
if (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
Serial.println("Connecting to MQTT server");
if (client.connect(MQTT::Connect("mqtt_client_name")
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("Connected to MQTT server");
} else {
Serial.println("Could not connect to MQTT server");
}
}
if (client.connected())
client.loop();
}
SendTempHumid();
}
// Non-Blocking delay
void SendTempHumid(){
unsigned long currentMillis = millis();
if(currentMillis - previousMillis >= interval) {
// save the last time you read the sensor
previousMillis = currentMillis;
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
//return; This will ensure that data is always sent
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
client.publish("/room01/DHT",String(h)+"%"+String(t)+"C" );
}
}
-----------------------------------------------------
6. เมื่อ NodeMCU (ESP8266)
ทำงานและต่อเข้า router ที่กำหนดที่มี internet เชื่อมต่ออยู่
ค่าที่อ่านจาก sensor DHT11 จะถูกอัพขึ้น CloudMQTT ให้เลย
โดยเมื่อไปดูผลที่หน้านี้จะเห็นปรากฏให้เห็นว่ามีการส่งข้อมูลได้ถูกต้องขึ้นมาเป็นระยะๆ
เป็นอันส่งข้อมูลขึ้น CloudMQTT ได้เรียบร้อย
ไม่มีความคิดเห็น:
แสดงความคิดเห็น