腾讯云物联网通信(Internet of Things Hub, IoT Hub)旨在提供一个安全、稳定、高效的连接平台,帮助开发者低成本、快速地实现“设备-设备”、“设备-用户应用”、“设备-云服务”之间可靠、高并发的数据通信。不仅可以实现设备之间的互动、设备的数据上报和配置下发,还可以基于规则引擎和腾讯云产品打通,方便快捷地实现海量设备数据的存储、计算以及智能分析。

功能

腾讯物联网通信除了可以实现设备之间的互动、设备的数据上报和配置下发,还可以基于规则引擎和腾讯云产品打通,完成海量设备数据的存储、计算以及智能分析。

设备接入

  • SDK 接入:目前支持 Linux 、Android 平台的 SDK 接入。

  • RTOS 移植能力:SDK 支持跨平台移植,框架抽离硬件平台抽象层,可基于不同平台快速、轻松接入物联网通信。

  • 传输协议:传输协议支持物联网场景主流的 MQTT、CoAP、http、websocket 等协议,可针对设备资源和应用场景,选择不同的协议通道。

  • 安全协议:基于 TLS 、DTLS 等协议进行客户端和服务器端的双向鉴权、数据加密传输,防范非法接入和数据窃取、篡改等风险。针对设备资源和应用场景的安全风险不同,支持选择对称和非对称加密方式。

  • 设备固件升级:支持 OTA 固件升级服务,当设备固件有安全隐患或者功能漏洞时,物联网服务端支持通过 OTA 升级,消除隐患,降低安全风险。

设备管理

  • 生命周期管理:支持控制台对设备进行注册生产、删除销毁等管理能力。还可通过 SDK 工具包,快速操作,提高效率。

  • 设备状态:全程对设备状态监控、有效实时获取状态变更通知。支持对设备运作的关键性指标(产品在线数、上下行消息数、异常消息数、规则引擎命中次数等等)数据可视化查看和历史数据回顾。

  • 管理工具:对于物联场景下设备的管理能力,提供便捷的 SDK 工具,可在后台快速、批量化创建、查询、操作设备,提高效率。当前支持 Python、PHP、JAVA 工具包。

设备通信

设备消息通信中的发布、订阅能力有严格、安全的权限控制。对于主流的 MQTT 协议,支持 QoS=0 和 QoS=1 等消息特性。支持离线存储能力。基于规则引擎可以实现设备间的快速消息通信能力。

设备影子

设备影子本质上是一份在服务器端缓存的设备数据(json 形式),主要用于保存:

  • 设备的当前配置

  • 设备的当前状态

作为中介,设备影子可以有效实现设备和用户应用之间的数据双向同步:

  • 对于设备配置,用户应用不需要直接修改设备,只需要修改服务器端的设备影子,由设备影子同步到设备。即使当时设备不在线,设备上线后仍能从设备影子同步到最新配置。

  • 对于设备状态,设备将状态上报到设备影子,用户应用查询时,只需查询设备影子即可。这样可以有效减少设备和服务器端的网络交互,尤其是低功耗设备。

规则引擎

  • 语法规则:支持类 SQL 语法和基础语义操作,可以通过简易的语法编写,实现对设备消息的内容解析和过滤提取、重新整合,进而转发到后端服务,无缝对接腾讯云后端的多种存储组件、函数计算、大数据分析套件等。

  • 设备与设备互通:为了实现设备的数据隔离和通信安全,设备只能发布和订阅自身的 topic 消息。要实现互通,需要基于规则引擎的 repub 功能。

  • 设备消息导入消息队列:作为设备的唯一接入方,物联云平台通过开通消息队列服务,便捷配置,快速将设备消息、状态变更行为写入腾讯云消息队列( CMQ、CKafka )服务,第三方服务通过消息队列 SDK 接口取用消费数据,实现设备与第三方服务的异步消息通信。或者配合腾讯云大数据套件,对设备消息进行分析学习。

  • 设备消息导入云数据库:物联云平台通过规则引擎的便捷配置,快速将设备消息、写入腾讯云全类型存储服务( CDB、mongoDB、时需数据库 CTSDB)服务,免除中间的数据获取和转存逻辑开发,节省成本。配合腾讯云大数据套件,对设备消息进行分析学习。

  • 设备消息转发至第三方服务:规则引擎支持配置对设备消息直接转发至第三方服务,从而快速打通设备与接入方后台服务的通信能力。

