AzureIoTHubServiceClient 1.0.0

AzureIoTHubServiceClient 1.0.0

Jelani BrandonRajeev Massand 维护。



 
依赖于
AzureIoTUtility= 1.1.3
AzureIoTuAmqp= 1.2.3
 

  • Microsoft

Azure IoT C SDKs and Libraries

此仓库包含以下内容

  • Azure IoT Hub 设备 C SDK 以连接运行 C 代码的设备到 Azure IoT Hub。
  • Azure IoT Hub 设备预配服务客户端 SDK 用于注册设备到 Azure IoT 设备预配服务 并管理注册列表。
  • Azure IoT Hub 服务 C SDK 以从服务器端的 C 应用程序与 Azure IoT Hub 服务实例接口。
  • C 序列化库 以帮助在设备上序列化和反序列化数据。

包和库

开始使用 Azure IoT SDK 的最简单方法是使用以下包和库

示例

以下是一些简单示例,将帮助您开始

编译 SDK

当您的平台没有可用的包或库,或者您想修改 SDK 代码,或将 SDK 移植到新平台时,您可以利用存储库中提供的构建环境。

SDK API 参考文档

C SDK 的 API 参考文档可以在这里找到:https://azure.github.io/azure-iot-sdk-c/index.html

其他 Azure IoT SDK

要查找其他语言版本的 Azure IoT SDK,请参阅 azure-iot-sdks 仓库。

开发 Azure IoT 应用程序

要了解更多关于构建 Azure IoT 应用程序的信息,您可以访问 Azure IoT 开发中心

关键特性和路线图

设备客户端 SDK

✔️功能可用✖️功能已规划但尚不支持没有计划支持

特性 mqtt mqtt-ws amqp amqp-ws https 描述
身份认证 ✔️ ✔️* ✔️ ✔️* ✔️* 使用受支持的认证方法(包括私钥、SASToken、X-509 自签名和证书颁发机构(CA)签名)安全地将您的设备连接到 IoT Hub。*目前 IoT Hub 只在 AMQP 和 MQTT 上支持 X-509 CA 签名。
发送设备到云的消息 ✔️* ✔️* ✔️* ✔️* ✔️* 发送设备到云的消息(最大 256KB)到 IoT Hub,可添加自定义属性。目前 IoT Hub 只支持在 AMQP 和 HTTPS 上批量发送。该 SDK 支持通过 HTTP 批量发送。*正在实施通过 AMQP 和 AMQP-WS 批量发送,并在 D2C 消息上添加系统属性。
接收云到设备的消息 ✔️* ✔️* ✔️ ✔️ ✔️ 接收云到设备的消息,并从 IoT Hub 读取相关的自定义和系统属性,同时可选择完成/拒绝/放弃 C2D 消息。*目前 IoT Hub 只支持通过 HTTPS 和 AMQP 完成接收/拒绝/放弃 C2D 消息。
设备孪生 ✔️* ✔️* ✔️* ✔️* IoT Hub 为您连接到 IoT Hub 的每个设备保留一个设备孪生。设备可以执行获取孪生标签、订阅所需属性等操作。*正在实施发送上报属性版本和所需属性版本。
直接方法 ✔️ ✔️ ✔️ ✔️ IoT Hub 允许您从云中调用设备的直接方法。SDK 支持处理特定方法和通用操作。
将文件上传到 Blob ✔️ 设备可以启动文件上传,并在上传完成后通知 IoT Hub。文件上传需要 HTTPS 连接,但可以使用任何协议(除了上传操作外)从客户端启动。
连接状态和错误报告 ✔️* ✔️* ✔️* ✔️* ✖️ 对 IoT Hub 支持的错误代码进行错误报告。*该 SDK 支持%认证和设备未找到的错误报告。
重试策略 ✔️* ✔️* ✔️* ✔️* ✖️ 对于不成功的设备到云消息的重试策略有两个选项:不尝试,带抖动的指数后退(默认)。*正在实施自定义重试策略。
单个连接上多路复用设备 ✔️ ✔️ ✔️
连接池 - 指定连接数 ✖️ ✖️ ✖️

