阿里云IoT平台CoAP接入 3 了解下物模型
关于阿里云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 了解下物模型相关推荐
- 阿里云IoT平台CoAP接入
关于CoAP协议基础,可见笔记CoAP协议学习 小能手另外分享了NB-IoT的应用开发心得,先从模组端对几个常见模块进行试用分析,接着对更上层具体的CoAP协议进行研究,并且演示如何对接主流的第三方物 ...
- 阿里云IoT平台CoAP接入 1 开发准备
关于阿里云IoT平台CoAP接入,可见笔记阿里云IoT平台CoAP接入 小能手另外分享了NB-IoT的应用开发心得,先从模组端对几个常见模块进行试用分析,接着对更上层具体的CoAP协议进行研究,并且演 ...
- 10分钟虚拟设备接入阿里云IoT平台实战
10分钟虚拟设备接入阿里云IoT平台实战 1. 准备工作 1.1 注册阿里云账号 使用个人淘宝账号或手机号,开通阿里云账号,并通过实名认证(可以用支付宝认证) 1.2 免费开通IoT物联网套件 产品官 ...
- 阿里IOT云平台(二)---10分钟物联网设备接入阿里云IoT平台
本文转载自:https://www.geek-workshop.com/thread-37883-1-1.html.基于VS Code和Node.js 我替换了原文中的温度.湿度属性图(主要是修正了标 ...
- 4G Modbus Json边缘网关接入阿里云IoT平台
LTE-669P 4G边缘网关系列 阿里云平台连接教程 今天介绍物联设备 LTE-669P 4G边缘网关如何接入阿里云平台系列. LTE-669P是一款工业级4G JSON无线边缘解析网关,支持RS4 ...
- 【ODYSSEY-STM32MP157C】上报数据到阿里云 IoT 平台
我们在上一节<[ODYSSEY-STM32MP157C]驱动 UART 读取传感器数据> 已经成功读取到 PMS5003ST 传感器的数据,本节我们将学习如何将设备接入阿里云 IoT 平台 ...
- 存量设备通过DTU进入阿里云IoT平台
本文将具体介绍如何通过符合阿里云物联网平台接入协议规范的DTU设备,快速实现存量串口输出设备接入阿里云物联网平台. 背景信息 在工业.农业.医疗.城市.楼宇.园区等多种场景中,存在着大量的通过串口与外 ...
- 电信NB-IoT设备对接阿里云IoT平台实战——实践类
众所周知,中国电信的NB-IoT设备必须直连电信CTWing平台,无法直接在阿里云IoT,AWS IoT,腾讯云IoT 管理中国电信的NB-IoT设备. 今天我们就给大家介绍如何通过阿里云IoT企业物 ...
- 基于阿里云IoT平台OTA进行APP确认升级的方案——业务架构类
简介: 对于家居类及个人消费电子类的物联设备,基于用户体验的考虑,生产企业一般会为消费者提供通过手机APP进行确认升级的功能,典型的使用场景是通过手机APP对手环进行升级.本文主要介绍APP确认升级的 ...
最新文章
- #Ruby# Introspect (1)
- android button 添加事件_2019最新Android常用开源库总结
- TripleO (openstack)
- 初学Node(五)文件I/O
- 1135 Is It A Red-Black Tree (30 分)【难度: 难 / 知识点: 红黑树 未完成】
- python3获得命令行输入的参数
- Angular Schematics 学习笔记
- .bat是什么语言_简单说说当我们打开网页时,浏览器到底做了什么?
- 【java机器学习】贝叶斯分类
- linux下访问西门子S7,Siemens SIMATIC S7-1200 CPU开放重定向漏洞(CVE-2015-1048)
- 学习使用c++编写opencv的一些记录
- 在c语言三种编译预处理功能,C语言三种预处理功能
- LeetCode:35. Search Insert Position(Easy)
- 「leetcode」106.从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树 (详解)
- 借助ZFBrowser插件实现Unity内嵌网页的用户自定义
- :实用 FRIDA 进阶 --- objection :内存漫游、hook anywhere、抓包
- 代码主题darcula_darcula主题模式是()模式。_学小易找答案
- 基于深度学习的玫瑰向日葵分类系统
- 尚硅谷谷粒商城第十二天 商品详情页及异步编排
- 【抖音小程序】抖音小程序避免onClose重复回调 解决广告重复回调