用python进行Web可视化开发

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台  先登录这个

步骤一:在项目中创建开关遥控器产品 - 物联网应用开发 - 阿里云

物模型开发

设备可以使用物模型功能,实现属性上报、事件上报和服务调用

比较重要的阿里云文档:

https://help.aliyun.com/document_detail/98370.html 物模型开发

以下是一个样例,可以实现MQTT Topic通信和物模型开发

import logging
import sys

from linkkit import linkkit

class CustomerThings(object):
    def __init__(self):
        self.__linkkit = linkkit.LinkKit(
            host_name="cn-shanghai",
            product_key="gsf8fx1IxB1",
            device_name="device1",
            device_secret="7e475324fb0a5977ba77b9176d644668")

#SDK回调函数连接
        self.__linkkit.enable_logger(logging.DEBUG)
        self.__linkkit.on_connect = self.on_connect
        self.__linkkit.on_disconnect = self.on_disconnect
        self.__linkkit.on_subscribe_topic = self.on_subscribe_topic
        self.__linkkit.on_thing_enable = self.on_thing_enable
        self.__linkkit.on_thing_disable = self.on_thing_disable
        self.__linkkit.on_thing_prop_changed = self.on_thing_prop_changed
        self.__linkkit.on_thing_prop_post = self.on_thing_prop_post
        self.__linkkit.thing_setup("tsl.json")
#用户需要从云端控制台下载物模型文件,该文件需要集成到应用工程中,这样对应的topic才能正确的接收和发送消息

#连接
    def on_connect(self, session_flag, rc, userdata):
        print("on_connect:%d,rc:%d,userdata:" % (session_flag, rc))
#断开连接
    def on_disconnect(self, rc, userdata):
        print("on_disconnect:rc:%d,userdata:" % rc)

#Topic消息
    def on_subscribe_topic(mid, granted_qos, userdata):
        print("on_subscribe_topic mid:%d, granted_qos:%s" %
              (mid, str(','.join('%s' % it for it in granted_qos))))
        pass

#订阅
#物模型功能可用时通过on_thing_enable通知用户,然后用户可以进行属性上报,事件上报,服务响应:
    def on_thing_enable(self, userdata):
        print("on_thing_enable")

#取消订阅,物模型功能不可用时通过 on_thing_disable 通知用户,属性上报,事件上报,服务响应不可用
    def on_thing_disable(self, userdata):
        print("on_thing_disable")

#云端设置属性
    def on_thing_prop_changed(self, params, userdata):
        print("on_thing_prop_changed" + str(params))
        prop_data = params

#属性上报,通过thing_post_property上报属性,传入参数为与物模型定义中属性对应的字典对象
    prop_data = {
    "abs_speed": 11,
    "power_stage": 10
}
    rc, request_id = self.__linkkit.thing_post_property(prop_data)

#服务端对上报的属性做出处理发出响应,SDK通过on_thing_prop_post 通知用户
    def on_thing_prop_post(self, request_id, code, data, message, userdata):
        print("on_thing_prop_post request id:%s, code:%d, data:%s message:%s" %
              (request_id, code, str(data), message))

    def user_loop(self):
        self.__linkkit.connect_async()

        while True:
            try:
                msg = input()
            except KeyboardInterrupt:
                sys.exit()


if __name__ == "__main__":
    custom_things = CustomerThings()
    custom_things.user_loop()

属性上报:

rc, request_id = lk.thing_post_property(prop_data)

服务端对上报的属性做出处理发出响应,SDK通过on_thing_prop_post 通知用户
   def on_thing_prop_post(self, request_id, code, data, message, userdata):
        print("on_thing_prop_post request id:%s, code:%d, data:%s message:%s" %
              (request_id, code, str(data), message))

thing_post_property返回值rc为0时,表明请求写入发送缓冲区成功,rc为其它值为写入发送缓冲失败,

当on_thing_prop_post 调用时,表明结果从云端返回了请求结果,code为200时表明解析成功,其它值为失败,失败信息可在message中查看

属性设置:

服务端发送设置属性消息后,SDK通过设置的回调函数on_thing_prop_changed通知用户,回调函数中params为包含属性名与值的字典对象,用户需要对接收到的新属性进行处理:

  1. lk.on_thing_prop_changed = on_thing_prop_changed
  2. ...
  3. def on_thing_prop_changed(self, params, userdata):
  4. print("on_thing_prop_changed params:" + str(params))

注: SDK不会主动上报属性变化,如需要修改后再次上报云端,需要用户自行调用thing_post_property()发送

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值