数据处理

  • 实时计算:在物联网领域,存在着大量的实时数据上报,同时核心业务对于数据监控的时效性有较高要求,流式计算、实时计算对于此类应用场景有着非常巨大的意义。规则引擎将设备数据实时转发到 Ckafka,进而和 Storm / SparkStreaming 流式计算打通,帮助用户实现对设备数据进行实时计算的能力。

  • 智能处理:物联网通信提供与腾讯云大数据处理套件 TBDS 打通的能力。通过腾讯大数据处理套件所提供的强大数据发现、数据分析、数据挖掘能力,用户可快速对物联网十亿级规模的设备进行智能处理,挖掘数据价值、提高效率,抢占市场先机。

  • 可视化:物联网通信提供与腾讯云大数据可视化服务 RayData 打通的能力,通过数据实时渲染技术,用户可以将设备上报的大量数据图形可视化、场景化以及实时交互,让使用者更加方便地进行数据的个性化管理与使用。

协作管理

访问管理与资源协作:物联云平台支持通过 CAM 安全地访问、使用和管理云账号的资源。通过对子账号与协作者的身份管理和策略管理,来实现物联云资源的隔离与协作。

场景与架构区参考

物联网通信提供灵活的设备接入方式,用户设备可基于 CoAP、MQTT 等主流协议接入,实现设备管理,设备影子,消息通信等功能。同时对接丰富的云端服务组件和资源,为多个物联网场景打造采集+存储+计算的全栈服务。
www.ksyuwei.cn

腾讯云物联网通信(Internet of Things Hub, IoT Hub)旨在提供一个安全、稳定、高效的连接平台,帮助开发者低成本、快速地实现“设备-设备”、“设备-用户应用”、“设备-云服务”之间可靠、高并发的数据通信。不仅可以实现设备之间的互动、设备的数据上报和配置下发,还可以基于规则引擎和腾讯云产品打通,方便快捷地实现海量设备数据的存储、计算以及智能分析。

产品架构

www.ksyuwei.cn

接入腾讯物联网通信

用户设备可使用 SDK 接入腾讯物联网通信。底层数据传输基于 MQTT 或 CoAP 协议,可以有效减少网络带宽。安全方面引入网络安全传输协议(TLS、DTLS),可以防范非法接入和数据窃取、篡改等风险。介于设备资源和使用场景的多样性,支持选择非对称(设备证书加密验证、适用高安全要求场景)和对称加密(密钥加密验证、适用资源受限设备)方式。

用户设备基于 SDK 进行消息的发布和订阅

为了实现设备数据安全隔离,目前腾讯云限制设备只能发布和订阅自身 topic ,但可以通过配置规则引擎实现设备与其他实体的消息互通。

用户可以在控制台配置规则引擎实现设备与其他实体的消息互通

目前规则引擎支持类 SQL 语法操作,可通过 repub(重新发布消息)实现设备之间的消息通信能力、forward(转发消息到用户服务器)实现设备消息转发第三方服务。同时支持设备消息转发到云数据库、时序数据库、消息队列等腾讯云其他产品(无服务器云函数、大数据分析套件、大数据可视交互系统、商业智能分析等打通功能也在建设中)。

打通设备消息与第三方服务

作为设备的唯一接入方,物联网通信平台通过开通消息队列服务,可快速将设备指定消息写入腾讯云 CMQ、CKafka 队列,第三方服务通过 CMQ、CKafka 队列 SDK 取用消费数据,实现设备与第三方服务的异步消息通信。

用户可以基于设备影子实现设备与应用之间配置数据、状态数据的双向同步

一方面,用户可以通过云 API 将配置参数设置到设备影子里,设备在线或上线时,都可以从设备影子获取配置参数。 另一方面,设备可以将最新状态上报到设备影子。用户查询设备状态时,只需查询设备影子,而不必进行与设备进行直接网络通信。

用户可以通过云 API 实现设备管理

对于物联场景下设备的管理能力,提供便捷的 SDK 工具,可在后台快速、批量化创建、查询、操作设备,提高效率。当前支持 Python、PHP、JAVA 工具包。

设备接入

SDK 接入

物联网通信 IoT Hub 当前支持 Linux、Android 等平台的 SDK。物联网通信 SDK 下载地址请参见 SDK 下载 文档。

