阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:6. 设备事件上报

简介: 根据阿里云物联网普通的定义,事件上报有 信息、告警、故障三种类型,事件是设备上传的消息通知,应当及时处理。1)定义事件打开阿里云物联网控制台,进入产品,点击 自定义功能 ,添加一个事件。 2)上传事件的方法CZGL.

根据阿里云物联网普通的定义,事件上报有 信息、告警、故障三种类型,事件是设备上传的消息通知,应当及时处理。

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)补充说明

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
3月前
|
Linux Android开发 iOS开发
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
69 0
|
1月前
|
SQL 监控 关系型数据库
解密SQL性能异常事件及阿里云数据库的性能调优实践
作为开发者想必都知道数据库是现代应用的核心组件之一,而且在当今互联网时代之下,SQL查询的性能直接影响系统的整体性能,它的性能对于系统的稳定性和响应速度至关重要。那么本文就来讨论一下SQL性能异常的排查和优化方法,包括我个人印象深刻的SQL性能异常事件,以及分享一下使用阿里云数据库产品/工具进行SQL性能调优的经验和心得体会。
71 1
解密SQL性能异常事件及阿里云数据库的性能调优实践
|
2月前
VB.NET—窗体引起的乌龙事件
VB.NET—窗体引起的乌龙事件
26 0
|
3月前
|
缓存 NoSQL 大数据
4款.NET开源的Redis客户端驱动库
4款.NET开源的Redis客户端驱动库
|
4月前
|
Kubernetes 监控 Python
阿里云kubernetes(ACK)pod异常问题分析辅助工具-pod生命周期及事件可观测一览图
阿里云kubernetes(ACK)pod异常问题分析辅助工具-pod生命周期及事件可观测一览图
|
5月前
|
JSON 物联网 开发工具
设备接入组件功能介绍
设备接入组件功能介绍
309 0
|
5月前
|
消息中间件 运维 监控
课时3:10分钟玩转阿里云物联网平台设备接入、管理、运维(二)
10分钟玩转阿里云物联网平台设备接入、管理、运维
282 0
|
7月前
|
开发框架 前端开发 JavaScript
ASP.NET Core MVC 从入门到精通之wwwroot和客户端库
ASP.NET Core MVC 从入门到精通之wwwroot和客户端库
131 0
|
8月前
|
存储 弹性计算 容灾
关于阿里云香港Region可用区C服务中断事件的说明
关于阿里云香港Region可用区C服务中断事件的说明
187 0

相关产品

  • 物联网平台