查看设备详情

更新时间:2018-11-26 21:55:55

重要说明

设备管理从本期版本后将实现统一接入,新用户将使用统一接入后的设备管理,统一接入的相关文档见地址,老用户遵循下面的文档说明。

   *新用户定义:指2018年11月30日以后(含11月30日)使用工业互联网平台的用户。
   *老用户定义:指2018年11月30日之前使用工业互联网平台的用户。

用户在完成设备的接入工作后,在设备管理控制台可以快速地预览设备上报的属性,事件数据,同时可以便捷地模拟平台对设备进行服务调用。

属性数据查看

在设备详情页中点击“属性管理”标签,可以看到设备设备上传的属性数据,以及最新值。

image | left

数据点后面的“查看数据”按钮,可以查看到近24小时的属性数据。对于数值型数据,平台将用折线图的方式对数据进行展示,对于其他数据类型,平台提供表格的形式进行展示。打开“自动刷新”功能后,最新数据及图表数据将会自动更新,用户可以看到一个动态的图表。

image | left

图形方式展示数据

image | left

表格展示数据

同时,用户也可以选择通过Excel文件的格式将数据进行导出。

事件数据查看

用户在设备详情页中,通过选择“事件管理”标签可以快速查看设备上报的事件,包括事件上报的时间,事件类型,以及事件所携带的参数。

image | left

设备事件列表

设备服务调用

用户通过选择设备详情页中的“服务调用”标签,进入平台为用户提供的一个快速实现设备服务调用,并且可以查看设备服务调用历史。

image | left

设备服务调用记录列表

点击列表右上角“开始调用”按钮,可以打开服务调用功能窗口,在此可以快速进行服务调用,帮助平台用户快速调试现场设备对服务调用的响应。

image | center

设备服务快速调用窗口

平台会根据设备所属产品的定义,将设备支持的服务在“选择服务”下拉列表中列出,用户选择具体服务后,平台会将该服务所需要的输入参数也一并列出,供用户调用时填写。在完成选择和参数填写后,用户通过“测试”按钮启动一次服务调用。若为异步调用,测试按钮将保持3s不可用。若为同步调用,平台将会等待来自设备的返回值。若超时则进行相应提示。

设备日志查看

平台为用户提供了设备通信日志查看功能,用户可以看到设备每次通信的详细信息。以便对设备异常/故障进行分析。

image | left

设备转储服务

DataHub转储

功能概述

在很多物联网场景中,流计算是刚需,阿里云流计算平台的数据采集模块,均是围绕DataHub作为流式数据采集的目的Pub/Sub系统。 智慧工业平台可以将设备数据实时转发到Datahub,进而和流式计算打通,帮助用户实现对设备数据进行实时计算的场景。 DataHub文档参考 链接

DataHub转储配置

操作说明

  • 首先用户必须要有阿里云账号,没有账号的,请先完成注册。

  • 平台不能操作用户的DataHub资源,必须经过用户的授权才能对用户的DataHub进行写数据。所以,用户需要创建一个具有DataHub写入权限的角色,然后将该角色赋予给阿里云工业互联网平台,这样我们才能将处理过后的数据写入DataHub中。

  • 用户需要先选择DataHub中的Project,然后根据Project选择Topic。如果没有资源,那就需要去DataHub控制台创建相应的资源。

  • 选择完DataHub中的Topic后,平台自动获取Topic中的Schema,接下来需要将平台选出来的设备属性映射到对应的DataHub Schema中。

上传配置变更

选择上传配置变更才会真正把设备数据流转dataHub规则写到云端。

image | left

开启转储

只有开启转储功能,设备端上报的数据才会开始流转到DataHub

image | left

停止转储

如果想停止设备数据转储到DataHub,可以选择停止转储按钮

image | left

重置

如果想删除设备转储DataHub功能,或者针对该设备转储到DataHub的其它project和topic,可以选择重置选项。注意:只有先选择停止转储后才可以选择重置。

image | left

注意事项

  • 平台不支持BLOB类型的DataHub topic

示例

设备端上报属性数据

当设备端属性发生变化,设备端可以通过mqtt topic上报数据。
TOPIC: /sys/{productKey}/{deviceName}/thing/event/property/post 
REPLY TOPIC: /sys/{productKey}/{deviceName}/thing/event/property/post_reply

request:
{
    "id": "123",
    "version": "1.0",
    "params": {
        "twoString": "hello world"
    },
    "method": "thing.event.property.post"
}

