• 产品
  • 解决方案
  • 典型案例
  • 平台服务
  • 了解卡奥斯
控制台
登录 / 注册
COSMOPlat
user
设备接入与管理
更新时间:2023-11-13 11:44:05
我的收藏

第一步:定义物联设备

首先在物联网平台要定义设备,包括定义设备基础信息、传输协议、鉴权方式及物模型等。

1.1 创建产品

点击设备管理->产品管理->添加产品进行创建产品,需要定义产品名称、传输协议等信息。传输配置内容需与设备实际连接方式保持一致。

产品是一类设备的模板,它们的物模型信息具有共性,例如:型号相同的两台温湿度传感器就属于同一个温湿度传感器的产品,它们与物联网平台的连接方式相同,能监测的点位也相同。

10001.png

1.2 配置物模型

创建了产品后,需要配置产品的物模型,包括监测点位和属性状态。点击查看产品详情->物模型->添加测点/添加属性进行配置物模型。设备数据推送至物联网平台后将按配置的物模型进行过滤展示,因此请确保物模型配置的标识等信息与实际一致。

物模型是物理空间中的实体在物联网平台中的数字化表示,是附着在设备一种数据模型。测点表示设备可被监测的点位数据,例如:设备的产量。属性表示设备运行属性,其区别于测点的特征是数据变化频率不高,且更关注当前值,例如:设备运行状态。

10002.png
10003.png

1.3 创建设备

建立好产品及物模型后,就可以创建设备了。点击设备管理->设备管理->添加设备进行创建设备,需要选择设备所属产品,继承产品的基础信息和物模型配置,还需要确定设备连接平台的鉴权方式和凭据内容。

设备是具有传输数据的能力的单位,其对应着物理空间中的实体设备,例如:具体安装在某车间顶部的烟雾传感器。设备物模型是以所属产品当时的物模型配置为模板生成的,生成后独立管理,方便您结合设备实际情况对物模型进行调整。
10004.png

第二步:接入物联网平台

不同设备接入物联网平台的流程方式大同小异,下文以MQTT协议传输+Access Token方式鉴权举例演示设备接入物联网平台。

2.1 通过MQTT方式连接

获取设备的Access Token,并以此为令牌连接访问物联网平台。

以下举例某网关内的连接配置和调试工具“MQTTX”的连接配置:
Host: mqtt:// iot.cosmoplat.com [正式环境] iot-uat.cosmoplat.com [试用环境]
port: 1883
Username: ACCESS_TOKEN

10005.png

设备连接成功后,物联网平台会显示对应设备状态为在线状态。
10006.png

2.2 推送遥测数据

单设备直连

单设备直接连接物联网平台推送遥测数据示例:
image.png

示例数据内容表示:该设备运行中、监测温度97.5℃、湿度55%、伺服电机开启、开机时间2022-12-12 15:20:00

多设备通过网关连接

网关设备连接物联网平台推送挂载子设备的遥测数据示例:

image.png

示例数据内容表示:设备1(设备标识是:Device_1)的监测温度86.2℃、湿度65%;设备2(设备标识是:Device_2)的统计产量257件、实时称重129.72kg

2.3 推送属性状态

单设备直连

单设备直接连接物联网平台推送客户端属性状态示例:

image.png

示例数据内容表示:该设备的序列号是SN-001、固件版本号是1.0.1、运行模式是高功率(定义枚举项1是低功率模式,2是高功率模式)

多设备通过网关连接

网关设备连接物联网平台推送挂载子设备的客户端属性状态示例:

image.png

示例数据内容表示:设备1(设备标识是:Device_1)的序列号是SN-074,固件版本号是1.0.1;设备2(设备标识是:Device_2)的序列号是SN-075,固件版本号是1.0.1

第三步:设备数据查看

设备推送的遥测数据和属性状态,都能物联网平台实时查看。

3.1 查看实时/历史遥测数据

点击查看设备详情->遥测数据查看最新的遥测数据。历史的遥测数据记录可点击历史数据查看。

10007.png
10008.png

3.2 查看设备属性状态

点击查看设备详情->属性状态查看最新的属性状态。

10009.jpg

附加进阶教程

其他方式推送遥测数据

通过HTTP方式推送

请求参数

POST /api/v1/${设备访问令牌}/telemetry HTTP/1.1
Host: https://iot.cosmoplat.com //[正式环境]
      http://iot-uat.cosmoplat.com //[试用环境]
Content-Type: application/json

{
	"temperature":76.58,
	"humility": 45,
	"msg" : "正常"
}

返回

http 200

通过UDP方式推送

物联网平台默认UDP端口为11451,设备可通过此端口进行推送数据

代码示例

