将当地的蚊子桥接到云经纪人

时间:2015-12-13 20:23:16

标签: cloud local mqtt mosquitto bridge

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

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

EDITED: 我正在使用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用于在线蚊子经纪人的原因是因为我选择了当地的蚊子< - >远程蚊子桥应该工作。而且我可以使用笔记本电脑或手机等客户端,并使用它们与本地经纪人一起发布和订阅消息。这样,即使我失去了互联网访问权限,我也可以让本地经纪人与本地客户进行互动。

EDITED: 我配置了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经纪人,从mosquitto跨越到Mosca mqtt经纪人,不支持桥接但显然具有更好的可扩展性(此信息已通过dioty客户服务提供给我)

EDITED: 我使用Node-RED解决了这个bridgig问题。只需添加一个mqqt输入并为本地mosquitto代理(PORT 1883)和两个mqtt输出配置,用于cloudmqtt和DIoTY。

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

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

  

/ your_mail_account /主题

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

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

2 个答案:

答案 0 :(得分:2)

我正在使用 windows c9.io linux console 进行测试。

  

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

     

cloudmqtt.com 服务器证书由Comodo签署,其中 AddTrust CA 以root身份登录。默认情况下,大多数操作系统都附带它,因此您可以指向默认的信任/ CA存储。

获取AddTrust CA证书的方法

方法01

  
      
  1. 点击开始,点击开始搜索,输入 mmc ,然后按ENTER。

  2.   
  3. 文件菜单上,点击添加/删除管理单元

  4.   
  5. 可用的管理单元下,单击证书,然后单击添加

  6.   
  7. 此管理单元将始终管理的证书,单击计算机帐户,然后单击下一步

  8.   
  9. 点击本地计算机,然后点击完成

  10.   
  11. 如果您没有要添加到控制台的管理单元,请单击确定

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

  14.   
  15. 点击受信任的根证书颁发机构> 证书商店。

  16.   
  17. 右键单击 AddTrust外部CA根

  18.   
  19. 点击导出以导出证书,然后按照证书导出向导中的步骤,导出文件格式选择 Base-64编码X.509(CER)

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

  22.   

方法02

  

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

     

AddTrust CA根证书http://www.tbs-x509.com/AddTrustExternalCARoot.crt

     
      
  1. AddTrustExternalCARoot.crt 复制到C:\ Program Files \ mosquitto \
  2.   
  3. 双击 AddTrustExternalCARoot.crt ,安装证书...
  4.   

将Mosquitto桥接到CloudMQTT

<强>窗

  

我使用 mosquitto 1.4.11 windows mosquitto.conf 文件我使用差异名称(云.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
  

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

现在,我的当地的蚊子经纪人在双向沟通中弥合了 cloudmqtt.com

<强>的Linux

  

使用方法02(AddTrustExternalCARoot.crt)轻松尝试 c9.io linux console ,输出如下。

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

Raspberry Pi

使用 cloud.conf

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

答案 1 :(得分:0)

您可以尝试将test.mosquitto.org作为远程代理。

要改进您的问题,请详细说明您使用的mosquitto版本,并发布您使用的确切mosquitto.conf设置 - 当然还会删除凭据。