response:
{
    "id": "123",
    "code": 200,
    "data": {}
}
private static String propPostTopic = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post";

Map<String, Object> paramMap = new HashMap<>(8);                                                                                                         
paramMap.put("twoString", "hello world");                                                    
Map<String, Object> contentMap = new HashMap<>(8);                                           
contentMap.put("id", 123);                                                                   
contentMap.put("version", "1.0");                                                            
contentMap.put("params", paramMap);                                                          
contentMap.put("method", "thing.event.property.post");                                       
MqttMessage message = new MqttMessage(JSON.toJSONString(contentMap).getBytes("utf-8"));      
message.setQos(0);                                                                                                                                                                                                                                  
sampleClient.publish(propPostTopic, message);

DataHub控制台查看数据

image | left

image | left

ONS转储

功能概述

用户通过平台将数据转发到消息队列MQ中,从而具备了从设备到平台到MQ再到应用服务器全链路高可靠的消息能力。ONS文档参考 链接

ONS转储配置

image | left

操作说明

  • 首先用户必须要有阿里云账号,没有账号的,请先完成阿里云账号注册。

  • 用户选择region地域。普通版ONS实例,只能选择公网和华东2 region, 铂金版ONS实例,可以选择任意region

  • 用户根据业务选择需要写入数据的ONS Topic。

  • 用户授权平台具有写入消息队列Topic的权限。

保存配置

image | left

开启转储

开启转储后,设备端动态上报的数据才会流转到ONS里面

image | left

停止转储

选择停止转储后,设备端数据不在转发到ONS队列里面。

清除配置

清除配置后,设备端数据流转ONS规则全部清除。注意:只有选择停止转储后,才可以做清除操作

image | left

注意事项

  • MQ非铂金实例的Topic不支持跨地域的访问写入。所以用户如果没有创建铂金实例的Topic,那就必须在平台所在的华东2 region或者公网 region下创建Topic,否则不能写入,例如平台所在地域是华东2,那么消息队列的Topic也需要在华东2或者公网region创建;如果用户需要购买MQ的铂金实例,那可以不用关心在哪个地域购买铂金实例,因为铂金实例的Topic,平台都可以有权限写入数据。

  • MQ存储的设备数据类型包括设备属性数据、设备事件数据、设备上下线数据。

示例

设备端上报属性数据

当设备端属性发生变化,设备端可以通过mqtt topic上报数据。
TOPIC: /sys/{productKey}/{deviceName}/thing/event/property/post 
REPLY TOPIC: /sys/{productKey}/{deviceName}/thing/event/property/post_reply

request:
{
    "id": "123",
    "version": "1.0",
    "params": {
        "twoString": "hello world"
    },
    "method": "thing.event.property.post"
}

response:
{
    "id": "123",
    "code": 200,
    "data": {}
}

当设备端事件发生变化,设备端可以通过mqtt topic上报设备事件。
TOPIC: /sys/{productKey}/{deviceName}/thing/event/{dsl.event.identifer}/post 
REPLY TOPIC: /sys/{productKey}/{deviceName}/thing/event/{dsl.event.identifer}/post_reply 

request:
{
    "id": "123",
    "version": "1.0",
    "params": {
        "oneInt": 56,
        "twoString": "hello world"
    },
    "method": "thing.event.{dsl.event.identifer}.post"
}

response:
{
    "id": "123",
    "code": 200,
    "data": {}
}
//设备属性上报java demo
private static String propPostTopic = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post";
Map<String, Object> paramMap = new HashMap<>(8);                                                                                                         
paramMap.put("twoString", "hello world");                                                    
Map<String, Object> contentMap = new HashMap<>(8);                                           
contentMap.put("id", 123);                                                                   
contentMap.put("version", "1.0");                                                            
contentMap.put("params", paramMap);                                                          
contentMap.put("method", "thing.event.property.post");                                       
MqttMessage message = new MqttMessage(JSON.toJSONString(contentMap).getBytes("utf-8"));      
message.setQos(0);                                                                                                                                                                                                                                  
sampleClient.publish(propPostTopic, message);    

