linkkit — 对接阿里云物联网平台

阿里云物联网平台提供安全可靠的设备连接通信能力,支持设备数据采集上云,规则引擎流转数据和云端数据下发设备端。此外,也提供方便快捷的设备管理能力,支持物模型定义,数据结构化存储,和远程调试、监控、运维。 基于linkkit模块可以简单快速的使用阿里云物联网平台能力。

linkkit模块的主要实现是是一个LinkKit 类,通过它的构造函数获取linkkit实例,就可以轻松设置相关回调函数和调用相关方法。linkkit 中涉及三个基本概念如下:

  • 属性(prop)

    云端/设备端数据互通的通道,云端通过改变prop值,反馈到设备端,设备端修改prop值,保存到云端

  • 事件(event)

    设备端到云端的事件通知

  • 服务(service)

    云端到设备端的服务调用

详细使用示例请参考主页 参考案例 中的云端连接/控制部分

class LinkKit(...)

构造函数

class LinkKit(host_name, product_key, device_name, device_secret, product_secret=None, user_data=None)

LinkKit 初始化实例的方法

  • host_name 默认值为”cn-shanghai”

  • product_key 物联网平台的pk

  • device_name 默认值为”cn-shanghai”

  • device_secret 物联网平台的ds

  • product_secret 物联网平台的ps

    • 动态注册 这个参数不需要传,会在设备注册的时候,通过云端返回给设备端,设备端保存下来,并进行连接操作

    • 静态注册 物联网平台的上的ps

  • user_data 用户数据,视情况而定,可以不传

使用示例:

from linkkit import linkkit

lk = linkkit.LinkKit(host_name="cn-shanghai",
   product_key=PRODUCT_KEY,
   device_name=DEVICE_NAME,
   device_secret=DEVICE_SECRET,
   product_secret=PRODUCT_SECRET)

方法

connect_async()

连接物联网平台连接函数,该函数是异步调用,会通过on_connect 和on_disconnect 返回连接结果

thing_post_property(payload)

设置一个property 属性

使用示例:

import ujson
def property_test():
    num = 100
    while(num > 0):
       property_test = {
           "test_prop": num
       }
       payload = ujson.dumps(property_test)
       request_id = lk.thing_post_property(payload)
       num = num -20
thing_trigger_event(payload)

触发一个event 事件

使用示例:

import ujson
def do_post_event_test():
    num = 100
    while(num > 0):
    event_test = {
        "test_event": num
    }
    payload = ujson.dumps(event_test)
    lk.thing_trigger_event(("EventTest",payload))
    num = num - 20
do_yield(timeout)

激活物联网平台接收云端消息,并设置接收超时时间为:timeout, 单位是 ms 为了保证云端消息被接收到,执行了异步命令以后,需要循环执行这个方法,直到拿云端的返回

close()

关闭物联网设备节点,断开连接

回调函数

on_connect

连接成功的回调函数,属性类型:无参函数

使用示例:

def on_connect():
    print('linkkit connected')

lk.on_connect = on_connect
on_disconnect

断开连接的回调函数,属性类型:无参函数

使用示例:

def on_disconnect():
    print('linkkit disconnected')

lk.on_disconnect = on_disconnect
on_thing_prop_post

设置prop回调函数,属性类型:两个入参的函数

使用示例:

def on_thing_prop_post(id,code):
    print(' on report reply: id is %d , code is %d  ' %(id,code))

lk.on_thing_prop_post = on_thing_prop_post
on_thing_event_post

触发event回调函数,属性类型:两个入参的函数

使用示例:

def on_thing_event_post(id,code):
    print("on_trigger_event_reply: id is %d ,code is %d " %(id,code))

lk.on_thing_event_post = on_thing_event_post
on_prop_set

服务端调用设备端,设置prop,属性类型:一个入参的函数

使用示例:

def on_prop_set(request):
    print("on_prop_set: request is %s  " %(request))

lk.on_prop_set  = on_prop_set
on_service_request

服务端调用设备端的服务,属性类型:两个入参的函数

使用示例:

def on_service_request(request,response):
    print("on_service_request: request is %s ,response is %s " %(request,response))

lk.on_service_request = on_service_request