云服务器内容精选

  • 下发消息状态 MQTT设备消息执行状态以及状态变化机制如下所示。 图4 设备消息状态 表2 消息执行状态 消息执行状态 说明 等待(PENDING) MQTT协议设备不在线,物联网平台会将消息进行缓存,此时任务状态为“等待”状态。 超时(TIMEOUT) 物联网平台缓存的PENDING状态的消息,如果1天之内还没有下发下去,物联网平台会将消息状态设置为“超时”。 已送达(DELIVERED) 物联网平台将消息发送给设备后,状态变为“已送达”。 失败(FAILED) 物联网平台发送消息给设备不成功,消息状态变为“失败”。
  • 消息下发使用QoS 1说明 MQTT设备接入,使用QoS 1的系统Topic进行设备消息下发说明: 图2 消息下发使用Qos 1流程图 设备上线。 订阅Topic,设置订阅Topic的QoS为1。 图3 订阅Topic的QoS为1 应用侧或平台用下发设备消息接口,下发请求到物联网平台,下发消息样例如下: POST https://{Endpoint}/v5/iot/{project_id}/devices/{device_id}/messages Content-Type: application/json X-Auth-Token: ******** { "message_id": "99b32da9-cd17-4cdf-a286-f6e849cbc364", "name": "messageName", "message": "HelloWorld" } 物联网平台根据协议规范下发消息给设备。MQTT设备必须先订阅平台消息下发下行接口对应的Topic才能收到平台下发的消息,消息样例如下: Topic: $oc/devices/{device_id}/sys/messages/down 数据格式: { "object_device_id": "{object_device_id}", "name": "name", "id": "id", "content": "hello" } 物联网平台向设备下发消息后,向应用服务器返回201 Created,消息状态为DELIVERED。消息下发是异步操作,不需要等设备ACK就可以回响应。 物联网平台没有收到设备接收消息的ACK响应,重发消息;默认每隔2s重发一次,总下发3次。 设备再次上线或订阅Topic。 物联网平台会重发之前设备未回ACK且未超时的消息,默认每隔10s重发一次,总下发5次;每次重发也会触发每隔2s重发机制。 平台将消息的最终结果推送给应用服务器,设备消息状态为已送达(DELIVERED)或超时(TIMEOUT)。使用接口:设备消息状态变更通知接口。 Topic: $oc/devices/{device_id}/sys/messages/down 数据格式: { "resource": "device.message.status", "event": "update", "notify_data": { "message_id": "string", "name": "string", "device_id": "string", "status": "DELIVERED", "timestamp": "string" } }
  • 使用服务质量 支持MQTT的服务质量等级为QoS 0、QoS 1,不支持QoS 2。 Topic的QoS为 0 时,消息下发不需要等设备回ACK,仅只下发一次; Topic的QoS为 1时,消息下发需要等设备回ACK。 平台默认该设备订阅了QoS为0的系统Topic, 如果需要QoS为1的下行系统Topic,需要设备设置订阅QoS。 设备订阅非$oc开头的自定义Topic, 如果需要平台支持该Topic的QoS为1, 需向平台提交工单联系申请。 如果设备订阅Topic的QoS为1, 平台下发消息没有收到设备确认ACK时, 平台会重发消息, 默认每隔2s重发1次, 共重发3次; 重发后设备依旧没有回确认响应且消息还在缓存时间内, 设备再次上线或订阅Topic时, 平台会再重发消息, 默认每隔10s重发1次, 共重发5次; 同时每次重发也会触发每隔2s重发机制, 故订阅Topic的QoS为1时平台会重发消息, 设备可能会收到重复消息,建议设备要有去重机制。
  • 消息缓存下发使用说明 消息下发是平台向设备直接下发消息的一种方式。具有缓存特性,当设备不在线时,平台会对下发的消息进行缓存,直到设备上线。 以MQTT设备接入为例,使用系统Topic进行设备消息缓存下发说明: 图1 消息缓存下发流程 应用侧或平台用下发设备消息接口,下发请求到物联网平台,下发消息样例如下: POST https://{Endpoint}/v5/iot/{project_id}/devices/{device_id}/messages Content-Type: application/json X-Auth-Token: ******** { "message_id": "99b32da9-cd17-4cdf-a286-f6e849cbc364", "name": "messageName", "message": "HelloWorld" } 物联网平台向应用返回201 Created,消息状态为PENDING。 物联网平台通过设备消息状态变更通知接口推送消息结果给应用,设备未上线时,设备消息状态为等待(PENDING),对应的消息样例如下: Topic: $oc/devices/{device_id}/sys/messages/down 数据格式: { "resource": "device.message.status", "event": "update", "notify_data": { "message_id": "string", "name": "string", "device_id": "string", "status": "PENDING", "timestamp": "string" } } 设备上线。 设备订阅消息下发的topic,用于接收消息,订阅的topic见步骤6。 物联网平台根据协议规范下发消息给设备。MQTT设备必须先订阅平台消息下发下行接口对应的Topic才能收到平台下发的消息,消息样例如下: Topic: $oc/devices/{device_id}/sys/messages/down 数据格式: { "object_device_id": "{object_device_id}", "name": "name", "id": "id", "content": "hello" } 平台将消息的最终结果推送给应用服务器,设备消息状态为已送达(DELIVERED)。使用接口:设备消息状态变更通知接口。 Topic: $oc/devices/{device_id}/sys/messages/down 数据格式: { "resource": "device.message.status", "event": "update", "notify_data": { "message_id": "string", "name": "string", "device_id": "string", "status": "DELIVERED", "timestamp": "string" } }
  • 概述 消息下发不依赖产品模型,提供给设备的单向通知,具有消息缓存功能;云端消息下发中,平台会以异步方式(消息下发后无需等待设备侧回复响应)下发消息给设备;若设备不在线,则在设备在线后发送数据(支持配置,最长缓存时间24小时)。平台对每个设备默认只保存20条消息,超过20条后,后续的消息会替换下发最早的消息。同时,消息下发支持使用自定义topic的格式进行数据下发。 表1 消息下发Topic类别 消息下发Topic类别 描述 系统Topic 平台预先定义了各种设备和平台通信的Topic,具体Topic列表和功能说明可参考Topic定义。 自定义Topic 用户可以自定义Topic,设备和平台间可以基于用户自定义的Topic进行通信。 自定义topic分类: 在产品中定义需要使用的Topic,这类Topic有$oc/devices/{device_id}/user/前缀,消息上报或者消息下发时平台会校验Topic是否在产品中定义,未在产品中定义的Topic会被平台拒绝。使用方式可以参考链接使用自定义Topic进行通信的最佳实践。 使用非$oc开头的自定义Topic,如/aircondition/data/up进行消息通信,这类Topic平台不校验Topic权限,根据MQTT协议定义的规则进行Topic的消息上下行通信。使用方式可以参考链接第三方云设备迁移至华为云最佳实践。
  • 操作步骤 访问设备接入服务,单击“管理控制台 ”进入设备接入控制台。 依次单击“规则 - 数据转发 - 策略配置 - 数据流转积压策略”进入积压策略配置界面。 图1 策略配置界面 在弹出的界面中填写名称、描述、积压大小、积压时间等信息后,单击确定即可完成积压策略创建。 图2 创建积压策略 表1 参数说明 参数名称 描述 策略名称 长度为4-256,只允许中文、字母、数字以及_?'#().,&%@!-等字符的组合。 描述 关于该策略的描述,长度为4-256,只允许中文、字母、数字以及_?'#().,&%@!-等字符的组合。 积压大小 单个转发规则流转数据在IoT物联网平台最大积压(缓存)大小,单位为B,最大可配置为1073741823 B,即1GB。 积压时间 单个转发规则流转数据在IoT物联网平台最大积压(缓存)时间,单位为秒,最大可配置为86399秒,即24小时。
  • 概述 当转发目标(如第三方应用服务器等)由于性能等原因无法快速处理IoT物联网平台流转数据时,未能及时处理的流转数据会积压(缓存)在IoT物联网平台。目前IoT物联网平台默认配置单个转发规则流转数据的最大积压(缓存)大小为1GB,最大积压(缓存)时间为24小时,超过最大积压(缓存)大小或积压(缓存)时间时,最早未被处理的流转数据会被丢弃直至满足积压(缓存)大小和时间限制。 客户可以根据自身的业务场景以及转发目标(如第三方应用服务器等)的性能等情况,在IoT物联网平台上创建合适的积压策略,控制流转数据在IoT物联网平台的积压情况。 例如:当业务对数据实时性的要求高于完整性,而转发目标(如第三方应用服务器等)长时间性能不足或业务中断一段时间,未能及时处理IoT物联网平台流转数据,导致流转数据大量积压在IoT物联网平台,转发目标(如第三方应用服务器等)接收到的数据一直是延迟、滞后的数据, 此时可以考虑使用积压策略配置较小的积压大小和积压时间,丢弃过时的数据,接收、处理较为实时的流转数据。
  • 操作步骤 进入“策略”界面,单击展开“静态策略”,单击“添加实例”。 按照下方参数说明填写关键参数信息后,单击“确定”。 表1 静态策略参数列表 参数名称 说明 示例 关键字 即关键字来源中的关键字。设备发放时,如果关键字来源字符串中包含设置的关键字,则可按该实例进行发放。 将设备名称携带Beijing的设备发放至华北-北京四的物联网平台。 设备名称:WaterMeter-Beijing0001、WaterMeter-Beijing0002 关键字来源:设备名称 关键字:Beijing 发放区域:华北-北京四 发放应用:beijing-app1 将上报信息中携带Beijing的设备发放至华北-北京四的物联网平台。 关键字来源:数据上报 topic“$oc/devices/${device_id}/sys/bootstrap/up”上报信息:{ "baseStrategyKeyword": "WaterMeter-Beijing0003"} 关键字:Beijing 发放区域:华北-北京四 发放应用:beijing-app1 关键字来源 关键字来源指的是用于匹配关键字的字符串信息的数据来源。目前支持设备名称与数据上报两种形式。 如果为设备名称,则匹配关键字的字符串取设备创建后的设备名称。 如果为数据上报,则匹配关键字的字符串取设备发放过程中,发起发放请求Topic“$oc/devices/${device_id}/sys/bootstrap/up” 的上报信息json中的baseStrategyKeyword属性。 优先级别 发放策略的优先级,取值范围1 - 5级,1级为最低优先级。当一个设备符合多个发放策略时,按照优先级最高的策略实例发放。 发放区域 发放到指定区域后,设备将接入对应区域的设备接入服务。 所选区域未开通设备接入服务时,如果确定添加实例,系统将自动为您开通设备接入服务。不同区域设备接入服务价格不同,收费详情请参考价格说明。 发放应用 选择对应设备接入服务区域已创建的应用。在物联网平台中,设备由应用统一管理。 如果对应设备接入服务区域未创建应用,需要前往对应服务创建应用。
  • 概述 静态策略,即设备关键字模糊匹配的发放策略。每条静态策略实例指:匹配上该策略实例的设备,将会被发放到该条策略实例关联的设备接入实例的对应资源空间(即应用)下。 设备匹配静态策略实例的机制为: 设备的发放策略为“静态策略”,设备的关键字来源字符串包含某一静态策略实例的关键字,即被认为该设备匹配上该条策略实例。关键字来源有以下两种来源类型: 设备名称:如果设备名称包含设置的关键字,即可按照该行策略指定的发放应用进行实例发放。 数据上报:如果设备在连接后,进行发放publish时,上报Topic “$oc/devices/${deviceId}/sys/bootstrap/up” 中,json上报的属性 “baseStrategyKeyword” 包含设置的关键字,即可按该实例进行发放。 一个设备最多匹配一条静态策略实例; 当一个设备匹配上多条静态策略实例时,则以优先级最高的策略实例为优先。
  • 操作步骤 访问设备接入服务,单击“管理控制台”进入设备接入控制台。 单击左侧导航栏“产品”,单击页面左侧的“创建产品”。根据页面提示填写参数,然后单击“确定”,完成产品的创建。 基本信息 所属资源空间 下拉选择所属的资源空间。如无对应的资源空间,请先创建资源空间。 产品名称 为产品命名。产品名称在相同资源空间有唯一性。长度不超过64,只允许中文、字母、数字、以及_?'#().,&%@!-等字符的组合。 协议类型 MQTT:使用MQTT协议接入平台的设备,数据格式可以是二进制也可以是JSON格式,采用二进制时需要部署编解码插件。 LwM2M/CoAP:使用在资源受限(包括存储、功耗等)的NB-IoT设备,数据格式是二进制,需要部署编解码插件才能与物联网平台交互。 HTTPS:HTTPS是基于HTTP协议,通过SSL加密的一种安全通信协议。物联网平台支持HTTPS协议通信。 Modbus:物联网平台支持使用Modbus协议接入,使用Modbus协议的设备接入IoT边缘节点的方式为非直连。直连设备和非直连设备差异说明,请参考这里。 HTTP(TLS加密)、ONVIF、OPC-UA、OPC-DA、Other:通过边缘接入。 数据格式 JSON:平台和设备之间的通信协议采用JSON格式。 二进制码流:您需在控制台开发编解码插件,将设备上报的二进制码流数据转换为JSON格式;将平台下发的JSON格式数据解析为二进制码流格式,设备才能与平台进行通信。 所属行业 请根据实际情况选择。 设备类型 请根据实际情况选择。 高级配置 产品ID 定制ProductID,用于唯一标识一个产品。如果携带此参数,平台将产品ID设置为该参数值;如果不携带此参数,产品ID在物联网平台创建产品后由平台分配获得。 产品描述 产品描述。请根据实际情况填写。 产品创建成功后,您可以单击“删除”删除不再使用的产品。删除产品后,该产品下的产品模型、编解码插件等资源将被清空,请谨慎操作。
  • 产品模型开发方法 物联网平台提供了多种开发产品模型的方法,您可以根据自己需求,选择对应的方法开发产品模型。 自定义模型(在线开发):从零自定义构建产品模型。详细参考在线开发产品模型。 上传模型文件(离线开发):将本地写好的产品模型上传到平台。详细请参考离线开发产品模型。 Excel导入:通过导入文件的方式快速开发产品模型。详细请参考Excel导入。 导入库模型(平台预置产品模型):您可以使用平台预置的产品模型,快速完成产品开发。当前平台提供了标准模型和厂商模型。标准模型遵循行业标准的产品模型,适用行业内绝大部分厂商设备,而厂商模型针对设备类型发布的产品模型,适用于用行业内少量厂家设备。您可以根据实际需求选择相应的产品模型。
  • 什么是产品模型 产品模型用于描述设备具备的能力和特性。开发者通过定义产品模型,在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属性、命令等信息,如颜色、开关等。当定义完一款产品模型后,再进行创建设备时,就可以使用在控制台上定义的产品模型。 产品模型包括产品信息和服务能力: 产品信息 描述一款设备的基本信息,包括设备类型、协议类型。 例如:设备类型为“WaterMeter”,协议类型为“CoAP”。 服务能力 描述设备具备的业务能力。将设备业务能力拆分成若干个服务后,再定义每个服务具备的属性、命令以及命令的参数。 以水表为例,水表具有多种能力,如上报水流、告警、电量、连接等各种数据,并且能够接受服务器下发的各种命令。产品模型文件在描述水表的能力时,可以将水表的能力划分五个服务,每个服务都需要定义各自的上报属性或命令。说明如下: 服务类型 描述 基础(WaterMeterBasic) 用于定义水表上报的水流量、水温、水压等参数,如果需要命令控制或修改这些参数,还需要定义命令的参数。 告警(WaterMeterAlarm) 用于定义水表需要上报的各种告警场景的数据,必要的话需要定义命令。 电池(Battery) 定义水表的电压、电流强度等数据。 传输规则(DeliverySchedule) 定义水表的一些传输规则,必要的话需要定义命令。 连接(Connectivity) 定义水表连接参数。 具体定义几个服务是非常灵活的,如上面的例子可以将告警服务拆分成水压告警服务和流量告警服务,也可以将告警服务合入到水表基础服务中。
  • 场景说明 对于设备上报到平台的数据,使用函数工作流FunctionGraph处理实时流数据。通过函数服务,用户只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,即可跟踪设备的设备属性、消息上报,状态变更,分析、整理和计量数据流。 本示例为将所有设备上报的属性转发至FunctionGraph函数工作流,根据设备资源空间Id的不同推送到用户Http服务器的不同路径,请您提供自行部署的Http服务器。本示例通过设备接入服务的数据转发能力来驱动事件函数,不需要额外配置触发器。
  • 构建函数工程 本例提供了设备属性上报格式转换并转发到第三方应用的源码(包含函数依赖),用户可以下载学习使用。 创建工程 本例使用Java语言实现设备接入属性数据流式转换功能与推送功能,有关函数开发的过程请参考FunctionGraph的Java函数开发指南,本例不再介绍函数工作流函数实现的代码。 下载样例源码,解压缩并在Idea中导入工程。代码说明可参考:样例代码说明,其中用户自己的服务器地址通过函数环境变量NA_MOCK_SERVER_ADDRESS传入。 图1 样例代码说明 打包工程 使用Idea的Build Artifacts打包Jar,Idea配置及打包如下图所示。 图2 工程Artifacts Output 配置参考 图3 Build Artifacts
  • 按资源空间创建同步任务 进入“设备数据同步”界面,单击右上角“创建同步任务”。 同步方式选择“按资源空间整体同步”,将所有必填选项选择完毕后,单击“确认创建”。 在设备数据同步任务界面,将会看到刚创建的任务,可以对任务进行查看详情、重试、停止或删除操作。 单击“任务ID”或者“详情”,可以看到刚创建的任务的详细内容,并且可以使用“高级搜索”对同步设备进行过滤查询操作。 单击“设备名称”,可以跳转到设备同步详情页,能够查看该设备的信息和设备的发放记录。 同一个资源空间不能创建多个同步任务,如需对该资源空间下的数据进行重新同步,要删除该资源空间关联的同步任务。重新创建该资源空间的同步任务后,相关数据同步到新的目标实例,设备南向引导以最新同步的目标平台实例为准下发地址。(删除同步任务之后,如果没有创建新的同步任务,设备南向无法引导。) 当多个资源空间同时同步时,若某资源空间下的产品、证书同步失败只影响当前资源空间的同步,其他资源空间正常执行。当产品和证书同步失败时,可以选择通过重试同步任务,尝试进行再次同步。 按资源空间同步后,在源实例的设备接入控制台上查看不到同步的资源空间。