//设备事件上报java demo
private static String pubEventTopic = "/sys/" + productKey + "/" + deviceName + "/thing/event/eventOne/post";
Map<String, Object> paramMap = new HashMap<>(8);
paramMap.put("oneInt", 108);
paramMap.put("twoString", "hello world");
Map<String, Object> contentMap = new HashMap<>(8);
contentMap.put("id", 123);
contentMap.put("version", "1.0");
contentMap.put("params", paramMap);
contentMap.put("method", "thing.event.eventOne.post");
MqttMessage message = new MqttMessage(JSON.toJSONString(contentMap).getBytes("utf-8"));
message.setQos(0);
sampleClient.publish(pubEventTopic, message);

ONS控制台查看消息数据

image | left

消息body格式

image | left

设备属性消息格式

{
    "deviceType": "FoundryMachinery",
    "iotId": "n7m1HbDdinIcXCYh0Gkz0010ae9000",
    "productKey": "b1Q03Kb1Yyg",
    "gmtCreate": 1529486487121,
    "deviceName": "n7m1HbDdinIcXCYh0Gkz",
    "items": {
        "twoString": {
            "time": 1529486487134,
            "value": "hello world"
        },
        "oneInt": {
            "time": 1529486487134,
            "value": 108
        }
    }
}

设备事件消息格式
{
    "deviceType": "FoundryMachinery",
    "identifier": "eventOne",
    "iotId": "n7m1HbDdinIcXCYh0Gkz0010ae9000",
    "name": "eventOne",
    "time": 1529472753511,
    "type": "info",
    "productKey": "b1Q03Kb1Yyg",
    "deviceName": "n7m1HbDdinIcXCYh0Gkz",
    "value": {
        "twoString": "hello world",
        "oneInt": 108
    }
}

设备上线消息格式
{
    "deviceType": "FoundryMachinery",
    "iotId": "n7m1HbDdinIcXCYh0Gkz0010ae9000",
    "action": "online",
    "productKey": "b1Q03Kb1Yyg",
    "gmtCreate": 1530179277738,
    "deviceName": "n7m1HbDdinIcXCYh0Gkz",
    "status": {
        "time": 1530179277738,
        "value": "1"
    }
}

设备下线消息格式
{
    "deviceType": "FoundryMachinery",
    "iotId": "n7m1HbDdinIcXCYh0Gkz0010ae9000",
    "action": "offline",
    "productKey": "b1Q03Kb1Yyg",
    "gmtCreate": 1530179280182,
    "deviceName": "n7m1HbDdinIcXCYh0Gkz",
    "status": {
        "time": 1530179280182,
        "value": "0"
    }
}

HTTP2转储

  • http2转储模式,用户在平台上仅需选择转储的触发逻辑,开启后点击保存,就会开启HTTP2转储能力。

image | left

两种消息推送机制的解释:

  • “设备状态变化通知”:指设备上线,下线状态变化时,进行消息推送。

  • “设备上报信息”:指设备每次上报数据时,就会进行转发。

  • HTTP2转储功能中,平台端为服务端,用户需要通过http2的client主动来连接平台,获取转储数据。具体的操作方式,请参考平台提供的HTTP2开发SDK的用法

消息格式

设备属性消息格式:

{
    "deviceType": "PharmaceuticalManufacturing",
    "iotId": "ldkhsKJl2W1uoE9Xo46T00103a1800",
    "productKey": "a1k3yOhhxRW",
    "gmtCreate": 1532572403635,
    "deviceName": "ldkhsKJl2W1uoE9Xo46T",
    "items": {
        "twoString": {
            "value": "hello world 1532572403576",
            "time": 1532572403671
        },
        "oneInt": {
            "value": 106,
            "time": 1532572403671
        }
    }
}

设备上线消息格式:
{
    "deviceType": "PharmaceuticalManufacturing",
    "iotId": "ldkhsKJl2W1uoE9Xo46T00103a1800",
    "action": "online",
    "productKey": "a1k3yOhhxRW",
    "gmtCreate": 1532572781265,
    "deviceName": "ldkhsKJl2W1uoE9Xo46T",
    "status": {
        "time": 1532572781265,
        "value": "1"
    }
}

设备下线消息格式:
{
    "deviceType": "PharmaceuticalManufacturing",
    "iotId": "ldkhsKJl2W1uoE9Xo46T00103a1800",
    "action": "offline",
    "productKey": "a1k3yOhhxRW",
    "gmtCreate": 1532572795379,
    "deviceName": "ldkhsKJl2W1uoE9Xo46T",
    "status": {
        "time": 1532572795379,
        "value": "0"
    }
}

设备上传文件

支持查看和管理设备上传的文件,显示设备文件存储空间。

image.png | left | 826x355

results matching ""

    No results matching ""