传输协议

  • MQTT 基于 TCP 和 TLS 加密接入,主流的物联通信协议,适用于设备间消息通信,或需要收取反向控制信令、配置场景。

  • CoAP 基于 UDP 和 DTLS 加密接入,适用于设备纯数据上报场景,对资源的消耗和要求更低。

安全协议

基于 TLS、DTLS 协议进行客户端和服务器端的双向鉴权、数据加密传输,防范非法接入和数据窃取、篡改等风险。介于设备资源和使用场景的多样性,支持选择非对称(设备证书加密验证、适用高安全要求场景)和对称加密(密钥加密验证、适用资源受限设备)方式。设备级粒度身份认证,保证云到设备和设备到云的消息的保密性。

RTOS 移植能力

SDK 支持跨平台移植,框架抽离硬件平台抽象层,可基于不同平台快速、轻松接入物联网通信。

设备固件升级

支持 OTA 固件升级服务,当设备固件有安全隐患或者功能漏洞时,物联网服务端支持通过 OTA 升级,消除隐患,降低安全风险。

网关产品接入

支持创建网关类型产品与子设备类型产品,您可以绑定网关产品与对应的子产品,以及网关设备与对应的子设备,并在网关产品的权限列表添加子产品的 Topic 授权,即可通过网关设备基于 MQTT 协议代理子设备上下线及收发消息。

设备管理

生命周期管理

支持控制台对设备进行注册生产、删除销毁等管理能力。还可通过 SDK 工具包,快速操作,提高效率。当前支持 Python、PHP、JAVA 工具包。

设备状态

全程对设备状态监控、有效实时获取状态变更通知。

分组管理

支持对不同产品下的设备进行分组管理,满足不同业务场景下对于不同品类设备多级管理的需求。

日志采集

支持对设备上下行通信日志、设备消息内容日志以及设备端调试 SDK 日志进行采集上报,满足客户多业务场景的查询需求。

设备通信

设备能发布和订阅的 topic 受到权限控制管理,一个产品下的所有设备具备相同的 topic 类权限。对于 MQTT 协议传输,支持 QoS=0 和 QoS=1 等消息特性。支持离线消息存储。借助规则引擎,可以实现设备之间的快速消息通信能力。

设备影子

设备影子本质上是一份在服务器端缓存的设备数据(JSON 形式),主要用于保存:

  • 设备的当前配置

  • 设备的当前状态

作为中介,设备影子可以有效实现设备和用户应用之间的数据双向同步:

  • 对于设备配置,用户应用不需要直接修改设备,只需要修改服务器端的设备影子,由设备影子同步到设备。即使当时设备不在线,设备上线后仍能从设备影子同步到最新配置。

  • 对于设备状态,设备将状态上报到设备影子,用户应用查询时,只需查询设备影子即可。这样可以有效减少设备和服务器端的网络交互,尤其是低功耗设备。

规则引擎

语法规则

支持类 SQL 语法和基础语义操作,可以通过简易的语法编写,实现对设备消息的内容解析和过滤提取、重新整合,进而转发到后端服务,无缝对接腾讯云后端的多种存储组件、函数计算、大数据分析套件等。

设备与设备互通

为了实现设备的数据隔离,设备只能发布和订阅自身的 topic 消息。基于规则引擎的 repub 功能,可实现设备消息互通。

设备消息转发第三方服务

规则引擎支持配置对设备消息直接转发至第三方服务,从而快速打通设备与接入方后台服务的通信能力。

设备与云服务互通

对于用户需要对设备数据进行进一步处理的场景(如持久化存储、函数计算、大数据分析),腾讯云目前提供相应的产品(如云数据库、无服务器云函数、消息队列、大数据分析套件等)。此外,物联网通信平台也将支持和这些云产品之间的直接打通。

消息队列

作为设备的唯一接口,物联网通信平台支持将设备指定消息写入腾讯云 CMQ、CKafka 消息队列,第三方服务可通过 CMQ、CKafka 的 SDK 接口获取设备消息,从而打通实现与设备的异步消息通信。在此基础上完成后端的数据存储、计算分析或设备控制逻辑。

协作管理

物联网通信平台支持通过 CAM 安全地访问、使用和管理云账号的资源。通过对子账号与协作者的身份管理和策略管理,来实现物联网通信资源的隔离与协作。

