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

我考虑过使用一些 IOT 平台来做到这一点,但我已经阅读了类似使用定价的平台,我这样做是为了学习和爱好目的,所以在我学习如何使用它之前,我想继续使用免费帐户。

编辑:
我正在使用 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 解决了这个桥接问题。刚刚添加了一个 mqqt 输入并将其配置为本地 mosquitto 代理(端口 1883)和两个 mqtt 输出,用于 ​​cloudmqtt 和 DIoTY。

在cloudmqtt上注册账号后(萌猫免费),进入控制面板,添加cloudmqtt实例,cloudmqtt会提供用户名和密码。在 Node-RED 中,通过添加服务器、用户名、密码和端口,为 cloudmqtt 实例配置 mqtt 输出之一。

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



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

完成此配置后,您需要部署更改,即。所以对于这种我使用了 Node-RED。

最佳答案

我正在使用 windows c9.io linux 控制台 测试。



获取 AddTrust CA 证书的方法

方法 01



方法 02



将 Mosquitto 桥接到 CloudMQTT

Windows


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


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
...



Linux


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

树莓派

AddTrustExternalCARoot.crt 复制到与 cloud.conf 相同的目录
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

关于cloud - 将本地 mosquitto 桥接到云代理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34255907/

10-11 19:45