跳至主要內容

向空调控制器下发温度设置,转为自定义报文

约 414 字大约 1 分钟

向空调控制器下发温度设置,转为自定义报文

用户使用某个空调控制器模块,通过 ThingsCloud 下发温度控制数值。模块采用非 Modbus 标准的 HEX 通信协议,例如:

下发温度 20 度,下发消息为:

01 32 14 01 01 01 4A

下发温度 10 度,下发消息为:

01 32 0A 01 01 01 40

根据模块协议文档,可知协议如下:

01 32 {温度} 01 01 01 {校验码}

通过 ThingsCloud 属性下发规则云函数,可以在属性下发时自动生成自定义数据流下发,将 HEX 指令下发到设备。这样一来,就可以在控制台、可视化看板、用户 App 中,通过数值控制组件来操作属性数值的下发。

我们创建一个属性下发规则,使用 自定义数据下发函数 操作,在云函数中使用如下示例代码,请通过代码中的注释进行学习。

函数代码如下:

module.exports = function (push_attributes) {
    /**
     * push_attributes:   下发的属性对象,作为函数参数传入。
     * data:                构造下发的自定义数据对象,下发到硬件。
     */

    var data = {}
    
    if (push_attributes.set_temperature !== undefined) {
        let sum = 0x01 + 0x32 + push_attributes.set_temperature + 0x01 + 0x01 + 0x01;
        data = {
            type: "hex",
            msg: "01 32 " + push_attributes.set_temperature.toString(16).padStart(2, '0') + " 01 01 01 " + sum.toString(16).padStart(2, '0')
        }
    }

    return data;
}

通过规则对属性下发进行自动转换后,我们就可以在可视化看板、用户App中放置控制组件,例如:在用户 App 中使用以下数值控制组件:

详细了解 ThingsCloud 消息规则,请浏览 消息规则