将本地 mosquitto 桥接到云代理

2023-12-07

我正在尝试将本地 mosquitto(在树莓派上)桥接到某个云代理,以便我可以发送数据并使用该数据控制某些设备。我尝试使用 Cloudmqtt 和 dioty,但没有成功。在 cloudmqtt 的情况下,我被告知 mosquitto.conf 文件一切正常,而对于 dioty,我被告知它使用不支持桥接的 Mosca 代理(有人告诉我我指的是 cloudmqtt 和 dioty)支持服务)。有人知道一些可以桥接到本地蚊子的远程代理吗?有人已经尝试过吗?

我考虑过使用一些物联网平台来做到这一点,但我已经读过该平台,比如使用定价,我这样做是为了学习和爱好目的,所以在我学习如何使用它之前,我想保留免费帐户。

编辑: 我正在使用 mosquitto 1.4.5,mosquitto.conf 文件如下:

#Place your local configuration in /etc/mosquitto/conf.d/
#
#A full description of the configuration file is at
#/usr/share/doc/mosquitto/examples/mosquitto.conf.example

connection cloudmqtt
address mnumber.cloudmqtt.com:port
topic zaESP8266 in 0
topic ESP8266 out 0
try_private true
notifications false
start_type automatic
remote_usename username_of_the_user_on_cloudmqtt
remote_password password_of the_user_on_cloudmqtt

pid_file /var/run/mosquitto.pid

persistance true
persistance_location /var/lib/mosquitto/

我选择 Cloudmqtt 作为在线 mosquitto 代理的原因是因为我认为本地 mosquitto 远程 mosquitto 桥应该可以工作。我可以使用笔记本电脑或电话等客户端,并使用它们向本地代理发布和订阅消息。这样,即使我无法访问互联网,我也可以让本地经纪人与本地客户进行交互。

编辑: 我配置了 mosquitto.conf 文件,以便可以与 test.mosquitto.org 桥接,我添加了这些行:

connection test
address test.mosquitto.org
topic in_topic in 0
topic out_topic out 0
try_private false
notifications false
bridge_attempt_unsubscribe true

现在,在一个终端中我可以使用mosquitto_sub -t in_topic在我使用的其他终端中mosquitto_pub -h test.mosquitto.org -t in_topic -m message。我在使用 mosquitto_sub 命令的第一个终端中收到该消息。因此,在此之后,我认为桥接器运行良好是正确的。但我无法弄清楚桥接到 cloudmqtt 的问题是什么。

Cloudmqtt使用mosquitto mqtt代理,dioty从mosquitto交叉到Mosca mqtt代理,不支持桥接,但显然具有更好的可扩展性(此信息已由dioty客户服务提供给我)

编辑: 我使用 Node-RED 解决了这个桥接问题。刚刚添加了一个 mqtt 输入并将其配置为本地 mosquitto 代理(端口 1883)和两个 mqtt 输出(用于 cloudmqtt 和 DIoTY)。

在cloudmqtt上,创建帐户后(可爱的猫是免费的),进入控制面板并添加cloudmqtt实例,cloudmqtt将向您提供用户名和密码。在 Node-RED 中,通过添加服务器、用户名、密码和端口来配置 cloudmqtt 实例的 mqtt 输出之一。

在 DIoTY 上,您还需要创建帐户或使用 google 或其他帐户登录。当您登录时,系统将向您提供用户名(即您的邮件帐户)以及其他信息,例如主机和端口、密码,这些信息将发送到电子邮件帐户。因此,要在 Node-RED 中使用它,您需要将主机(服务器)、用户名、密码和端口添加到 mqtt 输出。当您订阅或发布消息时,请记住您有根主题,例如:

/您的邮件帐户/主题

无论是订阅某个主题还是发布一些消息,您都需要添加根主题作为某种前缀。

完成此配置后,您需要部署更改,就是这样。因此,对于这种情况,我使用了 Node-RED。


我在用windows and c9.io Linux 控制台 tested.


我发现https://www.cloudmqtt.com/docs-faq.html#TLS_SSL

云MQTT网服务器证书由 Comodo 签名,它具有添加信任 CA作为根。大多数操作系统默认都带有它,因此您可以指向默认的信任/CA 存储吗?

