阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:6. 设备事件上报
根据阿里云物联网普通的定义,事件上报有 信息、告警、故障三种类型,事件是设备上传的消息通知,应当及时处理。
1)定义事件
打开阿里云物联网控制台,进入产品,点击 自定义功能 ,添加一个事件。
2)上传事件的方法
CZGL.AliIoTClient 中,有四个上传事件的方法
public int Thing_Event_Post(string eventName, string content, [bool isToLower = True]) public int Thing_Event_Post(string eventName, string content, [bool isToLower = True], [System.Text.Encoding encoding = null]) public int Thing_Event_Post<TModel>(TModel model, string eventName, [bool isToLower = True]) public int Thing_Event_Post<TModel>(TModel model, string eventName, [bool isToLower = True], [System.Text.Encoding encoding = null])
eventName: 事件的名称,即标识符。
content: Alink json 内容
isToLower:是否转为小写
encoding: 自定义上传 Alink json 的编码
model: 事件的模型
第一种方法需要手动编写好 json,然后通过方法上传。
第二种方法在第一种方法的基础上允许自定义字符编码。
第三种、第四种是传入模型,由 CZGL.AliIoTClient 处理好再上传。
3)编写事件模型
每次只能上传一个事件,一个事件对应一个 模型 或 Alink json。
在 CZGL.AliIoTClient 中,你每次上传一个事件时,都需要设置此事件的名称。
根据上面在阿里云物联网控制台定义的事件,编写模型。
预览要生成的 Alink json :
{ "id": "123", "version": "1.0", "params": { "value": { "temperature":100.1 }, "time": 1524448722000 }, "method": "thing.event.cpuerror.post" }
对应模型如下:
public class Cpuerror { public Cpuerror() { @params = new Params(); } public string id { get { return DateTime.Now.Ticks.ToString(); } set { } } public string version { get { return "1.0"; } set { } } public Params @params { get; set; } public class Params { public Params() { value = new Value(); } public Value value { get; set; } public long time { get { return AliIoTClientJson.GetUnixTime(); } set { } } public class Value { public float temperature { get; set; } } } public string @method { get { return "thing.event.cpuerror.post"; } set { } } }
一个事件对应一个类,如果事件里有多个输出参数,则在 Value 里定义好。
{ ... ... public class Value { public float temperature { get; set; } /* *定义多个输出参数 */ } ... ... }
上报事件:
Cpuerror cpuerror = new Cpuerror(); cpuerror.@params.value.temperature = 100.1F; client.Thing_Event_Post<Cpuerror>(cpuerror, "cpuerror", false);
4)容错
上传事件的 Alink json 可以 容错
,这给我们编写代码时带来了方便。、
例如将上面上传事件的代码改一下:
public class Cpuerror { public string name = "cpuerror"; public Cpuerror() { @params = new Params(); } public string id { get { return DateTime.Now.Ticks.ToString(); } set { } } public string version { get { return "1.0"; } set { } } public Params @params { get; set; } public class Params { public Params() { value = new Value(); } public Value value { get; set; } public long time { get { return AliIoTClientJson.GetUnixTime(); } set { } } public class Value { public float temperature { get; set; } } } public string @method { get { return $"thing.event.{name}.post"; } set { } } }
Cpuerror cpuerror = new Cpuerror(); cpuerror.@params.value.temperature = 100.2F; client.Thing_Event_Post<Cpuerror>(cpuerror, cpuerror.name, false);
对于 消息ID 等是必不可少的,“可多不可少”,其它无关字段可以增加上去,不会影响到上传和使用,例如上面的例子增加了一个 name 属性。
5)补充说明
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:说明
CZGL.AliIoTClientCZGL.AliIoTClient 是一个阿里云物联网 SDK,基于 .NET Standard 2.0 开发, 提供了对接阿里云物联网平台的类库,采用 MQTT 协议(M2MQTT.DotNetCore),可以快速开发物联网设备对接阿里云物联网的程序。包括通讯连接与加密、Topic推送和订阅、设备属性上传和设置、事件上报、服务调用、位置上传,支持透传和 Alink json 两种数据方式。 CZGL.AliIoTClient 支持跨平台跨CPU,能够在市场上多种嵌入式开发板上运行,做过大量测试,兼容性稳定性没问题。 documentation address:https://www.cnblogs.com/whuanle/ 笔者即将毕业,再有一个月就不是大学生啦~从此就是社会人。 干嘛用的阿里云物联网文档:https://help.aliyun.com/product/30520.html?spm=a2c4g.750001.list.208.54f37b13JmMfSk 阿里云提供的物联网 SDK 中,是没有 .NET Core 客户端的,所以笔者写...
- 下一篇
阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:7. 服务调用
预先在设备编写好相应的代码,这些代码能够处理一个或多个任务,即为 服务 ,一个服务包含一个或多个任务。 CZGL.AliIoTClient 中,服务器下发服务调用指令不需要设置,默认服务器可以直接下发命令而不需要经过客户端同意。 虽然客户端能够直接接收服务器的服务调用指令,但是必须要设置相应的方法绑定到委托中,方能处理指令。 下面会举例说明如何使用服务调用: 设备定义一个服务,这个服务是定时爆炸。 当收到服务器下发的爆炸命令和定时爆炸时间,就会开始任务 爆炸后,返回爆炸结果 服务器下发命令给设备,让它爆炸 服务器不管设备怎么爆炸,也不等你爆炸 设备爆炸完了,去告诉服务器设备以及完成爆炸 1)设置服务调用 打开阿里云物联网控制台,点击自定义功能,按以下定义。 服务定义: 输入参数: .png "设置输入参数") 输出参数: 2)定义服务说明 定义的服务,有输入参数、输出参数,是指服务器向设备下发命令调用服务,这个服务需要的输入参数、调用这个服务后返回的参数。 这个是相对设备来说的,服务器调用设备的服务,给设备传入数据(输入参数),然后设备处理完毕,返回结果(输出参数)。 里面有异步、同步...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS关闭SELinux安全模块
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度