数据处理

实时计算

在物联网领域,存在着大量的实时数据上报,同时核心业务对于数据监控的时效性有较高要求,流式计算、实时计算对于此类应用场景有着非常巨大的意义。规则引擎将设备数据实时转发到 Ckafka,进而和 Storm/SparkStreaming 流式计算打通,帮助用户实现对设备数据进行实时计算的能力。

智能处理

物联网通信将提供与腾讯云大数据处理套件 TBDS 打通的能力。通过腾讯大数据处理套件所提供的强大数据发现、数据分析、数据挖掘能力,用户可快速对物联网十亿级规模的设备进行智能处理,挖掘数据价值、提高效率,抢占市场先机。

可视化

物联网通信将提供与腾讯云大数据可视化服务 RayData 打通的能力,通过数据实时渲染技术,用户可以将设备上报的大量数据图形可视化、场景化以及实时交互,让使用者更加方便地进行数据的个性化管理与使用。

安全

设备接入和数据传输引入网络安全传输协议(TLS、DTLS),每个设备拥有独立的证书认证身份,可以拒绝非法接入,防范数据窃取、篡改等风险。

快速

基于 SDK、控制台或云 API,用户可以快速实现设备的数据通信,而不必关注底层通信协议细节(如 MQTT 协议的字段含义)。

稳定

基于腾讯多年的海量服务经验,后台服务具备自动容灾、负载均衡等能力,同时也提供全天候的运维监控服务。

拓展

基于规则引擎将设备数据和腾讯云产品打通,可以方便快捷的实现海量设备数据的存储、计算以及智能分析。

低成本

  • 按消息量计算服务费用,初期成本压力小。

  • 一站式服务架构,减少了研发的人力成本和时间成本。

车联网

人和车联动:采集并分析司机的驾驶习惯,实时监测车辆各零部件如轮胎、刹车片、空调等实时状态以及交通路况,适时给司机提供驾驶建议;同时可以将上述数据和保险公司数据库结合,提供最合适的保险计划。
www.ksyuwei.cn

智能家居

人和家居联动:通过门监测住户出入行为,同时结合实时气温与时间,控制空调、灯具、电视机、音箱等的启动和关闭。
www.ksyuwei.cn

工业设备

帮助企业更便捷快速地完成设备物联网络搭建,实现设备自动控制、实时监控等需求,提升企业效率。
www.ksyuwei.cn

智慧交通/城市

大量城市传感器设备和管控设备,接入物联网套件服务,同时可以利用腾讯云的大数据服务和智能算法来监测和预测群体行为,提升城市效率、减少人力支出。
www.ksyuwei.cn

限制类别描述
产品一个账号最多创建2000个产品
设备一个产品下最多创建20万台设备
产品名称最大长度32字节
设备名称最大长度48字节
Shadow 文档大小最大8KB
Shadow 文档对象最大深度5层
设备支持自定义属性最大100个
历史任务保存时长30天
一个用户任务最大并发数5个
单个固件大小最大10MB
每个产品上传固件数最大50个
历史监控数据保存时长30天
Topic 类一个产品最多能定义100个 Topic 类
广播 Topic无广播 Topic
自定义 Topic最大长度64字节
CoAP 协议包大小不能超过1K
MQTT 协议包大小不能超过16K
通信设备只能对自己的 Topic 进行发布订阅消息
设备订阅设备订阅和取消订阅立即生效,例如设备发送了 SUB 请求到 Topic A,若之后有消息发往 Topic A,则设备能立即收到消息
规则引擎同一个账号不超过100个规则
规则引擎支持 JSON 与二进制格式的转发
规则引擎一条规则中转发数据的操作不能超过10个
流量限制单个设备数据上报上限 QoS0 为30条/秒,QoS1 为10条/秒,下行接收限制50条/秒
离线消息数量及存储时长单设备最多150条,消息最多存储24小时


www.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cnwww.ksyuwei.cn

物联网通信提供哪些功能和服务?

物联网通信提供设备管理、设备影子、消息通信、固件升级,以及对接云产品等功能。物联网通信作为消息通道,提供了灵活的设备接入方式,并对接丰富的云端组件,为客户打造采集+存储+计算的全栈服务。

物联网通信有哪些产品使用限制?

关于物联网通信的相关产品使用限制的更多详情请参见 产品限制。

