关于阿里云IoT平台CoAP接入,可见笔记阿里云IoT平台CoAP接入

小能手另外分享了NB-IoT的应用开发心得,先从模组端对几个常见模块进行试用分析,接着对更上层具体的CoAP协议进行研究,并且演示如何对接主流的第三方物联网平台,可以见NB-IoT应用开发笔记


1 前言

上一篇使用基础版产品进行接入,此种应用,阿里云IoT平台作为一个数据管道。另外阿里云物联网套件中还提供了高级版产品,使用物模型(TSL)来细化产品定义,可以在阿里云平台直接操作产品。

物联网套件高级版中,对物理空间中的实体进行了数字化建模,物理实体可以是各类传感器、车载装置、工业切片机等,也可以是“楼宇”、“房间”甚至“工厂”等等。现阶段,物联网中与人发生直接交互的物,更多是一个个具体的设备,因此,我们将设备抽象为“物”(Thing),通过物模型对设备是什么、能做什么、可以对外提供哪些服务进行描述。一般情况下,物模型表现为设备的“功能”,包括至少一个“属性”(Property)或“服务”(Service)或“事件”(Event)。开发者完成产品的功能定义后,系统将自动生成该产品的“物模型”,以JSON格式表述,称之为 TSL(即 Thing Specification Language),请参考文档产品功能定义。

具体关于物模型的介绍可以查看官方帖子,阿里云物联网套件 > 快速入门 > 高级版快速开始 > 基于物模型开发设备

这篇笔记将会介绍官方的物模型示例,官方花了较多篇幅介绍物模型,我就不搬运了。但是物模型如何转化为 Alink Json 才是接入时最重要的一点,也是最容易出错的地方,本能手花了好几天,在阿里云伙伴的帮助下终于成功上报了数据。为了其他朋友少走一些弯路,本能手创建了一个烟感产品,演示如何把TSL转化为 Alink Json。这为下一步高级版的 CoAP 接入测试做好协议准备。

2 官方物模型解析

官方将 Alink Json 协议的介绍,放在了开发指南里面,阿里云物联网套件 > 开发指南 > 设备协议,其中有属性、事件、服务的 Alink Json 通信格式介绍。

我这边搬运一个设备属性上报的示例,其他例子大家可以多看看,特别是再处理具体协议时,可以到这边做个比对。

{"id" : "123","version":"1.0","params" : {"Power" : {"value":"on","time":1524448722000    }"WF" : {"value":{},"time":1524448722000   }},"method":"thing.event.property.post"
}

具体字段的细节定义如下:

有几点要注意下,如果没有严格按照这个格式来,后台就无法解析:

  • 物模型字段必须完全一致。

    id、version、method、time 等等这些字段一个都不能少。开发者可变的就是“请求参数”下的“属性名称”和“属性的值”这些键值对。

  • 各个属性的字段一定要注意看其定义的数据类型

    比如 time 字段的数值是UTC毫秒,是长整形数,不用加双引号。是的,本能手一定犯过这个错,才会重点写出来告诉大家。

3 烟感产品物模型解析

本能手这边举例的设备定义是烟感设备。

属性   烟雾检测状态  SmokeSensorState    enum    枚举值:0-正常; 1-检测到烟雾;
事件  故障上报        Error                   -   事件类型:信息

3.1 烟感设备属性上报

{"id":"123","version":"1.0","params":{"SmokeSensorState":{"value":1,"time":1524448722000}},"method":"thing.event.property.post"
}

3.2 烟感设备事件上报

{"id":"123","version":"1.0","params":{"Error":{"value":1,"time":1524448722000}},"method":"thing.event.property.post"
}

4 增强型的烟雾报警器

官方模版比较简单,只有1个属性和1个事件。我再定义相对完备的烟雾报警器。

4.1 物模型描述

                {"identifier": "SmokeSensorState","dataType": {"specs": {"0": "正常","1": "检测到烟雾"},"type": "enum"},"name": "烟雾检测状态"},{"identifier": "RemoveState","dataType": {"specs": {"0": "正常","1": "拆卸报警"},"type": "bool"},"name": "拆卸报警状态"},{"identifier": "BatteryPercentage","dataType": {"specs": {"unit": "%","min": "0","unitName": "百分比","max": "100"},"type": "double"},"name": "电池电量"},{"identifier": "Period","dataType": {"specs": {"unit": "″","min": "10","unitName": "秒","max": "79800"},"type": "int"},"name": "心跳上报周期"}

4.2 CoAP 上报 payload

Alink Json 整理如下:

{"id":"123","version":"1.0","params":{"SmokeSensorState":{"value":0,"time":1526051254000},"RemoveState":{"value":0,"time":1526051254000},"BatteryPercentage":{"value":99,"time":1526051254000},"Period":{"value":10,"time":1526051254000}},"method":"thing.event.property.post"
}

5 END