获取 AddTrust CA 证书的方法

方法01

  1. Click Start, click 开始寻找, type mmc,然后按 ENTER 键。

  2. On the File菜单,单击添加/删除管理单元.

  3. Under 可用的管理单元, click 证书,然后单击Add.

  4. Under 此管理单元将始终管理证书, click 电脑账户,然后单击Next.

  5. Click 本地电脑,然后单击Finish.

  6. 如果没有更多管理单元可添加到控制台,请单击OK.

  7. 在控制台树中,双击证书.

  8. 点击进入受信任的根证书颁发机构 > 证书 store.

  9. 右键点击添加信任外部 CA 根

  10. Click Export要导出证书并按照证书导出向导中的步骤操作,导出文件格式选择Base-64 编码的 X.509(CER).

  11. 保存ca.cer到 **C:\Program Files\mosquitto**

方法02

我在这里获得证书:www.tbs-certificates.co.uk/FAQ/en/357.html

添加信任 CA 根证书 : http://www.tbs-x509.com/AddTrustExternalCARoot.crt

  1. Copy 添加信任外部CARoot.crt到 C:\Program Files\mosquitto\
  2. 双击添加信任外部CARoot.crt,安装证书...

将 Mosquito 桥接到 CloudMQTT

Windows

我在用着蚊子 1.4.11, windows, mosquitto.conf文件我使用差异名称(云配置文件),它看起来像这样:

connection cloudmqtt
address xxx.cloudmqtt.com:<ssl-port>
remote_username <username_of_the_user_on_cloudmqtt>
remote_password <password_of the_user_on_cloudmqtt>
remote_clientid cloud.mqtt
bridge_protocol_version mqttv311
try_private true
notifications false
start_type automatic
topic # both 2
# Method 01
bridge_cafile ca.cer
# Method 02
#bridge_cafile AddTrustExternalCARoot.crt
bridge_insecure false
cleansession false
local_clientid local.mosquitto

Run cmd.exe

C:\Program Files\mosquitto> mosquitto.exe -c cloud.conf -v

