(esp32+MQTT+云服务器+MySQL)实现物联网温湿度数据采集到云端数据库MySQL
前言
之前物聯(lián)網(wǎng)硬件采集數(shù)據(jù)一直都是通過阿里云實現(xiàn)數(shù)據(jù)的可視化,沒有將硬件采集到的數(shù)據(jù)存入云數(shù)據(jù)庫,沒有進一步利用數(shù)據(jù)進行操作。
本文一共有五個步驟:
1.esp32通過arduino平臺和硬件DHT11溫濕度模塊采集數(shù)據(jù)
2.創(chuàng)建EMQ X Cloud MQTT云服務(wù)器或者本地部署EMQ X企業(yè)版MQTT服務(wù)器(這里展示云與服務(wù)器)
3.云服務(wù)器通過寶塔創(chuàng)建MySQL數(shù)據(jù)庫或本地虛擬機內(nèi)寶塔MySQL數(shù)據(jù)庫(這里展示云MySQ)
4.利用MQTT將硬件采集到的數(shù)據(jù)送入云服務(wù)器MySQL存儲
5.效果展示
1.esp32通過arduino平臺和硬件DHT11溫濕度模塊采集數(shù)據(jù)
1.1硬件設(shè)備在這里插入圖片描述
樂鑫esp32
DHT11溫濕度模塊
1.2、軟件準(zhǔn)備
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開發(fā)板下載
打開arduino udo-文件-首選項-附加開發(fā)板管理器網(wǎng)址,添加https://dl.espressif.com/dl/package_esp32_index.json
再點工具-開發(fā)版-開發(fā)版管理器,搜索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服務(wù)器在運行代碼
1.2.5、示例代碼
1.3串口打印信息
2.創(chuàng)建EMQX Cloud MQTT服務(wù)器
方案一
2.1、在云服務(wù)上安裝EMQX Cloud(開始180天試用云服務(wù)器板)
進行注冊后
2.2、下載MQTTX軟件測試EMQ X Cloud MQTT服務(wù)器的搭建情況
測試軟件在這里下載https://mqttx.app/cn/
新建一個連接
名稱隨便
服務(wù)器地址和端口填寫 EMQ X Cloud概覽里面的連接地址和連接端口(端口選擇mqtt的端口)
用戶名和密碼在 EMQ X Cloud 認證鑒權(quán)-認證里面添加
連接上之后可以向指定的Topic發(fā)送消息,也可以訂閱Topic,同時在控制臺也可以看到連接上了的客戶端
EMQ X Cloud 監(jiān)控里面已經(jīng)有顯示已連接
3.云服務(wù)器通過寶塔創(chuàng)建MySQL數(shù)據(jù)庫并連接到本地
這部分需要在我們的云服務(wù)器上安裝一個數(shù)據(jù)庫,我在這里選擇的是MySQL,還需要安裝PHP、Nginx。大家可以自行在服務(wù)器上安裝,這里展示華為云安裝寶塔后的情況
1.第一次打開面板會自動提示安裝LNMP套件,選擇一鍵安裝即可,安裝完成之后點擊數(shù)據(jù)庫,在安全開放3306端口,選擇新建數(shù)據(jù)庫,要記住用戶名和密碼,等下我們本地連接數(shù)據(jù)庫的時候要用到,訪問權(quán)限建議選擇所有IP。
2.在MySQL服務(wù)器創(chuàng)建溫濕度標(biāo),在寶塔面板數(shù)據(jù)庫內(nèi)點擊管理,
3.復(fù)制代碼
到這里,點擊執(zhí)行,一個溫濕度表即創(chuàng)建成功。
數(shù)據(jù)庫建立好后可以在本地用Navicat 15 for MySQL連接數(shù)據(jù)庫,方便數(shù)據(jù)后續(xù)操作。這里不展開,只是展示下連接步驟
1.連接名隨便
2.主機填寫MySQL所在云服務(wù)器的地址
3.用戶名和密碼填寫MySQL的用戶名和密碼
4.測試連接,連接成功即可
5.開啟連接后可以看到在云服務(wù)器寶塔里面的數(shù)據(jù)庫同步過來
4.利用MQTT將硬件采集到的數(shù)據(jù)送入云服務(wù)器MySQL存儲
在這里我們需要將服務(wù)器收到的JSON格式數(shù)據(jù)根據(jù)字段分割開來,并且將相應(yīng)的字段存進數(shù)據(jù)庫,實現(xiàn)數(shù)據(jù)的永久化,這一步可以使用MQTT服務(wù)器的規(guī)則引擎模塊。
在EMQ X規(guī)則引擎-規(guī)則 新建規(guī)則內(nèi)輸入下面代碼,新建規(guī)則,這里的規(guī)則就是用來根據(jù)字段切割消息。
SELECT timestamp as up_timestamp, clientid as client_id, payload.temp as temp, payload.hum as hum FROM "temp_hum/emqx"
填寫規(guī)則后,我們可以使用SQL測試,看看規(guī)則能否使用,確保數(shù)據(jù)能夠上傳。
測試完成后添加響應(yīng)動作
數(shù)據(jù)選保存到MySQL
使用資源選擇新建
MySQL填寫云服務(wù)器寶塔里面的IP地址:3306
MySQL數(shù)據(jù)庫名和用戶名、密碼填寫云服務(wù)器寶塔里面的MySQL。
SQL模塊填寫
insert into temp_hum(up_timestamp, client_id, temp, hum) values (FROM_UNIXTIME(${up_timestamp}/1000), ${client_id}, ${temp}, ${hum})
確認后創(chuàng)建即可。這樣到現(xiàn)在我們就實現(xiàn)了 硬件-EMQ XMQTT服務(wù)器 -云服務(wù)器MySQL數(shù)據(jù)庫 -本地Navicat 15 for MySQL。
5.效果展示
開機連接wifi和mqtt,過段時間打印溫濕度數(shù)據(jù)
MQTT服務(wù)器收到消息后,會檢測是否符合規(guī)則,如果消息命中規(guī)則,則將數(shù)據(jù)根據(jù)字段切割,并且存進數(shù)據(jù)庫。
云服務(wù)器數(shù)據(jù)情況
本地數(shù)據(jù)庫情況
注:這里只是展示云服務(wù)器部署,其實本地部署和云服務(wù)器部署差別不大
總結(jié)
以上是生活随笔為你收集整理的(esp32+MQTT+云服务器+MySQL)实现物联网温湿度数据采集到云端数据库MySQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网易考拉Android客户端路由总线设计
- 下一篇: Word中公式编辑的快捷键