Azure IOT Hub 장치 SDK를 사용하면 C99 이상 또는 C++로 작성된 애플리케이션이 Azure IoT Hub, Azure IoT Central 및 Azure IoT Device Provisioning과 쉽게 통신할 수 있습니다. 이 리포지토리에는 라이브러리의 소스 코드, 설정 지침, 사용 시나리오를 보여주는 샘플이 포함되어 있습니다.
메모리가 메가바이트가 아닌 킬로바이트 단위로 측정되는 제한된 장치 의 경우 더 가벼운 SDK 옵션을 사용할 수 있습니다. 자세한 내용은 기타 Azure IoT SDK를 참조하세요.
모든 Azure IoT SDK 사용자는 이러한 서비스에 연결하는 SDK의 기능에 영향을 미치는 Azure IoT Hub 및 Device Provisioning Service에 대해 예정된 TLS 인증서 변경 사항을 알고 있는 것이 좋습니다. 2022년 10월에 두 서비스 모두 현재 Baltimore CyberTrust CA 루트에서 DigiCert Global G2 CA 루트로 마이그레이션됩니다. 연결 문제를 방지하기 위해 IoT 장치에 애플리케이션에 하드코딩되거나 WiFi 모듈에 플래시될 수 있는 볼티모어 및 Digicert 공개 인증서가 모두 있어야 하는 전환 기간이 미리 있을 것입니다.
볼티모어 공용 인증서만 있는 장치는 2022년 10월부터 Azure IoT Hub 및 Device Provisioning Service에 연결하는 기능을 잃게 됩니다.
이 변경에 대비하려면 장치의 TLS 스택에 이러한 공개 신뢰 루트 인증서가 모두 구성되어 있는지 확인하세요.
IoT 서비스가 이 작업을 수행하는 이유에 대한 자세한 설명은 이 문서를 참조하세요.
mbed 및 Arduino와 같이 제한된 장치 시나리오의 경우 더 좋고 가벼운 SDK 옵션을 사용할 수 있습니다. 자세한 내용은 기타 Azure IoT SDK를 참조하세요.
지원되는 플랫폼에서 Azure IoT SDK를 시작하는 가장 간단한 방법은 다음 패키지와 라이브러리를 사용하는 것입니다.
Arduino: Arduino IDE의 장치 SDK 라이브러리
Windows: Vcpkg의 장치 SDK
iOS: CocoaPod의 장치 SDK
iOS 제한사항
위에서 누락된 두 가지 기능을 포함하여 보다 완벽한 iOS 환경을 보려면 Embedded C SDK를 기반으로 구축된 샘플 네이티브 Swift 라이브러리를 참조하세요.
Linux를 포함한 다른 플랫폼의 경우 SDK를 직접 복제하고 빌드해야 합니다. 위의 플랫폼에 대해 직접 빌드할 수도 있습니다.
SDK에 사용할 수 있는 샘플이 많이 있습니다. 자세한 내용은 여기에서 확인할 수 있습니다.
C SDK에 대한 API 참조 문서는 여기에서 찾을 수 있습니다.
다른 언어로 된 Azure IoT SDK를 찾으려면 여기에서 지침을 참조하세요.
Azure IoT 애플리케이션 구축에 대해 자세히 알아보려면 Azure IoT 개발자 센터를 방문하세요.
IoT Hub는 MQTT, AMQP 및 HTTPS와 같이 디바이스가 연결할 수 있는 여러 프로토콜을 지원합니다. MQTT 및 AMQP는 선택적으로 WebSocket을 통해 실행될 수 있습니다. Device Client SDK를 사용하면 연결 생성 시 프로토콜을 선택할 수 있습니다.
장치/모듈 클라이언트 SDK는 선택적으로 IoT 플러그 앤 플레이 장치 생성을 허용합니다.
어떤 프로토콜을 사용해야 할지 잘 모르겠으면 MQTT 또는 MQTT-WS를 사용해야 합니다. MQTT는 AMQP보다 훨씬 적은 리소스를 필요로 하며 HTTPS보다 훨씬 더 많은 IoT Hub 기능을 지원합니다. AMQP나 HTTPS 모두 Azure IoT 플러그 앤 플레이와 같은 향후 새로운 기능에 대한 장치 클라이언트 SDK 구현이 보장되지 않습니다.
✔️ 기능 사용 가능 ✖️ 기능이 계획되었지만 지원되지 않음 ➖ 지원 계획 없음
특징 | mqtt | mqtt-ws | amqp | amqp-ws | https | 설명 |
---|---|---|---|---|---|---|
입증 | ✔️ | ✔️* | ✔️ | ✔️* | ✔️* | 개인 키, SASToken, X-509 자체 서명 및 CA(인증 기관) 서명을 포함하여 지원되는 인증을 사용하여 장치를 IoT Hub에 안전하게 연결하세요. *IoT Hub는 현재 AMQP 및 MQTT를 통해 서명된 X-509 CA만 지원합니다. |
장치-클라우드 메시지 보내기 | ✔️* | ✔️* | ✔️* | ✔️* | ✔️* | 사용자 지정 속성을 추가하는 옵션을 사용하여 IoT Hub에 디바이스-클라우드 메시지(최대 256KB)를 보냅니다. IoT Hub는 현재 AMQP 및 HTTPS를 통한 일괄 전송만 지원합니다. 이 SDK는 HTTP를 통한 일괄 전송을 지원합니다. * AMQP 및 AMQP-WS를 통한 일괄 전송 및 D2C 메시지에 대한 시스템 속성 추가가 진행 중입니다. |
클라우드-디바이스 메시지 수신 | ✔️* | ✔️* | ✔️ | ✔️ | ✔️ | C2D 메시지 완료/거부/포기 옵션을 사용하여 클라우드-디바이스 메시지를 수신하고 IoT Hub에서 관련 사용자 지정 및 시스템 속성을 읽습니다. *IoT Hub는 현재 HTTPS 및 AMQP를 통한 C2D 메시지 완료/거부/포기 옵션만 지원합니다. |
장치 쌍 | ✔️* | ✔️* | ✔️* | ✔️* | ➖ | IoT Hub는 IoT Hub에 연결하는 각 디바이스에 대해 디바이스 쌍을 유지합니다. 장치는 쌍 태그 가져오기, 원하는 속성 구독과 같은 작업을 수행할 수 있습니다. *보고된 속성 버전과 원하는 속성 버전 보내기가 진행 중입니다. |
직접 방법 | ✔️ | ✔️ | ✔️ | ✔️ | ➖ | IoT Hub는 클라우드에서 디바이스에 대한 직접 메서드를 호출하는 기능을 제공합니다. SDK는 메서드별 작업과 일반 작업을 위한 핸들러를 지원합니다. |
Blob에 파일 업로드 | ➖ | ➖ | ➖ | ➖ | ✔️ | 디바이스는 파일 업로드를 시작할 수 있으며 업로드가 완료되면 IoT Hub에 알립니다. 파일 업로드에는 HTTPS 연결이 필요하지만 다른 작업을 위해 프로토콜을 사용하여 클라이언트에서 시작할 수 있습니다. |
연결 상태 및 오류 보고 | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | IoT Hub 지원 오류 코드에 대한 오류 보고입니다. *이 SDK는 인증 및 장치를 찾을 수 없음에 대한 오류 보고를 지원합니다. |
재시도 정책 | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | 실패한 디바이스-클라우드 메시지에 대한 재시도 정책에는 시도하지 않음, 지터를 사용한 지수 백오프(기본값)라는 두 가지 옵션이 있습니다. *맞춤형 재시도 정책을 진행 중입니다. |
단일 연결을 통한 장치 다중화 | ➖ | ➖ | ✔️ | ✔️ | ✔️ | 멀티플렉싱에는 이 표에 나와 있는 것보다 더 많은 제한 사항이 있습니다. 자세한 내용은 이 문서를 참조하세요. |
연결 풀링 - 연결 수 지정 | ➖ | ➖ | ✖️ | ✖️ | ✖️ | |
Azure IoT 플러그 앤 플레이 지원 | ✔️ | ✔️ | ➖ | ➖ | ➖ | Azure IoT 플러그 앤 플레이 장치를 구축하는 기능. |
이 SDK에는 설정할 수 있는 옵션과 플랫폼별 기능도 포함되어 있습니다. 이 문서에서 세부 목록을 찾을 수 있습니다.
이 리포지토리에는 Device Provisioning Service용 프로비저닝 클라이언트 SDK가 포함되어 있습니다.
✔️ 기능 사용 가능 ✖️ 기능이 계획되었지만 지원되지 않음 ➖ 지원 계획 없음
특징 | mqtt | mqtt-ws | amqp | amqp-ws | https | 설명 |
---|---|---|---|---|---|---|
TPM 개별 등록 | ➖ | ➖ | Azure IoT C-SDK 내에서 utpm-c 라이브러리 지원 및 DPS-TPM 인증 지원이 중단됨을 발표합니다. 2023년 5월부터 Microsoft는 이 라이브러리에 대한 지원을 제공하지 않습니다. 이 라이브러리를 사용하는 기존 애플리케이션은 그대로 계속 작동합니다. tpm2tss OpenSSL 엔진을 사용하여 DPS-X509 인증으로 전환하는 것이 좋습니다. 신뢰할 수 있는 플랫폼 모듈을 사용하여 개별 등록을 통해 장치를 Device Provisioning Service에 연결하면 그대로 계속 작동합니다. 이 빠른 시작에서는 TPM을 통한 개별 등록을 위해 시뮬레이션된 디바이스를 만드는 방법을 검토합니다. MQTT를 통한 TPM은 현재 Device Provisioning Service에서 지원되지 않습니다. | |||
X.509 개별 등록 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | 이 SDK는 X.509 리프 인증서를 사용한 개별 등록을 통해 장치를 Device Provisioning Service에 연결하는 것을 지원합니다. 이 빠른 시작에서는 X.509를 사용한 개별 등록을 위한 시뮬레이션된 디바이스를 만드는 방법을 검토합니다. |
X.509 등록 그룹 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | 이 SDK는 X.509 루트 인증서를 사용하여 등록 그룹을 통해 장치를 Device Provisioning Service에 연결하는 것을 지원합니다. |
C용 IoT Hub 디바이스 SDK는 광범위한 OS 플랫폼 및 디바이스에서 사용할 수 있습니다.
최소 요구 사항은 장치 플랫폼이 다음을 지원하는 것입니다.
플랫폼 지원 세부정보는 이 문서에서 확인할 수 있습니다. IoT용 Azure Certified 장치 카탈로그에서 다양한 SDK가 테스트된 OS 플랫폼의 전체 목록을 찾을 수 있습니다. 이 페이지에 나열되지 않은 OS 및 하드웨어 플랫폼에서는 SDK를 계속 사용할 수 있습니다. 모든 SDK는 오픈 소스이며 이식 가능하도록 설계되었습니다. 보고할 제안, 피드백 또는 문제가 있는 경우 아래 기여 및 지원 섹션을 참조하세요.
C SDK 및 라이브러리:
저장소에서는 Linux, Windows 및 마이크로컨트롤러 플랫폼에서 C용 장치 클라이언트 SDK를 컴파일하고 실행하기 위한 지침과 빌드 도구를 찾을 수 있습니다(C용 장치 클라이언트 컴파일에 대한 자세한 내용은 위 링크를 참조하세요).
C용 디바이스 클라이언트 SDK를 새로운 플랫폼으로 포팅하는 것을 고려하고 계시다면 포팅 가이드 문서를 확인해 보세요.
MBED OS
기타 관련 참고 사항은 아래의 사용되지 않는 폴더를 참조하세요.
버그가 발생하거나 새로운 기능에 대한 제안이 있거나 이 프로젝트에 적극적으로 기여하고 싶다면 기여 지침에 제공된 지침을 따르십시오.
/c-utility, /deps, /umqtt, /uamqp
-
이는 다른 프로젝트와 공유되는 어댑터 및 프로토콜 구현과 같은 코드를 포함하는 git 하위 모듈입니다.
/build, /build_all
게이트 관련 폴더를 빌드하고 체크인합니다.
/certs
Azure IoT Hub와 통신하는 데 필요한 인증서가 포함되어 있습니다.
/doc
이 폴더에는 애플리케이션 개발 가이드와 장치 설정 지침이 포함되어 있습니다.
/iothub_client
라이브러리의 원시 메시징 기능을 제공하는 Azure IoT Hub 클라이언트 구성 요소가 포함되어 있습니다. 사용 방법에 대한 자세한 내용은 API 설명서 및 샘플을 참조하세요.
/provisioning_client
이 폴더에는 장치 프로비저닝 클라이언트용 클라이언트 라이브러리가 포함되어 있습니다.
/samples
SDK를 사용하여 더욱 복잡한 E2E 시나리오를 보여주는 샘플이 포함되어 있습니다.
/testtools
라이브러리 테스트에 사용되는 도구가 포함되어 있습니다.
/tools
기타 도구.
다음 폴더는 더 이상 사용되지 않습니다.
/iothub_service_client
장치에 메시지 보내기, 장치 ID 레지스트리 관리 등의 작업을 수행하기 위해 IoT Hub 서비스와의 상호 작용을 가능하게 하는 라이브러리가 포함되어 있습니다.
/provisioning_service_client
등록 관련 정책 설정과 같은 작업을 수행하기 위해 Device Proviosining 서비스와의 상호 작용을 가능하게 하는 라이브러리가 포함되어 있습니다.
/serializer
원시 메시징 라이브러리 외에 모델링 및 JSON 직렬화 기능을 제공하는 라이브러리가 포함되어 있습니다.
C SDK는 새로운 기능, 중요한 버그 수정 및 LTS(장기 지원)를 위한 릴리스를 제공합니다. 일반 버그 수정은 별도의 릴리스로 제공되지 않고 대신 LTS 릴리스에 포함됩니다. 버전 관리는 의미 체계 버전 관리 xyz
또는 major.minor.patch
를 따릅니다. 버전이 업데이트될 때마다 xyz
태그가 지정됩니다.
새로운 기능과 중요한 버그 수정(보안 업데이트 포함)이 메인 브랜치에 출시될 예정입니다. 이러한 릴리스에는 yyyy-mm-dd
형식의 날짜를 사용하여 태그가 지정됩니다. 기능 릴리스는 minor
버전을 높이고 patch
버전을 0으로 재설정합니다. 중요한 버그 수정은 patch
버전에만 적용됩니다.
새로운 LTS는 메인의 분기를 릴리스하고 LTS_
태그가 지정됩니다. 새로운 LTS 릴리스는 릴리스 당시의 메인 브랜치에서 버전을 상속받습니다. LTS 분기의 이름은 분기가 생성된 월과 연도를 나타내는 lts_mm_yyyy
입니다.
업데이트된 LTS 릴리스는 주요 버그 수정(보안 업데이트 포함)이 메인 브랜치에서 이식될 때 발생합니다. 이러한 업데이트된 릴리스는 범프된 Ref##(예: LTS_
를 제외하고 동일한 방식으로 태그가 지정됩니다. patch
버전도 올라올 예정입니다. 새로운 기능이나 일반적인 버그 수정은 LTS 업데이트로 포팅되지 않습니다.
다음은 릴리스된 패키지에 대한 LTS 분기의 매핑을 보여주는 표입니다.
패키지 | GitHub 지점 | LTS 태그 | LTS 시작 날짜 | 유지보수 종료 날짜 |
---|---|---|---|---|
vcpkg: 2024-08-12 | lts_08_2024 | LTS_08_2024 | 2024-08-12 | 2025-08-12 |
vcpkg: 2024-03-04 | lts_03_2024 | LTS_03_2024 | 2024-03-04 | 2025-03-04 |
'유지보수 종료일'은 해당 버전의 지원 종료일을 의미합니다.
다음은 C SDK의 버전 관리 및 태그 지정에 대한 가상의 예입니다. minor
버전은 색상으로 구분됩니다.
1.9.0
태그가 지정되며 릴리스 태그는 2020-02-23
입니다.LTS_07_2020
태그가 지정됩니다. 메인 브랜치는 1.10.0으로 변경되고 1.10.0
태그가 지정됩니다.2020-08-02
입니다.1.10.1
이며 릴리스 태그는 2020-09-28
입니다. 중요한 버그 수정은 lts_07_2020_ref02
라는 이름의 브랜치를 생성하여 lts 릴리스 LTS_07_2020
(및 기타 기존 LTS 브랜치)로 포팅되었으며 해당 버전은 1.9.1로 올라가고 1.9.1
및 LTS_07_2020_Ref02
태그가 지정되었습니다. 중요한 버그 수정의 일부였던 모든 하위 모듈에는 LTS_07_2020_Ref02
태그가 지정됩니다.1.11.0
태그가 지정되며 릴리스 태그는 2020-12-14
입니다.이 프로젝트는 Microsoft 오픈 소스 행동 강령을 채택했습니다. 자세한 내용은 행동 강령 FAQ를 참조하거나 추가 질문이나 의견이 있는 경우 [email protected]으로 문의하세요.
Microsoft는 Microsoft 제품 및 서비스를 제공 및 개선하고 사용자 경험을 향상시키는 데 사용될 수 있는 성능 및 사용 정보를 수집합니다. 자세히 알아보려면 개인정보 보호정책을 검토하세요.