Соединить местный комар с облачным брокером

Я пытаюсь связать локального комара (на 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.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)

Отредактировано: я решил эту проблему с помощью Node-RED. Просто добавили один вход mqqt и сконфигурировали его для локального брокера комаров (PORT 1883) и два выхода mqtt для cloudmqtt и DIoTY.

На cloudmqtt, после того как вы создали учетную запись (милый кот свободен), перейдите в панель управления и добавьте экземпляр cloudmqtt, а cloudmqtt предоставит вам имя пользователя и пароль. В Node-RED настройте один из выходных данных mqtt для экземпляра cloudmqtt, добавив сервер, имя пользователя, пароль и порт.

В DIoTY вам также необходимо создать учетную запись или войти в систему с помощью Google или другой учетной записи. Когда вы входите в систему, вам будет предоставлено имя пользователя, которое будет вашей почтовой учетной записью, и другая информация, такая как хост и порт, пароль, который будет отправлен на учетную запись электронной почты. Поэтому, чтобы использовать это в Node-RED, вам нужно добавить хост (сервер), имя пользователя, пароль и порт в вывод mqtt. И когда вы подписываетесь или публикуете сообщение, имейте в виду, что у вас есть корневая тема, например:

/ Your_mail_account/ тема

и независимо от того, подписываетесь ли вы на какую-либо тему или публикуете некоторые сообщения, вам нужно добавить корневую тему в качестве своего рода префикса.

После того, как вы сделали эту конфигурацию, вам нужно развернуть изменения, и это так. Так что для такого рода я использовал Node-RED.

2 ответа

Я использую протестированную консоль windows и c9.io.


Я узнаю, что https://www.cloudmqtt.com/docs-faq.html

Сертификат сервера cloudmqtt.com подписан Comodo, который имеет корневой сертификат AddTrust CA. Большинство ОС поставляется с ним по умолчанию, так что вы можете указать свое хранилище доверия /CA по умолчанию.

Методы получения сертификата AddTrust CA

Способ 01

  1. Нажмите " Пуск", нажмите " Начать поиск", введите " mmc" и нажмите клавишу ВВОД.

  2. В меню Файл выберите Добавить / удалить оснастку.

  3. В разделе Доступные оснастки нажмите Сертификаты, а затем нажмите Добавить.

  4. В этой оснастке всегда будут управлять сертификатами, нажмите " Учетная запись компьютера" и нажмите " Далее".

  5. Нажмите Локальный компьютер и нажмите Готово.

  6. Если у вас больше нет оснасток для добавления в консоль, нажмите кнопку ОК.

  7. В дереве консоли дважды щелкните Сертификаты.

  8. Нажмите на доверенные корневые центры сертификации > хранилище сертификатов.

  9. Щелкните правой кнопкой мыши AddTrust External CA Root

  10. Нажмите " Экспорт" для экспорта сертификатов и следуйте инструкциям мастера экспорта сертификатов, выберите "Формат файла экспорта" и выберите X.509(CER) в кодировке Base-64.

  11. Сохраните файл ca.cer в **C:\Program Files\mosquitto**

Способ 02

Я получаю сертификат здесь: www.tbs-certificates.co.uk/FAQ/en/357.html

Сертификат AddTrust CA Root: http://www.tbs-x509.com/AddTrustExternalCARoot.crt

  1. Скопируйте AddTrustExternalCARoot.crt в C:\Program Files\mosquitto\
  2. Дважды щелкните AddTrustExternalCARoot.crt, установить сертификат...

Мост Москито в CloudMQTT

Windows

Я использую mosquitto 1.4.11, windows, mosquitto.conf file Я использую разное имя (cloud.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

Просто попробуйте на консоли 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
...

Raspberry Pi

Скопируйте 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

$ mosquitto -c cloud.conf -v

Вы можете попробовать test.mosquitto.org в качестве удаленного брокера.

Чтобы улучшить свой вопрос, укажите подробности, какую версию mosquitto вы используете, и опубликуйте точные настройки mosquitto.conf, которые вы используете - конечно же, с удаленными учетными данными.

Другие вопросы по тегам