Thứ Hai, 12 tháng 3, 2018

Published tháng 3 12, 2018 by Nặc danh with 0 comment

Hướng dẫn đọc nhiệt độ từ ESP32 và gửi lên CloudMQTT





Trong Esp32 có tích hợp sẵn cảm biến đo nhiệt độ , hôm nay mình sẽ hướng dẫn các bạn cách gửi nhiệt độ lên CloudMQTT
Yêu cầu của bài toán theo dõi nhiệt độ : Cứ mỗi phút lại gửi nhiệt độ lên CloudMQTT  1 lần
Lưu ý : Nhiệt độ trên ESP32 tính theo độ F vì vậy phải chuyển đổi sang độ C theo công thức có trong code .
Đầu tiên để thực hiện được các bạn phải vào cloudmqtt.com rồi tạo 1 tài khoản. sau khi tạo tài khoản xong thì đăng nhập

Cũng có thể đang nhập thông qua google cũng được
Tiếp theo chọn nút  CREATE :

Sau đó điền thông tin Name và Tag vào mấy cái còn lại giữ nguyên và chọn Create


 Sau khi tạo mình có 1 PLAN như sau :

 Nhấp vào bạn sẽ thấy Details như sau , căn cứ vào đây để viết code


 Chuyển qua WEBSOCKET UI để theo dõi nhiệt độ nhé



Sau khi up load code dưới đây vào esp32 các bạn mở CloudMqtt lên và theo dõi thôi :

#include <WiFi.h>
#include <PubSubClient.h>
#ifdef __cplusplus
extern "C" {
#endif
uint8_t temprature_sens_read();
#ifdef __cplusplus
}
#endif
/******************************************/
/*khai bao bien hang*/
#define sent "temp/room/sent"
#define received "temp/room/received"
const char* ssid="TUDONGHOA_K56";
const char* password="matkhau@";
const char* mqttserver="m14.cloudmqtt.com";
int mqttport=19945;
const char* mqttusername="phkmcqmx";
const char* mqttpassword="vk5p342GaVHL";
String stringtopic;
String stringmessage;
float temprature=0;
uint8_t temprature_sens_read();
char msg[20];
long lastMsg = 0;

/********************************************/
/*khoi tao client*/
WiFiClient Hocesp;
PubSubClient client(Hocesp);
/*khoi tao callback*/
void callback(char* topic, byte* message, unsigned int length) // broker truyen topic va message cua client dang ky
{
message[length] = '\0';
stringtopic=String(topic);
stringmessage=String((char*)message);
}
/*ham ket noi lai*/
void reconnect()
{
if (client.connect("ESP8266Client",mqttusername, mqttpassword, "lwt1", 2, true, "Connecting...")) //last will mat ket noi se gui "off" boolean connect (clientID, username, password, willTopic, willQoS, willRetain, willMessage)
{
client.publish("lwt1", "connected", true);
client.subscribe(sent);
}
else
delay(5000);

}
/*cai dat thong so cho esp 32*/
void setup()
{
Serial.begin(115200);
WiFi.begin(ssid, password);
client.setServer(mqttserver,mqttport);
client.setCallback(callback);
reconnect();
}
/* thuc hien code loop*/
void loop()
{
if (!client.connected())
{
reconnect();
}
client.loop();

/* thiep lap ham delay cho yeu cau 1 phut gui 1 lan nhiet do*/
long now = millis();
if (now - lastMsg > 60000)
{
lastMsg = now;
temprature=((temprature_sens_read()-32)/1.8); // chuyen doi tu do C sang do F
if (!isnan(temprature))
{
snprintf (msg, 20, "%lf", temprature);
client.publish(received,msg, true);
}
}
}
      edit

0 nhận xét:

Đăng nhận xét