首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IBM主题/URL,安卓与Node.js不同,需要澄清吗?

IBM主题/URL,安卓与Node.js不同,需要澄清吗?
EN

Stack Overflow用户
提问于 2016-01-18 18:44:22
回答 1查看 281关注 0票数 0

我在Bluemix中使用IoT服务,并通过Node.js快速服务器和安卓设备连接到它。

安卓应用程序基于ibmiot应用程序(https://github.com/ibm-messaging/iot-starter-for-android)。这与以下方面有关:

网址:<org>.messaging.internetofthings.ibmcloud.com:1883

主题格式: iot-2/cmd/+/fmt/json

凭证:组织,deviceType,deviceId

快速服务器与npm ibmiotf模块连接,版本为0.2.2。连接:

网址:<org>.messaging.internetofthings.ibmcloud.com:8883

主题格式: iot-2/type/<type>/id/<id>/cmd/<cmd>/fmt/json

凭证:组织,id (蓝光空间名称?),apiKey,apiToken

如果我尝试使用Android应用程序订阅第二种格式的主题,由于该主题无效,我将与该服务断开连接。但是,npm节点提供的对象(ApplicationClient)包含publishDeviceCommand(deviceType、deviceId、commandType、format、data)等功能。

它发布到第二种格式的主题,应用程序无法订阅该主题。这是否是由于不同版本而导致的主题样式的重新格式化?

那么,如何使用应用程序可以订阅的快捷服务器发布到有效的主题呢?这需要编写我自己版本的publishDeviceCommand吗?这是可行的,但似乎并不理想。它也是提供的国家预防机制模块中的一个功能,更改只能是本地的,而不是远程的。

我可以通过服务仪表板查看应用程序以第一种格式发布到主题的事件,但是对于express ApplicationClient,我看不到同样的情况--可能是因为它不是注册的设备?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 14:47:09

这里的不同之处在于,您正在使用ibmiotf node.js包作为应用程序连接到Bluemix中的IoT服务,而安卓应用程序是作为设备连接的。

当连接为设备时,您将使用具有下列格式的主题

代码语言:javascript
复制
iot-2/cmd/<command_id>/fmt/<format>

代码语言:javascript
复制
iot-2/evt/<event_id>/fmt/<format>

在作为应用程序进行连接时,可以使用具有下列格式的主题

代码语言:javascript
复制
iot-2/type/<deviceType>/id/<deviceId>/cmd/<command_id>/fmt/<format>

代码语言:javascript
复制
iot-2/type/<deviceType>/id/<deviceId>/evt/<event_id>/fmt/<format>

这意味着应用程序可以发布和订阅组织中的任何设备,但是设备只能发布和订阅特定于自己的主题。

如果android应用程序与deviceType=Android、deviceID=myTestDevice连接,然后订阅

代码语言:javascript
复制
iot-2/cmd/updates/fmt/json

node.js应用程序发布到

代码语言:javascript
复制
iot-2/type/Android/id/myTestDevice/cmd/updates/fmt/json

然后设备将接收到消息。

https://docs.internetofthings.ibmcloud.com/messaging/devices.html

https://docs.internetofthings.ibmcloud.com/messaging/applications.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34861842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档