IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 小小小小小白的阿里云物模型初探(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

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:30:52  更:2021-09-14 13:31:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:49:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码