此 SDK 还包含您可设置和特定于平台的功能。您可以在本文档中找到详细列表。

服务客户端 SDK

✔️功能可用✖️功能已规划但尚不支持没有计划支持

特性 C 描述
身份注册(CRUD) ✔️* 使用您的后端应用执行单个设备或批量的 CRUD 操作。SDK 仅支持使用 ID/密钥对创建单个设备的 CRUD 操作。
云到设备消息 ✔️ 使用您的后端应用通过 AMQP 和 AMQP-WS 发送云到设备消息,并设置云到设备消息接收器。
直接方法操作 ✔️ 使用您的后端应用调用设备上的直接方法。
设备孪生操作 ✔️* 使用您的后端应用执行设备孪生操作。*正在实施孪生上报属性更新回调和替换孪生。
查询 使用您的后端应用执行信息查询。
作业 使用您的后端应用执行作业操作。
文件上传 设置您的后端应用以发送文件上传通知接收器。

预配客户端 SDK

该存储库包含用于设备预配服务SDK设备预配服务。C语言的预配服务SDK正在开发中。请在此期间查看Node.jsJava.NET中的预配服务SDK。

✔️功能可用✖️功能已规划但尚不支持没有计划支持

特性 mqtt mqtt-ws amqp amqp-ws https 描述
TPM个体注册 ✔️ ✔️ ✔️ 此SDK支持通过个体注册可信平台模块将设备连接到设备预配服务。此快速入门回顾了如何创建使用TPM的模拟个体注册设备。目前,设备预配服务不支持TPM通过MQTT。
X.509个体注册 ✔️ ✔️ ✔️ ✔️ ✔️ 此SDK支持通过个体注册X.509叶证书将设备连接到设备预配服务。此快速入门回顾了如何创建使用X.509的模拟个体注册设备。
X.509注册组 ✔️ ✔️ ✔️ ✔️ ✔️ 该SDK支持通过使用注册组X.509根证书将设备连接到设备预配服务。

操作系统平台和硬件兼容性

C语言物联网中心设备SDK可与广泛的各种操作系统平台和设备一起使用。

最小要求是设备平台需要支持以下

  • 能够建立IP连接:只有支持IP的设备才能直接与Azure物联网中心通信。
  • 支持TLS:这是与Azure物联网中心建立安全通信通道所必需的。
  • 支持SHA-256(可选):用于生成用于设备服务身份验证的安全令牌。有不同类型的身份验证方法可用,并非所有方法都需要SHA-256。
  • 拥有实时时钟或实现连接NTP服务器的代码:对于建立TLS连接和生成用于身份验证的安全令牌都是必需的。
  • 至少有64KB的RAM:SDK的内存占用取决于SDK、使用的协议以及目标平台。以微控制器为目标可以达到最小的内存占用。

您可以查看已经在Azure IoT设备认证目录中测试过的各种SDK的操作系统平台列表。请注意,您可能在未列出在此页面的操作系统和硬件平台上仍然可以使用SDK:所有SDK都是开源的,并设计为可移植。如果您有建议、反馈或要报告的问题,请参阅下方的贡献和支持部分。

将 Azure IoT 设备客户端 SDK for C 迁移到新设备

C SDKs 和库

  • 使用 ANSI C (C99) 编写,避免使用编译器扩展,以最大化代码可移植性和广泛平台兼容性。
  • 公开一个平台抽象层以隔离操作系统依赖(例如线程和互斥机制、通信协议,例如 HTTP)。有关抽象层的更多信息,请参阅我们的迁移指南

在存储库中您可以找到有关在 Linux、Windows 和微控制器平台上编译和运行设备客户端 SDK for C 的说明和构建工具(有关编译 C 设备客户端的更多信息,请参阅上面的链接)。

如果您考虑将设备客户端 SDK for C 迁移到新平台,请查看迁移指南文档。

