如何使用AWS node.js sdk订阅thinghadow更新?

时间:2016-06-15 17:52:03

标签: amazon-web-services aws-iot

所以我有一堆AWS IOT设备更新/报告他们的状态,但不知道如何从我的javsascript客户端订阅报告/接受/ delta状态。

我查看了AWS sdk,但没有看到在iot对象中订阅事物阴影事件的方法。我可以使用aws-iot库,但对于如何使用AWS凭证有点困惑(因为它不是设备事物客户端)。

在这个用例中,我应该使用AWS sdk还是AWS-IOT sdk?这两者之间的区别是什么。如果使用aws sdk如何订阅thinghadow事件?如果使用AWS-IOT sdk,我如何使用aws凭证而不是证书身份验证?我在示例中没有看到它。

2 个答案:

答案 0 :(得分:0)

到目前为止,我已经采用了这种方法。

Device -> Updates Thing Shadow data
Device -> Sends message to a generic topic with "Thing" id

API -> Listens to the generic topic
API -> Parses message that comes in to the generic topic with "Thing" id
API -> Uses AWS SDK  (AWS IOT Data class) to get the specific "Thing" shadow data

这就是我能够通过代码进行整理的方式。我正在接受更多更新,并尝试设计更好的方法。

希望这有帮助。

-kev

答案 1 :(得分:0)

首先,请查看此文档,也许它可以帮助您:

https://github.com/aws/aws-iot-device-sdk-js

当您向thingShadow发布内容并且状态已被接受时,您可以在频道' $ aws / things // shadow / get / accepted'中订阅它。

要订阅此频道,您可以使用设备中的订阅方法。

var AWS = require('aws-sdk');

var device = awsIot.device({
    region: AWS.config.region,
    host:AWSConfiguration.host,
    clientId: clientId,
    protocol: 'wss',
    maximumReconnectTimeMs: 8000,
    debug: true,
    acessKeyId: '',
    secretKey: '',
    sessionToken: ''
  });

device.subscribe('$aws/things/<thingName>/shadow/get/accepted');

如果您感到困惑或者您需要有关凭据的信息,请查看以下示例:

https://github.com/aws/aws-iot-device-sdk-js/blob/fd0807e20a0d79c721cfb3b85622392f0c65e7e1/examples/browser/mqtt-explorer/index.js

配置文件位于同一文档中。

希望它有所帮助。