Azure IOT Hub Device SDK ช่วยให้แอปพลิเคชันที่เขียนด้วยภาษา C99 หรือใหม่กว่า หรือ C++ สามารถสื่อสารกับ Azure IoT Hub, Azure IoT Central และ Azure IoT Device Provisioning ได้อย่างง่ายดาย ที่เก็บนี้ประกอบด้วยซอร์สโค้ดสำหรับไลบรารี คำแนะนำในการตั้งค่า และตัวอย่างที่สาธิตสถานการณ์การใช้งาน
สำหรับ อุปกรณ์ที่มีข้อจำกัด ซึ่งหน่วยความจำมีหน่วยเป็นกิโลไบต์ ไม่ใช่เมกะไบต์ มีตัวเลือก SDK ที่มีน้ำหนักเบากว่าให้เลือกอีกด้วย ดู Azure IoT SDK อื่นๆ เพื่อเรียนรู้เพิ่มเติม
ผู้ใช้ Azure IoT SDK ทั้งหมดควรทราบถึงการเปลี่ยนแปลงใบรับรอง TLS ที่จะเกิดขึ้นสำหรับ Azure IoT Hub และบริการจัดเตรียมอุปกรณ์ ซึ่งจะส่งผลต่อความสามารถของ SDK ในการเชื่อมต่อกับบริการเหล่านี้ ในเดือนตุลาคม 2022 บริการทั้งสองจะย้ายจากรากของ Baltimore CyberTrust CA ปัจจุบันไปเป็นรากของ DigiCert Global G2 CA จะมีช่วงการเปลี่ยนแปลงล่วงหน้าซึ่งอุปกรณ์ IoT ของคุณจะต้องมีใบรับรองสาธารณะทั้ง Baltimore และ Digicert ซึ่งอาจฮาร์ดโค้ดในแอปพลิเคชันหรือแฟลชบนโมดูล WiFi ของคุณ เพื่อป้องกันปัญหาการเชื่อมต่อ
อุปกรณ์ที่มีเฉพาะใบรับรองสาธารณะของบัลติมอร์จะสูญเสียความสามารถในการเชื่อมต่อกับ Azure IoT Hub และบริการจัดเตรียมอุปกรณ์ในเดือนตุลาคม 2022
เพื่อเตรียมพร้อมสำหรับการเปลี่ยนแปลงนี้ โปรดตรวจสอบให้แน่ใจว่าสแต็ก TLS ของอุปกรณ์มีการกำหนดค่าใบรับรองรูทสาธารณะของความน่าเชื่อถือทั้งสองนี้
สำหรับคำอธิบายเชิงลึกเพิ่มเติมว่าเหตุใดบริการ IoT จึงทำเช่นนี้ โปรดดูบทความนี้
โปรดทราบว่าสำหรับสถานการณ์อุปกรณ์ที่มีข้อจำกัด เช่น mbed และ Arduino จะมีตัวเลือก SDK ที่ดีกว่าและน้ำหนักเบากว่าให้เลือก ดู Azure IoT SDK อื่นๆ เพื่อเรียนรู้เพิ่มเติม
วิธีที่ง่ายที่สุดในการเริ่มต้นใช้งาน Azure IoT SDK บนแพลตฟอร์มที่รองรับคือการใช้แพ็คเกจและไลบรารีต่อไปนี้:
Arduino: ไลบรารี SDK อุปกรณ์ใน Arduino IDE
Windows: อุปกรณ์ SDK บน Vcpkg
iOS: Device SDK บน CocoaPod
ข้อจำกัดของ iOS
หากต้องการ ประสบการณ์ iOS ที่สมบูรณ์ยิ่งขึ้น รวมถึงคุณสมบัติที่ขาดหายไปทั้งสองประการข้างต้น โปรดดูตัวอย่างไลบรารี Swift แบบเนทีฟของเราที่สร้างเพิ่มเติมจาก Embedded C SDK
สำหรับแพลตฟอร์มอื่นๆ รวมถึง Linux คุณต้องโคลนและสร้าง SDK โดยตรง คุณสามารถสร้างได้โดยตรงสำหรับแพลตฟอร์มด้านบน
มีตัวอย่างมากมายสำหรับ SDK สามารถดูข้อมูลเพิ่มเติมได้ที่นี่
คุณสามารถดูเอกสารอ้างอิง API สำหรับ C SDK ได้ที่นี่
หากต้องการค้นหา Azure IoT SDK ในภาษาอื่นๆ โปรดดูคำแนะนำที่นี่
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการสร้างแอปพลิเคชัน Azure IoT คุณสามารถเยี่ยมชม Azure IoT Dev Center
IoT Hub รองรับหลายโปรโตคอลสำหรับอุปกรณ์ที่จะเชื่อมต่อด้วย: MQTT, AMQP และ HTTPS MQTT และ AMQP สามารถเลือกรันผ่าน WebSockets ได้ Device Client SDK ช่วยให้สามารถเลือกโปรโตคอลได้ในเวลาที่สร้างการเชื่อมต่อ
Device/Module Client SDK อนุญาตให้สร้างอุปกรณ์ IoT Plug and Play ได้
หากไม่แน่ใจว่าจะใช้โปรโตคอลใด คุณควรใช้ MQTT หรือ MQTT-WS MQTT ต้องการทรัพยากรน้อยกว่า AMQP มากและรองรับฟังก์ชันการทำงานของ IoT Hub มากกว่า HTTPS อย่างมาก ทั้ง AMQP และ HTTPS ไม่รับประกันว่าจะมีการใช้งาน Device Client SDK สำหรับคุณสมบัติใหม่ๆ ในอนาคต เช่น Azure IoT Plug and Play
✔️ มีฟีเจอร์ที่ใช้งานได้ ✖️ มีฟีเจอร์ที่วางแผนไว้แต่ไม่รองรับ ➖ ไม่มีการวางแผนรองรับ
คุณสมบัติ | ตรม | mqtt-ws | แอมคิวพี | amqp-ws | https | คำอธิบาย |
---|---|---|---|---|---|---|
การรับรองความถูกต้อง | * | * | * | เชื่อมต่ออุปกรณ์ของคุณกับ IoT Hub อย่างปลอดภัยด้วยการรับรองความถูกต้องที่รองรับ รวมถึงคีย์ส่วนตัว, SASToken, X-509 Self Signed และ Certificate Authority (CA) Signed *IoT Hub รองรับเฉพาะ X-509 CA ที่ลงนามผ่าน AMQP และ MQTT ในขณะนี้ | ||
ส่งข้อความจากอุปกรณ์สู่คลาวด์ | * | * | * | * | * | ส่งข้อความจากอุปกรณ์สู่คลาวด์ (สูงสุด 256KB) ไปยัง IoT Hub พร้อมตัวเลือกในการเพิ่มคุณสมบัติแบบกำหนดเอง IoT Hub รองรับการส่งเป็นชุดผ่าน AMQP และ HTTPS เท่านั้นในขณะนี้ SDK นี้รองรับการส่งเป็นชุดผ่าน HTTP * การส่งเป็นกลุ่มผ่าน AMQP และ AMQP-WS และเพิ่มคุณสมบัติของระบบในข้อความ D2C อยู่ระหว่างดำเนินการ |
รับข้อความจากคลาวด์ถึงอุปกรณ์ | * | * | รับข้อความจากระบบคลาวด์ไปยังอุปกรณ์และอ่านคุณสมบัติแบบกำหนดเองและระบบที่เกี่ยวข้องจาก IoT Hub พร้อมตัวเลือกในการกรอก/ปฏิเสธ/ละทิ้งข้อความ C2D *IoT Hub รองรับตัวเลือกในการกรอก/ปฏิเสธ/ละทิ้งข้อความ C2D ผ่าน HTTPS และ AMQP เท่านั้นในขณะนี้ | |||
อุปกรณ์แฝด | * | * | * | * | IoT Hub ยังคงมีอุปกรณ์แฝดสำหรับแต่ละอุปกรณ์ที่คุณเชื่อมต่อกับ IoT Hub อุปกรณ์สามารถดำเนินการต่างๆ เช่น รับแท็กคู่ สมัครสมาชิกคุณสมบัติที่ต้องการ *กำลังส่งเวอร์ชันคุณสมบัติที่รายงานและเวอร์ชันคุณสมบัติที่ต้องการ | |
วิธีการโดยตรง | IoT Hub ช่วยให้คุณสามารถเรียกใช้วิธีการโดยตรงบนอุปกรณ์จากระบบคลาวด์ได้ SDK รองรับตัวจัดการสำหรับการดำเนินการเฉพาะวิธีการและทั่วไป | |||||
อัปโหลดไฟล์ไปยัง Blob | อุปกรณ์สามารถเริ่มต้นการอัพโหลดไฟล์และแจ้งเตือน IoT Hub เมื่อการอัพโหลดเสร็จสิ้น การอัปโหลดไฟล์ต้องใช้การเชื่อมต่อ HTTPS แต่สามารถเริ่มต้นได้จากไคลเอนต์โดยใช้โปรโตคอลใดก็ได้สำหรับการดำเนินการอื่น | |||||
สถานะการเชื่อมต่อและการรายงานข้อผิดพลาด | * | * | * | * | การรายงานข้อผิดพลาดสำหรับรหัสข้อผิดพลาดที่รองรับ IoT Hub *SDK นี้รองรับการรายงานข้อผิดพลาดเกี่ยวกับการตรวจสอบสิทธิ์และไม่พบอุปกรณ์ | |
ลองนโยบายอีกครั้ง | * | * | * | * | นโยบายการลองใหม่สำหรับข้อความจากอุปกรณ์สู่คลาวด์ที่ไม่สำเร็จมีสองตัวเลือก: ไม่ลอง, แบ็คออฟแบบเอ็กซ์โปเนนเชียลพร้อมความกระวนกระวายใจ (ค่าเริ่มต้น) *กำลังดำเนินการนโยบายการลองใหม่แบบกำหนดเอง | |
อุปกรณ์มัลติเพล็กซ์ผ่านการเชื่อมต่อเดียว | มีข้อจำกัดในการมัลติเพล็กซ์มากกว่าที่บันทึกไว้ในตารางนี้ ดูเอกสารนี้สำหรับข้อมูลเพิ่มเติม | |||||
Connection Pooling - การระบุจำนวนการเชื่อมต่อ | ||||||
การสนับสนุน Plug and Play ของ Azure IoT | ความสามารถในการสร้างอุปกรณ์ Azure IoT Plug and Play |
SDK นี้ยังมีตัวเลือกที่คุณสามารถตั้งค่าและคุณลักษณะเฉพาะของแพลตฟอร์มได้อีกด้วย คุณสามารถดูรายการรายละเอียดได้ในเอกสารนี้
พื้นที่เก็บข้อมูลนี้มี SDK ไคลเอ็นต์การจัดเตรียมสำหรับบริการการจัดเตรียมอุปกรณ์
✔️ มีฟีเจอร์ที่ใช้งานได้ ✖️ มีฟีเจอร์ที่วางแผนไว้แต่ไม่รองรับ ➖ ไม่มีการวางแผนรองรับ
คุณสมบัติ | ตรม | mqtt-ws | แอมคิวพี | amqp-ws | https | คำอธิบาย |
---|---|---|---|---|---|---|
การลงทะเบียนบุคคล TPM | เรากำลังประกาศการเลิกใช้งานการสนับสนุนไลบรารี utpm-c และการสนับสนุนการรับรองความถูกต้อง DPS-TPM ภายใน Azure IoT C-SDK ตั้งแต่เดือนพฤษภาคม 2023 เป็นต้นไป Microsoft จะไม่ให้การสนับสนุนสำหรับไลบรารีนี้ แอปพลิเคชันที่มีอยู่ซึ่งใช้ไลบรารีนี้จะยังคงทำงานเหมือนเดิม เราขอแนะนำอย่างยิ่งให้เปลี่ยนไปใช้การตรวจสอบสิทธิ์ DPS-X509 โดยใช้ tpm2tss OpenSSL Engine การเชื่อมต่ออุปกรณ์ของคุณกับบริการจัดเตรียมอุปกรณ์ผ่านการลงทะเบียนส่วนบุคคลโดยใช้ Trusted Platform Module จะยังคงทำงานเหมือนเดิม การเริ่มต้นอย่างรวดเร็วนี้จะรีวิววิธีสร้างอุปกรณ์จำลองสำหรับการลงทะเบียน TPM แต่ละรายการ บริการจัดสรรอุปกรณ์ยังไม่รองรับ TPM ผ่าน MQTT ในขณะนี้ | |||||
X.509 การลงทะเบียนรายบุคคล | SDK นี้รองรับการเชื่อมต่ออุปกรณ์ของคุณกับบริการจัดสรรอุปกรณ์ผ่านการลงทะเบียนแต่ละรายการโดยใช้ใบรับรอง X.509 leaf การเริ่มต้นอย่างรวดเร็วนี้จะรีวิววิธีสร้างอุปกรณ์จำลองสำหรับการลงทะเบียนแต่ละรายการด้วย X.509 | |||||
กลุ่มการลงทะเบียน X.509 | SDK นี้รองรับการเชื่อมต่ออุปกรณ์ของคุณกับบริการจัดสรรอุปกรณ์ผ่านกลุ่มการลงทะเบียนโดยใช้ใบรับรองรูท X.509 |
SDK อุปกรณ์ IoT Hub สำหรับ C สามารถใช้ได้กับแพลตฟอร์มระบบปฏิบัติการและอุปกรณ์ที่หลากหลาย
ข้อกำหนดขั้นต่ำมีไว้สำหรับแพลตฟอร์มอุปกรณ์เพื่อรองรับสิ่งต่อไปนี้:
รายละเอียดการสนับสนุนแพลตฟอร์มมีอยู่ในเอกสารนี้ คุณสามารถดูรายการแพลตฟอร์มระบบปฏิบัติการทั้งหมดที่มีการทดสอบ SDK ต่างๆ ได้ในแค็ตตาล็อกอุปกรณ์ Azure Certified สำหรับอุปกรณ์ IoT โปรดทราบว่าคุณอาจยังคงใช้ SDK บนระบบปฏิบัติการและแพลตฟอร์มฮาร์ดแวร์ที่ไม่ได้ระบุไว้ในหน้านี้ได้ SDK ทั้งหมดเป็นแบบโอเพ่นซอร์สและออกแบบมาให้พกพาได้ หากคุณมีข้อเสนอแนะ ข้อเสนอแนะ หรือปัญหาที่ต้องรายงาน โปรดดูส่วนการสนับสนุนและการสนับสนุนด้านล่าง
C SDK และไลบรารี:
ในพื้นที่เก็บข้อมูล คุณจะพบคำแนะนำและสร้างเครื่องมือในการคอมไพล์และรัน SDK ไคลเอ็นต์อุปกรณ์สำหรับ C บนแพลตฟอร์ม Linux, Windows และไมโครคอนโทรลเลอร์ (โปรดดูลิงก์ด้านบนสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการคอมไพล์ไคลเอ็นต์อุปกรณ์สำหรับ C)
หากคุณกำลังพิจารณาที่จะย้าย SDK ไคลเอ็นต์อุปกรณ์สำหรับ C ไปยังแพลตฟอร์มใหม่ โปรดดูเอกสารคำแนะนำในการย้าย
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
มีตัวอย่างที่สาธิตสถานการณ์ E2E ที่ซับซ้อนมากขึ้นโดยใช้ SDK
/testtools
ประกอบด้วยเครื่องมือที่ใช้ในการทดสอบไลบรารี
/tools
เครื่องมือเบ็ดเตล็ด
โฟลเดอร์ต่อไปนี้เลิกใช้แล้ว
/iothub_service_client
ประกอบด้วยไลบรารีที่เปิดใช้งานการโต้ตอบกับบริการ IoT Hub เพื่อดำเนินการต่างๆ เช่น การส่งข้อความไปยังอุปกรณ์ และการจัดการการลงทะเบียนข้อมูลประจำตัวของอุปกรณ์
/provisioning_service_client
ประกอบด้วยไลบรารีที่เปิดใช้งานการโต้ตอบกับบริการ Device Proviosining เพื่อดำเนินการต่างๆ เช่น การตั้งค่านโยบายเกี่ยวกับการลงทะเบียน
/serializer
ประกอบด้วยไลบรารีที่ให้ความสามารถในการสร้างโมเดลและการจัดลำดับ JSON ที่ด้านบนของไลบรารีการรับส่งข้อความแบบ Raw
C SDK นำเสนอฟีเจอร์ใหม่ การแก้ไขข้อบกพร่องที่สำคัญ และการสนับสนุนระยะยาว (LTS) การแก้ไขข้อบกพร่องทั่วไปจะไม่ได้รับรุ่นแยกต่างหาก แต่จะรวมอยู่ในรุ่น LTS แทน การกำหนดเวอร์ชันเป็นไปตามการกำหนดเวอร์ชันเชิงความหมาย xyz
หรือ major.minor.patch
ทุกครั้งที่มีการอัปเดตเวอร์ชัน จะมีการแท็ก xyz
คุณสมบัติใหม่และการแก้ไขข้อบกพร่องที่สำคัญ (รวมถึงการอัปเดตความปลอดภัย) จะเปิดตัวในสาขาหลัก การเผยแพร่เหล่านี้จะถูกแท็กโดยใช้วันที่ในรูปแบบ yyyy-mm-dd
การเปิดตัวฟีเจอร์จะชนเวอร์ชัน minor
และรีเซ็ตเวอร์ชัน patch
เป็น 0 การแก้ไขข้อบกพร่องที่สำคัญจะกระแทกเวอร์ชัน patch
เท่านั้น
LTS ใหม่ออกสาขาออกจาก main และจะมีการแท็ก LTS_
LTS รุ่นใหม่จะสืบทอดเวอร์ชันจากสาขาหลัก ณ เวลาที่เผยแพร่ สาขา LTS จะมีชื่อว่า lts_mm_yyyy
สำหรับเดือนและปีที่สร้างสาขา
การเปิดตัว LTS ที่อัปเดตจะเกิดขึ้นเมื่อมีการย้ายการแก้ไขจุดบกพร่องที่สำคัญ (รวมถึงการอัปเดตความปลอดภัย) จากสาขาหลัก รุ่นที่อัปเดตเหล่านี้จะถูกแท็กในลักษณะเดียวกัน ยกเว้น Ref## ที่ถูกชน เช่น LTS_
เวอร์ชัน patch
จะถูกกระแทกด้วย ไม่มีฟีเจอร์ใหม่และการแก้ไขข้อบกพร่องทั่วไปที่จะถูกส่งไปยังการอัปเดต LTS
ด้านล่างนี้เป็นตารางที่แสดงการแมปสาขา LTS กับแพ็คเกจที่เผยแพร่
บรรจุุภัณฑ์ | สาขา GitHub | แท็ก LTS | วันที่เริ่มต้น LTS | วันที่สิ้นสุดการบำรุงรักษา |
---|---|---|---|---|
vcpkg: 12-08-2024 | lts_08_2024 | LTS_08_2024 | 12-08-2024 | 12-08-2025 |
vcpkg: 04-03-2024 | lts_03_2024 | LTS_03_2024 | 04-03-2024 | 04-03-2025 |
'วันที่สิ้นสุดการบำรุงรักษา' หมายถึงการสนับสนุนการสิ้นสุดอายุการใช้งานของเวอร์ชันที่เกี่ยวข้อง
ด้านล่างนี้คือตัวอย่างสมมุติของการกำหนดเวอร์ชันและการแท็กสำหรับ 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 release LTS_07_2020
(และสาขา LTS อื่นๆ ที่มีอยู่) โดยการสร้างสาขาที่มีชื่อ lts_07_2020_ref02
เวอร์ชันเพิ่มเป็น 1.9.1 และติดแท็ก 1.9.1
และ LTS_07_2020_Ref02
โมดูลย่อยใดๆ ที่เป็นส่วนหนึ่งของการแก้ไขข้อบกพร่องที่สำคัญจะถูกแท็กด้วย LTS_07_2020_Ref02
1.11.0
และการเปิดตัวมีแท็กเป็น 2020-12-14
โครงการนี้ได้นำหลักจรรยาบรรณของ Microsoft Open Source มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดดูคำถามที่พบบ่อยเกี่ยวกับจรรยาบรรณหรือติดต่อ [email protected] หากมีคำถามหรือความคิดเห็นเพิ่มเติม
Microsoft รวบรวมข้อมูลประสิทธิภาพและการใช้งานซึ่งอาจใช้เพื่อจัดหาและปรับปรุงผลิตภัณฑ์และบริการของ Microsoft และปรับปรุงประสบการณ์ของคุณ หากต้องการเรียนรู้เพิ่มเติม โปรดตรวจสอบคำชี้แจงสิทธิส่วนบุคคล