阿里云物联网 .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)补充说明
阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:6. 设备事件上报的更多相关文章
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:4.1 上报位置信息
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:1. 连接阿里云物联网
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:7. 服务调用
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:2. IoT 客户端
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:3. 订阅Topic与响应Topic
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:4. 设备上报属性
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:5. 设置设备属性
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:8. 委托事件
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:9. 自定义委托事件方法
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
随机推荐
- 九度OJ 1114:神奇的口袋 (DFS、DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:948 解决:554 题目描述: 有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个 ...
- go map 线程不安全 安全措施
go map 线程不安全 安全措施
- SQL Server 2005中top关键字的用法
1.返回N条记录数 select top n * from <表名> [查询条件] 2.返回总结果集中指定百分比记录数 select top n percent * from <表名 ...
- tornado之异步web服务一
大部分Web应用(包括我们之前的例子)都是阻塞性质的,也就是说当一个请求被处理时,这个进程就会被挂起直至请求完成.在大多数情况下,Tornado处理的Web请求完成得足够快使得这个问题并不需要被关注. ...
- Sql Server 2016 创建内存数据库
官方教程:https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/survey-of-initial-area ...
- break和continue 都是指的最接近的内层循环
break和continue 都是指的最接近的内层循环
- legend2---开发日志13(layer_mobile的content传入dom 出现【object object】如何解决)
legend2---开发日志13(layer_mobile的content传入dom 出现[object object]如何解决) 一.总结 一句话总结: layer_mobile.content只能 ...
- css绘制三角形
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java多线程Callable和Future类详解
public interface Callable<V> 返回结果并且可能抛出异常的任务.实现者定义了一个不带任何参数的叫做 call 的方法 public in ...
- python中的linspace,meshgrid,concatenate函数
linspace可以用来实现相同间隔的采样. numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) ...