了解如何配置规则引擎以将传入的遥测存储在数据库中之前基于JavaScript函数对其进行转换。

用例

假设你的设备正在使用自定义传感器来收集温度读数并将其推送到ThingsBoard。
该传感器以°F为单位收集温度读数,你希望在将其存储到数据库和可视化之前将其转换为°C。
在本教程中,我们将配置ThingsBoard Rule Engine来根据以下公式修改温度读数:

  1. C] = ([°F] - 32) × 5/9.

先决条件

我们假设你已完成以下指南并查看了以下文章:

  • 入门指南
  • 规则引擎概述

    步骤1:添加温度transformation节点

    我们将修改默认规则链,并使用温度转换脚本添加transformation规则节点。
    我们将这个规则节点放置在默认的”message type switch”和”save timeseries”规则节点之间。
    请注意我们也从根规则链中删除了不相关的规则节点。
    转换输入遥测 - 图1
    生成模拟数据
    1. function precisionRound(number, precision) {
    2. var factor = Math.pow(10, precision);
    3. return Math.round(number * factor) / factor;
    4. }
    5. if (typeof msg.temperature !== 'undefined'){
    6. msg.temperature = precisionRound((msg.temperature -32) * 5 / 9, 2);
    7. }
    8. return {msg: msg, metadata: metadata, msgType: msgType};

    步骤2:验证脚本调试

    我们使用内置的”Test transformer function”按钮来检查脚本是否正确
    转换输入遥测 - 图2
    转换输入遥测 - 图3

    TL;DR

    从本教程中下载并导入带有规则链的附件json文件不要忘记将新规则链标记为”root”规则链。
    转换输入遥测 - 图4