如何在单板电脑上设置MQTT代理

描述

我们在网页上享受的大部分服务都是由网站数据库应用程序提供的。

要构建一个现代网站,您需要开发一个数据库应用程序。MySQL 数据库适用于各种案例,包括关键任务应用程序、动态网站,以及作为软件、硬件和设备的嵌入式数据库。

像AWS、Google 和 IBM 在内的许多 IOT 平台都支持 MQTT,但大多数在线代理(例如 Mosquitto)无法将传入的消息存储在数据库中。大多数解决方案是我们订阅主题并接收所有传入主题的消息,然后将传入消息存储在数据库中。

MySQL

带有 MySQL 数据库的 MQTT

在本篇文章中,您将学习如何使用 EMQ 代理将 MQTT 消息存储在数据库中。使用 EMQ 代理,您可以编写插件,这些插件可用于通过“挂钩”点击传入和传出消息。挂钩是发生特定事件时调用的函数。

让我们开始在 Amazon AWS 控制台上创建一个名为 EMQ 的新Ubuntu 实例。创建实例后,为该实例分配 IP 地址。

MySQL

MySQL

更新 AWS 中的安全组。添加入站规则以授予对运行 MQTT 代理的端口的访问权限。

MySQL

现在打开putty 并通过 SSH 访问 AWS 服务器上的Ubuntu,方法是提供分配给实例的 IP 地址。默认用户名是 Ubuntu。

MySQL

登录后我们开始安装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

 

MySQL

 

$ 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。

MySQL

 

$ nano .env
Uncomment (remove the ##) the two lines that read ##DB_CHARSET=utf8 and ##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
Copy and paste from the file attached and exit editor
$ 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

MySQL

MySQL

转到应用程序并为设备生成远程访问密钥的 API 密钥。输入详细信息如下图所示

MySQL

MySQL

生成 API 密钥后,我们将连接到 MySQL 数据库,单击服务并创建,然后选择 MySQL 数据库。填写用户名、端口号数据库、用户名和密码。

MySQL

MySQL

API 密钥需要在 emq_plugin_template 中更新 ,以便将数据发送到 MySQL 数据库,如下所示。

MySQL

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)

 

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分