Соединить местный комар с облачным брокером
Я пытаюсь связать локального комара (на 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
Нажмите " Пуск", нажмите " Начать поиск", введите " mmc" и нажмите клавишу ВВОД.
В меню Файл выберите Добавить / удалить оснастку.
В разделе Доступные оснастки нажмите Сертификаты, а затем нажмите Добавить.
В этой оснастке всегда будут управлять сертификатами, нажмите " Учетная запись компьютера" и нажмите " Далее".
Нажмите Локальный компьютер и нажмите Готово.
Если у вас больше нет оснасток для добавления в консоль, нажмите кнопку ОК.
В дереве консоли дважды щелкните Сертификаты.
Нажмите на доверенные корневые центры сертификации > хранилище сертификатов.
Щелкните правой кнопкой мыши AddTrust External CA Root
Нажмите " Экспорт" для экспорта сертификатов и следуйте инструкциям мастера экспорта сертификатов, выберите "Формат файла экспорта" и выберите X.509(CER) в кодировке Base-64.
Сохраните файл 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
- Скопируйте AddTrustExternalCARoot.crt в C:\Program Files\mosquitto\
- Дважды щелкните 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, которые вы используете - конечно же, с удаленными учетными данными.