gateway - 物联网平台网关组件

示例代码

import * as iot from 'gateway'

var productKey = '<product-key>';
var deviceName = '<device-name>';
var deviceSecret = '<device-secret>';

var lightSwitch = 0;
var gateway;

var subdev = [
    {
        productKey: '<product-key>',
        deviceName: '<device-name>',
        deviceSecret: '<device-secret>'
    },
    {
        productKey: '<product-key>',
        deviceName: '<device-name>',
        deviceSecret: '<device-secret>'
    }
];

/* post property */
function postProperty(id, devInfo, content) {
    var topic = '/sys/' + devInfo.productKey + '/' + devInfo.deviceName + '/thing/event/property/post';
    var payload = JSON.stringify({
        id: id,
        version: '1.0',
        params: content,
        method: 'thing.event.property.post'
    });

    gateway.publish({
        topic: topic,
        payload: payload,
        qos: 1
    });
}

/* post event */
function postEvent(id, devInfo, eventId, content) {
    var topic = '/sys/' + devInfo.productKey + '/' + devInfo.deviceName + '/thing/event/' + eventId + '/post';
    var payload = JSON.stringify({
        id: id,
        version: '1.0',
        params: content,
        method: 'thing.event.' + eventId + '.post'
    });

    gateway.publish({
        topic: topic,
        payload: payload,
        qos: 1
    });
}

function createGateway() {
    gateway = iot.gateway({
        productKey: productKey,
        deviceName: deviceName,
        deviceSecret: deviceSecret
    });

    gateway.on('connect', function () {
        console.log('(re)connected');

        // gateway.addTopo(subdev);

        gateway.login(subdev);

        setTimeout(function () {
            postProperty(1, subdev[0], { 'PowerSwitch_1': lightSwitch });
            postEvent(1, subdev[0], 'Error', { 'ErrorCode': 0 });
        }, 2000);
    });

    /* 网络断开事件 */
    gateway.on('disconnect', function () {
        console.log('disconnect ');
    });

    /* mqtt消息 */
    gateway.on('message', function (res) {
        /* 通过 topic中的pk和dn信息,判断是对哪个子设备的调用 */
        var pk = res.topic.split('/')[2];
        var dn = res.topic.split('/')[3];
        console.log('mqtt message')
        console.log('mqtt topic is ' + res.topic);
        console.log('PK: ' + pk)
        console.log('DN: ' + dn)
        console.log('mqtt payload is ' + res.payload);
    })

    /* 关闭连接事件 */
    gateway.on('end', function () {
        console.log('iot client just closed');
    });

    /* 发生错误事件 */
    gateway.on('error', function (err) {
        console.log('error ' + err);
    });
}


console.log('====== create aiot gateway ======');
createGateway();


gateway(Object option)

创建 gateway实例,同时会开始尝试连接阿里云IoT平台。

option参数说明

属性

类型

必填

描述

productKey

String

设备的prodctKey

deviceName

String

设备的deviceName

deviceSecret

String

设备的deviceSecret

region

String

阿里云region,默认值:cn-shanghai。阿里云region详细说明见阿里云物联网平台 - 地域和可用区

keepalive

Number

心跳包报文时间间隔,默认值60秒

success

Function

连接成功时的回调函数

fail

Function

连接失败的回调函数

返回

  • gateway实例。

gateway实例

gateway.login(Object option, Function cb)

入参

属性

类型

必填

描述

option

Object

设备定义的属性参数

cb

Function

回调函数

option参数说明:

属性

类型

必填

描述

productKey

String

设备的prodctKey

deviceName

String

设备的deviceName

deviceSecret

String

设备的deviceSecret

gateway.login(Object option, Function cb)

入参

属性

类型

必填

描述

option

Object

设备定义的属性参数

cb

Function

回调函数

option参数说明: 同上

gateway.registerSubDevice(Object option, Function cb)

入参

属性

类型

必填

描述

option

Object

设备定义的属性参数

cb

Function

回调函数

option参数说明: 同上

gateway.subscribe(Object option, Function cb)

入参

属性

类型

必填

描述

option

Object

设备定义的属性参数

cb

Function

回调函数

option参数说明: 同上

gateway.unsubscribe(Object option, Function cb)

入参

属性

类型

必填

描述

option

Object

设备定义的属性参数

cb

Function

回调函数

option参数说明: 同上

gateway.publish(Object options)

入参

属性

类型

必填

描述

option

Object

设备定义的属性参数

cb

Function

回调函数

option参数说明: 同上

gateway.on(String event, Function callback)

监听事件。

入参

属性

类型

必填

描述

event

String

注册的事件名称

callback

Function

监听事件的回调函数

event事件说明:

  • 事件:'connect'

当iot client 连接到iot平台时,触发connect事件。

  • 事件:'disconnect'

当连接断开时,触发'disconnect'事件。

  • 事件:'message'

设备接收到iot平台消息时,触发'message'事件

  • 事件:'end'

当设备跟iot平台断开,触发'end'事件。

  • 事件:'error'

当设备跟iot平台通信过程中遇到错误时,触发error事件。