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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

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

1.esp32通過arduino平臺(tái)和硬件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-文件-首選項(xiàng)-附加開發(fā)板管理器網(wǎng)址,添加https://dl.espressif.com/dl/package_esp32_index.json
再點(diǎn)工具-開發(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ù)器在運(yùn)行代碼
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賬號(hào) const char* password = "; //wifi密碼 const char* mqttServer = ""; //mqtt服務(wù)器 const int mqttPort = ;//端口 const char* mqttUser = ""; //mqtt賬號(hào) 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.創(chuàng)建EMQX Cloud MQTT服務(wù)器

方案一

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

進(jìn)行注冊(cè)后

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


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

用戶名和密碼在 EMQ X Cloud 認(rèn)證鑒權(quán)-認(rèn)證里面添加

連接上之后可以向指定的Topic發(fā)送消息,也可以訂閱Topic,同時(shí)在控制臺(tái)也可以看到連接上了的客戶端

EMQ X Cloud 監(jiān)控里面已經(jīng)有顯示已連接

3.云服務(wù)器通過寶塔創(chuàng)建MySQL數(shù)據(jù)庫并連接到本地

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


1.第一次打開面板會(huì)自動(dòng)提示安裝LNMP套件,選擇一鍵安裝即可,安裝完成之后點(diǎn)擊數(shù)據(jù)庫,在安全開放3306端口,選擇新建數(shù)據(jù)庫,要記住用戶名和密碼,等下我們本地連接數(shù)據(jù)庫的時(shí)候要用到,訪問權(quán)限建議選擇所有IP。
2.在MySQL服務(wù)器創(chuàng)建溫濕度標(biāo),在寶塔面板數(shù)據(jù)庫內(nèi)點(diǎn)擊管理,

3.復(fù)制代碼

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;

到這里,點(diǎn)擊執(zhí)行,一個(gè)溫濕度表即創(chuàng)建成功。


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

4.利用MQTT將硬件采集到的數(shù)據(jù)送入云服務(wù)器MySQL存儲(chǔ)

在這里我們需要將服務(wù)器收到的JSON格式數(shù)據(jù)根據(jù)字段分割開來,并且將相應(yīng)的字段存進(jìn)數(shù)據(jù)庫,實(shí)現(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測(cè)試,看看規(guī)則能否使用,確保數(shù)據(jù)能夠上傳。

測(cè)試完成后添加響應(yīng)動(dò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})


確認(rèn)后創(chuàng)建即可。這樣到現(xiàn)在我們就實(shí)現(xiàn)了 硬件-EMQ XMQTT服務(wù)器 -云服務(wù)器MySQL數(shù)據(jù)庫 -本地Navicat 15 for MySQL。

5.效果展示

開機(jī)連接wifi和mqtt,過段時(shí)間打印溫濕度數(shù)據(jù)

MQTT服務(wù)器收到消息后,會(huì)檢測(cè)是否符合規(guī)則,如果消息命中規(guī)則,則將數(shù)據(jù)根據(jù)字段切割,并且存進(jìn)數(shù)據(jù)庫。
云服務(wù)器數(shù)據(jù)情況

本地?cái)?shù)據(jù)庫情況

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。