zoukankan      html  css  js  c++  java
  • 002-STM32+ESP8266+AIR202基本控制方案-关于阿里云物联网平台上的自定义,物模型,基础通信Topic使用说明

    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

    Topic说明

    一.点击产品,查看

    二.阿里云提供了三种类型的Topic

    先说一下自定义Topic

    一.自定义Topic是说这个Topic可以自定义

    而且消息格式也随意.

    a1m7er1nJbQ 是产品的ProductKey

    ${deviceName} 是指让你用产品下设备的名字代替

    后面的操作权限是告诉用户这个主题是用来发布的还是用来订阅

    列如:

    我上一节注册的设备的名字是 Mqtt

    所以我这个设备发布的主题为:

    /a1m7er1nJbQ/Mqtt/user/update

    /a1m7er1nJbQ/Mqtt/user/update/error

    我设备订阅的主题为:

    /a1m7er1nJbQ/Mqtt/user/get

    二.测试发布主题

     

    三.测试订阅主题

    四.注

    用户只需要知道使用自定义的主题发布的消息可以随意,

    在后面的章节会用到里面的消息.

    物模型Topic(属性上报和设置)

    一.平台提供了一个展示设备数据的页面

    不过需要按照规定的协议上报数据

    二.假设显示工作电压值(在产品的功能定义可以看到具体的定义)

    提示:一个产品下面的所有设备都有这些功能,因为下面的设备隶属于这个产品嘛.

    这是阿里云默认添加的功能,咱先看怎么使用.

    三.显示Mqtt这个设备的电压值(ProductKey 和 deviceName 根据自己的修改)

    发布的主题: /sys/a1m7er1nJbQ/${deviceName}/thing/event/property/post

    消息: {"method":"thing.event.property.post","id":"1111","params":{"LightVolt":1},"version":"1.0"}

    四.关于消息格式为啥那样写

    参考阿里云文档

    https://help.aliyun.com/document_detail/89301.html?spm=a2c4g.11186623.6.735.24096486HbmRhg

    五.假设这个产品下的设备都需要个温度展示,自己添加个温度

    1.编辑草稿

    2.添加自定义功能

    3.按照下面的填写

    4.发布

    六.测试(ProductKey 和 deviceName 根据自己的修改

    发布的主题: /sys/a1m7er1nJbQ/${deviceName}/thing/event/property/post

    消息: {"method":"thing.event.property.post","id":"1111","params":{"temp":25},"version":"1.0"}

     

    七.再添加个湿度

    八.同时上报温湿度数据(ProductKey 和 deviceName)根据自己的修改

    发布的主题: /sys/a1m7er1nJbQ/${deviceName}/thing/event/property/post

    消息: {"method":"thing.event.property.post","id":"1111","params":{"temp":25,"humi":60},"version":"1.0"}

    九.订阅属性设置主题

    1.(ProductKey 和 deviceName)根据自己的修改

    /sys/${ProductKey}/${deviceName}/thing/service/property/set

    2.订阅

    3.找到在线调试,选择要调试的设备

    4.随便找一个可以设置的功能

    5.提示

    如果是真实的设备,可以用作开灯和关灯.

    6.可以设置温度

    如果是真实的设备,可以用来设置温度的阈值,然后用来做温度报警

    物模型Topic(事件上报)

    一.现在看下这个

    二,添加一个事件

    1.编辑草稿

    2.添加自定义功能

    3.按照下图添加

    4.发布

    三,测试

    发布的主题: /sys/{productKey}/{deviceName}/thing/event/{tsl.event.identifier}/post

    发布的消息: {"method":"thing.event.{tsl.event.identifier}.post","id":"1111","params":{},"version":"1.0"}

    替换自己的 productKey, deviceName, tsl.event.identifier(事件的标识符)

    /sys/a1m7er1nJbQ/Mqtt/thing/event/tempH/post

    {"method":"thing.event.tempH.post","id":"1111","params":{},"version":"1.0"}

    注:

    结合前面的那个设置属性,加上这个事件可以做一个设置阈值和报警的事情.

    基础通信Topic(只简单介绍一下我已经使用过的)

    一.基础通信Topic(OTA升级)

    OTA升级的Topic是在设备运维里面的OTA升级使用

    其实就是把固件放到服务器上,然后通过对应的Topic上报版本和获取固件版本,下载地址

    咱在升级篇里面会使用到.

    二,时钟同步

    1.如果本身设备没有时钟,想获取时间戳,{productKey}/{deviceName}根据自己的修改

    /ext/ntp/{productKey}/{deviceName}/request

    发布的主题 : /ext/ntp/a1m7er1nJbQ/Mqtt/request

    发布的消息: {"deviceSendTime":"0"}

    提示:获取的时间戳是Ms ,误差10ms左右

     

    2.获取精准时间

    https://help.aliyun.com/document_detail/102509.html?spm=a2c4g.11186623.6.718.922d6486p633oV

    注:其它参数都有,我只说一下这个 deviceRecvTime 是咋回事.

    其实自己设备首先应该跑着时钟,不管你时钟跑的对不对,

    你发送的数据其实是:  {"deviceSendTime":"获取设备时钟的时间戳"}

    然后你接收到消息后再获取一下设备的当前的时钟的时间戳就是 deviceRecvTime

  • 相关阅读:
    数组名和指针区别(还有数组退化等)
    无法从“const char *”转换为“char *”
    c语言数组初始化问题
    c语言实现atoi和itoa函数。
    不使用临时变量交换两个整数
    hdu 1282回文数猜想
    Android仿WIN8系统磁贴点击下沉倾斜效果
    Android Studio使用心得
    处理json中影响解析的多余引號
    我也来开发2048之主界面设计
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/14230769.html
Copyright © 2011-2022 走看看