(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、示例代碼
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.復制代碼
到這里,點擊執行,一個溫濕度表即創建成功。
數據庫建立好后可以在本地用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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网易考拉Android客户端路由总线设计
- 下一篇: linux cmake编译源码,linu