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

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

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


1)定义事件


打开阿里云物联网控制台,进入产品,点击 自定义功能 ,添加一个事件。


微信图片_20220501213802.png

微信图片_20220501213805.png


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 属性。


微信图片_20220501213814.png


5)补充说明


相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
20天前
|
消息中间件 DataWorks 物联网
MQTT问题之接入阿里云物联网平台如何解决
MQTT接入是指将设备或应用通过MQTT协议接入到消息服务器,以实现数据的发布和订阅;本合集着眼于MQTT接入的流程、配置指导以及常见接入问题的解决方法,帮助用户实现稳定可靠的消息交换。
83 1
|
20天前
|
消息中间件 网络协议 物联网
MQTT协议问题之阿里云物联网服务器断开如何解决
MQTT协议是一个轻量级的消息传输协议,设计用于物联网(IoT)环境中设备间的通信;本合集将详细阐述MQTT协议的基本原理、特性以及各种实际应用场景,供用户学习和参考。
67 1
|
2月前
|
存储 安全 物联网
安防摄像头IPC如何快速接入阿里云Link Visual视频服务(阿里云生活物联网)
Link Visual是生活物联网平台针对视频产品推出的增值服务,提供视频数据上云、存储、转发、AI计算等能力。 大白话就是:通过阿里云的Link Visual视频服务,可以让你的IPC摄像头设备完成上云功能,并快速实现如下功能介绍中的功能。其中可以享受阿里云P2P协议支持,帮助企业节省流量服务器流量带宽。
176 7
|
5月前
|
对象存储
.net core 阿里云接口之拷贝文件
紧接上文, 1)[.net core 阿里云接口之获取临时访问凭证](https://developer.aliyun.com/article/1363447?spm=a2c6h.12873639.article-detail.7.2b0e5b1cpeWbZ5 ".net core 阿里云接口之获取临时访问凭证") 2)[.net core 阿里云接口之将指定的OSS文件下载到流](https://developer.aliyun.com/article/1363886 ".net core 阿里云接口之将指定的OSS文件下载到流") 本文继续阿里云接口调用,将指定的OSS文件下载到流。
28 0
|
5月前
|
C# 对象存储
.net core 阿里云接口之将指定的OSS文件下载到流
紧接上文,[.net core 阿里云接口之获取临时访问凭证](https://developer.aliyun.com/article/1363447?spm=a2c6h.13262185.profile.8.180876540j71A9 ".net core 阿里云接口之获取临时访问凭证") 本文继续阿里云接口调用,将指定的OSS文件下载到流。 直接上代码: ```csharp /// <summary> /// 将指定的OSS文件下载到流 /// </summary> /// <param name="args"></param> /// <returns></returns> [H
85 0
|
5月前
|
对象存储 数据安全/隐私保护 开发者
.net core 阿里云接口之获取临时访问凭证
假设您是一个移动App开发者,希望使用阿里云OSS服务来保存App的终端用户数据,并且要保证每个App用户之间的数据隔离。此时,您可以使用STS授权用户直接访问OSS。 使用STS授权用户直接访问OSS的流程如下: ![image.png](https://ucc.alicdn.com/pic/developer-ecology/j2ygdazy447va_7d767aa1db4047778a7b5c568b5d7c11.png) ## 1、关于秘钥等信息的申请见如下链接 [使用STS临时访问凭证访问OSS](https://help.aliyun.com/zh/oss/developer
71 0
|
5月前
|
消息中间件 Java 物联网
[笔记]阿里云物联网之业务服务端(java、php)接入阿里云平台(二)
[笔记]阿里云物联网之业务服务端(java、php)接入阿里云平台(二)
263 0
|
6天前
|
监控 安全 物联网
Java基于物联网技术的智慧工地解决方案源代码
应用先进的大数据、物联网、云计算等数字化技术,融合施工运营管理规范和技术标准,建构支撑施工和运营的一体化平台是投资、施工和运营单位能力建设的关键。应用企业架构、设计思维和软件工程方法,深入分析施工和运营技术特性与管理体系,研究开发基于大数据技术的智慧工地信息一体化平台,智慧工地管理平台是依托物联网、互联网建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。
36 2
|
5天前
|
消息中间件 存储 物联网
|
28天前
|
存储 网络协议 物联网
《物联网技术》课程笔记——第四章 物联网通信技术之计算机网络
《物联网技术》课程笔记——第四章 物联网通信技术之计算机网络

相关产品

  • 物联网平台