阿里云物联网.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
相关文章
|
6天前
|
传感器 人工智能 物联网
健康监测设备的技术革命:AI+物联网如何让你随时掌握健康数据?
健康监测设备的技术革命:AI+物联网如何让你随时掌握健康数据?
76 19
|
2月前
|
物联网 Python
请问:如何使用python对物联网平台上设备的属性进行更改?
为验证项目可行性,本实验利用阿里云物联网平台创建设备并定义电流、电压两个整型属性。通过Python与平台交互,实现对设备属性的控制,确保后续项目的顺利进行。此过程涵盖设备连接、数据传输及属性调控等功能。
|
4月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
87 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
4月前
|
Web App开发 网络协议 安全
基于Web攻击的方式发现并攻击物联网设备介绍
基于Web攻击的方式发现并攻击物联网设备介绍
79 4
|
4月前
|
安全 物联网 物联网安全
智能物联网安全:物联网设备的防护策略与最佳实践
【10月更文挑战第27天】随着物联网技术的快速发展,智能设备已广泛应用于生活和工业领域。然而,物联网设备的安全问题日益凸显,主要威胁包括中间人攻击、DDoS攻击和恶意软件植入。本文探讨了物联网设备的安全防护策略和最佳实践,包括设备认证和加密、定期更新、网络隔离以及安全标准的制定与实施,旨在确保设备安全和数据保护。
176 0
|
3月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
6月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
99 7
|
6月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
133 0
|
10月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
269 0
|
7月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
93 0

相关产品

  • 物联网平台