华为云用户手册
-
版本说明 表1 Python版本说明 版本 变更类型 说明 1.2.0 新增功能 增加规则引擎、设备发放功能、自定义断线重连功能、升级组件版本。 1.1.4 新增功能 OTA升级支持网关模式 1.1.3 功能增强 更新服务端ca证书 1.1.2 新增功能 增加micropython支持和对应demo,从OBS下载OTA,以及说明文档。 1.1.1 新增功能 提供对接华为云IoT 物联网平台 能力,方便用户实现安全接入、设备管理、数据采集、命令下发等业务场景。
-
使用说明 已安装Python 3.11.4 已安装第三方类库paho-mqtt:2.0.0 (必需) 已安装第三方类库schedule: 1.2.2 (必需) 已安装第三方类库apscheduler: 3.10.4 (必需) 已安装第三方类库requests: 2.32.2 (可选,在网关与子设备管理demo演示中使用) 已安装第三方类库tornado: 6.3.3 (可选,在网关与子设备管理demo演示中使用)
-
设备开发资源 物联网平台支持设备通过MQTT协议、LWM2M/CoAP协议和HTTPS协议进行接入,也可以通过IoTEdge将Modbus、OPC-UA、OPC-DA这些协议的设备接入。设备可以通过调用接口或者集成SDK的方式接入到物联网平台。 资源包名 描述 下载路径 IoT Device SDK(Java) 设备可以通过集成IoT Device SDK(Java)接入物联网平台, Demo提供了调用SDK接口的样例代码。使用指导请参考 IoT Device SDK使用指南(Java)。 IoT Device SDK(Java) IoT Device SDK(C) 设备可以通过集成IoT Device SDK(C)接入物联网平台, Demo提供了调用SDK接口的样例代码。使用指导请参考 IoT Device SDK(C)使用指南。 IoT Device SDK(C) IoT Device SDK(C#) 设备可以通过集成IoT Device SDK(C#)接入物联网平台, Demo提供了调用SDK接口的样例代码。使用指导请参考 IoT Device SDK(C#)使用指南。 IoT Device SDK(C#) IoT Device SDK(Android) 设备可以通过集成IoT Device SDK(Android)接入物联网平台, Demo提供了调用SDK接口的样例代码。使用指导请参考 IoT Device SDK(Android)使用指南。 IoT Device SDK(Android) IoT Device SDK(Go) 设备可以通过集成IoT Device SDK(Go)接入物联网平台, Demo提供了调用SDK接口的样例代码。使用指导请参考 IoT Device SDK(Go)使用指南。 IoT Device SDK(Go) IoT Device SDK(Python) 设备可以通过集成IoT Device SDK(Python)接入物联网平台, Demo提供了调用SDK接口的样例代码。使用指导请参考 IoT Device SDK(Python)使用指南。 IoT Device SDK(Python) IoT Device SDK Tiny (C) 设备可以通过集成IoT Device SDK Tiny (C)接入物联网平台, Demo提供了调用SDK接口的样例代码。使用指导请参考 IoT Device Tiny SDK(C)使用指南 IoT Device SDK Tiny (C) 原生MQTT/MQ TTS 协议接入示例 设备侧可以通过原生MQTT/MQTTS协议接入到物联网平台,Demo提供了SSL加密建链和TCP不加密建链、数据上报、订阅Topic的样例代码。 接入示例参考:Java版、Python版、Android版、C版、C#、NodeJS。 quickStart(Java) quickStart(Android) quickStart(Python) quickStart(C) quickStart(C#) quickStart(Node.js) 产品模型模板 产品模型模板中包含了典型场景的产品模型样例,开发者可以在模板基础进行修改,定义自己需要的产品模型。 使用指导可以参考离线开发产品模型。 产品模型开发示例 编解码插件样例 编解码插件的代码样例工程,开发者可以基于该样例工程进行二次开发。 编解码插件开发样例 编解码插件检测工具 用于检测离线开发的编解码插件的编解码能力是否正常。 编解码插件检测工具 NB-IoT设备模拟器 用于模拟以CoAP/LWM2M协议接入物联网平台的NB设备,实现数据上报和命令下发功能。 使用指导可以参考基于控制台开发产品。 NB-IoT设备模拟器 IoT Link Studio(原名为IoT Studio) IoT Link Studio是针对IoT物联网端侧开发(IoT Device SDK Tiny)的IDE环境,提供了编译、烧录、调试等一站式开发体验,支持 C、 C++、汇编等多种开发语言,让您快速、高效地进行物联网开发。 使用指导可以参考基于NB-IoT小熊派开发智慧路灯。 IoT Link Studio
-
设备接入方式 华为物联网平台支持多种接入方式,满足各类设备和接入场景要求。请根据设备类型,选择合适的开发模式。 开发模式 特点 适用场景 难度系数 认证MCU开发模式 IoT Device SDK Tiny已经预集成在MCU(Main Control Unit)中,可以直接调用方法连接华为云IoT。 设备商用时间短,研发成本低,无需管理子设备的直连设备。 认证模组开发模式 IoT Device SDK Tiny已经预集成在模组中,通过调用AT指令连接华为云IoT。 需要节省MCU资源,无需管理子设备的直连设备。详细接入方式请参考通过华为认证模组接入。 LiteOS开发模式 设备运行在LiteOS中,通过LiteOS对MCU进行资源管理,同时liteOS内置了IoT Device SDK Tiny,可以通过调用函数连接华为云IoT。LiteOS开发模式的设备开发耗时更短,开发难度也低。 无操作系统,无需管理子设备的直连设备 常规开发模式 集成IoT Device SDK Tiny到MCU中,调用SDK中的函数连接华为云IoT,相比API接入更便捷。 设备商用时间充足,MCU的Flash与 RAM 资源满足IoT Device SDK Tiny集成条件的场景。 Open CPU开发模式 节省一个MCU,使用公用模组中的MCU能力,将设备的应用程序编译运行在OpenCPU上。 安全要求高,体积较小,商用时间短的设备 网关设备开发模式 IoT Device SDK预置到CPU(Central Processing Unit)或者MPU(Main Processing Unit)中,通过调用函数连接到华为云IoT。 管理子设备的网关设备。
-
连接鉴权 MQTT.fx 是目前主流的MQTT桌面客户端,它支持 Windows, Mac, Linux,可以快速验证是否可以与设备发放服务进行连接并发布或订阅消息。 本文主要介绍 MQTT.fx 如何与华为设备发放交互,其中设备发放服务MQTT的南向接入地址请参考获取终端节点。 下载 MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载 MQTT.fx ),安装MQTT.fx工具。 打开 MQTT.fx 客户端程序,单击“设置”。 填写 Connection Profile 相关信息。其中General 可以使用工具默认信息。 其中Broker Address和Broker Port可以参考获取终端节点,Client ID 可以参考MQTT CONNECT连接鉴权参数说明,访问这里填写设备ID(DeviceId)等设备信息,生成连接信息(ClientId、Username、Password)。 填写 User Credentials 信息。 其中Username 参考MQTT CONNECT连接鉴权参数说明(无需填写Password)。 选择开启 SSL/TLS,勾选 Self signed certificates,配置相关证书内容。 CA File为设备发放对应的CA证书。 Client Certificate File为设备的设备证书。 Client Key File为设备的私钥。 完成以上步骤设置后,单击“Apply”和“OK”保存,并在配置文件框中选择刚才创建的文件名,单击“Connect”,当右上角圆形图标为绿色时,说明连接设备发放服务成功,可进行订阅(Subscribe)和消息推送(Publish)操作。
-
上传并验证CA证书 登录设备发放控制台,进入“证书”界面,单击右上角“上传CA证书”,填写“证书名称”并上传上述“制作CA证书”步骤后生成的“CA证书(rootCA.crt文件)”,单击“确定”。 图1 上传CA证书 验证步骤1中上传的CA证书,只有成功验证证书后该证书方可使用。 为验证证书生成密钥对。 openssl genrsa -out verificationCert.key 2048 获取随机验证码。 图2 上传CA证书完成页 图3 复制验证码 利用此验证码生成证书签名请求文件 CS R。 openssl req -new -key verificationCert.key -out verificationCert.csr CSR文件的Common Name (e.g. server FQDN or YOUR name) 需要填写前一过程中获取到的随机验证码。 使用CA证书、CA证书私钥和CSR文件创建验证证书(verificationCert.crt)。 openssl x509 -req -in verificationCert.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out verificationCert.crt -days 500 -sha256 生成验证证书用到的“rootCA.crt”和“rootCA.key”这两个文件,为“制作CA证书”中所生成的两个文件。 “-days”后的参数值指定了该证书的有效天数,此处示例为500天,您可根据实际业务场景和需要进行调整。 上传验证证书进行验证。 图4 上传验证证书
-
生成设备证书 使用OpenSSL工具为设备证书生成密钥对(设备私钥): openssl genrsa -out deviceCert.key 2048 使用设备密钥对,生成证书签名请求文件: openssl req -new -key deviceCert.key -out deviceCert.csr 生成证书签名请求文件时,要求填写证书唯一标识名称(Distinguished Name,DN)信息,参数说明如下表2所示。 表3 证书签名请求文件参数说明 提示 参数名称 取值样例 Country Name (2 letter code) []: 国家/地区 CN State or Province Name (full name) []: 省/市 GuangDong Locality Name (eg, city) []: 城市 ShenZhen Organization Name (eg, company) []: 组织机构(或公司名) Huawei Technologies Co., Ltd. Organizational Unit Name (eg, section) []: 机构部门 Cloud Dept. Common Name (eg, fully qualified host name) []: CA名称(CN) Huawei IoTDP CA Email Address []: 邮箱地址 / A challenge password []: 证书密码,如您不设置密码,可以直接回车 / An optional company name []: 可选公司名称,如您不设置,可以直接回车 / 使用CA证书、CA证书私钥和CSR文件创建设备证书(deviceCert.crt)。 openssl x509 -req -in deviceCert.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out deviceCert.crt -days 36500 -sha256 生成设备证书用到的“rootCA.crt”和“rootCA.key”这两个文件,为“制作CA证书”中所生成的两个文件,且需要完成“上传并验证CA证书”。 “-days”后的参数值指定了该证书的有效天数,此处示例为36500天,您可根据实际业务场景和需要进行调整。
-
制作CA证书 在浏览器中访问这里,下载并进行安装OpenSSL工具,安装完成后配置环境变量。 在 D:\certificates 文件夹下,以管理员身份运行cmd命令行窗口。 生成密钥对(rootCA.key): 生成“密钥对”时输入的密码在生成“证书签名请求文件”、“CA证书”,“验证证书”以及“设备证书”时需要用到,请妥善保存。 openssl genrsa -des3 -out rootCA.key 2048 使用密钥对生成证书签名请求文件: 生成证书签名请求文件时,要求填写证书唯一标识名称(Distinguished Name,DN)信息,参数说明如下表1 所示。 表2 证书签名请求文件参数说明 提示 参数名称 取值样例 Country Name (2 letter code) []: 国家/地区 CN State or Province Name (full name) []: 省/市 GuangDong Locality Name (eg, city) []: 城市 ShenZhen Organization Name (eg, company) []: 组织机构(或公司名) Huawei Technologies Co., Ltd. Organizational Unit Name (eg, section) []: 机构部门 Cloud Dept. Common Name (eg, fully qualified host name) []: CA名称(CN) Huawei IoTDP CA Email Address []: 邮箱地址 / A challenge password []: 证书密码,如您不设置密码,可以直接回车 / An optional company name []: 可选公司名称,如您不设置,可以直接回车 / openssl req -new -key rootCA.key -out rootCA.csr 生成CA证书(rootCA.crt): openssl x509 -req -days 50000 -in rootCA.csr -signkey rootCA.key -out rootCA.crt “-days”后的参数值指定了该证书的有效天数,此处示例为50000天,您可根据实际业务场景和需要进行调整。
-
部署插件 访问设备接入服务,单击“管理控制台”进入设备接入控制台。 单击“IoTDA实例 ”,单击具体实例“详情”按钮,选择“泛协议接入”。 图1 泛协议-泛协议接入 选择“云网关”,单击“新增云网关” 。端口填写为“8898”。镜像选择镜像名称为“protocol-plugin-sl651”的镜像。 图2 泛协议-部署成功SL651 防火墙和安全组需要放通8898端口(TCP)。 父主题: SL651协议接入
-
使用说明 图2 设备消息上报操作流程 创建产品与设备:创建产品流程、创建设备流程。 设备鉴权:平台验证设备是否具有接入权限。 设备消息上报:设备通过MQTT/HTTPS等协议发送消息数据。 按照不同的设备协议,调用的接口不一样,下面分别介绍MQTT、HTTPS协议消息上报的样例: MQTT:通过消息上报接口MQTT协议消息上报、使用MQTT.fx调测上报数据到物联网平台。 MQTT消息上报Topic样例如下: $oc/devices/{device_id}/sys/messages/up MQTT消息上报数据格式样例如下: { "content": {"hello":"123"} } HTTPS:通过消息上报接口HTTP协议消息上报上报数据到物联网平台,其中access_token获取参考:HTTPS设备鉴权。HTTPS消息上报样例如下: POST https://{endpoint}/v5/devices/{device_id}/sys/messages/up Content-Type: application/jsonaccess_token: ********{ "name": "name", "id": "id", "content": "messageUp"} 协议接口详情请参考:MQTT协议消息上报、HTTP协议消息上报。 数据转发:可以通过数据流转功能转发到应用侧或华为云其他云服务上进行进一步处理。
-
X.509证书认证 X.509是一种用于通信实体鉴别的数字证书,物联网平台支持设备使用自己的X.509证书进行认证鉴权。使用X.509认证技术时,设备无法被仿冒,避免了密钥被泄露的风险。 使用X.509证书认证的完整操作流程为: 1. 在平台上传设备CA证书并完成验证(或使用华为云证书服务的私有CA); 2. 创建设备或注册组时,认证方式选择X.509证书认证,并关联已认证的设备CA证书; 3. 开发设备端,将X.509证书及其私钥烧录到设备上; 4. 设备在与平台双向认证过程中,设备验证平台证书,平台使用设备CA证书验证设备证书并验证设备证书与设备的关联关系。
-
示例流程 图1 给用户授予IoTDA权限流程 创建用户组并授权:在 IAM 控制台创建用户组,并授权IoTDA权限,例如IoTDA ReadOnlyAccess。 创建用户并加入用户组:在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限:新创建的用户登录控制台,切换至授权区域,验证权限。 在“服务列表”中选择IoTDA,进入主界面尝试创建设备(假设当前权限仅包含IoTDA ReadOnlyAccess),如果无法成功操作,则表示“IoTDA ReadOnlyAccess”已生效。 在“服务列表”中选择除IoTDA外(假设当前策略仅包含IoTDA ReadOnlyAccess)的任一服务,若提示权限不足,表示“IoTDA ReadOnlyAccess”已生效。
-
概述 MQTT消息由固定报头(Fixed header)、可变报头(Variable header)和有效载荷(Payload)三部分组成。 其中固定报头(Fixed header)和可变报头(Variable header)格式的填写请参考MQTT标准规范,有效载荷(Payload)的格式(须使用UTF-8编码格式)由应用定义,即由设备和物联网平台之间定义。 MQTT的语法和接口细节,请以MQTT标准规范为准。 常见MQTT消息类型主要有CONNECT、SUBSCRIBE、PUBLISH。 CONNECT:指客户端发起与服务端的连接请求。有效载荷(Payload)的主要参数,参考设备连接鉴权填写。 SUBSCRIBE:指客户端发起订阅的请求。有效载荷(Payload)中的主要参数“Topic name”,参考Topic定义中订阅者为设备的Topic。 PUBLISH:平台发布消息。 可变报头(Variable header)中的主要参数“Topic name”,指当设备上报到物联网平台,发布者为设备时所对应的Topic。详细请参考Topic定义。 有效载荷(Payload)中的主要参数为完整的数据上报和命令下发的消息内容,目前是一个JSON对象。
-
MQTT的TLS支持 平台推荐使用TLS来保护设备和平台的传输安全。 平台目前支持TLS1.3、1.2 、1.1版本以及GMTLS。其中TLS 1.1 计划后续不再支持,建议使用 TLS 1.3作为首选 TLS 版本。GMTLS版本仅在国密算法的企业版才支持。 基础版,标准版以及支持通用加密算法的企业版使用TLS连接时,平台支持如下加密套件: TLS_AES_256_GCM_SHA384 TLS_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 支持国密算法的企业版使用TLS连接时平台支持如下加密套件: ECC_SM4_GCM_SM3 ECC_SM4_CBC_SM3 ECDHE_SM4_GCM_SM3 ECDHE_SM4_CBC_SM3 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 带CBC的加密套件存在安全风险,请谨慎使用。
-
使用限制 描述 限制 单个MQTT直连设备在同一时间的连接数 1 单账户设备侧每秒最大建链请求数量 基础版100 标准版请参考标准版规格 企业版请参考企业版规格 单账号设备侧每秒最大上行的请求数量(单消息payload平均为512字节) 基础版500 标准版请参考标准版规格 企业版请参考企业版规格 单个MQTT连接每秒最大上行消息数量 50/s 单个MQTT连接最大带宽(上行消息) 1MB(默认) MQTT单条发布消息最大长度。超过此大小的发布请求将被直接拒绝。 1MB MQTT协议规范 MQTT v5.0、MQTT v3.1.1、MQTT v3.1 与标准MQTT协议的区别 不支持QoS2 不支持will、retain msg MQTT协议支持的安全等级 采用TCP通道基础 + TLS协议(TLSv1、 TLSv1.1、TLSv1.2和TLSv1.3版本) MQTT连接心跳时间建议值 心跳时间限定为30至1200秒,推荐设置为120秒 MQTT协议消息发布与订阅 设备只能对自己的Topic进行消息发布与订阅 单个MQTT连接的最大订阅数量。 100个 MQTT自定义Topic支持的最大长度 128字节 MQTT自定义Topic支持每个产品添加的最大个数 10个/产品 单账号支持上传设备侧CA证书个数 100个
-
与标准MQTT协议的兼容说明 华为云IoTDA服务支持设备基于MQTT 5.0、MQTT 3.1.1和 MQTT 3.1规范的接入,但同这些MQTT协议规范有一些差异, IoTDA服务不是简单的MQTT Broker,而是在支持设备使用MQTT协议接入的基础上集成消息通信、设备管理、规则引擎、数据流转等能力。与MQTT标准规范的的区别如下: 支持设备与IoTDA服务之间使用MQTT规范中的CONNECT、CONNACK、PUBLISH、PUBACK、SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK、PINGREQ、PINGRESP、DISCONNECT等报文进行通信。 支持MQTT的服务质量等级为QoS 0、QoS 1,不支持QoS 2。 支持MQTT协议规范中的clean session。 不支持MQTT协议规范中的will。 IoTDA提供设备状态推送的能力,设备离线后支持根据流转规则将设备状态推送到客户应用或者云服务。 不支持MQTT协议规范中retain msg。IoTDA提供消息缓存的能力消息上报和消息下发时支持对消息进行缓存。
-
支持的MQTT 5.0特性说明 MQTT5.0相关特性仅在企业版支持。 IoTDA服务支持的MQTT 5.0的部分新增特性如下: 支持Topic Alias。将消息通信Topic缩小为整型数值,来减小MQTT报文,节约网络带宽资源。 支持ResponseTopic 和CorrelationData。消息上报和下发时支持携带这两个参数,实现类似云HTTP的请求和响应。 支持设置UserProperty属性列表。每个属性由Key和Value组成,用于在非payload区传输属性数据。 支持Content-Type属性。消息上报的报文可以携带Content-Type属性,标识报文类型。 支持在CONNACK和PUBACK报文中返回码,便于设备快速定位请求状态及问题。
-
业务流程 采用MQTT协议接入物联网平台的设备,设备与物联网平台之间的通信过程,数据没有加密,建议使用MQTTS协议。 若选择MQTTS协议接入平台,建议通过使用IoT Device SDK接入。 设备接入前,需创建产品(可通过控制台创建或者使用应用侧API创建产品)。 产品创建完毕后,需注册设备(可通过控制台注册单个设备或者使用应用侧API注册设备创建)。 设备注册完毕后,可以按照图中流程实现消息/属性上报、接收命令/属性/消息、OTA升级、自定义Topic等功能。关于平台预置Topic可参考Topic定义 您可以通过mqtt.fx进行原生协议接入调测,可以参考快速体验mqtt接入。
-
验证 使用设备间消息通信功能时,具体步骤如下: 访问设备接入服务,单击“管理控制台”进入设备接入控制台。选择您的实例,单击实例卡片进入。 创建产品,产品的“协议类型”选择“MQTT”。 图9 创建产品-M2M 在1中创建的产品下分别注册设备A(test111)和设备B(test222),详细步骤可参考注册单个设备。 图10 设备-注册M2M设备 您可以根据自己的业务场景来实现设备间消息通信。下面以MQTT.fx为例说明如何进行设备间消息通信: 打开两个MQTT.fx,分别模拟设备A(test111)、B(test222)。如何使用MQTT.fx可参考使用Mqtt.fx调测使用Mqtt.fx调测。 设备B在Subscribe页面中输入Topic“ /test/M2M/#”后,单击“Subscribe”订阅。 图11 设备B(test222)在Subscribe页面中输入topic 设备A(test111)向设备B(test222)发送消息,在设备A(test111)的MQTT.fx的“Publish”页面中,输入topic“/test/M2M/${任意单词}”(其中“${任意单词}”替换成任意单词) ,在内容输入框中输入要发送的消息(如:hello)单击“Publish”即可发送。 图12 设备A Publish页面输入消息 在设备B的Subscribe页面可以看到接收的消息如下: 图13 设备B Subscribe页面展示
-
MQTT概述 MQTT标准规范参见《mqtt-v3.1.1-os.pdf》。 MQTT的语法和接口细节,请以此标准为准。设备发放目前仅支持MQTTS/HTTPS这种安全接入的设备进行发放,暂不支持MQTT/HTTP这种非安全接入的设备进行发放。 MQTT消息分为固定报头(Fixed header)、可变报头(Variable header)和有效载荷(Payload)部分。 固定报头(Fixed header)和可变报头(Variable header)格式的填写直接MQTT标准规范。有效载荷(Payload)部分在PUB消息中可以由应用定义,即设备和设备发放平台之间自己定义。 下面主要介绍CONNECT、SUB和PUB消息格式的填写。 CONNECT - Client requests a connection to a server 有效载荷(Payload)中的主要参数填写,具体参见MQTT CONNECT连接鉴权。 SUBSCRIBE - Subscribe to named topics 有效载荷(Payload)中的主要参数填写:Topic name,填写为设备想要订阅的主题消息,目前填写为设备自己的topic,具体参见Topic说明。 PUBLISH - Publish message 可变报头(Variable header):Topic name,设备发往设备发放平台时,为平台的Topic name,设备接收消息时,为设备的Topic name,具体参见Topic说明。 有效载荷(Payload)中的主要参数填写:为完整的数据上报和命令下发的消息内容,目前是一个JSON对象。
-
Topic说明 设备发放平台作为消息接收方时,已默认订阅了相关Topic,设备只要向对应Topic发送消息,设备发放平台就可以接收。 设备作为消息接收方时,需要先订阅相关Topic,这样设备发放平台向对应Topic发送消息时,设备才能接收到。设备需要根据具体实现的业务来决定订阅哪些Topic。 表1 设备发放Topic Topic 消息发送方 (Publisher) 消息接收方 (Subscriber) 说明 $oc/devices/{device_id}/sys/bootstrap/up 设备 设备发放平台 设备向发放服务请求对应设备接入实例的引导信息。 $oc/devices/{device_id}/sys/bootstrap/down 设备发放平台 设备 设备接收发放服务下发的引导信息。
-
场景示例矩阵 表2 示例列表 注册/注册组 认证类型 策略类型 示例 注册 证书认证 证书策略 MQTT X.509证书认证设备使用证书策略发放示例 注册 密钥认证 静态策略 MQTT 密钥设备使用静态策略发放示例 注册组 证书认证 自定义策略 MQTT 注册组自定义策略发放示例 注册组 云证书认证 证书策略 MQTT 华为云证书注册组发放示例 注册组 证书认证 自定义策略 MQTT 注册组自定义策略发放示例 注册 密钥认证 静态策略(跨账号) MQTT 密钥设备跨账号使用静态策略发放示例
-
认证凭证更新 设备的接入凭证可能在特定场景需要更新,如设备的X.509证书即将过期,需要将设备证书进行更新。平台提供了密钥/指纹的重置功能,您可以调用接口重置设备指纹/重置设备密钥进行设备凭证的重置。为避免认证凭据切换过程中,用户未在平台及时重置认证凭据导致设备鉴权失败,出现业务中断,平台推出支持双指纹/双密钥的功能。如在证书认证的场景下,将新证书的指纹设置到设备的备用指纹中,此时如果设备没及时更新证书,仍然可以通过旧的证书接入平台,当设备更新证书后,无需在应用侧进行重置操作,即可立即使用新证书接入平台,实现无损切换认证凭证。
-
示例1 证书认证设备,不限制UserName与ClientId参数取值,从设备证书通用名称(Common Name)中取值设备ID。 表1 鉴权参数 参数 说明 Client ID 任意值 User Name 任意值 Password 空值 鉴权模板: {"template_name": "template1","description": "template1","template_body": {"parameters": {"iotda::certificate::common_name": {"type": "String"}},"resources": {"device_id": {"Ref": "iotda::certificate::common_name"}}}}
-
什么是编解码插件 编解码插件是供物联网平台调用,可以完成二进制格式与JSON格式相互转换、也可以完成JSON格式之间的转换。MQTT协议的设备建议使用JS插件、FunctionGraph、LwM2M协议的设备建议使用图形化插件、离线开发插件。 以NB-IoT场景为例,NB-IoT设备和物联网平台之间采用CoAP协议通讯,CoAP消息的payload为应用层数据,应用层数据的格式由设备自行定义。由于NB-IoT设备一般对省电要求较高,所以应用层数据一般不采用流行的JSON格式,而是采用二进制格式。但是,物联网平台与应用侧使用JSON格式进行通信。因此,您需要开发编码插件,供物联网平台调用,以完成二进制格式和JSON格式的转换。
-
编解码插件开发方法 物联网平台提供了多种开发编解码插件的方法,您可以根据自己需求,选择对应的方法开发编解码插件。由于离线开发编解码插件的方法较为复杂,且耗时比较长,我们推荐使用图形化开发编解码插件和脚本化开发。 图形化开发:是指在设备接入控制台,通过可视化的方式快速开发一款产品的编解码插件。详细请参考图形化开发。 脚本化开发:是指使用JavaScript脚本实现编解码的功能。详细请参考脚本化开发。 FunctionGraph开发:是指通过FunctionGraph来实现编解码的功能。详细请参考FunctionGraph开发。
-
示例2 设备ID格式为:${ProductId}_${NodeId}。 表2 鉴权参数 参数 说明 Client ID 固定格式: ${ClientId}|securemode=2,signmethod=hmacsha256|timestamp=${timestamp}| ${ClientId}: 固定格式 ${ProductId}.${NodeId}。 ${NodeId}: 设备标识码。 ${ProductId}:产品ID。 ${timestamp}:Unix时间戳,毫秒。 User Name 由设备标识码和产品ID组成,固定格式: ${NodeId}&${ProductId} Password 以设备密码为密钥,将设备参数与参数值拼接后的字符串为加密串进行hmacsha256算法加密。 加密串格式: clientId${clientId}deviceName${nodeId}productKey${productId}timestamp${timestamp} ${ClientId}: 固定格式 ${ProductId}.${NodeId}。 ${NodeId}: 设备标识码。 ${ProductId}:产品ID。 ${timestamp}:时间戳。 鉴权模板: {"template_name": "template2","description": "template2","template_body": {"parameters": {"iotda::mqtt::client_id": {"type": "String"},"iotda::mqtt::username": {"type": "String"},"iotda::device::secret": {"type": "String"}},"resources": {"device_id": {"Fn::Join": [{"Fn::SplitSelect": ["${iotda::mqtt::username}","&",1]}, "_", {"Fn::SplitSelect": ["${iotda::mqtt::username}","&",0]}]},"timestamp": {"type": "UNIX","value": {"Fn::MathDiv": [{"Fn::ParseLong": {"Fn::SplitSelect": [{"Fn::SplitSelect": ["${iotda::mqtt::client_id}", "|", 2]}, "=", 1]}}, 1000]}},"password": {"Fn::HmacSHA256": [{"Fn::Sub": ["clientId${clientId}deviceName${deviceName}productKey${productKey}timestamp${timestamp}",{"clientId": {"Fn::SplitSelect": ["${iotda::mqtt::client_id}","|",0]},"deviceName": {"Fn::SplitSelect": ["${iotda::mqtt::username}","&",0]},"productKey": {"Fn::SplitSelect": ["${iotda::mqtt::username}","&",1]},"timestamp": {"Fn::SplitSelect": [{"Fn::SplitSelect": ["${iotda::mqtt::client_id}", "|", 2]}, "=", 1]}}]},"${iotda::device::secret}"]}}}}
-
示例3 设备ID格式为:${productId}${nodeId}。 表3 鉴权参数 参数 说明 Client ID 固定格式: ${productId}${nodeId} ${productId}:产品ID。 ${nodeId}: 设备标识码。 User Name 固定格式: ${productId}${nodeId};12010126;${connid};${expiry} ${productId}: 产品ID。 ${nodeId}: 设备标识码。 ${connid}:一个随机字符串。 ${expiry}:Unix时间戳,单位秒。 Password 固定格式: ${token};hmacsha256 ${token}:以BASE64解码后的设备密码为密钥,对User Name字段进行hmacsha256算法加密后的值。 鉴权模板: {"template_name": "template3","description": "template3","template_body": {"parameters": {"iotda::mqtt::client_id": {"type": "String"},"iotda::mqtt::username": {"type": "String"},"iotda::device::secret": {"type": "String"}},"resources": {"device_id": {"Ref": "iotda::mqtt::client_id"},"timestamp": {"type": "UNIX","value": {"Fn::ParseLong": {"Fn::SplitSelect": ["${iotda::mqtt::username}", ";", 3]}}},"password": {"Fn::Sub": ["${token};hmacsha256",{"token": {"Fn::HmacSHA256": ["${iotda::mqtt::username}",{"Fn::Base64Decode": "${iotda::device::secret}"}]}}]}}}}
-
在标签管理页面单个删除 访问设备接入服务,单击“管理控制台 ”进入设备接入控制台。 在右上角的用户名下选择“标签管理”,进入标签管理服务页面。 图2 标签管理 在“资源标签”页面,勾选资源所在的区域,“资源类型”请选择“IoTDA-Instance”,单击“搜索”。系统列出所选区域下的所有IoTDA实例资源。 页面下方展示的搜索结果包含“编辑”与“只读”两种状态,单击“编辑”,切换资源标签列表为可编辑状态。单击在弹窗中勾选需要删除的标签的“键”。勾选需要展示的标签键建议不超过10个。 图3 实例标签-标签列表 单击待删除标签的设备接入实例资源所在行的,资源标签删除完成。 图4 实例标签-删除标签
共99354条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- ...
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3311
推荐文章