日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

(esp32+MQTT+云服务器+MySQL)实现物联网温湿度数据采集到云端数据库MySQL

發布時間:2023/12/20 数据库 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (esp32+MQTT+云服务器+MySQL)实现物联网温湿度数据采集到云端数据库MySQL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言
之前物聯網硬件采集數據一直都是通過阿里云實現數據的可視化,沒有將硬件采集到的數據存入云數據庫,沒有進一步利用數據進行操作。
本文一共有五個步驟:
1.esp32通過arduino平臺和硬件DHT11溫濕度模塊采集數據
2.創建EMQ X Cloud MQTT云服務器或者本地部署EMQ X企業版MQTT服務器(這里展示云與服務器)
3.云服務器通過寶塔創建MySQL數據庫或本地虛擬機內寶塔MySQL數據庫(這里展示云MySQ)
4.利用MQTT將硬件采集到的數據送入云服務器MySQL存儲
5.效果展示

1.esp32通過arduino平臺和硬件DHT11溫濕度模塊采集數據

1.1硬件設備在這里插入圖片描述

樂鑫esp32

DHT11溫濕度模塊

1.2、軟件準備
1.2.1、Arduino IDE
a)官方下載地址: http://arduino.cc/en/Main/Software
b)Arduino IDE老版本下載鏈接:https://www.arduino.cc/en/Main/OldSoftwareReleases#previous

1.2.2、庫文件*esp32開發板下載
打開arduino udo-文件-首選項-附加開發板管理器網址,添加https://dl.espressif.com/dl/package_esp32_index.json
再點工具-開發版-開發版管理器,搜索esp32并下載。
1.2.3、庫文件
鏈接:http://note.youdao.com/noteshare?id=28fa267e0187a5e7502079098b27a9fe&sub=21E9C4DB0C0846018189EA1E27F9D72D

1.2.4、硬件連線

ESP32 --------------------- DHT11 P15 --------------------- DATA 3.5V --------------------- VCC GND --------------------- GND

注:搭建好mqtt服務器在運行代碼
1.2.5、示例代碼

```c #include <WiFi.h> #include <PubSubClient.h> #include <DFRobot_DHT11.h> #include <ArduinoJson.h> DFRobot_DHT11 DHT; #define DHT11_PIN 15 #include <string.h> const char* ssid = ""; //wifi賬號 const char* password = "; //wifi密碼 const char* mqttServer = ""; //mqtt服務器 const int mqttPort = ;//端口 const char* mqttUser = ""; //mqtt賬號 const char* mqttPassword = ""; //mqtt密碼String Temp="temp";String Hum="hum";char str[60];char str1[20];char str2[20]; WiFiClient espClient; PubSubClient client(espClient);void setup() {Serial.begin(115200);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.println("Connecting to WiFi..");}Serial.println("Connected to the WiFi network");client.setServer(mqttServer, mqttPort);while (!client.connected()) {Serial.println("Connecting to MQTT...");if (client.connect(topic, mqttUser, mqttPassword )) {Serial.println("connected");} else {Serial.print("failed with state ");Serial.print(client.state());delay(2000);}}client.publish(topic, "Hello from ESP32"); //填寫主題}void loop() {DHT.read(DHT11_PIN);String temp= String(DHT.temperature);String humidity1 = String(DHT.humidity);sprintf(str,"{\"temp\":%s,\"hum\":%s}",temp,humidity1);Serial.println(str);client.publish(topic,str); //填寫主題delay(10000);client.loop(); }

1.3串口打印信息

2.創建EMQX Cloud MQTT服務器

方案一

2.1、在云服務上安裝EMQX Cloud(開始180天試用云服務器板)

進行注冊后

2.2、下載MQTTX軟件測試EMQ X Cloud MQTT服務器的搭建情況
測試軟件在這里下載https://mqttx.app/cn/


新建一個連接
名稱隨便
服務器地址和端口填寫 EMQ X Cloud概覽里面的連接地址和連接端口(端口選擇mqtt的端口)

用戶名和密碼在 EMQ X Cloud 認證鑒權-認證里面添加

連接上之后可以向指定的Topic發送消息,也可以訂閱Topic,同時在控制臺也可以看到連接上了的客戶端

EMQ X Cloud 監控里面已經有顯示已連接

3.云服務器通過寶塔創建MySQL數據庫并連接到本地

這部分需要在我們的云服務器上安裝一個數據庫,我在這里選擇的是MySQL,還需要安裝PHP、Nginx。大家可以自行在服務器上安裝,這里展示華為云安裝寶塔后的情況


1.第一次打開面板會自動提示安裝LNMP套件,選擇一鍵安裝即可,安裝完成之后點擊數據庫,在安全開放3306端口,選擇新建數據庫,要記住用戶名和密碼,等下我們本地連接數據庫的時候要用到,訪問權限建議選擇所有IP。
2.在MySQL服務器創建溫濕度標,在寶塔面板數據庫內點擊管理,

3.復制代碼

CREATE TABLE `temp_hum` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`up_timestamp` timestamp NULL DEFAULT NULL,`client_id` varchar(32) DEFAULT NULL,`temp` float unsigned DEFAULT NULL,`hum` float unsigned DEFAULT NULL,PRIMARY KEY (`id`),KEY `up_timestamp_client_id` (`up_timestamp`,`client_id`) ) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4;

到這里,點擊執行,一個溫濕度表即創建成功。


數據庫建立好后可以在本地用Navicat 15 for MySQL連接數據庫,方便數據后續操作。這里不展開,只是展示下連接步驟
1.連接名隨便
2.主機填寫MySQL所在云服務器的地址
3.用戶名和密碼填寫MySQL的用戶名和密碼
4.測試連接,連接成功即可
5.開啟連接后可以看到在云服務器寶塔里面的數據庫同步過來

4.利用MQTT將硬件采集到的數據送入云服務器MySQL存儲

在這里我們需要將服務器收到的JSON格式數據根據字段分割開來,并且將相應的字段存進數據庫,實現數據的永久化,這一步可以使用MQTT服務器的規則引擎模塊。

在EMQ X規則引擎-規則 新建規則內輸入下面代碼,新建規則,這里的規則就是用來根據字段切割消息。

SELECT timestamp as up_timestamp, clientid as client_id, payload.temp as temp, payload.hum as hum FROM "temp_hum/emqx"


填寫規則后,我們可以使用SQL測試,看看規則能否使用,確保數據能夠上傳。

測試完成后添加響應動作


數據選保存到MySQL
使用資源選擇新建

MySQL填寫云服務器寶塔里面的IP地址:3306
MySQL數據庫名和用戶名、密碼填寫云服務器寶塔里面的MySQL。

SQL模塊填寫

insert into temp_hum(up_timestamp, client_id, temp, hum) values (FROM_UNIXTIME(${up_timestamp}/1000), ${client_id}, ${temp}, ${hum})


確認后創建即可。這樣到現在我們就實現了 硬件-EMQ XMQTT服務器 -云服務器MySQL數據庫 -本地Navicat 15 for MySQL。

5.效果展示

開機連接wifi和mqtt,過段時間打印溫濕度數據

MQTT服務器收到消息后,會檢測是否符合規則,如果消息命中規則,則將數據根據字段切割,并且存進數據庫。
云服務器數據情況

本地數據庫情況

注:這里只是展示云服務器部署,其實本地部署和云服務器部署差別不大

總結

以上是生活随笔為你收集整理的(esp32+MQTT+云服务器+MySQL)实现物联网温湿度数据采集到云端数据库MySQL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。