游乐游手机版
首页/AI教程/文章详情

阿里云物联网设备事件上报.NET Core客户端使用教程

时间:2026-06-30 16:02
阿里云IoT平台将设备事件上报划分为三类:信息、告警与故障。简单来说,事件是指设备主动发出的通知消息,后台系统需要及时响应和处理。 1)定义事件 登录阿里云物联网控制台,进入产品管理页面,在“自定义功能”中选择添加一个事件。具体操作步骤可参考以下截图。 2)上传事件的方法 CZGL AliIoTCl

阿里云IoT平台将设备事件上报划分为三类:信息、告警与故障。简单来说,事件是指设备主动发出的通知消息,后台系统需要及时响应和处理。

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 model, string eventName, [bool isToLower = True])
public int Thing_Event_Post(TModel model, string eventName, [bool isToLower = True], [System.Text.Encoding encoding = null])

参数说明:
- eventName:事件标识符名称
- content:Alink JSON 内容
- isToLower:是否将 JSON 转换为小写
- encoding:自定义 Alink JSON 的编码方式
- model:与事件对应的模型对象

第一种方法需要手动拼接 JSON 后再上传;第二种在第一种基础上增加了编码自定义选项;第三、四种则直接传入模型对象,由库内部自动完成 JSON 序列化。

3)编写事件模型

每次只能上传一个事件,每个事件对应一个模型或一个 Alink JSON。使用 CZGL.AliIoTClient 时,每次上传都需指定事件名称。

按照之前在控制台定义的事件结构,我们来构建一个模型。先看一下最终要生成的 Alink JSON 格式:

{
  "id": "123",
  "version": "1.0",
  "params": {
    "value": {
      "temperature": 100.1
    },
    "time": 1524448722000
  },
  "method": "thing.event.cpuerror.post"
}

对应的 C# 模型代码如下:

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", 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.name, false);

消息 ID 这类字段是必须的,“可多不可少”——其他无关字段加入后不会影响上报和使用,就像上面示例中增加的 name 属性一样。

上传的事件

5)补充说明

(此处原文缺少后续内容,如有补充将在此处添加。)

来源:https://developer.aliyun.com/article/704924
上一篇从零到上线:用EdgeOne Makers和CodeBuddy搭建对账核对AI智能体 下一篇年AI上下文编译器开始替代Prompt工程
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
企业组织级AI赋能具体实施方法
AI教程 · 2026-06-30

企业组织级AI赋能具体实施方法

前段时间收到一位读者的留言,希望聊聊企业级、组织级的AI赋能究竟该怎么落地。巧的是,前几天刚看到一份咨询调研机构的数据:对近一两年所有企业级AI赋能项目的统计显示,超过90%的甲方企业认为,AI赋能在核心业务价值链上没有发挥任何实质性作用。除了AI辅助办公、企业智能知识库这类边缘应用起到了一些辅助效

Scrapy与Redis分布式架构的日本电商多平台数据聚合系统
AI教程 · 2026-06-30

Scrapy与Redis分布式架构的日本电商多平台数据聚合系统

从事日本电商数据聚合工作时,最大的难点在于要同时应对雅虎拍卖、煤炉(Mercari)、乐天和亚马逊日本站等截然不同的平台。以往使用单机爬虫,经常出现运行中崩溃的情况——单点故障、带宽利用率不足、数据存储混乱,这三大痛点令人困扰。 本文分享一套基于Scrapy + Redis的分布式爬虫方案,专门解决

详细PuTTY 0.81安装教程 SSH远程连接与自定义路径设置
AI教程 · 2026-06-30

详细PuTTY 0.81安装教程 SSH远程连接与自定义路径设置

​ PuTTY(简称PT)是一款轻量级开源SSH Telnet客户端,凭借简洁高效的特性,多年来始终是系统管理员与开发者进行远程连接的首选利器。本教程将详细介绍PuTTY 0 81版本的完整安装过程,并指导您自定义安装路径,以便更灵活地管理SSH远程连接工具。 安装准备 首先需要说明的是,整个安装流

在线教育系统必备功能:直播课堂与题库考试架构
AI教程 · 2026-06-30

在线教育系统必备功能:直播课堂与题库考试架构

很多人一想到做在线教育系统,第一反应往往是先把直播间和课程播放器搭起来,觉得“能看课”就万事大吉了。真到落地那天才发现,系统能不能顺滑跑起来,关键全藏在那些细节里——课程怎么组织、学习进度怎么记、考试怎么处理、后台怎么管得住。前端看起来就几个页面,后端其实是一整条业务链路。不管你是要做在线教育APP

ZStack源码级AI诊断套件让故障排查秒出答案
AI教程 · 2026-06-30

ZStack源码级AI诊断套件让故障排查秒出答案

一次故障排查,到底要花多少时间? 运维人员处理私有云、虚拟化平台的问题,流程大致都是这样:先翻日志看现象,再去文档里找对应机制,然后搜社区有没有类似案例,最后综合判断给出答复。简单问题半小时,复杂问题可能要跨天——而这些时间里,大部分精力耗在了“找信息”而不是“做决策”上。 类似的问题,也许每天都在