本例使用了netty做udp协议传输

    // 1,创建udp服务。通过DatagramSocket对象。
    DatagramSocket socket = new DatagramSocket(SERVER_PORT);
    // 2,确定数据,并封装成数据包。DatagramPacket(byte[] buf, int length, InetAddress address, int port)
    Map<String, Object> map = Maps.newHashMap();
    map.put("topic", "telemetry");
    map.put("token", "ZiR***jpT");
    map.put("data", JSONUtil.parseObj("{\"key1\":\"testText\",\"ts1\":1656311865000,\"key2\":23.4,\"key3\":true}"));
    String data = JSONUtil.toJsonStr(map);
    byte[] buf = data.getBytes();
    DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName(SERVER_HOSTNAME), SERVER_PORT);
    // 3,通过socket服务,将已有的数据包发送出去。通过send方法。
    socket.send(dp);
    Thread.sleep(5000);
    // 4,关闭资源。
    socket.close();

规则链模拟设备

物联网平台提供设备模拟功能,可以通过规则链实现模拟推送设备属性状态、设备遥测数据。

模拟设备属性状态

您可以通过规则引擎->规则链消息生成器+保存属性规则节点进行模拟推送设备属性状态(客户端属性)。

10010.png

消息生成脚本示例

var msg = { battery: (60 + Math.random()*40).toFixed(2), servo: true, }; var metadata = { data: 40 }; var msgType = "POST_ATTRIBUTES_REQUEST";//属性状态 return { msg: msg, metadata: metadata, msgType: msgType };

示例脚本内容表示:生成标识为battery的属性值是60 ~ 100的随机数,小数点后保留2位小数、标识为servo的属性值是true

模拟设备遥测数据

您可以通过规则引擎->规则链消息生成器+保存时序数据规则节点进行模拟推送设备遥测数据。
10011.png
10012.png
消息生成脚本示例

var msg = { temperature: (0 + Math.random()*100).toFixed(2), humidity: (0 + Math.random()*100).toFixed(0), }; var metadata = { data: 40 }; var msgType = "POST_TELEMETRY_REQUEST";//遥测数据 return { msg: msg, metadata: metadata, msgType: msgType };

示例脚本内容表示:生成标识为temperature的测点值是0 ~ 100的随机数,小数点后保留2位小数、生成标识为humidity的测点值是0 ~ 100的随机数,整数(小数点后保留0位小数)

图示中的“物模型过滤”、“设备配置文件”、“消息类型路由器”规则节点是为了模拟真实设备数据处理流,以实现按照物模型配置过滤展示数据、按照告警规则触发告警记录。

规则链复杂数据解析

物联网平台提供数据实时解析转换功能,您可以通过规则引擎->规则链脚本转换规则节点进行解析转换设备数据。

10013.png
温度转换脚本示例

image.png

示例脚本内容表示:将华氏度℉转化成摄氏度℃,公式为 C=(F-32)÷1.8,小数点后保留2位小数

RPC调用反控设备

物联网平台支持通过直接RPC调用的或HTTP调用等方式的对设备进行反控(需设备支持反控)。

控制单台设备

10014.png

第①步:在物联网平台创建设备,获取设备的Access_Token,设备客户端连接至物联网平台并订阅 MQTT Topic:v1/devices/me/rpc/request/+

第②步:业务系统先进行登陆,获取后续接口调用所需的Token(Token可自行缓存)

http接口:/api/auth/login,请求方式:post

请求参数

POST /api/auth/login

{
	"username":"",
	"password":""
}

返回

{
	"token":"",
	"refreshToken":""
}

第③步:业务系统调用设备控制http接口

请求参数

POST /api/rpc/oneway/{Device_id}

请求头:X-Authorization:Bearer (此处有一个空格)+第②步获取的token

{
	"method":"",
	"params":""
}

Device_id为物联平台的设备ID,method和params为业务系统自定义,设备客户端能识别即可

第④步:第②步获取的Token过期时间为150分钟,可通过定时任务重新请求或者通过刷新Token接口重新获取Token

请求参数

POST /api/auth/token

{
"refreshToken":"第②步返回的refreshToken"
}

返回

{
	"token":"",
	"refreshToken":""
}

通过网关控制多台设备

第①步:在物联网平台创建网关及子设备,获取网关的Access_Token

网关需要向topic:v1/gateway/rpc推送报文{“device”:“设备名称”,“data”:{}}(连接多少设备需要推送多少条)进行网关与设备的绑定(上数也可绑定)。

第②步:业务系统先进行登陆,获取后续接口调用所需的Token(Token可自行缓存)

请求参数

POST /api/auth/login

{
	"username":"",
	"password":""
}

返回

{
	"token":"",
	"refreshToken":""
}

第③步:业务系统调用设备控制http接口

POST /api/rpc/oneway/{Device_id}

请求头:X-Authorization:Bearer (此处有一个空格)+第②步获取的token

{
	"method":"",
	"params":""
}

Device_id为物联平台的设备ID,method和params为业务系统自定义,设备客户端能识别即可

网关会收到报文:

{
	"device":"设备标识",
	"data":{
		"id":1,
		"method":"",
		"params":""
	}
}

第④步:第②步获取的Token过期时间为150分钟,可通过定时任务重新请求或者通过刷新Token接口重新获取Token

请求参数

POST /api/auth/token

{
"refreshToken":"第②步返回的refreshToken"
}

返回

{
	"token":"",
	"refreshToken":""
}
cosmoplat