2016-12-07 6 views
2

MQTT по протоколу WebSocketПодключение IBM bluemix уотсон IoT с помощью клиента WebSocket Эрл MQTT порт 443

Я пытаюсь подключить услугу IBM Watson IoT с помощью Эрл MQTT WebSockets на порт 443 (SSL/TLS). Но я получал ошибку.

В IBM dos (https://console.ng.bluemix.net/docs/services/IoT/iotplatform_task.html#devices) говорится, что он поддерживает соединение с веб-разъемом. Нет никакого упоминания об использовании websocket (учебники/руководство), кроме обычного подключения tcp (которое я был успешным при подключении).

Я хочу простой шаг за шагом doc, например, Amazon IoT (http://docs.aws.amazon.com/iot/latest/developerguide/protocols.html) для подключения к веб-обозревателю в качестве клиентского приложения.

Я размышляю о URL/URI, который, я думаю, может быть неправильным. I w/s: // host: port/path. В настоящее время я даю его как wss: //fybr123mqtt.mybluemix.net (где fybr123mqtt - мое имя приложения). Что такое хост, порт & путь для подключения к IBM Watson IoT через mqtt? И как отправить другие параметры, такие как «client_id», «username», «password», «токен аутентификации» вместе с HOST? Также предложите некоторый клиент erlang websocket для mqtt, а также укажите простые шаги для доступа к серверу websocket. Клиент Erlang mqtt (emqttc) не поддерживает websocket.

+0

https REST API на 443 ... Я не вижу, как это может быть для сокетов. – amadain

+0

Это 443, а протокол - wss. WSS: //OrgID.messaging.internetofthings.ibmcloud.com: 443. Для java-клиента существует параметр «Websockets = true», но у меня проблемы с его работой. Я попытаюсь снова взглянуть позже. – amadain

ответ

0

Процесс подключения четко описано здесь:
console.ng.bluemix.net/docs/services/IoT/devices/mqtt.html

URL-адрес, который вы упомянули, не правильно: WSS: // fybr123mqtt.mybluemix.net

На Шаг 2: Подключение устройств к Watson IoT платформы от console.ng.bluemix.net/docs/services/IoT/iotplatform_task.html#devices он говорит следующее:

При подключении требуется следующая информация: устройство:

URL: org_id.messaging.internetofthings.ibmcloud.com 
Where org_id is the ID of your Watson IoT Platform organization. 
Port: 
    1883 
    8883 (encrypted) 
    443 (websockets) 
Device identifier: d:org_id:device_type:device_id 
This combination of parameters uniquely identifies your device. 
Username: use-token-auth 
This value indicates that you are using token authorization. 
Password: Authentication token 
This value is the unique token that you defined or that was assigned to your device when you registered it. 

org_ID, device_type, device_id и пароль предоставляются после завершения Шаг 1: Регистрация устройства с Watson IoT платформы

Примечание: clienID является идентификатор устройства: d: org_id: device_type: device_id

Я успешно использовал mqttfx, eclipse paho, mosquitto, и есть много других бесплатных клиентов mqtt, которые вы можете использовать.

Также есть хорошие учебники (рецепты), которые помогут вам начать работу с клиентскими библиотеками IBM в Java, Pyhton и т. Д. В качестве примеров вы можете посмотреть: "ibm.com/developerworks/cloud/library/CL-MQTT-bluemix-ИТН-узел-красно-приложение/"

Ниже приведен пример типа устройства шлюза с mosquitto " developer.ibm.com/recipes/tutorials/using-mosquitto-as-a- gateway-for-watson-iot/"

Не забывайте, что клиентские узлы из NodeRed очень просты в использовании.

Сообщите мне, если вам все еще нужна помощь по этому вопросу.

Спасибо, Daniel

+0

Установили ли вы соединение через websocket или tcp ?? Я думаю, что вы отвечаете за обычное соединение tcp. Открытие соединения должно начинаться с протокола ws (s): // HOST для клиента websocket. Кроме того, требуется конечная точка, которую я не нахожу ... например, например, ** wss: // HOST: 443/PATH/TO/PATH **. –

+0

wss работает также. см. ниже комментарий от @amadain. Ссылка на темы, устройства публикует на темы событий в формате: iot-2/evt/event_id/fmt/format_string ** event_id **: идентификатор события, например статус. Идентификатор события может быть любой строкой, которая действительна в MQTT. Если подстановочные знаки не используются, приложения-подписчики должны использовать эту строку в теме подписки для получения событий, которые публикуются в их теме. ** format_string **: строка, определяющая тип содержимого полезной нагрузки сообщения, чтобы получатель сообщения мог определить, как разбирать контент. – idan

0

Адрес: wss://6DigitOrgID.messaging.internetofthings.ibmcloud.com:8883

Он отлично работает с помощью NodeJS. Я не указываю дальнейшую конечную точку.

[BaseClient:connect] Connecting to IoTF with host : wss://6DigitOrgID.messaging.internetofthings.ibmcloud.com:8883 
[DeviceClient:connect] DeviceClient Connected 
connected 
[DeviceClient:publish] Publishing to topic iot-2/evt/myevt/fmt/json with payload {"radiation":1} with QoS 2 

Это базируется образец client code с "enforce-ws" : true

Я изменил, что клиент и протестирована с 443 также:

[BaseClient:connect] Connecting to IoTF with host : wss://6DigitOrgID.messaging.internetofthings.ibmcloud.com:443 
[DeviceClient:connect] DeviceClient Connected 
connected 
[DeviceClient:publish] Publishing to topic iot-2/evt/myevt/fmt/json with payload {"radiation":1} with QoS 2 

Я не знаю ни образцов для Эрл.

+0

Спасибо amadain за ответ. Как вы сказали, нам не нужно указывать дальнейшую конечную точку. Как нам отправить «client_id», «username», «password»? Должны ли мы предоставить все эти детали в HEADERS? –

+0

Я ничего не знаю об эрланге. Для nodejs это то же самое, что соединение через mqtt, только изменение протокола в wss. Вы можете посмотреть пример кода nodejs. – amadain