物联网通信消息队列和规则引擎转发功能区别是?

消息队列和规则引擎转发都具有将消息转发到指定云组件的功能,两者区别在于转发的维度,消息过滤以及对消息的格式要求。

  • 消息队列:以产品为维度转发,在产品下配置消息队列后,该产品下所有设备的消息都会无条件转发到消息队列,无消息过滤条件,对消息格式无要求。

  • 规则引擎转发:目前要求消息转发以 Topic 为维度,基于 Topic 可以配置过滤条件,指定哪些 Topic 的消息可以转发。同时还可以针对消息字段设置过滤条件,以指定只有当消息中字段满足某些条件才转发。更多详情请参见 规则引擎说明。

物联网通信是否提供手机 App 产品开发?

暂不提供。目前 IoT Hub 专注于做物联网平台层的功能组件,暂不提供 App 相关能力,用户需要自行搭建 Application server 并开发对应的移动端,或使用具备 App 产品开发能力的 腾讯云物联网开发平台。

设备连接物联网平台失败一般有哪几类原因?

设备连接失败有多种原因,例如设备与云端网络连接不通,设备鉴权失败,无线网络信号问题导致超时等等,可根据设备连接过程 SDK 的错误日志类型来区分处理,一般处理步骤如下:

  1. 首先需要检查设备端本地网络与物联网通信平台的连接情况,例如,对于 MQTT 连接,可以按以下步骤检查网络连接情况:

    • ping iotcloud-mqtt.gz.tencentdevices.com 检测主机是否可达情况。

    • telnet iotcloud-mqtt.gz.tencentdevices.com 8883 (TLS) 或 1883 (NOTLS)检测端口连接情况。

    • 如果执行上面命令的结果都是正常的,那可能还需要检查本地防火墙策略。

  2. 在无线网络环境,如果由于信号质量和环境干扰问题,导致连接超时,则可以修改 SDK 的可变参数里面的超时设置,如下是 C-SDK 代码 qcloud_iot_export.h 里的配置:

    /* MQTT 阻塞调用(包括连接, 订阅, 发布等)的超时时间, 单位:ms 建议5000ms */#define QCLOUD_IOT_MQTT_COMMAND_TIMEOUT (5 * 1000)/* 接收到 MQTT 包头以后,接收剩余长度及剩余包,最大延迟等待时延 */#define QCLOUD_IOT_MQTT_MAX_REMAIN_WAIT_MS (2000)/* TLS连接握手超时时间, 单位:ms */#define QCLOUD_IOT_TLS_HANDSHAKE_TIMEOUT(5 * 1000)
  3. 如果网络连接均无问题,设备鉴权错误也会导致连接失败,需要检查以下设置:

    • 检查使用的设备信息参数是否正确。常见的错误是设备信息或密钥多输了空格,设备信息与密钥信息不一致,或者证书文件名与代码中书写的文件名不一致等细微错误。

    • 证书类连接,如果本地时间错误,也会导致 TLS 连接失败。需要本地安装 ntp client 软件进行对时。

  4. 使用 Android SDK 进行 MQTT 连接时,提示“错误的用户名或者密码”。
    如果确认设备参数(ProductId、DeviceName、DevPsk)都配置正确的话,即可检查一下测试设备的系统时间是否正确,例如,使用 adb shell date 查看 Android 设备的系统时间。

设备为何一直上下线?

物联网接入层有设备互踢的逻辑,如果是用同一个设备 ID 在不同地方登录,会导致其中一方被另一方踢下线。因此发现设备一直上下线时,需要确认是否有不同的人或者多线程在使用同一个设备 ID 执行登录操作。

设备发送或者接收消息失败是什么原因?要如何解决?

一般有几类原因:

  1. 发送消息的 Topic 不存在或者没有发布权限,接收消息的 Topic 不存在或者没有订阅权限。物联网通信的 Topic 需要先在控制台创建并设置权限,去控制台查看设备的权限列表,确认对应的 Topic 是否有发布或者接收权限。

    注意:

    SDK 的 sample 代码使用的 data Topic 也需要先去控制台手动添加并设置发布和订阅权限,才能成功发布和接收消息。

  2. Topic 书写有误。确认代码中书写的 Topic 没有包含多余字符或者漏写了字符,例如多输入了空格或者‘/’,或者某个单词少写了字母等。

  3. 连接断开或者网络通讯故障。MQTT 消息基于 TCP 传输,如果网络出现故障中间路由器断开了,则由于 TCP 的重传机制,会需要较长时间才能检测到连接异常。

  4. 当使用设备端 C-SDK 进行 MQTT 订阅主题操作或者以 QoS1 级别发布消息,如果因为 Topic 不存在或权限不对,又或者网络故障超时,SDK 会在 sample 的事件回调函数中提示收到 NACK 或者 TIMEOUT 事件,可供排查定位问题。

