设备模式中调用的遥测数组字段的类型是什么?

问题描述 投票:0回答:1

我按照github指令创建了一个模拟设备模型,遥测中的一个是10个整数的数组。 “pm”:[19,4,3,0,0,1,3,0,0,0]。这个领域的类型是什么?我没有找到任何数组/列表类型。

github指令:https://github.com/Azure/device-simulation-dotnet/wiki/Device-Models#message-schema

javascript json azure azure-iot-hub
1个回答
2
投票

目前没有对array类型的支持,但是你可以通过至少两种不同的方式实现这一点。

如果阵列大小是固定的,例如10,使用10个字段:

"InitialState": {
    "pm_01": 0,
    "pm_02": 0,
    "pm_03": 0,
    "pm_04": 0,
    "pm_05": 0,
    "pm_06": 0,
    "pm_07": 0,
    "pm_08": 0,
    "pm_09": 0,
    "pm_10": 0
}

然后

"MessageTemplate": "{ \"pm\": [${pm_01}, ${pm_02}, ${pm_03}, ${pm_04}, ${pm_05}, ${pm_06}, ${pm_07}, ${pm_08}, ${pm_09}, ${pm_10}] }"

否则,如果阵列大小可以改变,则将值映射到设备模型脚本中的字符串(例如pm_values),例如,

模型:

"InitialState": {
    "pm_values": "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
}

脚本:

function main(context, previousState) {

    // ... restore state ...

    // ... your logic here ...
    var pm_values = [ 19, 4, 3, 0, 0, 1, 3, 0, 0, 0 ];

    // ... serialize pm values ...
    state["pm_values"] = pm_values.toString();

    return state;
}

然后使用一个占位符将其注入消息模板中:

"MessageTemplate": "{ \"pm\": [${pm_values}] }"
© www.soinside.com 2019 - 2024. All rights reserved.