1490627692: mosquitto version 1.4.11 (build date 20/02/2017 23:24:29.40) starting
1490627692: Config loaded from cloud.conf.
1490627692: Opening ipv6 listen socket on port 1883.
1490627692: Opening ipv4 listen socket on port 1883.
1490627692: Bridge local.mosquitto doing local SUBSCRIBE on topic #
1490627692: Connecting bridge cloudmqtt (xxx.cloudmqtt.com:<ssl-port>)
1490627692: Bridge cloud.mqtt sending CONNECT
1490627693: Received CONNACK on connection local.mosquitto.
1490627693: Bridge local.mosquitto sending SUBSCRIBE (Mid: 1, Topic: #, QoS: 2)
1490627693: Received SUBACK from local.mosquitto
...

Now, my 当地蚊子经纪人桥接的云MQTT网以两种方式进行通信。


Linux

简单尝试一下c9.io Linux 控制台使用方法02(AddTrustExternalCARoot.crt),输出如下。

$ mosquitto -c cloud.conf -v -p 8080
1490634446: mosquitto version 1.4.11 (build date Fri, 03 Mar 2017 15:11:39 +0000) starting
1490634446: Config loaded from cloud.conf.
1490634446: Opening ipv4 listen socket on port 8080.
1490634446: Opening ipv6 listen socket on port 8080.
1490634446: Bridge c9.mosquitto doing local SUBSCRIBE on topic #
1490634446: Connecting bridge cloudmqtt2c9 (xxx.cloudmqtt.com:<ssl-port>)
1490634446: Connecting bridge cloudmqtt2c9 (xxx.cloudmqtt.com:<ssl-port>)
1490634446: Bridge cloud.mqtt.c9 sending CONNECT
1490634446: Received CONNACK on connection c9.mosquitto.
1490634446: Bridge c9.mosquitto sending SUBSCRIBE (Mid: 1, Topic: #, QoS: 2)
1490634447: Received SUBACK from c9.mosquitto
...

树莓派

Copy 添加信任外部CARoot.crt到同一目录云配置文件

connection pi2cloudmqtt
address xxx.cloudmqtt.com:<ssl-port>
remote_username <username_of_the_user_on_cloudmqtt>
remote_password <password_of the_user_on_cloudmqtt>
remote_clientid cloud.mqtt.pi
bridge_protocol_version mqttv311
try_private true
notifications false
start_type automatic
topic # both 2
# Method 01
#bridge_cafile ca.cer
# Method 02
bridge_cafile AddTrustExternalCARoot.crt
bridge_insecure false
cleansession false
local_clientid pi.mosquitto

$ mosquitto -c cloud.conf -v

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将本地 mosquitto 桥接到云代理 的相关文章

  • Azure Web应用服务时区更改问题

    我们正在使用 Azure Web 应用程序服务进行多租户应用程序 但应用程序服务的默认时区是 UTC 我只想更改该地区的时区 我已经在应用程序设置中尝试了 WEB TIMEZONE 变量 但不起作用 You are setting wron
  • V100 和 P100 在 Google Compute Engine 上的可用性

    描述 我刚刚尝试了一段时间 使用我的个人帐户设置或保留用于机器学习的虚拟机 我在 n1 上使用了几个月 具有大约 8 GB 或更多 GB RAM 以及用于机器学习的 P100 或 V100 现在尝试了至少一半具有 P100 V100 可用性
  • 是否可以在 C++11 之前创建函数局部闭包?

    借助 C 11 我们获得了 lambda 并且可以在我们真正需要的地方 而不是在它们不真正属于的地方 即时创建函数 函子 闭包 在 C 98 03 中 创建函数局部函子 闭包的好方法如下 struct void operator int i
  • Mosquitto 1.4.2 Websocket 支持

    我正在尝试利用 Mosquittos 最近的更新来支持代理中的 websocket 我正在运行 Mosquitto v1 4 2 并将以下几行添加到 mosquitto 配置文件 mosquitto conf 中 listener 1000
  • 用于云服务“沙盒”的 SecurityManager

    All 我正在设计一个基于云的服务 该服务将提供执行客户提交的一些 插件 代码的选项 为了使这项工作正常进行 插件不能威胁系统完整性或有能力访问其他客户端的数据 这一点至关重要 理想情况下 我希望客户端能够提交一个简单的 jar 文件 包含
  • 解析iOS SDK:从Xcode调用云函数

    Scenario我想在我的应用程序中使用这两个云函数 他们检查用户的在线状态 我想为每个用户设置一个布尔键 isOnline 如果用户在线 则设置为 是 如果用户不在线 则设置为 否 var moment require moment Pa
  • 通过站点到站点 VPN 将 Azure 网站连接到本地数据库

    我的目标是运行一个天蓝色的网站 该网站可以访问我们本地公司数据库中的数据 我按照网络上的教程设置了一个 Azure 虚拟网络 并通过站点到站点 VPN 将其连接到我们本地公司网络 在天蓝色门户中 我可以看到连接实际上正在工作 并且数据已被接
  • 使用 get/post 的免费云数据存储? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道还有其他类似的键 值存储http openkeyval org http openkeyval o
  • Docker 容器中的 LDAP 身份验证

    默认情况下 当Docker容器启动时 里面的用户是sudo I want 默认情况下将 sudo 用户锁定在容器中 在容器中使用 LDAP 身份验证而不是默认身份验证 当用户与映像一起提供时 或者在容器运行时由 sudo 用户创建 为此 我
  • 使用 mosca MQTT 的请求响应模式

    有没有办法使用 mosca MQTT 实现请求响应模式 以 检查客户端的回复 如果在预期时间内未收到预期回复 则重新发布 我相信这在 Mqtt 5 中是可能的 但截至目前 我必须使用 QoS 1 的 Mosca 代理 支持直到 Mqtt 3
  • 在文件之间共享 mqtt 客户端对象

    我这样连接到 MQTT mqtt js const mqtt require mqtt var options needed options var client mqtt connect mqtt someURL options clie
  • 将本地文件 URL 转换为文件路径

    我有一个指向本地文件的 URL file home pi Desktop music Radio 20Song mp3 我需要以某种方式将其转换为传统的文件路径 例如os模块采用 home pi Desktop music Radio So
  • 在webview android中加载本地html文件

    我正在尝试在 android 的 webview 中加载 html 文件的内容 但是 它给了我 网页不可用错误 如果我尝试使用谷歌或雅虎等网站 它们就会起作用 html文件位于src gt main gt assests gt index
  • 将网站部署到云服务的最佳实践

    在云服务上部署多个网站的最佳实践是什么 我有三个网站 是否可以将这三个网站部署到一个云服务中 一个云服务三个实例 或者我是否必须创建三个云服务并单独部署每个网站 谢谢 我的服务定义文件
  • Cloud Foundry 解释

    所以我一直在阅读 Cloud Foundry 但我仍然对它是什么感到困惑 无论如何 这是我对 CF 上的 PaaS 的看法 希望你们能告诉我我是否错了 并更好地解释一下 Microsoft Azure 或 Google AppEngine
  • Mosquitto Broker 服务拒绝在 Websocket 上启动

    我正在尝试启动 Eclipse Mosquitto 代理服务来监听 websockets 添加 listener 8083 protocol websockets 在 mosquitto conf 如果我只使用listener 8083 服
  • ActiveMQ 桥连接器到 WebSphereMQ 而不使用 XML 配置

    我想在嵌入式代理中创建一个代理来代理 ActiveMQ 和 WebSphere MQ 之间的连接 我知道 activemq 中存在网络连接器来执行此操作 代理到代理 但我不知道如何配置它以连接到 WebSphere MQ 在网络上进行搜索时
  • 无法从本地文件夹运行 Jquery

    你好 我是网络开发新手 我需要与JQuery 即使我已经成功尝试过一个jquery但仅在将文件复制到我的在线 ftp 文件夹后 我完全无法从本地文件夹运行它 请解释一下 如何我可以测试一些新脚本吗 进行额外的练习将文件复制到 ftp 文件夹
  • Android 上的推送通知:IBM MQTT

    我对 Android 环境非常陌生 必须使用上给出的 wmqtt jar 示例应用程序来设置客户端http www 01 ibm com support docview wss http www 01 ibm com support doc
  • 同一区域内但属于不同账户的AWS数据传输费用如何?

    如果 S3 gt EC2 或 EC2 gt EC2 位于同一 AWS 区域 则数据传输费用似乎是免费的 S3价格注意事项 您需要为进出 Amazon S3 的所有带宽付费 except对于以下情况 当Amazon Elastic Compu

随机推荐

  • 尝试访问字符指针数组时出现分段错误

    所以我创建了一个处理 char 指针数组的函数 通过使用 运算符 功能 int fetchargs char argv argv 0 0 A 将导致分段错误 我传递了一个字符指针数组 其初始化如下 char argv ARG NUM MAX
  • Android、wifi主动扫描

    我需要在我的 Android 应用程序上进行频繁的 wifi 扫描 我正在尝试基于 wifi RSSI 值构建本地室内定位系统 如果我调用 wifi startScan 我有 onReceive 每 6 秒回调一次 我想默认情况下它是被动扫
  • Struts 2 是否可以作为 OSGi 捆绑包提供?

    我有一个服务器应用程序 由多个 OSGi 包组成 其中一些是我的 一些是第三方的 其中一个捆绑包提供了使用 Struts 的 Web 前端 必要的 Struts 库位于 Web 前端包内 现在我想添加第二个包 它提供另一个 Web 前端 具
  • Session.Abandon() 和 Session.Clear() 有什么区别

    销毁会话和删除其值有什么区别 您能提供一个例子来证明这一点吗 我搜索了这个问题 但没有掌握完整的答案 一些答案是 Session Abandon 破坏会话 Session Clear 只是删除所有值 一位朋友告诉我这样的事 清除会话不会重置
  • 如何生成表示离散均匀分布总和的数字

    Step 1 假设我想生成取值为 1 或 1 的离散均匀随机数 换句话说 我想生成具有以下分布的数字 P X 1 0 5 P X 1 0 5 要生成包含 100 个这些数字的数组 我可以编写以下代码 n 100 DV 1 1 Discret
  • 在 Bash 中删除数组中每个元素的开头和结尾

    我有一个包含 3 个元素的 bash 数组 我需要从所有元素中删除前 X 个字符 并从所有元素中删除最后 Y 个字符 如何才能实现这一点 下面的例子 echo array random path file1 txt random path
  • 在 Pandas 中,如何使用具有相似索引的另一个数据帧中的值来修补缺失值的数据帧?

    From 填充 pandas 数据框中缺失的行值 我有以下数据框 想填写缺失的值 mukey hzdept r hzdepb r sandtotal r silttotal r 425897 0 61 425897 61 152 5 3 4
  • 如果名称和值对 js 中的值为空,则从数组中删除对象

    name mode value 1 name group value name from date value name to date value 2018 10 16 name action value ac filter transa
  • 如何在 underscore.js 模板中使用 if 语句?

    我正在使用 underscore js 模板函数并完成了如下模板
  • 从 Windows 窗体控件中按名称查找控件

    我有一个文本框名称列表 我想按名称查找控件 这怎么可能 Use Control ControlCollection Find TextBox tbx this Controls Find textBox1 true FirstOrDefau
  • 如何在 C 语言编译时打印 sizeof() 的结果?

    如何在 C 语言编译时打印 sizeof 的结果 现在我使用静态断言 基于其他网络资源自制 将 sizeof 结果与各种常量进行比较 虽然这有效 但它远非优雅或快速 我还可以创建变量 结构的实例并查看映射文件 但这也比直接调用 命令 运算符
  • 在奇数/偶数整数列表中查找奇偶校验异常值

    我正在尝试查找并返回奇数整数列表中的单个偶数整数或偶数整数列表中的唯一奇数整数 但是 我的代码可以工作 如果奇数整数列表的长度是偶数 它会返回列表中的第一个数字而不是偶数整数 任何帮助表示赞赏 代码如下 even 2 4 6 8 10 12
  • 多个CPU可以同时写入同一个RAM位置吗?

    机器字大小 或更小 的写入是否已序列化 只需一个本机操作码即可将寄存器内容复制到 RAM 将数据写入 RAM 是原子的 如果两个 CPU 尝试同时写入同一位置 内存控制器将决定写入的某种顺序 当一个 CPU 写入内存时 另一个 CPU 将根
  • 在 WP8 WebBrowser 控件中显示 m.bing.com

    我在 Windows Phone 8 上的 WebBrowser 控件中加载 bing com 时遇到问题 这样做似乎会启动 WP8 搜索应用程序 与按手机上的搜索按钮相同 问题是 一旦您单击该搜索应用程序中的结果 它不会带您返回原始应用程
  • WPF ComboBox SelectedItem 未更新

    我在与某公司合作时遇到问题WPF 组合框 我的情况是我有一个显示一些值的组合框 我正在添加ContentControls 到组合框 Items财产 我已经绑定了Content这些 ContentControl 到某个数据源 以便我可以动态更
  • 基于 WooCommerce 中特定产品地理位置的自定义重定向

    如果德国客户尝试访问产品页面 我需要将他们重定向到自定义页面 并且我已经开始将一些内容放在一起 但我不知道如何完成 这是我得到的 add action do not know which hook to use geo origin red
  • 停止在 MAMP 中缓存 PHP 5.5.3

    使用 PHP 5 5 3 在新 Macbook 上安装了 MAMP 重新加载和刷新什么也不做 依然没有 谷歌几分钟试图找出问题所在 然后回来刷新 有用 有没有搞错 我进入 php ini 并禁用所有新的 OPcache 并将默认缓存时间设置
  • 如何将访问过的页面 URL 添加到会话数组中?

    每次用户访问页面时 页面 url 都会存储到数组会话中 我只想在数组中有 10 个元素 这样 10 个元素将保存 10 个最近访问的页面 url 这是我的代码 我测试了
  • 转置(3,0,1,2)是什么意思?

    这是什么意思 data transpose 3 0 1 2 另外 如果data shape 10 10 10 为什么我得到ValueError axes don t match array 我先从Python3的角度来讨论一下 我在Pyth
  • 将本地 mosquitto 桥接到云代理

    我正在尝试将本地 mosquitto 在树莓派上 桥接到某个云代理 以便我可以发送数据并使用该数据控制某些设备 我尝试使用 Cloudmqtt 和 dioty 但没有成功 在 cloudmqtt 的情况下 我被告知 mosquitto co