云服务器内容精选

  • 概述 订阅推送的示意图如下图所示: 物联网平台 采用HTTPS协议向应用服务器进行消息推送时,物联网平台需要校验应用服务器的真实性,需要在物联网平台上加载CA证书,该证书由应用服务器侧提供(调测时可自行制作调测证书,商用时建议更换为商用证书,否则会带来安全风险)。 推送机制:物联网平台向应用服务器推送消息后,如果应用服务器接收消息成功,会向物联网平台返回200 OK响应码。如果应用服务器无响应(或响应时间超过15秒),或者应用服务器向物联网平台返回非200响应码(如500、501、502、503、504等),表示消息推送失败,消息推送失败后该消息将被丢弃。推送失败连续累计达到10次,物联网平台会将该订阅URL的主机地址加入黑名单,在黑名单期间消息将会积压在平台(默认积压最近24小时或1GB数据,若只想保留最新数据可参考数据转发积压策略配置进行配置)。此后每3分钟尝试对黑名单中的订阅URL主机地址进行消息推送,如果推送失败,则继续保持黑名单;如果推送成功,则解除黑名单。解除黑名单后消息将会以最大流控值推送完积压的消息后才会正常推送最新消息(默认流控为800TPS,自定义配置参考数据转发流控策略配置)。
  • 制作调测证书 调测证书,又叫做自签名证书,用于客户端通过HTTPS访问服务端时进行安全认证。在物联网平台的使用中,可用于物联网平台向应用服务器采用HTTPS协议推送数据时,物联网平台认证应用服务器的合法性。本文以Windows环境为例,介绍通过Openssl工具制作调测证书的方法,生成的证书为PEM编码格式的证书,后缀为.cer。 常见的证书存储格式如下表所示。 存储格式 说明 DER 二进制编码,后缀名.der/.cer/.crt PEM BASE 64编码,后缀名.pem/.cer/.crt JKS Java的证书存储格式,后缀名.jks 自签名证书仅用于调测阶段,在商用时,您需要向知名CA机构申请证书,否则可能会带来安全风险。 在浏览器中访问这里,下载并安装OpenSSL工具。 以管理员身份运行cmd命令行窗口。 执行cd c:\openssl\bin(请替换为openssl实际安装路径),进入openssl命令视图。 执行如下命令生成CA根证书私钥文件ca_private.key。 openssl genrsa -passout pass:123456 -aes256 -out ca_private.key 2048 aes256:代表加密算法。 passout pass:代表私钥密码。 2048:代表密钥长度。 执行如下命令使用CA根证书私钥文件生成csr文件ca.csr,用于6生成CA根证书。 openssl req -passin pass:123456 -new -key ca_private.key -out ca.csr -subj "/C=CN/ST=GD/L=SZ/O=Huawei/OU=IoT/CN=CA" 如下信息您可以根据实际情况进行修改。 C:代表国家,填写CN。 ST:地区,如GD。 L:城市,如SZ。 O:组织,如Huawei。 OU:组织单位,如IoT。 CN:Common Name,填写为CA的组织名,如CA。 执行如下命令生成CA根证书ca.cer。 openssl x509 -req -passin pass:123456 -in ca.csr -out ca.cer -signkey ca_private.key -CAcreateserial -days 3650 如下信息您可以根据实际情况进行修改。 passin pass:必须与4中设置的私钥密码保持一致。 days:代表证书有效期。 执行如下命令生成应用服务器端私钥文件。 openssl genrsa -passout pass:123456 -aes256 -out server_private.key 2048 执行如下命令生成应用服务器端csr文件,用于生成服务端证书。 openssl req -passin pass:123456 -new -key server_private.key -out server.csr -subj "/C=CN/ST=GD/L=SZ/O=Huawei/OU=IoT/CN=appserver.iot.com" 如下信息您可以根据实际情况进行修改。 C:代表国家,填写CN。 ST:地区,如GD。 L:城市,如SZ。 O:组织,如Huawei。 OU:组织单位,如IoT。 CN:Common Name,一般填写为应用服务器的 域名 或IP。 通过CA私钥文件ca_private.key对服务端csr文件server.csr进行签名,生成服务端证书文件server.cer。 openssl x509 -req -passin pass:123456 -in server.csr -out server.cer -sha256 -CA ca.cer -CAkey ca_private.key -CAserial ca.srl -CAcreateserial -days 3650 (可选)如果您需要.crt/.pem后缀的证书,可以根据如下命令进行转换。下面将以server.cer转为为server.crt为例进行说明,需要转换ca.cer证书时,请将命令中的server替换为ca。 openssl x509 -inform PEM -in server.cer -out server.crt 在openssl安装目录的bin文件夹下,获取生成的CA证书(ca.cer/ca.crt/ca.pem)、应用服务器证书(server.cer/server.crt/server.pem)和私钥文件(server_private.key)。其中CA证书用于加载到物联网平台,应用服务器证书和私钥文件用于加载到应用服务器。
  • 场景说明 将数据流转到influxDB,兼容InfluxDB生态的云原生 时序数据库 。提供高性能读写、高压缩率、冷热分层存储以及弹性扩容、监控告警等服务能力,可以实现大并发的时序数据读写,压缩存储和类SQL查询等功能,支持多维聚合计算和 数据可视化 分析能力。广泛应用于资源监控、业务监控分析、物联网设备实时监控、工业生产监控、生产质量评估和故障回溯等。提供了高吞吐量和并发性,可以通过快速的响应时间来支持大量的连接,非常适合要求苛刻的物联网应用。
  • 购买GeminiDB Influx 登录云数据库GeminiDB Influx,单击“立即购买”。 根据需求选择按需计费或者包年包月以及性能规格、存储空间等,兼容接口选择InfluxDB。具体可参考购买集群实例。 图1 购买influxDB实例 下载InfluxDB客户端,通过客户端连接实例,参考公网连接实例。 使用客户端连接实例后,通过以下命令创建数据库,${databaseName}可以自定义。 create database ${databaseName} 图2 创建数据库
  • 响应示例 状态码: 200 OK { "count" : 1, "forwarding_configs" : [ { "forwarding_type" : "kafka", "kafka_config" : { "kafka_config_id" : "1234567890", "kafka_topics" : [ "v2x-v1-tracks", "v2x-v1-bsm", "v2x-v1-rsi", "v2x-v1-rsm", "v2x-v1-spat", "v2x-v1-edge-flow", "realtime-traffic", "junction-realtime-traffic", "forecast-traffic", "recommended-strategies", "executed-strategies", "strategy-evaluations", "confirmed-event", "traffic-event", "compositive-tracks", "model-data", "request-strategies", "congestion-event", "congestion-prediction-event" ], "brokers" : [ "127.0.0.1:10000" ], "username" : "1234567890", "topic_prefix" : "abc", "status" : "ONLINE", "model_ids" : [ "40f96952-ea2f-4a10-8a92-e641aa1c6e49" ], "created_time" : "2015-12-12T12:12:12Z", "last_modified_time" : "2015-12-13T12:12:12Z" }, "mrs_kafka_config" : { "kafka_config_id" : null, "kafka_topics" : [ "v2x-v1-tracks", "v2x-v1-bsm", "v2x-v1-rsi", "v2x-v1-rsm", "v2x-v1-spat", "v2x-v1-edge-flow", "realtime-traffic", "junction-realtime-traffic", "forecast-traffic", "recommended-strategies", "executed-strategies", "strategy-evaluations", "confirmed-event", "traffic-event", "compositive-tracks", "model-data", "request-strategies", "congestion-event", "congestion-prediction-event" ], "brokers" : [ "127.0.0.1:10000" ], "username" : null, "status" : null, "authentication" : false, "model_ids" : [ "40f96952-ea2f-4a10-8a92-e641aa1c6e49" ], "created_time" : "2015-12-12T12:12:12Z", "last_modified_time" : "2015-12-12T12:12:12Z" } } ] }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 count Integer 参数说明:满足查询条件的记录总数。 forwarding_configs Array of ForwardingConfig objects 参数说明:转发配置的列表。 表5 ForwardingConfig 参数 参数类型 描述 forwarding_type String 参数说明:转发配置的类型。 取值范围:当前仅支持“kafka、mrskafka”。 kafka_config KafkaConfigResponseDTO object 参数说明:Kafka配置信息。 mrs_kafka_config MrsKafkaConfigResponseDTO object 参数说明:mrsKafka配置信息。 表6 KafkaConfigResponseDTO 参数 参数类型 描述 kafka_config_id String 参数说明:每一套Kafka配置的唯一ID。 取值范围:只允许字母、数字、下划线(_)、连接符(-)的组合。 kafka_topics Array of strings 参数说明:kafka的主题列表。 取值范围: v2x-v1-tracks:edge上报的车辆轨迹数据 v2x-v1-bsm:车载T-BOX,RSU上报的BSM消息数据 v2x-v1-rsi:RSU,edge上报的RSI消息数据 v2x-v1-rsm: RSU,edge上报的RSM消息数据 v2x-v1-spat:RSU上报的SPAT消息数据 v2x-v1-edge-flow:edge上报的车流量统计信息数据 brokers Array of strings 参数说明:Kafka broker列表。 username String 参数说明:kafka用户名。 取值范围:只允许字母、数字、下划线(_)、连接符(-)的组合。 topic_prefix String 参数说明:Topic前缀。 取值范围:长度不超过255,只允许字母、数字、下划线(_)、连接符(-)的组合。 status String 参数说明:一套kafka的连接状态。 取值范围: OFFLINE:离线 ONLINE:在线 cert_info CertificateInfo object 参数说明:证书信息。 model_ids Array of strings 参数说明:模型ID列表。 user_topics包含model-data时必选,仅支持非系统、分层为gdm的动态模型。 可通过 GET /{project_id}/models 查询模型列表接口获取。 取值范围:仅支持字母,数字以及中划线(-)的组合,长度为36。 created_time String 参数说明:创建时间。 格式为yyyy-MM-dd'T'HH:mm:ss'Z' 例如:2015-12-12T12:12:12Z last_modified_time String 参数说明:修改时间。 格式为yyyy-MM-dd'T'HH:mm:ss'Z' 例如:2015-12-12T12:12:12Z 表7 CertificateInfo 参数 参数类型 描述 effective_date String 证书生效日期 expiry_date String 证书失效日期 表8 MrsKafkaConfigResponseDTO 参数 参数类型 描述 kafka_config_id String 参数说明:每一套Kafka配置的唯一ID。 取值范围:只允许字母、数字、下划线(_)、连接符(-)的组合。 kafka_topics Array of strings 参数说明:kafka的主题列表。 取值范围: v2x-v1-tracks:edge上报的车辆轨迹数据 v2x-v1-bsm:车载T-BOX,RSU上报的BSM消息数据 v2x-v1-rsi:RSU,edge上报的RSI消息数据 v2x-v1-rsm: RSU,edge上报的RSM消息数据 v2x-v1-spat:RSU上报的SPAT消息数据 v2x-v1-edge-flow:edge上报的车流量统计信息数据 brokers Array of strings 参数说明:Kafka broker列表。 username String 参数说明:mrskafka用户名,若开启安全认证该参数必填。 取值范围:只允许字母、数字、下划线(_)、连接符(-)的组合。 status String 参数说明:一套kafka的连接状态。 取值范围: OFFLINE:离线 ONLINE:在线 authentication Boolean 参数说明:是否开启kerberos安全认证的开关。若开启安全认证则需要先上传kerberos安全认证的凭证。 model_ids Array of strings 参数说明:模型ID列表。 user_topics包含model-data时必选,仅支持非系统、分层为gdm的动态模型。 可通过 GET /{project_id}/models 查询模型列表接口获取。 取值范围:仅支持字母,数字以及中划线(-)的组合,长度为36。 created_time String 参数说明:创建时间。 格式为yyyy-MM-dd'T'HH:mm:ss'Z' 例如:2015-12-12T12:12:12Z last_modified_time String 参数说明:修改时间。 格式为yyyy-MM-dd'T'HH:mm:ss'Z' 例如:2015-12-12T12:12:12Z
  • Message示例 { "header" : { "instance_id" : "f24b3b95-4a2a-4f6f-a80c-855156b50af7", "event" : "ADDED" }, "body" : { "source" : { "source_type" : "detection", "source_id" : "EDGE0123456789", "esn" : "2102312ETX10K7000037" }, "time" : "2020-09-01T01:37:01.123Z", "cross_id" : "cross0123456789", "track_list" : [ { "track_id" : 50, "ptc_type" : "motor", "ptc_id" : 3, "source" : "rsu", "global_track_id" : 3, "vehicle_class" : 10, "vehicle_color" : "black", "vehicle_model" : "朗逸", "vehicle_brand" : "红旗", "vehicle_style" : "2018,2019,2020", "gat_vehicle_class" : "K33", "plat_no" : "浙A12345", "heading" : 158.23, "speed" : 10.2, "car_direction" : 1, "fuel_type" : 5, "camera_list" : [ { "id" : 0, "ip" : "127.0.0.1" } ], "size" : { "width" : 200, "length" : 400, "height" : 200 }, "location_list" : [ { "lon" : 123.123, "lat" : 11.123, "speed" : 10.2, "accel_set" : { "long_accel" : 3, "lat_accel" : 4, "vert_accel" : 0, "yaw_rate" : 0 }, "heading" : 158.23, "angle" : 0, "car_direction" : 1, "time_stamp" : 1626243657123 } ] } ] } }
  • Message参数 表1 请求Body参数 参数 是否必选 参数类型 描述 header 是 OpenV2XTracksHeader object 参数说明:轨迹数据信息的附加描述。 body 是 OpenV2XTracksBody object 参数说明:轨迹数据信息。 表2 OpenV2XTracksHeader 参数 是否必选 参数类型 描述 instance_id 是 String 参数说明:实例ID。dris物理实例的唯一标识。 event 是 String 参数说明:操作描述。" 取值范围: MODIFIED:修改 ADDED:新增 DELETED:删除 枚举值: MODIFIED ADDED DELETED 表3 OpenV2XTracksBody 参数 是否必选 参数类型 描述 source 否 TracksSource object 参数说明:消息来源。 time 否 String 参数说明:数据上报的时间。 格式:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'。 例如 2021-01-08T02:03:41.907Z。 cross_id 否 String 参数说明:路口id,对应到一组雷视拟合设备,检测一个特定的路口或者路段。 最小长度:0 最大长度:64 track_list 否 Array of TrackList objects 参数说明:轨迹列表。 数组长度:0 - 100 表4 TracksSource 参数 是否必选 参数类型 描述 source_type 否 String 参数说明:信息来源的具体类型描述。 枚举值: rsu obu detection sne source_id 否 String 参数说明:信息来源的唯一标识码ID。 最小长度:1 最大长度:255 esn 否 String 参数说明:设备编码。 取值范围:长度不超过64,只允许字母、数字、以及_等字符的组合。 表5 TrackList 参数 是否必选 参数类型 描述 track_id 否 Long 参数说明:轨迹id。 最小值:0 最大值:9223372036854775807 ptc_type 否 String 参数说明:路侧单元检测到的交通参与者类型。 取值范围: unknown:未知类型 motor:机动车 non-motor:非机动车 pedestrian:行人 rsu:RSU设备 ptc_id 否 Integer 参数说明:检测单元设置的临时ID。 最小值:0 最大值:65535 source 否 String 参数说明:定义交通参与者数据的来源。 取值范围: unknown:未知数据源类型 rsu:RSU自身信息 v2x:参与者自身的v2x广播消息 video:视频传感器 microwaveRadar:微波雷达传感器 loop:地磁线圈传感器 lidar:激光雷达传感器 integrated:一类或以上感知数据的融合结果 global_track_id 否 Long 参数说明:ITS800通过GlobalTrackID字段标识了车辆唯一ID。 最小值:0 最大值:9223372036854775807 vehicle_class 否 Integer 参数说明:车辆类型。参考车辆基本类型。 最小值:0 最大值:1000 gat_vehicle_class 否 String 参数说明:机动车车辆类型。参考机动车车辆类型。 vehicle_color 否 String 参数说明:车辆颜色。 取值范围: black:黑色 white:白色 gray:灰色 red:红色 blue:蓝色 yellow:黄色 orange:橙色 brown:棕色 green:绿色 purple:紫色 cyan:青色 pink:粉红色 transparent:透明色 other:其他 vehicle_model 否 String 参数说明:车辆型号。 最小长度:0 最大长度:63 vehicle_brand 否 String 参数说明:车辆品牌。 最小长度:0 最大长度:31 vehicle_style 否 String 参数说明:车辆年款,通过年份来表示,多个年份通过逗号分隔。 最小长度:0 最大长度:63 plat_no 否 String 参数说明:车牌。 最小长度:0 最大长度:63 heading 否 Number 参数说明:车的航向角,正北为0度,顺时针增加。单位° 最小值:0 最大值:360 speed 否 Number 参数说明:速度,单位km/h。 最小值:0 最大值:1000 car_direction 否 Integer 参数说明:车辆方向。 取值范围: -1:未知方向 0:车头 1:车尾 最小值:-1 最大值:1 fuel_type 否 Integer 参数说明:定义车辆的燃料动力类型,10-15暂未定义。 取值范围: 0:未知 1:汽油 2:乙醇 3:柴油 4:电动 5:混合燃料类型 6:氢气 7:液化天然气 8:压缩天然气 9:丙烷 最小值:0 最大值:15 size 否 SizeDTO object 参数说明:车辆尺寸。 camera_list 否 Array of TrackCameraInfo objects 拍摄到事件的摄像头信息。 数组长度:0 - 10 location_list 否 Array of LocationList objects 参数说明:位置列表。 数组长度:0 - 100 表6 SizeDTO 参数 是否必选 参数类型 描述 width 否 Integer 参数说明:车辆宽度,单位厘米。 最小值:0 最大值:300 length 否 Integer 参数说明:车辆长度,单位厘米。 最小值:0 最大值:3000 height 否 Integer 参数说明:车辆高度,单位厘米。 最小值:0 最大值:500 表7 TrackCameraInfo 参数 是否必选 参数类型 描述 id 否 Integer 参数说明:SNE的摄像头id,编号从0开始。 最小值:0 最大值:128 ip 否 String 参数说明:摄像头ip。 最小长度:0 最大长度:15 表8 LocationList 参数 是否必选 参数类型 描述 lon 否 Number 参数说明:经度。东经为正,西经为负,单位°,精度小数点后7位。 最小值:-180 最大值:180 lat 否 Number 参数说明:纬度。北纬为正,南纬为负,单位°,精度小数点后7位。 最小值:-90 最大值:90 speed 否 Number 参数说明:速度,单位km/h。 最小值:0 最大值:1000 accel_set 否 AccelerationSet4Way object 参数说明:定义车辆四轴加速度。 heading 否 Number 参数说明:车的航向角,正北为0度,顺时针增加。单位° 最小值:0 最大值:360 angle 否 Integer 参数说明:定义车辆转向轮角度。向右为正,向左为负。单位为1.5°,值为127时代表无效值。 最小值:-126 最大值:127 car_direction 否 Integer 参数说明:车辆方向。 取值范围: -1:未知方向 0:车头 1:车尾 最小值:-1 最大值:1 lane_no 否 Integer 参数说明:车辆所处车道。如果感知设备支持覆盖双向行驶方向时,桩号递增行驶方向,车道号从左到右从1依次递增;桩号递减行驶方向,车道号从左到右从-1依次递减。如果感知设备只支持覆盖单向车道,可以不区分桩号递增或者递减行驶方向,车道号可以按照车辆行驶方向从左到右,从1开始递增。 最小值:-32 最大值:32 time_stamp 否 Long 参数说明:采集车辆数据的毫秒时间戳。 表9 AccelerationSet4Way 参数 是否必选 参数类型 描述 long_accel 是 Integer 参数说明:车辆纵向加速度。单位为0.01米每平方秒。值为2001时代表无效数值。 最小值:-2000 最大值:2001 lat_accel 是 Integer 参数说明:车辆横向加速度。单位为0.01米每平方秒。值为2001时代表无效数值。 最小值:-2000 最大值:2001 vert_accel 是 Integer 参数说明:定义Z轴方向的加速度大小,Z轴方向竖直向下,沿着Z轴方向为正。 分辨率为0.02G,G为重力加速度值9.80665m/s2。 最小值:-127 最大值:127 yaw_rate 是 Integer 参数说明:车辆横摆角速度。指汽车绕垂直轴的偏转,该偏转的大小代表汽车的稳定程度。如果偏转角速度达 到一个阈值,说明汽车发生侧滑或者甩尾等危险工况。 顺时针旋转为正,逆时针为负。 数据分辨率为0.01°/s。 最小值:-127 最大值:127
  • 场景说明 通过IoTDA规则流转能力实现自动调用合约将数据流转到 BCS 区块链服务实现数据可信上链,助力客户构建可信多方协作平台,使用 区块链 可减少人为纠纷,提高交易效率;区块链的不可篡改性降低了欺诈和网络错误的发生;共享的账本、流程、记录增进参与方之间的可信度;审计机构可随时对不可篡改的账本进行审计。IoTDA企业版实例支持将数据流转到B CS 华为云区块链引擎实例(推荐)和Hyperledger Fabric增强版。 本示例分为两部分,将设备上报的数据转发到华为云区块链引擎实例(推荐)和Hyperledger Fabric增强版上链。 Hyperledger Fabric增强版由于开源内核限制,不支持高tps场景使用。建议使用性能更好的华为云区块链引擎实例。
  • 模拟数据上报及结果验证 使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)。 使用模拟器进行消息上报,详情请参考:设备消息上报。 上报内容如下: { "age": "34", "profession": "blue-collar", "maritalStatus": "single", "educationalStatus": "tertiary", "realEstateSituation": "no", "loanStatus": "tertiary" } 查看HTTP服务器是否收到预测结果。 图17 查看消息
  • 概述 在物联网解决方案中,针对庞大的数据进行自动学习时,需要对海量数据进行标注、训练,按照传统的方式进行标注、训练不仅耗时耗力,而且对资源消耗也非常巨大。华为云物联网平台可以通过规则引擎,将获取的海量数据流转到华为云其他云服务,从而实现将海量数据通过 函数工作流 (FunctionGraph)进行预处理,再将清洗后的数据流入 AI开发平台 (ModelArts)进行AI分析,并将分析结果统一转发至HTTP服务器中。
  • 示例场景 在本示例中,我们实现以下场景: 设备上报银行客户特征信息,物联网平台将数据转发至FunctionGraph,由FunctionGraph转发至ModelArts进行AI分析,最终将分析的结果转发至HTTP服务器中。 操作步骤如下: 创建并发布ModelArts模型。 配置FunctionGraph函数。 创建MQTT协议产品,并创建设备。 数据转发规则配置,将数据流转至FunctionGraph。 模拟数据上报及结果验证,查看HTTP服务器是否收到AI分析后的消息。 图1 场景说明
  • 前提条件 已注册华为官方账号。未注册可参考注册华为账户完成注册。 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则会影响后续云服务的开通。 已开通 设备接入服务 。未开通则访问设备接入服务,单击“免费试用”或单击“价格计算器”购买并开通该服务。 已开通FunctionGraph服务。未开通则访问FunctionGraph服务,单击“立即使用”后开通该服务。 已开通ModelArts服务。未开通则访问AI开发平台,单击“控制台”后进入该服务。 自建一个HTTP服务器,并提供POST接口用来接收推送的数据(本示例默认已经提供好相应的服务器与接口,不再展示如何搭建HTTP服务器指导)。
  • 购买RocketMQ 登录华为云,访问分布式消息服务RocketMQ版, 进入分布式消息服务管理控制台。 单击右上角“购买RocketMQ实例”,按照需求选择RocketMQ规格,单击“立即购买”。 图1 购买RocketMQ 单击进入购买的RocketMQ实例,开启ACL访问控制后,单击“用户管理”添加用户,可参考创建用户。 图2 添加用户 单击左侧导航栏“topic管理”,单击“创建topic”创建RocketMQ的topic。
  • 前提条件 已注册华为官方账号。未注册可参考注册华为账户注册华为账户完成注册。 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则会影响后续云服务的开通。 已开通设备接入服务。未开通则访问设备接入服务,单击“免费试用”或单击“价格计算器”购买并开通该服务。 已开通 AOM 服务。访问AOM服务,单击“AOM2.0控制台”,单击“免费开通服务并授权”开通该服务。 已开通DMS Kafka服务。未开通则访问DMS Kafka服务,单击“立即购买”后开通该服务。