0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

易络盟电子 来源:易络盟电子 作者:易络盟电子 2022-10-21 09:30 次阅读

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

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

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

b30dca16-507e-11ed-a3b6-dac502259ad0.jpg

带有 MySQL 数据库的 MQTT

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

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

b3358d94-507e-11ed-a3b6-dac502259ad0.jpg

b3779b9e-507e-11ed-a3b6-dac502259ad0.jpg

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

b3b1a97e-507e-11ed-a3b6-dac502259ad0.jpg

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

b3f2c94a-507e-11ed-a3b6-dac502259ad0.jpg

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

b402fb3a-507e-11ed-a3b6-dac502259ad0.jpg

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

b4237d1a-507e-11ed-a3b6-dac502259ad0.jpg

$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

b4457532-507e-11ed-a3b6-dac502259ad0.jpg

b46ebec4-507e-11ed-a3b6-dac502259ad0.jpg

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

b49c4dbc-507e-11ed-a3b6-dac502259ad0.jpg

b4b20378-507e-11ed-a3b6-dac502259ad0.jpg

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

b4d3f212-507e-11ed-a3b6-dac502259ad0.jpg

b4f73c40-507e-11ed-a3b6-dac502259ad0.jpg

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

b5196ba8-507e-11ed-a3b6-dac502259ad0.jpg

b553421a-507e-11ed-a3b6-dac502259ad0.jpg

我们现在可以从任何客户端发送数据并将其保存在数据库中。我们以连接了温度、压力和湿度等传感器树莓派为例:树莓派上运行的 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

    文章

    3698

    浏览量

    63987
  • MySQL
    +关注

    关注

    1

    文章

    789

    浏览量

    26271
  • 单板电脑
    +关注

    关注

    0

    文章

    9

    浏览量

    7627
  • MQTT
    +关注

    关注

    5

    文章

    624

    浏览量

    22266

原文标题:e教程 | 如何在单板电脑上设置MQTT代理

文章出处:【微信号:易络盟电子,微信公众号:易络盟电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    PSoC6的Wi-fi_mqtt_Client出现MQTT连接错误的原因?

    我在使用 PSoC6 板的 Wi-Fi_MQTT_Client 示例时遇到了一个问题。 Wi-Fi 连接成功了,但在尝试连接 MQTT 代理(test.mositto.org)时却出
    发表于 07-04 07:25

    MQTT协议介绍之二:连接

    。这基本都是从MQTT客户端连接到MQTT代理所需的所有信息。每个MQTT库通常都会有其他选项,可以进行具体配置。
    发表于 08-25 19:57

    求分享SoftAP的独立MQTT代理

    任何人都可以给我一个例子或者只是一个工作流+库来实现这个: 我想要一个 ESP8266 的独立 MQTT 代理。ESP8266 还必须有一个 SoftAP,以便其他 MQTT 客户端
    发表于 04-28 07:40

    何在menuconfig中为rtos mqtt示例设置代理url?

    的“示例配置”部分默认为一些云 mqtt url,但我希望它使用在我的一个 linux 机器运行的 mosquitto 代理。所以我将代理 url 指定为 192.168.88.1
    发表于 06-08 06:00

    讲解如何设置新型单板RIO系统的步骤

    本视频教您如何设置新型单板RIO系统。
    的头像 发表于 06-25 06:12 2692次阅读
    讲解如何<b class='flag-5'>设置</b>新型<b class='flag-5'>单板</b>RIO系统的步骤

    讲解如何设置单板RIO嵌入式控制系统

    如何设置单板RIO系统
    的头像 发表于 06-25 05:51 3866次阅读
    讲解如何<b class='flag-5'>设置</b><b class='flag-5'>单板</b>RIO嵌入式控制系统

    NodeMCU板的基本MQTT协议用法

    上传完成后,如果wifi热点名称和密码设置正常,并且连接了MQTT代理,请打开“串行监视器”,
    的头像 发表于 11-13 10:05 4753次阅读

    何在LoRaWAN网关的网页设置MQTT的订阅的Topic

    为接下来采用MQTT订阅获取到LoRa节点数据建立基础。 本文介绍在RAK的LoRa网关的网页,如何设置MQTT的Topic参数,以获取到某应用下的某个LoRa节点或所有LoRa节点
    发表于 06-12 17:29 1449次阅读

    如何通过mqtt.fx客户端来订阅节点数据

    在前面的文章里《如何在RAK的LoRaWAN网关的网页设置MQTT的订阅的Topic》,我们已经介绍了在RAK瑞科慧联的LoRa网关的网页
    发表于 06-10 17:20 1954次阅读
    如何通过<b class='flag-5'>mqtt</b>.fx客户端来订阅节点数据

    何在LoRaWAN网关上设置MQTT的Topic

    当我们将LoRaWAN网关设置为NS模式时,可参见文章如何将LoRaWAN网关设置为NS模式,我们就可以在LoRaWAN网关的网页上进行操作,以设置该网关的MQTT订阅的topic,从
    发表于 08-20 10:10 1107次阅读

    何在java代码中使用HTTP代理IP

    何在java代码中使用HTTP代理IP。
    的头像 发表于 08-04 15:38 2087次阅读

    何在python代码中使用HTTP代理IP

    何在python代码中使用HTTP代理IP。
    的头像 发表于 08-04 15:46 1167次阅读

    何在PHP代码中使用HTTP代理IP

    何在PHP代码中使用HTTP代理IP。
    的头像 发表于 08-04 16:08 2313次阅读

    何在Windows设置Pico RP2040

    电子发烧友网站提供《如何在Windows设置Pico RP2040.zip》资料免费下载
    发表于 06-15 09:35 4次下载
    如<b class='flag-5'>何在</b>Windows<b class='flag-5'>上</b><b class='flag-5'>设置</b>Pico RP2040

    何在Python中使用MQTT

    本文主要介绍如何在 Python 项目中使用 paho-mqtt 客户端库 ,实现客户端与 MQTT 服务器的连接、订阅、取消订阅、收发消息等功能。
    的头像 发表于 12-22 10:41 8632次阅读
    如<b class='flag-5'>何在</b>Python中使用<b class='flag-5'>MQTT</b>