贡献、反馈和问题

如果您遇到任何错误,有何新功能建议,或想成为此项目的积极贡献者,请按照贡献指南提供的说明操作。

支持

  • 对 SDK 有特性请求?请将其发布在用户声音上,以帮助我们确定优先级。
  • 有技术问题?请使用标签“azure-iot-hub”在Stack Overflow提问。
  • 需要支持?拥有活跃 Azure 订阅的每一位客户都有权获得支持,并有明确的响应时间。请提交工单并从微软支持团队获得帮助。
  • 发现了一个错误?请通过彻底记录它并在 GitHub(CJava.NETNode.jsPython)上提交问题来帮助我们修复它。

阅读更多

SDK 文件夹结构

/c-utility, /uamqp, /umqtt, /parson

这些是 git 子模块,其中包含与其他项目共享的代码,如适配器和协议实现。请注意,其中一些包含嵌套子模块。

/blob

该文件夹包含使访问 Azure Blob 存储 成为可能的客户端组件。

/dps_client

该文件夹包含设备预配服务的客户端库。

/certs

包含与 Azure IoT Hub 进行通信所需的证书。

/doc

本文件夹包含应用程序开发指南和设备配置说明。

/build_all

本文件夹包含客户端库和相关组件的平台特定构建脚本。

/iothub_client

包含提供库原始消息能力的服务。请参阅API文档和示例了解如何使用。

  • 构建:每个平台(例如,Windows、Linux、Mbed)都有一个子文件夹。包含构建库二进制文件的makefiles、批处理文件和解决方案。
  • devdoc:包含需求、设计笔记、手册。
  • inc:公共包含文件。
  • src:客户端库源文件。
  • 示例:包含简单示例。
  • tests:源代码的单元测试和端到端测试。

/序列化器

包含库,提供在原始消息库之上建模和JSON序列化的能力。这些库简化了数据结构和命令控制的上传,以便与Azure IoT服务一起使用。请参阅API文档和示例了解如何使用。

  • 构建:每个平台(例如,Windows、Linux、Mbed)都有一个子文件夹。包含构建库二进制文件的makefiles、批处理文件和解决方案。
  • devdoc:包含需求、设计笔记、手册。
  • inc:公共包含文件。
  • src:客户端库源文件。
  • 示例:包含简单示例。
  • tests:源代码的单元测试和端到端测试。

/iothub_service_client

包含允许与IoT Hub服务交互的库,以执行发送消息到设备和管理设备标识注册表等操作。

/testtools

包含用于测试客户端库当前使用的工具:模拟框架(micromock)、通用测试运行器(CTest)、单元测试项目模板等。

/tools

其他工具:compilembed、mbed_build、可追溯性工具(检查规范需求与代码实现的比对)。

长期支持

该项目提供一个长期支持(LTS)版本,以便不需要最新特性的用户不受不必要变化的干扰。

每6个月将创建一个新的LTS版本。目前计划LTS分支的生命周期为一年。LTS分支将接收所有属于以下类别的错误修复

  • 安全错误修复
  • 关键错误修复(崩溃、内存泄漏等)

在LTS分支中不会添加新功能或改进。

LTS分支的名称为lts_mm_yyyy,其中mmyyyy分别为分支创建时的月份和年份。这样分支的一个例子是lts_07_2017

时间表1

以下是显示LTS分支与发布包之间的映射的表格

github分支 LTS状态 LTS开始日期 维护结束日期 移除日期
Nuget: 1.1.33
Xenial: 0.1.0.0-35xenial
Trusty: 0.1.0-37trusty
lts_01_2018 活跃 2018-01-01 2018-06-30 2018-12-31
1.x.x lts_07_2017 已弃用 2017-07-01 2017-12-31 2018-06-30
  • 1 所有计划日期均可由Azure IoT SDK团队更改。

计划发布时间表


本项目已采用微软开源行为准则。更多相关信息请参阅行为准则常见问题解答,或联系[email protected]以提出任何额外的问题或评论。