阿里云IoT平台CoAP接入 3 了解下物模型相关推荐

  1. 阿里云IoT平台CoAP接入

    关于CoAP协议基础,可见笔记CoAP协议学习 小能手另外分享了NB-IoT的应用开发心得,先从模组端对几个常见模块进行试用分析,接着对更上层具体的CoAP协议进行研究,并且演示如何对接主流的第三方物 ...

  2. 阿里云IoT平台CoAP接入 1 开发准备

    关于阿里云IoT平台CoAP接入,可见笔记阿里云IoT平台CoAP接入 小能手另外分享了NB-IoT的应用开发心得,先从模组端对几个常见模块进行试用分析,接着对更上层具体的CoAP协议进行研究,并且演 ...

  3. 10分钟虚拟设备接入阿里云IoT平台实战

    10分钟虚拟设备接入阿里云IoT平台实战 1. 准备工作 1.1 注册阿里云账号 使用个人淘宝账号或手机号,开通阿里云账号,并通过实名认证(可以用支付宝认证) 1.2 免费开通IoT物联网套件 产品官 ...

  4. 阿里IOT云平台(二)---10分钟物联网设备接入阿里云IoT平台

    本文转载自:https://www.geek-workshop.com/thread-37883-1-1.html.基于VS Code和Node.js 我替换了原文中的温度.湿度属性图(主要是修正了标 ...

  5. 4G Modbus Json边缘网关接入阿里云IoT平台

    LTE-669P 4G边缘网关系列 阿里云平台连接教程 今天介绍物联设备 LTE-669P 4G边缘网关如何接入阿里云平台系列. LTE-669P是一款工业级4G JSON无线边缘解析网关,支持RS4 ...

  6. 【ODYSSEY-STM32MP157C】上报数据到阿里云 IoT 平台

    我们在上一节<[ODYSSEY-STM32MP157C]驱动 UART 读取传感器数据> 已经成功读取到 PMS5003ST 传感器的数据,本节我们将学习如何将设备接入阿里云 IoT 平台 ...

  7. 存量设备通过DTU进入阿里云IoT平台

    本文将具体介绍如何通过符合阿里云物联网平台接入协议规范的DTU设备,快速实现存量串口输出设备接入阿里云物联网平台. 背景信息 在工业.农业.医疗.城市.楼宇.园区等多种场景中,存在着大量的通过串口与外 ...

  8. 电信NB-IoT设备对接阿里云IoT平台实战——实践类

    众所周知,中国电信的NB-IoT设备必须直连电信CTWing平台,无法直接在阿里云IoT,AWS IoT,腾讯云IoT 管理中国电信的NB-IoT设备. 今天我们就给大家介绍如何通过阿里云IoT企业物 ...

  9. 基于阿里云IoT平台OTA进行APP确认升级的方案——业务架构类

    简介: 对于家居类及个人消费电子类的物联设备,基于用户体验的考虑,生产企业一般会为消费者提供通过手机APP进行确认升级的功能,典型的使用场景是通过手机APP对手环进行升级.本文主要介绍APP确认升级的 ...

最新文章

  1. #Ruby# Introspect (1)
  2. android button 添加事件_2019最新Android常用开源库总结
  3. TripleO (openstack)
  4. 初学Node(五)文件I/O
  5. 1135 Is It A Red-Black Tree (30 分)【难度: 难 / 知识点: 红黑树 未完成】
  6. python3获得命令行输入的参数
  7. Angular Schematics 学习笔记
  8. .bat是什么语言_简单说说当我们打开网页时,浏览器到底做了什么?
  9. 【java机器学习】贝叶斯分类
  10. linux下访问西门子S7,Siemens SIMATIC S7-1200 CPU开放重定向漏洞(CVE-2015-1048)
  11. 学习使用c++编写opencv的一些记录
  12. 在c语言三种编译预处理功能,C语言三种预处理功能
  13. LeetCode:35. Search Insert Position(Easy)
  14. 「leetcode」106.从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树 (详解)
  15. 借助ZFBrowser插件实现Unity内嵌网页的用户自定义
  16. :实用 FRIDA 进阶 --- objection :内存漫游、hook anywhere、抓包
  17. 代码主题darcula_darcula主题模式是()模式。_学小易找答案
  18. 基于深度学习的玫瑰向日葵分类系统
  19. 尚硅谷谷粒商城第十二天 商品详情页及异步编排
  20. 【抖音小程序】抖音小程序避免onClose重复回调 解决广告重复回调

热门文章

  1. Last Call!旷视研究院「技术圆桌派 for PhDs」
  2. 乔布斯离开后的苹果 | 历史上的今天
  3. 一种带开关量的开口式电流互感器,防止人为打开
  4. 【云栖大会】英国气象局联手阿里云寻找最聪明智能算法为“反重力无人飞行器”护航
  5. transpose算子优化的几种常见场景
  6. 体验云计算的成果----亚马逊免费云计算服务
  7. MySQL计算值不保留小数
  8. 5种PHP创建数组的方式
  9. 科沃斯扫地机器人电路原理图_科沃斯扫地机故障图解
  10. 随笔1:再见,2020!你好,2021