设备端在连接断开后会进行自动重连吗?

使用设备端 SDK 建立 MQTT 连接时。如果初始化参数开启了自动重连(默认开启),那么会进行自动重连的操作。在 SDK 的 Yield 函数中,会根据报文收发以及心跳包行为是否正常来判断网络连接状况,如果出现连接断开情况,会自动进行重连。同时为了避免在网络故障情况下频繁进行重连,SDK 的重连间隔是动态变化的,从最小值开始,如果重连失败,重连间隔就会翻倍增长,如果重连间隔达到最大值后仍然还是连接失败则返回重连超时错误。
如果是用户手动断开连接的情况,如主动调用 Destroy 函数,则不会进行自动重连。

Android SDK 集成到工程中编译出错该怎么办?

采用远程依赖的方式编译出错的话,可能会由于远程库更新不及时导致编译出错。可以在gradle文件中将依赖方式修改成本地库依赖:

  • compile project(':iot_core')

  • compile project(':iot_service')

设备端 C-SDK 对软件运行环境的要求是什么?

主要有以下要求:

  1. 需要操作系统或C运行库提供系统调用诸如动态内存分配(malloc/free),定时器和休眠,随机数函数和打印函数等等,在多线程环境还需要临界数据保护如Mutex机制。

  2. 需要 TCP/IP 协议栈,SDK 的 TCP/UDP 实现依赖于 socket 的 send/recv 接口以及 select 等同步I/O机制,如果系统接口不一致需要修改相关的 HAL_TCP/UDP 层实现。

  3. 采用 TLS 加密通讯的场景,需要 SSL/TLS 库的支持,目前物联网通信平台 C-SDK 仅支持 mbedtls,如果采用其他 SSL/TLS 库,需要修改相关的 HAL_TLS/DTLS 层实现。

嵌入式设备资源比较受限,有什么减小 C-SDK 运行内存及库大小的办法吗?

有如下建议:

  1. 首先可以把不需要使用的功能关闭,例如在 make.setting 中把不需要的功能选项置为 n,将 BUILD_TYPE 设置为 release。

  2. 检查 HAL 层的系统调用函数的内存使用情况,例如在某些系统上发现 getaddrinfo 系统函数会分配了较多的内存用于 IPV6。如果 SDK 只用 IPV4,那么可以考虑优化 getaddrinfo 中这个内存分配操作,可以节省运行 RAM。

  3. 设备接入鉴权的方式中,TLS 证书方式需要最多的存储资源和运行内存,安全性也最高。TLS KEY 方式占用资源会少一些,同时保证了安全性。而 NOTLS KEY 方式占用资源最少,不需要 TLS 库,但安全性最低,数据采用明文传输,有被盗取和篡改的风险。用户需要根据设备的资源做取舍和选择。

  4. 在使用 TLS 库的时候,可以根据使用场景对所需的加密算法和密钥交换算法进行裁剪,如 mbedtls 库可对其 config.h里面的特性宏进行定制。

设备端 C-SDK 关于 MQTT 连接的心跳包机制是怎么样的?

MQTT 采用 TCP 长连接,需要心跳包机制来保证连接是活跃的,设备端 C-SDK 按照 MQTT 规范的 Keep Alive 机制,在初始化参数列表里面有一个心跳包发送周期参数:

/* MQTT心跳消息发送周期, 单位:ms */#define QCLOUD_IOT_MQTT_KEEP_ALIVE_INTERNAL (240 * 1000)

在一个心跳发送周期内,如果设备端没有成功发送 MQTT 控制报文(包括 SUB/UNSUB/QoS1 PUB 报文,并收到相应的ACK),则会发送 MQTT PINGREQ 给云端并等待云端回复 PINGRESP 报文,如果在一定时间内没有收到 PINGRESP 报文,则设备端认为连接已断开,会进行自动重连操作。

