【问题标题】:How to retrieve multiple device attributes from a single HTTP request in Thingsboard?如何从 Thingsboard 中的单个 HTTP 请求中检索多个设备属性?
【发布时间】:2021-10-26 07:46:36
【问题描述】:

我想从单个 HTTP API 调用中检索多个设备属性。 TB 允许我执行获取请求以检索设备数据,并在请求中指定相应的访问令牌。是否有任何选项可以从设备组中获取所有设备数据?

【问题讨论】:

    标签: httprequest thingsboard


    【解决方案1】:

    当您说多个设备属性时,您是否要求:

    1. 从一台设备获取所有属性?如果是这样,您可以使用:
      curl -v -X GET "https://thingsboard.cloud/api/v1/$ACCESS_TOKEN/attributes

    2. 获取特定设备组中所有设备的所有属性。这更难,你需要使用在https://cloud.thingsboard.io/swagger-ui.html找到的完整的rest api

    如果您需要选项 2,则必须有一个自定义脚本来为您的用户凭据(或低访问级别的 api 用户帐户)获取 JWT 令牌,并使用该脚本通过上述链接对 REST 调用进行身份验证。

    伪进程:

    • 使用用户凭据生成 JWT 令牌。
    • 使用 REST 调用 entity-group-controller > getEntityGroupsByTypegroupType = 'DEVICE'
    • 循环遍历你想要的组
    • entity-group-controller > getEntities 调用中使用对应的groupId
    • 循环遍历返回的实体,然后对它们执行方法 1(上文)或调用 telemetry-controller > getAttributes

    这远远超过 1 个 HTTP 调用...

    你可以把它包装成一个函数,让它更容易使用,但我认为你不能进一步减少调用次数。

    【讨论】:

    • 非常感谢您的回复。实际上,我需要获取 1000 多个设备的设备属性。我正在考虑通过调用单个设备组 API 来获取所有属性。但我想我必须遵循你的路径并且必须调用多个 http 请求。这似乎非常耗时。希望有其他选择。
    • @PallabChowdhury 老实说可能有更好的方法来做到这一点,但这是目前我所知道的最好的方法(我也在我的应用程序中使用它)。如果您确实找到了替代方案,我很乐意听到它。干杯
    • 当然。现在,我将所有设备数据导出到不同的服务器并从那里检索数据。我认为使用 TB 作为中间代理并使用单独的服务器进行生产会更好。希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2022-07-26
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    相关资源
    最近更新 更多