编程语言
首页 > 编程语言> > 小小小小小白的阿里云物模型初探(python)

小小小小小白的阿里云物模型初探(python)

作者:互联网

阿里云物模型物联网平台初探(python)

前言

家里买了个天猫精灵,发现这些随便加了个传感器的东西都好贵,想着自己做一个巨无霸整合传感器,剩下一大笔money。毕设也可以往这方面发展。
具体的步骤看官网的吧,稍微踩了点坑。初步的python示例在下面。
mqtt协议的学习光看官方文档还是有点枯燥,这里观看了b站的视频
MQTT协议视频
小白一个,都是本人的拙见,有错误欢迎指正,没有怎么正经学过,人菜勿骂。

无脑复制文档代码的后果

查了小半个小时,最后发现官方给的实例代码,居然是类复用的时候用的,想直接写进去调试,得把self去掉,实际开发肯定还是直接复用吧。
然后就是一定要先把json文件下载下来,我就在下载下来以后,放进同一文件夹,然后就没有后续了。。。想了好半天才发现。
在这里插入图片描述
然后就是在物模型上发现,在从云端设置属性的时候,阿里云的sdk是多进程操作的,直接在回调函数中设置全局变量并不能改掉属性值。初步考虑设个管道?常用的多进程通信操作,后面想了想,实际开发好像直接读写引脚更容易实现和理解。
总之最后是基本可以实现两边的通信了,下面打算连接板子试试看,正好有一块k210.课设试试做个人脸门锁,能上云的,k210资源还是挺丰富的,人脸模型直接用就行。拼积木的课设有点让人害羞。

import json
from linkkit import linkkit

lk = linkkit.LinkKit(
   host_name="cn-shanghai",
   product_key="你的key",
   device_name="设备名称",
   device_secret="设备密码!不是产品")


def on_connect(session_flag, rc, userdata):
   print("on_connect:%d,rc:%d,userdata:" % (session_flag, rc))
   pass
   # 取消连接阿里云


def on_disconnect(rc, userdata):
   print("on_disconnect:rc:%d,userdata:" % rc)


def on_subscribe_topic(mid, granted_qos, userdata):  # 订阅topic
   print("on_subscribe_topic mid:%d, granted_qos:%s" %
         (mid, str(','.join('%s' % it for it in granted_qos))))
   pass
   # 接收云端的数据


def on_topic_message(topic, payload, qos, userdata):
   # 设备端的接收到的数据却是b:"123"用了一个切片去处理数据
   print("阿里云上传回的数值是:", str(payload))
   # 拿到接收来的数据
   data = str(payload)[2:-1]
   print("阿里云上传回的数值是:", data)
   dataDict = json.loads(data)
   print(topic)
   print(qos)
   print(userdata)
   pass


# 终止订阅云端数据
def on_unsubscribe_topic(mid, userdata):
   print("on_unsubscribe_topic mid:%d" % mid)
   pass


# 发布消息的结果,判断是否成功调用发布函数
def on_publish_topic(mid, userdata):
   print("on_publish_topic mid:%d" % mid)


def on_thing_enable(userdata):
   print("on_thing_enable")


def on_thing_disable(userdata):
   print("on_thing_disable")


def on_thing_prop_post(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 on_thing_event_post(event, request_id, code, data, message, userdata):
   print("on_thing_event_post event:%s,request id:%s, code:%d, data:%s, message:%s" %
         (event, request_id, code, str(data), message))


def on_thing_prop_changed(params, userdata):
   # 多进程操作,数据并不共享。现实使用直接读取引脚建议。
   global prop_data
   prop_data['NightLightSwitch'] = params['NightLightSwitch']
   lk.thing_post_property(prop_data)
   print('xiugai', prop_data['NightLightSwitch'])


def on_thing_call_service(identifier, request_id, params, userdata):
   print("on_thing_call_service identifier:%s, request id:%s, params:%s" %
         (identifier, request_id, params))


# 注册接收到云端数据的方法
lk.on_connect = on_connect
# 注册取消接收到云端数据的方法
lk.on_disconnect = on_disconnect
# 注册云端订阅的方法
lk.on_subscribe_topic = on_subscribe_topic
# 注册当接受到云端发送的数据的时候的方法
lk.on_topic_message = on_topic_message
# 注册向云端发布数据的时候顺便所调用的方法
lk.on_publish_topic = on_publish_topic
# 注册取消云端订阅的方法
lk.on_unsubscribe_topic = on_unsubscribe_topic
lk.thing_setup("objdect_model.json")
# 物模型可用?
lk.on_thing_enable = on_thing_enable
lk.on_thing_disable = on_thing_disable
# 属性
lk.on_thing_prop_post = on_thing_prop_post  # 每改变一次就要提交一次。
lk.on_thing_prop_changed = on_thing_prop_changed
# 事件️
lk.on_thing_event_post = on_thing_event_post
# 服务器一步响应
lk.on_thing_call_service = on_thing_call_service
# 连接mqtt
lk.connect_async()

time.sleep(2)
prop_data = {
   "NightLightSwitch": 1,
}


while True:
   if prop_data['NightLightSwitch'] == 1:
       prop_data['NightLightSwitch'] = 0
   else:
       prop_data['NightLightSwitch'] = 1
   time.sleep(5)
   print('ziji',prop_data['NightLightSwitch'])
   pass

标签:thing,python,print,lk,prop,topic,小小白,云物,data
来源: https://blog.csdn.net/u011901912/article/details/120273373