【问题标题】:How do you update a key's value from a widget?如何从小部件更新键的值?
【发布时间】:2019-04-07 02:58:16
【问题描述】:

我想知道是否有任何 Thingsboard 开发人员尝试从小部件中更新设备的遥测键/值。如果是这样,你会怎么做?

基本上,我有一个小部件,最终用户可以在其中键入一个值,并且我希望使用用户的输入更新与设备的键关联的特定值。

我知道您可以执行自定义 javascript POST 命令,但如果是这种情况,您如何从小部件中读取设备的访问令牌?

【问题讨论】:

    标签: thingsboard


    【解决方案1】:

    要从 Widget 保存/更新遥测数据,您需要向此 REST API 发出 POST 请求:

    https://tb_address/api/plugins/telemetry/{entityType}/{entityId}/timeseries

    entityType - 设备或资产

    entityId - deviceId 或assetId

    招摇链接: https://cloud.thingsboard.io/swagger-ui.html#!/telemetry-controller/saveEntityTelemetryUsingPOST


    正文(在应使用当前系统时间的情况下):

    {
      "key1": "value1"
    }
    

    如果您想更新(覆盖)现有遥测值。你可以使用这个主体(想法是时间戳是复合键的一部分,所以用相同的键插入会覆盖之前的值)

    {
      "ts": 1451649600512,
      "values": {
        "key1": "value1"
      }
    }
    

    【讨论】:

    • 谢谢 Vitaliy,我知道我可以从自定义小部件发出 POst 请求,但是如何从小部件的 Javascript 代码中读取 entityID?例如,一些数据可以使用“${1}”访问,但是如何获取当前的 entityID?
    • 可以在订阅对象(self.ctx.defaultSubscription)中找到entityId。 thingsboard.io/docs/user-guide/contribution/widgets-development/…
    【解决方案2】:

    我找到了一种方法不必执行 POST 命令。来自这里的这篇文章:Github Numeric Input modification widget 基本上,小部件直接通过 Javascript 和设备或实体的共享属性更新数据密钥。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2021-10-02
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      相关资源
      最近更新 更多