我們在網頁上享受的大部分服務都是由網站數據庫應用程序提供的。
要構建一個現代網站,您需要開發一個數據庫應用程序。MySQL 數據庫適用于各種案例,包括關鍵任務應用程序、動態網站,以及作為軟件、硬件和設備的嵌入式數據庫。
像AWS、Google 和 IBM 在內的許多 IOT 平臺都支持 MQTT,但大多數在線代理(例如 Mosquitto)無法將傳入的消息存儲在數據庫中。大多數解決方案是我們訂閱主題并接收所有傳入主題的消息,然后將傳入消息存儲在數據庫中。
帶有 MySQL 數據庫的 MQTT
在本篇文章中,您將學習如何使用 EMQ 代理將 MQTT 消息存儲在數據庫中。使用 EMQ 代理,您可以編寫插件,這些插件可用于通過“掛鉤”點擊傳入和傳出消息。掛鉤是發生特定事件時調用的函數。
讓我們開始在 Amazon AWS 控制臺上創建一個名為 EMQ 的新Ubuntu 實例。創建實例后,為該實例分配 IP 地址。
更新 AWS 中的安全組。添加入站規則以授予對運行 MQTT 代理的端口的訪問權限。
現在打開putty 并通過 SSH 訪問 AWS 服務器上的Ubuntu,方法是提供分配給實例的 IP 地址。默認用戶名是 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
回答屏幕提示為系統創建您的第一個管理員用戶
$ 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 應用程序就安裝好了。
DreamFactory 是一個開源 REST API 中間件平臺,為構建手機、網站和 IoT 應用程序提供 RESTful 服務。
接下來我們去安裝mySql數據庫并創建新用戶以便dreamfactory可以訪問它。
使用在設置過程中輸入的默認用戶名和密碼登錄dreamfactory。我們必須創建角色,這些角色是設備的權限。輸入創建 EMQ 實例時生成的 ip 地址,例如 35.172.132.132/dreamfacrory/dist/index.html
轉到應用程序并為設備生成遠程訪問密鑰的 API 密鑰。輸入詳細信息如下圖所示
生成 API 密鑰后,我們將連接到 MySQL 數據庫,單擊服務并創建,然后選擇 MySQL 數據庫。填寫用戶名、端口號數據庫、用戶名和密碼。
API 密鑰需要在 emq_plugin_template 中更新 ,以便將數據發送到 MySQL 數據庫,如下所示。
我們現在可以從任何客戶端發送數據并將其保存在數據庫中。我們以連接了溫度、壓力和濕度等傳感器的樹莓派為例:樹莓派上運行的 paho-mqtt 客戶端將數據發送到 MySQL 數據庫。
在終端輸入樹莓派安裝 paho mqtt。
$ pip3 install paho-mqtt
要連接到服務器,我們可以鍵入
client = mqtt.Client() client.on_connect = on_connect client.connect("35.172.132.132", 1883, 60)
下面的命令會將主題發送到代理并保存在 MySQL 數據庫中。
client.publish('raspberry/topic', payload=i, qos=0, retain=False)
-
數據庫
+關注
關注
7文章
3794瀏覽量
64362 -
MySQL
+關注
關注
1文章
804瀏覽量
26531 -
單板電腦
+關注
關注
0文章
10瀏覽量
7664 -
MQTT
+關注
關注
5文章
650瀏覽量
22487
原文標題:e教程 | 如何在單板電腦上設置MQTT代理
文章出處:【微信號:易絡盟電子,微信公眾號:易絡盟電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論