设备端 C-SDK 对 MQTT QoS 的支持是怎么样的?

目前物联网通信平台支持 MQTT QoS0 和 QoS1,不支持 QoS2。对于 QoS0 的消息,设备端在 Publish 函数调用返回成功之后,即由 TCP/IP 协议栈来保障消息是否送达,SDK 不会做进一步处理。而对于 QoS1 的消息,SDK 会维护一个消息状态队列,并根据 MQTT PUBACK 消息做进一步的跟踪反馈,并在相应的事件回调中通知用户该 QoS1 消息是成功送达或者超时失败,再由用户决定是否进行重发。

设备端 C-SDK 的 Yield 函数是什么作用?

Yield 函数的作用是在当前线程上下文中,进行 MQTT 报文读取,消息处理,超时请求,心跳包及重连状态管理等任务,是设备端进行 MQTT 物联网通信的重要步骤。对于单线程单任务场景,在用户的逻辑代码循环中需要保证对该函数的调用执行。对于多线程多任务场景,可以使用一个单独的线程任务来执行该函数,并且设置一定的线程优先级,避免该线程被长时间挂起。具体使用方法可以参考相应的 sample 代码。

设备端 C-SDK 是否支持多线程?

设备端 C-SDK 支持多线程,对于 MQTT 接口在多线程环境下的使用有如下注意事项,详细代码用例可以参考samples/mqtt/multi_thread_mqtt_sample.c

  1. 不允许多线程调用IOT_MQTT_Yield,IOT_MQTT_Construct以及IOT_MQTT_Destroy。

  2. 可以多线程调用IOT_MQTT_Publish,IOT_MQTT_Subscribe及IOT_MQTT_Unsubscribe。

  3. IOT_MQTT_Yield 作为读取并处理 MQTT 报文以及连接状态的函数,应保证一定的执行时间,避免被长时间挂起或抢占。

设备端 C-SDK 是否支持远程诊断功能?

从版本v2.3.1开始,设备端 C-SDK 增加设备端日志上报功能,可将设备端的运行日志通过 HTTP 上报到云端,并可在控制台展示,方便用户远程诊断及监控设备运行状况。因为日志上报采用了单独的通讯通道,可以在网络通讯正常但 MQTT 连接出现问题时候进行远程诊断。

什么是规则引擎,它的作用是什么?

规则引擎是处理设备上报消息并转发腾讯云其他组件的后台模块。它能够基于 Topic,消息内容对消息进行过滤,并提取出指定的字段组装成新的消息转发给腾讯云组件。由腾讯云组件提供消息的存储,计算等任务。

转发的消息格式要求有哪些?

目前使用规则引擎转发的消息格式支持 JSON 与二进制,JSON 格式的数据支持筛选过滤,二进制格式只能透传转发。

控制台上配置了规则引擎转发其它云产品,但是转发没有生效怎么办?

可以通过物联网通信控制台的云日志,查看消息转发的日志,确认消息的转发情况。

消息转发失败的常见原因一般有以下几种:

  • 消息体格式与创建产品定义的数据格式不匹配。

  • 消息的 Topic 书写有误,与规则中配置的 Topic 不一致。

  • 规则中填写的转发信息有误,导致规则引擎转发失败。

是否可以在控制台批量创建设备?

不可以,只能通过云 API 创建。具体使用方法请参见 创建多个设备 。

如何在控制台上查看设备在线状态?

在产品列表中,单击设备的产品名称,进入产品管理页面。然后单击【设备列表】,找到相应设备名,在“状态”一栏中,即可查看设备的在线状态。

如何查看设备日志,以判断消息发送和转发是否成功?

在产品列表中,单击设备的产品名称,进入产品管理页面。然后单击【云日志】,进入日志查询页面。通过过滤时间段和设备名即可找到相应设备的日志,云日志提供了消息链路中所有关键节点的日志。

如何在控制台为设备添加 Topic 权限?

在产品列表中,单击设备的产品名称,进入产品管理页面。然后单击【权限列表】,进入权限管理页面。单击【添加 Topic 权限】为相应 Topic 添加发布权限即可。如果设备需要同时接收该 Topic 的消息,操作权限可以选择【发布和订阅】。


  • 名称: 物联网通信IoTHub
  • 关键词: 物联网通信,设备通信,IoTHub,腾讯云