我們在網(wǎng)頁上享受的大部分服務(wù)都是由網(wǎng)站數(shù)據(jù)庫應(yīng)用程序提供的。
要構(gòu)建一個現(xiàn)代網(wǎng)站,您需要開發(fā)一個數(shù)據(jù)庫應(yīng)用程序。MySQL 數(shù)據(jù)庫適用于各種案例,包括關(guān)鍵任務(wù)應(yīng)用程序、動態(tài)網(wǎng)站,以及作為軟件、硬件和設(shè)備的嵌入式數(shù)據(jù)庫。
像AWS、Google 和 IBM 在內(nèi)的許多 IOT 平臺都支持 MQTT,但大多數(shù)在線代理(例如 Mosquitto)無法將傳入的消息存儲在數(shù)據(jù)庫中。大多數(shù)解決方案是我們訂閱主題并接收所有傳入主題的消息,然后將傳入消息存儲在數(shù)據(jù)庫中。
帶有 MySQL 數(shù)據(jù)庫的 MQTT
在本篇文章中,您將學(xué)習(xí)如何使用 EMQ 代理將 MQTT 消息存儲在數(shù)據(jù)庫中。使用 EMQ 代理,您可以編寫插件,這些插件可用于通過“掛鉤”點(diǎn)擊傳入和傳出消息。掛鉤是發(fā)生特定事件時調(diào)用的函數(shù)。
讓我們開始在 Amazon AWS 控制臺上創(chuàng)建一個名為 EMQ 的新Ubuntu 實(shí)例。創(chuàng)建實(shí)例后,為該實(shí)例分配 IP 地址。
更新 AWS 中的安全組。添加入站規(guī)則以授予對運(yùn)行 MQTT 代理的端口的訪問權(quán)限。
現(xiàn)在打開putty 并通過 SSH 訪問 AWS 服務(wù)器上的Ubuntu,方法是提供分配給實(shí)例的 IP 地址。默認(rèn)用戶名是 Ubuntu。
登錄后我們開始安裝EMQ 代理。輸入以下命令以安裝依賴項和代理
$ sudo apt-get update $ sudo apt-get install build-essential $ Sudo apt-get install erlang $ git clone https://github.com/emqtt/emq-relx.git $ cd emq-relx && make $ cd _rel /emqttd && ./bin/emqttd console
安裝 EMQ 代理后,我們可以按照以下步驟安裝 MySQL
$ sudo apt-get update $ sudo apt-get install mysql-server $ mysql_secure_installation $ sudo apt-get install git curl zip unzip $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get install php7.4-fpm php7.4-common php7.4-xml php7.4-cli php7.4-curl php7.4-json php7.4-mcrypt php7.4-mysqlnd php7.4-sqlite php7.4-soap php7.4-mbstring php7.4-zip php7.4-bcmath $ sudo nano /etc/php/7.4/fpm/php.ini
找到讀取 cgi.fix_pathinfo=1 的行并將其更改為讀取 cgi.fix_pathinfo=0
$ cd ~ $ mkdir bin $ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" $ php composer-setup.php --install-dir=/home/ubuntu/bin --filename=composer $ mysql –u root –p Mysql>CREATE DATABASE dreamfactory; Mysql>GRANT ALL PRIVILEGES ON dreamfactory.* to 'dfadmin'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD_HERE'; Mysql>FLUSH PRIVILEGES; Mysql> quit
$ sudo mkdir /opt/dreamfactory $ sudo chown -R ubuntu /opt/dreamfactory $ cd /opt/dreamfactory $ git clone https://github.com/dreamfactorysoftware/dreamfactory.git $ composer install --no-dev --ignore-platform-reqs $ php artisan df:env
如下圖所示配置dreamfactory。用戶名和密碼是 dfadmin。
$nano.env Uncomment(removethe##)thetwolinesthatread##DB_CHARSET=utf8and##DB_COLLATION=utf8_unicode_ci $ php artisan df:setup
回答屏幕提示為系統(tǒng)創(chuàng)建您的第一個管理員用戶
$ sudo chown -R www-data:ubuntu storage/ bootstrap/cache/ $ sudo chmod -R 2775 storage/ bootstrap/cache/ $ php artisan cache:clear $ sudo apt-get install nginx $ cd /etc/nginx/sites-available $ sudo cp default default.bak $ sudo nano default Copyandpastefromthefileattachedandexiteditor $ sudo service php7.4-fpm restart && sudo service nginx restart
至此,dreamfactory 應(yīng)用程序就安裝好了。
DreamFactory 是一個開源 REST API 中間件平臺,為構(gòu)建手機(jī)、網(wǎng)站和 IoT 應(yīng)用程序提供 RESTful 服務(wù)。
接下來我們?nèi)グ惭bmySql數(shù)據(jù)庫并創(chuàng)建新用戶以便dreamfactory可以訪問它。
使用在設(shè)置過程中輸入的默認(rèn)用戶名和密碼登錄dreamfactory。我們必須創(chuàng)建角色,這些角色是設(shè)備的權(quán)限。輸入創(chuàng)建 EMQ 實(shí)例時生成的 ip 地址,例如 35.172.132.132/dreamfacrory/dist/index.html
轉(zhuǎn)到應(yīng)用程序并為設(shè)備生成遠(yuǎn)程訪問密鑰的 API 密鑰。輸入詳細(xì)信息如下圖所示
生成 API 密鑰后,我們將連接到 MySQL 數(shù)據(jù)庫,單擊服務(wù)并創(chuàng)建,然后選擇 MySQL 數(shù)據(jù)庫。填寫用戶名、端口號數(shù)據(jù)庫、用戶名和密碼。
API 密鑰需要在 emq_plugin_template 中更新 ,以便將數(shù)據(jù)發(fā)送到 MySQL 數(shù)據(jù)庫,如下所示。
我們現(xiàn)在可以從任何客戶端發(fā)送數(shù)據(jù)并將其保存在數(shù)據(jù)庫中。我們以連接了溫度、壓力和濕度等傳感器的樹莓派為例:樹莓派上運(yùn)行的 paho-mqtt 客戶端將數(shù)據(jù)發(fā)送到 MySQL 數(shù)據(jù)庫。
在終端輸入樹莓派安裝 paho mqtt。
$ pip3 install paho-mqtt
要連接到服務(wù)器,我們可以鍵入
client = mqtt.Client() client.on_connect = on_connect client.connect("35.172.132.132", 1883, 60)
下面的命令會將主題發(fā)送到代理并保存在 MySQL 數(shù)據(jù)庫中。
client.publish('raspberry/topic', payload=i, qos=0, retain=False)
-
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3900瀏覽量
65735 -
MySQL
+關(guān)注
關(guān)注
1文章
849瀏覽量
27499 -
單板電腦
+關(guān)注
關(guān)注
0文章
10瀏覽量
7773 -
MQTT
+關(guān)注
關(guān)注
5文章
668瀏覽量
23449
原文標(biāo)題:e教程 | 如何在單板電腦上設(shè)置MQTT代理
文章出處:【微信號:易絡(luò)盟電子,微信公眾號:易絡(luò)盟電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
PSoC6上的Wi-fi_mqtt_Client出現(xiàn)MQTT連接錯誤的原因?
MQTT協(xié)議介紹之二:連接
求分享SoftAP上的獨(dú)立MQTT代理?
如何在menuconfig中為rtos mqtt示例設(shè)置代理url?
NodeMCU板上的基本MQTT協(xié)議用法
如何在LoRaWAN網(wǎng)關(guān)的網(wǎng)頁上設(shè)置MQTT的訂閱的Topic
如何在LoRaWAN網(wǎng)關(guān)上設(shè)置MQTT的Topic
如何在Windows上設(shè)置Pico RP2040

如何在Python中使用MQTT

評論