将本地 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 桥接到云代理 的相关文章

  • 将 TF.exe 与 Team Foundation Service 结合使用?

    我们正在将构建从 Team Build Team Foundation Service 转移到使用 Jenkins CI 进行构建的本地构建机器 但是 我们仍然希望使用云进行源代码控制 所以现在我们需要访问云TFS来获取最新版本 Jenki
  • 访问类方法内的变量

    我正在使用 Tkinter Python 创建一个预算程序 这是我的代码的基础知识 class Expense def init self def Save self TotalAmount blah 所以我需要访问TotalAmount在
  • 如果只使用一次本地函数,那么使用它们还有什么意义吗?

    想象一下我有这样的代码 public void Foo Do bar work Do baz work Do foobar work 我意识到我可以 而且应该因为它做了不止一件事 将其重构为 public void Foo bar baz
  • Amazon SimpleDB 用于开发环境/本地安装

    有没有一种方法 工具可以模拟Amazon的SimpleDB以进行开发 在我的上述探索中 我发现这个工具 http mac wareseeker com Tools simpledb dev 0 1 5 zip 3000833但这是针对 Ma
  • Cloud Firestore:如何在集合查询中获取文档引用并将其映射为 JSON 值?

    假设我有一个评论集合 每个评论对象都有一个发帖用户的 文档引用 我需要一个查询 该查询将返回一个评论列表 其中包括每个用户引用的值 因此我的查询返回一个格式良好的 Json 评论对象 类似的问题在这里被问到Firebase Firestor
  • 将 Reactjs 连接到 Myqtthub

    您好 我对所有物联网事物都很陌生 我希望能够使用 mqtt 从 Arduino 发送和接收数据https myqtthub com https myqtthub com作为我们的经纪人 我使用以下代码进行连接 import React Co
  • 从另一个 Activity 绑定到本地服务时出现 ClassCastException

    在我的应用程序中 我有两个独立的 APK 第一个 APK 中的 Activity A1 启动本地服务并能够调用该服务提供的方法 随后 活动 A1 从第二个 APK 启动另一个活动 A2 A2 活动尝试连接到 A1 启动的本地服务 两个活动都
  • lua:关于本地范围的模块导入

    有两个脚本文件 脚本如下 parent lua function scope local var abc require child end child lua print var 这样 child lua 将打印 nil 值 因为 Par
  • Laravel homestead 多个站点选择哪个本地可访问

    我在 laravel homestead 中有多个站点 现在 我想通过本地网络中的 IP 访问特定站点 但我总是得到我不想要的网站 家园 yaml sites map mdb local to home vagrant code mdb p
  • 是否可以使用Dropbox、Google Drive、Skydrive等作为服务器空间?

    我正在创建一个在线连接到服务器以收集信息的应用程序 为了节省从大公司租用服务器空间的费用 我想知道这些免费服务 Dropbox Google Drive Microsoft Skydrive Amazon Cloud 等 是否可以用作服务器
  • 如何使 cloud-init 启动脚本在每次 EC2 实例启动时运行?

    我有一个运行基于 Amazon Linux AMI 的 AMI 的 EC2 实例 与所有此类 AMI 一样 它支持云初始化 https help ubuntu com community CloudInit用于根据传递到每个实例的用户数据运
  • 为什么有 2 种 AppFabric?

    我看到我们现在拥有 Windows Server AppFabric 和 Azure AppFabric 这只是 Microsoft 营销部门的命名空间冲突还是这些技术共享通用接口 有人告诉我 可以在本地生产服务器上使用 Azure App
  • 电子邮件解析云服务[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Google Cloud Text To Speech API 快速入门示例

    我是这个论坛的新手 我正在尝试让 Google Cloud TTS API 正常工作 但遇到了一些问题 页面是 https cloud google com text to speech docs quickstart protocol h
  • 是否可以在 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
  • Node.js 管理频繁变化的本地依赖项

    我目前正在开发我的第一个较大的 Node js 应用程序 该应用程序应该使用类似插件的依赖项尽可能模块化地工作 因为我处于开发的早期阶段 而且对节点也很陌生 所以这涉及大量的试验和错误 因此我需要经常重新启动应用程序 因此启动时间应尽可能短
  • 简化情况下能否保证mqtt消息送达顺序?

    如果只有一个代理 一个发布者 一个主题和干净的会话 在这个简化的情况下 能否保证订阅者端的消息传递顺序与发布者端的发送顺序相同 会受到QoS的影响吗 Section 4 6 http docs oasis open org mqtt mqt
  • 如何修改python中的本地命名空间

    如何修改Python中函数的本地命名空间 我知道 locals 在函数内部调用时返回函数的本地命名空间 但我想做这样的事情 我有一个原因为什么我想在 f 无法访问 g 的情况下执行此操作 但给出更快一个简单的 愚蠢的例子来说明问题 def
  • Docker 容器中的 LDAP 身份验证

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

随机推荐

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

    所以我创建了一个处理 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