小小小小小白的阿里云物模型初探(python)
2021/9/13 22:08:26
本文主要是介绍小小小小小白的阿里云物模型初探(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
这篇关于小小小小小白的阿里云物模型初探(python)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门
- 2024-11-14Python编程入门指南
- 2024-11-13Python基础教程
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享