|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago | |
single-board-computer-connect-hub.md | 4 weeks ago | |
wio-terminal-connect-hub.md | 4 weeks ago |
README.md
ย้ายต้นไม้ของคุณไปยังคลาวด์
สเก็ตโน้ตโดย Nitya Narasimhan คลิกที่ภาพเพื่อดูขนาดใหญ่ขึ้น
บทเรียนนี้เป็นส่วนหนึ่งของ IoT for Beginners Project 2 - Digital Agriculture series จาก Microsoft Reactor
แบบทดสอบก่อนเรียน
บทนำ
ในบทเรียนที่ผ่านมา คุณได้เรียนรู้วิธีเชื่อมต่อพืชของคุณกับ MQTT broker และควบคุมรีเลย์จากโค้ดเซิร์ฟเวอร์ที่รันอยู่ในเครื่องของคุณเอง นี่เป็นแกนหลักของระบบรดน้ำอัตโนมัติที่เชื่อมต่ออินเทอร์เน็ต ซึ่งสามารถใช้ได้ตั้งแต่ต้นไม้ในบ้านไปจนถึงฟาร์มเชิงพาณิชย์
อุปกรณ์ IoT สื่อสารกับ MQTT broker สาธารณะเพื่อแสดงหลักการทำงาน แต่การใช้งานแบบนี้ไม่ใช่วิธีที่น่าเชื่อถือหรือปลอดภัยที่สุด ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับคลาวด์และความสามารถของ IoT ที่ให้บริการโดยผู้ให้บริการคลาวด์สาธารณะ รวมถึงวิธีการย้ายพืชของคุณไปยังบริการคลาวด์เหล่านี้จาก MQTT broker สาธารณะ
ในบทเรียนนี้เราจะครอบคลุม:
- คลาวด์คืออะไร?
- สร้างการสมัครใช้งานคลาวด์
- บริการ IoT บนคลาวด์
- สร้างบริการ IoT บนคลาวด์
- สื่อสารกับ IoT Hub
- เชื่อมต่ออุปกรณ์ของคุณกับบริการ IoT
คลาวด์คืออะไร?
ก่อนที่จะมีคลาวด์ เมื่อบริษัทต้องการให้บริการแก่พนักงาน (เช่น ฐานข้อมูลหรือการจัดเก็บไฟล์) หรือแก่สาธารณะ (เช่น เว็บไซต์) พวกเขาจะต้องสร้างและจัดการศูนย์ข้อมูลเอง ซึ่งอาจมีตั้งแต่ห้องที่มีคอมพิวเตอร์ไม่กี่เครื่องไปจนถึงอาคารที่มีคอมพิวเตอร์จำนวนมาก บริษัทจะต้องจัดการทุกอย่าง รวมถึง:
- การซื้อคอมพิวเตอร์
- การบำรุงรักษาฮาร์ดแวร์
- การจัดการพลังงานและการระบายความร้อน
- การเชื่อมต่อเครือข่าย
- ความปลอดภัย ทั้งในแง่ของอาคารและซอฟต์แวร์
- การติดตั้งและอัปเดตซอฟต์แวร์
สิ่งนี้อาจมีค่าใช้จ่ายสูง ต้องการพนักงานที่มีทักษะหลากหลาย และเปลี่ยนแปลงได้ช้า ตัวอย่างเช่น หากร้านค้าออนไลน์ต้องการเตรียมตัวสำหรับฤดูการขายที่คึกคัก พวกเขาจะต้องวางแผนล่วงหน้าเป็นเดือนเพื่อซื้อฮาร์ดแวร์เพิ่มเติม ตั้งค่า ติดตั้ง และติดตั้งซอฟต์แวร์เพื่อรองรับกระบวนการขาย หลังจากฤดูการขายสิ้นสุดลงและยอดขายลดลง พวกเขาจะเหลือคอมพิวเตอร์ที่ไม่ได้ใช้งานจนกว่าจะถึงฤดูการขายถัดไป
✅ คุณคิดว่าสิ่งนี้จะช่วยให้บริษัทเคลื่อนไหวได้รวดเร็วหรือไม่? หากร้านค้าเสื้อผ้าออนไลน์ได้รับความนิยมอย่างรวดเร็วเพราะคนดังสวมใส่เสื้อผ้าของพวกเขา พวกเขาจะสามารถเพิ่มกำลังการประมวลผลได้เร็วพอที่จะรองรับคำสั่งซื้อที่เพิ่มขึ้นอย่างรวดเร็วหรือไม่?
คอมพิวเตอร์ของคนอื่น
คลาวด์มักถูกล้อเลียนว่าเป็น 'คอมพิวเตอร์ของคนอื่น' แนวคิดเริ่มต้นนั้นง่ายมาก - แทนที่จะซื้อคอมพิวเตอร์ คุณเช่าคอมพิวเตอร์ของคนอื่น ผู้ให้บริการคลาวด์จะจัดการศูนย์ข้อมูลขนาดใหญ่ พวกเขาจะรับผิดชอบการซื้อและติดตั้งฮาร์ดแวร์ การจัดการพลังงานและการระบายความร้อน การเชื่อมต่อเครือข่าย ความปลอดภัยของอาคาร การอัปเดตฮาร์ดแวร์และซอฟต์แวร์ ทุกอย่าง ในฐานะลูกค้า คุณจะเช่าคอมพิวเตอร์ที่คุณต้องการ เช่าเพิ่มเมื่อความต้องการเพิ่มขึ้น และลดจำนวนที่เช่าเมื่อความต้องการลดลง ศูนย์ข้อมูลคลาวด์เหล่านี้มีอยู่ทั่วโลก
ศูนย์ข้อมูลเหล่านี้อาจมีขนาดหลายตารางกิโลเมตร ภาพด้านบนถ่ายเมื่อไม่กี่ปีก่อนที่ศูนย์ข้อมูลคลาวด์ของ Microsoft และแสดงขนาดเริ่มต้นพร้อมกับการขยายที่วางแผนไว้ พื้นที่ที่ถูกเคลียร์สำหรับการขยายมีขนาดมากกว่า 5 ตารางกิโลเมตร
💁 ศูนย์ข้อมูลเหล่านี้ต้องการพลังงานจำนวนมากจนบางแห่งมีสถานีไฟฟ้าของตัวเอง เนื่องจากขนาดและการลงทุนจากผู้ให้บริการคลาวด์ พวกเขามักจะเป็นมิตรต่อสิ่งแวดล้อมมากกว่า พวกเขามีประสิทธิภาพมากกว่าศูนย์ข้อมูลขนาดเล็กจำนวนมาก ใช้พลังงานหมุนเวียนเป็นหลัก และผู้ให้บริการคลาวด์ทำงานอย่างหนักเพื่อลดของเสีย ลดการใช้น้ำ และปลูกป่าทดแทนพื้นที่ที่ถูกตัดเพื่อสร้างศูนย์ข้อมูล คุณสามารถอ่านเพิ่มเติมเกี่ยวกับความยั่งยืนของผู้ให้บริการคลาวด์ได้ที่ Azure sustainability site
✅ ทำการค้นคว้า: อ่านเกี่ยวกับคลาวด์หลัก ๆ เช่น Azure จาก Microsoft หรือ GCP จาก Google พวกเขามีศูนย์ข้อมูลกี่แห่ง และตั้งอยู่ที่ไหนในโลก?
การใช้คลาวด์ช่วยลดต้นทุนสำหรับบริษัท และช่วยให้พวกเขามุ่งเน้นในสิ่งที่พวกเขาทำได้ดีที่สุด โดยปล่อยให้ความเชี่ยวชาญด้านคลาวด์เป็นหน้าที่ของผู้ให้บริการ บริษัทไม่จำเป็นต้องเช่าหรือซื้อพื้นที่ศูนย์ข้อมูล จ่ายเงินให้ผู้ให้บริการหลายรายสำหรับการเชื่อมต่อและพลังงาน หรือจ้างผู้เชี่ยวชาญอีกต่อไป แต่สามารถจ่ายบิลรายเดือนให้ผู้ให้บริการคลาวด์เพื่อดูแลทุกอย่างแทน
ผู้ให้บริการคลาวด์สามารถใช้ประโยชน์จากขนาดเศรษฐกิจเพื่อลดต้นทุน เช่น การซื้อคอมพิวเตอร์ในปริมาณมากในราคาที่ต่ำกว่า การลงทุนในเครื่องมือเพื่อลดภาระงานในการบำรุงรักษา หรือแม้กระทั่งการออกแบบและสร้างฮาร์ดแวร์ของตัวเองเพื่อปรับปรุงข้อเสนอคลาวด์ของพวกเขา
Microsoft Azure
Azure เป็นคลาวด์สำหรับนักพัฒนาจาก Microsoft และเป็นคลาวด์ที่คุณจะใช้ในบทเรียนนี้ วิดีโอด้านล่างให้ภาพรวมสั้น ๆ เกี่ยวกับ Azure:
สร้างการสมัครใช้งานคลาวด์
ในการใช้บริการบนคลาวด์ คุณจะต้องสมัครใช้งานกับผู้ให้บริการคลาวด์ สำหรับบทเรียนนี้ คุณจะสมัครใช้งาน Microsoft Azure หากคุณมีการสมัครใช้งาน Azure อยู่แล้ว คุณสามารถข้ามงานนี้ได้ รายละเอียดการสมัครใช้งานที่อธิบายไว้ที่นี่ถูกต้องในขณะที่เขียน แต่สามารถเปลี่ยนแปลงได้
💁 หากคุณเข้าถึงบทเรียนเหล่านี้ผ่านโรงเรียนของคุณ คุณอาจมีการสมัครใช้งาน Azure อยู่แล้ว ตรวจสอบกับครูของคุณ
มีการสมัครใช้งาน Azure ฟรีสองประเภทที่คุณสามารถสมัครได้:
-
Azure for Students - การสมัครใช้งานนี้ออกแบบมาสำหรับนักเรียนอายุ 18 ปีขึ้นไป คุณไม่จำเป็นต้องใช้บัตรเครดิตในการสมัคร และใช้ที่อยู่อีเมลของโรงเรียนเพื่อยืนยันว่าคุณเป็นนักเรียน เมื่อคุณสมัคร คุณจะได้รับเครดิตมูลค่า 100 ดอลลาร์สหรัฐฯ สำหรับใช้ในทรัพยากรคลาวด์ พร้อมบริการฟรี รวมถึงเวอร์ชันฟรีของบริการ IoT การสมัครนี้มีอายุ 12 เดือน และสามารถต่ออายุได้ทุกปีที่คุณยังคงเป็นนักเรียน
-
Azure free subscription - การสมัครใช้งานนี้สำหรับทุกคนที่ไม่ใช่นักเรียน คุณจะต้องใช้บัตรเครดิตในการสมัคร แต่บัตรของคุณจะไม่ถูกเรียกเก็บเงิน ใช้เพียงเพื่อยืนยันว่าคุณเป็นมนุษย์จริง ๆ ไม่ใช่บอท คุณจะได้รับเครดิตมูลค่า 200 ดอลลาร์สหรัฐฯ สำหรับใช้ใน 30 วันแรกในบริการใด ๆ พร้อมกับระดับฟรีของบริการ Azure เมื่อเครดิตของคุณหมด บัตรของคุณจะไม่ถูกเรียกเก็บเงิน เว้นแต่คุณจะเปลี่ยนเป็นการสมัครใช้งานแบบจ่ายตามการใช้งาน
💁 Microsoft มีการสมัครใช้งาน Azure for Students Starter สำหรับนักเรียนที่อายุต่ำกว่า 18 ปี แต่ในขณะที่เขียนนี้ยังไม่รองรับบริการ IoT ใด ๆ
งาน - สมัครใช้งานคลาวด์ฟรี
หากคุณเป็นนักเรียนอายุ 18 ปีขึ้นไป คุณสามารถสมัครใช้งาน Azure for Students ได้ คุณจะต้องยืนยันด้วยที่อยู่อีเมลของโรงเรียน คุณสามารถทำได้สองวิธี:
-
สมัครใช้งาน GitHub student developer pack ที่ education.github.com/pack สิ่งนี้จะให้คุณเข้าถึงเครื่องมือและข้อเสนอหลากหลาย รวมถึง GitHub และ Microsoft Azure เมื่อคุณสมัครใช้งาน developer pack คุณสามารถเปิดใช้งานข้อเสนอ Azure for Students ได้
-
สมัครใช้งานบัญชี Azure for Students โดยตรงที่ azure.microsoft.com/free/students
⚠️ หากที่อยู่อีเมลของโรงเรียนของคุณไม่ได้รับการยอมรับ ให้แจ้ง ปัญหาใน repo นี้ และเราจะดูว่ามันสามารถเพิ่มในรายการอนุญาตของ Azure for Students ได้หรือไม่
หากคุณไม่ใช่นักเรียน หรือไม่มีที่อยู่อีเมลของโรงเรียนที่ถูกต้อง คุณสามารถสมัครใช้งาน Azure Free subscription ได้
- สมัครใช้งาน Azure Free Subscription ที่ azure.microsoft.com/free
บริการ IoT บนคลาวด์
MQTT broker สาธารณะที่คุณใช้งานเป็นเครื่องมือที่ดีสำหรับการเรียนรู้ แต่มีข้อเสียหลายประการเมื่อใช้ในเชิงพาณิชย์:
- ความน่าเชื่อถือ - เป็นบริการฟรีที่ไม่มีการรับประกัน และอาจถูกปิดได้ทุกเมื่อ
- ความปลอดภัย - เป็นสาธารณะ ดังนั้นใคร ๆ ก็สามารถฟังข้อมูลของคุณหรือส่งคำสั่งเพื่อควบคุมฮาร์ดแวร์ของคุณได้
- ประสิทธิภาพ - ออกแบบมาสำหรับข้อความทดสอบเพียงไม่กี่ข้อความ จึงไม่สามารถรองรับข้อความจำนวนมากได้
- การค้นพบ - ไม่มีวิธีที่จะรู้ว่าอุปกรณ์ใดเชื่อมต่ออยู่
บริการ IoT บนคลาวด์ช่วยแก้ปัญหาเหล่านี้ พวกเขาได้รับการดูแลโดยผู้ให้บริการคลาวด์รายใหญ่ที่ลงทุนอย่างหนักในความน่าเชื่อถือและพร้อมที่จะแก้ไขปัญหาที่อาจเกิดขึ้น พวกเขามีความปลอดภัยในตัวเพื่อป้องกันแฮกเกอร์จากการอ่านข้อมูลของคุณหรือส่งคำสั่งที่ไม่พึงประสงค์ นอกจากนี้ยังมีประสิทธิภาพสูง สามารถจัดการข้อความหลายล้านข้อความต่อวัน โดยใช้ประโยชน์จากคลาวด์เพื่อปรับขนาดตามความต้องการ
💁 แม้ว่าคุณจะต้องจ่ายค่าบริการเหล่านี้เป็นรายเดือน แต่ผู้ให้บริการคลาวด์ส่วนใหญ่มีเวอร์ชันฟรีของบริการ IoT ที่มีข้อจำกัด เช่น จำนวนข้อความต่อวันหรือจำนวนอุปกรณ์ที่สามารถเชื่อมต่อได้ เวอร์ชันฟรีนี้มักเพียงพอสำหรับนักพัฒนาในการเรียนรู้เกี่ยวกับบริการ ในบทเรียนนี้คุณจะใช้เวอร์ชันฟรี
อุปกรณ์ IoT เชื่อมต่อกับบริการคลาวด์โดยใช้ device SDK (ไลบรารีที่ให้โค้ดสำหรับทำงานร่วมกับฟีเจอร์ของบริการ) หรือโดยตรงผ่านโปรโตคอลการสื่อสาร เช่น MQTT หรือ HTTP โดยปกติ device SDK จะเป็นเส้นทางที่ง่ายที่สุด เนื่องจากจัดการทุกอย่างให้คุณ เช่น การรู้ว่าควรเผยแพร่หรือสมัครสมาชิกหัวข้อใด และวิธีจัดการความปลอดภัย
จากนั้นอุปกรณ์ของคุณจะสื่อสารกับส่วนอื่น ๆ ของแอปพลิเคชันของคุณผ่านบริการนี้ - คล้ายกับที่คุณส่งข้อมูลและรับคำสั่งผ่าน MQTT โดยปกติจะใช้ service SDK หรือไลบรารีที่คล้ายกัน ข้อความจะมาจากอุปกรณ์ของคุณไปยังบริการ ซึ่งส่วนประกอบอื่น ๆ ของแอปพลิเคชันของคุณสามารถอ่านได้ จากนั้นข้อความสามารถส่งกลับไปยังอุปกรณ์ของคุณได้
บริการเหล่านี้มีการรักษาความปลอดภัยโดยการรู้จักอุปกรณ์ทั้งหมดที่สามารถเชื่อมต่อและส่งข้อมูลได้ ไม่ว่าจะโดยการลงทะเบียนอุปกรณ์ล่วงหน้ากับบริการ หรือโดยการให้อุปกรณ์มีคีย์ลับหรือใบรับรองที่สามารถใช้ลงทะเบียนตัวเองกับบริการได้เมื่อเชื่อมต่อครั้งแรก อุปกรณ์ที่ไม่รู้จักจะไม่สามารถเชื่อมต่อได้ หากพยายาม บริการจะปฏิเสธการเชื่อมต่อและเพิกเฉยต่อข้อความที่ส่งมา
✅ ทำการค้นคว้า: ข้อเสียของการมีบริการ IoT แบบเปิดที่อุปกรณ์หรือโค้ดใด ๆ สามารถเชื่อมต่อได้คืออะไร? คุณสามารถหาตัวอย่างเฉพาะของแฮกเกอร์ที่ใช้ประโยชน์จากสิ่งนี้ได้หรือไม่?
ส่วนประกอบอื่น ๆ ของแอปพลิเคชันของคุณสามารถเชื่อมต่อกับบริการ IoT และเรียนรู้เกี่ยวกับอุปกรณ์ทั้งหมดที่เชื่อมต่อหรือที่ลงทะเบียนไว้ และสื่อสารกับพวกเขาได้โดยตรงทั้งแบบกลุ่มหรือแบบรายบุคคล 💁 บริการ IoT ยังมีความสามารถเพิ่มเติม และผู้ให้บริการคลาวด์ก็มีบริการและแอปพลิเคชันเพิ่มเติมที่สามารถเชื่อมต่อกับบริการได้เช่นกัน ตัวอย่างเช่น หากคุณต้องการจัดเก็บข้อความเทเลเมทรีทั้งหมดที่ส่งมาจากอุปกรณ์ทั้งหมดในฐานข้อมูล โดยปกติแล้วจะใช้เพียงไม่กี่คลิกในเครื่องมือการตั้งค่าของผู้ให้บริการคลาวด์เพื่อเชื่อมต่อบริการกับฐานข้อมูลและสตรีมข้อมูลเข้าไป
สร้างบริการ IoT บนคลาวด์
เมื่อคุณมีการสมัครใช้งาน Azure แล้ว คุณสามารถลงทะเบียนเพื่อใช้งานบริการ IoT ได้ บริการ IoT จาก Microsoft เรียกว่า Azure IoT Hub
วิดีโอด้านล่างนี้ให้ภาพรวมสั้น ๆ เกี่ยวกับ Azure IoT Hub:
🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอ
✅ ใช้เวลาสักครู่เพื่อค้นคว้าและอ่านภาพรวมของ IoT Hub ใน เอกสาร Microsoft IoT Hub
บริการคลาวด์ที่มีอยู่ใน Azure สามารถกำหนดค่าได้ผ่านพอร์ทัลบนเว็บ หรือผ่านอินเทอร์เฟซบรรทัดคำสั่ง (CLI) สำหรับงานนี้ คุณจะใช้ CLI
งาน - ติดตั้ง Azure CLI
ในการใช้ Azure CLI คุณต้องติดตั้ง CLI บน PC หรือ Mac ของคุณก่อน
-
ทำตามคำแนะนำใน เอกสาร Azure CLI เพื่อทำการติดตั้ง CLI
-
Azure CLI รองรับส่วนขยายหลายตัวที่เพิ่มความสามารถในการจัดการบริการ Azure หลากหลายประเภท ติดตั้งส่วนขยาย IoT โดยรันคำสั่งต่อไปนี้จากบรรทัดคำสั่งหรือเทอร์มินัลของคุณ:
az extension add --name azure-iot
-
จากบรรทัดคำสั่งหรือเทอร์มินัลของคุณ รันคำสั่งต่อไปนี้เพื่อเข้าสู่ระบบการสมัครใช้งาน Azure ของคุณจาก Azure CLI
az login
หน้าต่างเว็บจะเปิดขึ้นในเบราว์เซอร์เริ่มต้นของคุณ เข้าสู่ระบบโดยใช้บัญชีที่คุณใช้สมัครใช้งาน Azure เมื่อคุณเข้าสู่ระบบแล้ว คุณสามารถปิดแท็บเบราว์เซอร์ได้
-
หากคุณมีการสมัครใช้งาน Azure หลายรายการ เช่น การสมัครที่โรงเรียนจัดหาให้ และการสมัคร Azure for Students ของคุณเอง คุณจะต้องเลือกการสมัครที่คุณต้องการใช้ รันคำสั่งต่อไปนี้เพื่อแสดงรายการการสมัครทั้งหมดที่คุณสามารถเข้าถึงได้:
az account list --output table
ในผลลัพธ์ คุณจะเห็นชื่อของแต่ละการสมัครพร้อมกับ
SubscriptionId
➜ ~ az account list --output table Name CloudName SubscriptionId State IsDefault ---------------------- ----------- ------------------------------------ ------- ----------- School-subscription AzureCloud cb30cde9-814a-42f0-a111-754cb788e4e1 Enabled True Azure for Students AzureCloud fa51c31b-162c-4599-add6-781def2e1fbf Enabled False
เพื่อเลือกการสมัครที่คุณต้องการใช้ ใช้คำสั่งต่อไปนี้:
az account set --subscription <SubscriptionId>
แทนที่
<SubscriptionId>
ด้วย Id ของการสมัครที่คุณต้องการใช้ หลังจากรันคำสั่งนี้ ให้รันคำสั่งเพื่อแสดงรายการบัญชีของคุณอีกครั้ง คุณจะเห็นคอลัมน์IsDefault
ถูกทำเครื่องหมายเป็นTrue
สำหรับการสมัครที่คุณเพิ่งตั้งค่า
งาน - สร้างกลุ่มทรัพยากร
บริการ Azure เช่น อินสแตนซ์ IoT Hub, เครื่องเสมือน, ฐานข้อมูล หรือบริการ AI ถูกเรียกว่า ทรัพยากร ทุกทรัพยากรต้องอยู่ภายใน กลุ่มทรัพยากร ซึ่งเป็นการจัดกลุ่มเชิงตรรกะของทรัพยากรหนึ่งหรือมากกว่า
💁 การใช้กลุ่มทรัพยากรหมายความว่าคุณสามารถจัดการบริการหลายตัวพร้อมกันได้ ตัวอย่างเช่น เมื่อคุณเรียนจบทุกบทเรียนสำหรับโปรเจกต์นี้ คุณสามารถลบกลุ่มทรัพยากร และทรัพยากรทั้งหมดในนั้นจะถูกลบโดยอัตโนมัติ
-
มีศูนย์ข้อมูล Azure หลายแห่งทั่วโลก แบ่งออกเป็นภูมิภาค เมื่อคุณสร้างทรัพยากรหรือกลุ่มทรัพยากรใน Azure คุณต้องระบุว่าคุณต้องการสร้างที่ไหน รันคำสั่งต่อไปนี้เพื่อรับรายการตำแหน่งที่ตั้ง:
az account list-locations --output table
คุณจะเห็นรายการตำแหน่งที่ตั้ง รายการนี้จะยาว
💁 ณ เวลาที่เขียน มี 65 ตำแหน่งที่คุณสามารถปรับใช้ได้
➜ ~ az account list-locations --output table DisplayName Name RegionalDisplayName ------------------------ ------------------- ------------------------------------- East US eastus (US) East US East US 2 eastus2 (US) East US 2 South Central US southcentralus (US) South Central US ...
จดค่าจากคอลัมน์
Name
ของภูมิภาคที่ใกล้คุณที่สุด คุณสามารถค้นหาภูมิภาคบนแผนที่ใน หน้าภูมิศาสตร์ Azure -
รันคำสั่งต่อไปนี้เพื่อสร้างกลุ่มทรัพยากรชื่อ
soil-moisture-sensor
ชื่อกลุ่มทรัพยากรต้องไม่ซ้ำกันในบัญชีของคุณaz group create --name soil-moisture-sensor \ --location <location>
แทนที่
<location>
ด้วยตำแหน่งที่คุณเลือกในขั้นตอนก่อนหน้า
งาน - สร้าง IoT Hub
ตอนนี้คุณสามารถสร้างทรัพยากร IoT Hub ในกลุ่มทรัพยากรของคุณได้แล้ว
-
ใช้คำสั่งต่อไปนี้เพื่อสร้างทรัพยากร IoT Hub ของคุณ:
az iot hub create --resource-group soil-moisture-sensor \ --sku F1 \ --partition-count 2 \ --name <hub_name>
แทนที่
<hub_name>
ด้วยชื่อสำหรับฮับของคุณ ชื่อนี้ต้องไม่ซ้ำกันทั่วโลก - นั่นคือไม่มี IoT Hub อื่นที่สร้างโดยใครก็ตามที่สามารถมีชื่อเดียวกันได้ ชื่อนี้ใช้ใน URL ที่ชี้ไปยังฮับ ดังนั้นต้องไม่ซ้ำกัน ใช้บางอย่างเช่นsoil-moisture-sensor-
และเพิ่มตัวระบุที่ไม่ซ้ำกัน เช่น คำสุ่มหรือชื่อของคุณตัวเลือก
--sku F1
บอกให้ใช้ระดับฟรี ระดับฟรีรองรับข้อความ 8,000 ข้อความต่อวันพร้อมกับฟีเจอร์ส่วนใหญ่ของระดับที่มีค่าใช้จ่ายเต็มราคา🎓 ระดับราคาต่าง ๆ ของบริการ Azure เรียกว่า tiers แต่ละ tier มีค่าใช้จ่ายต่างกันและให้ฟีเจอร์หรือปริมาณข้อมูลที่แตกต่างกัน
💁 หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการกำหนดราคา คุณสามารถตรวจสอบ คู่มือการกำหนดราคา Azure IoT Hub
ตัวเลือก
--partition-count 2
กำหนดจำนวนสตรีมข้อมูลที่ IoT Hub รองรับ พาร์ติชันมากขึ้นช่วยลดการบล็อกข้อมูลเมื่อมีหลายสิ่งอ่านและเขียนจาก IoT Hub พาร์ติชันอยู่นอกขอบเขตของบทเรียนเหล่านี้ แต่ค่านี้ต้องถูกตั้งค่าเพื่อสร้าง IoT Hub ระดับฟรี💁 คุณสามารถมี IoT Hub ระดับฟรีได้เพียงหนึ่งตัวต่อการสมัคร
IoT Hub จะถูกสร้างขึ้น อาจใช้เวลาสักครู่เพื่อให้เสร็จสมบูรณ์
สื่อสารกับ IoT Hub
ในบทเรียนก่อนหน้านี้ คุณใช้ MQTT และส่งข้อความไปกลับในหัวข้อที่แตกต่างกัน โดยหัวข้อที่แตกต่างกันมีวัตถุประสงค์ที่แตกต่างกัน แทนที่จะส่งข้อความผ่านหัวข้อที่แตกต่างกัน IoT Hub มีวิธีการที่กำหนดไว้หลายวิธีสำหรับอุปกรณ์ในการสื่อสารกับ Hub หรือสำหรับ Hub ในการสื่อสารกับอุปกรณ์
💁 เบื้องหลังการสื่อสารระหว่าง IoT Hub และอุปกรณ์ของคุณสามารถใช้ MQTT, HTTPS หรือ AMQP
-
ข้อความจากอุปกรณ์ไปยังคลาวด์ (D2C) - ข้อความเหล่านี้ถูกส่งจากอุปกรณ์ไปยัง IoT Hub เช่น ข้อมูลเทเลเมทรี ข้อความเหล่านี้สามารถอ่านออกจาก IoT Hub โดยโค้ดแอปพลิเคชันของคุณ
🎓 เบื้องหลัง IoT Hub ใช้บริการ Azure ที่เรียกว่า Event Hubs เมื่อคุณเขียนโค้ดเพื่ออ่านข้อความที่ส่งไปยังฮับ ข้อความเหล่านี้มักถูกเรียกว่า events
-
ข้อความจากคลาวด์ไปยังอุปกรณ์ (C2D) - ข้อความเหล่านี้ถูกส่งจากโค้ดแอปพลิเคชัน ผ่าน IoT Hub ไปยังอุปกรณ์ IoT
-
คำขอวิธีการโดยตรง - ข้อความเหล่านี้ถูกส่งจากโค้ดแอปพลิเคชันผ่าน IoT Hub ไปยังอุปกรณ์ IoT เพื่อขอให้อุปกรณ์ทำบางสิ่ง เช่น ควบคุม actuator ข้อความเหล่านี้ต้องการการตอบกลับเพื่อให้โค้ดแอปพลิเคชันของคุณทราบว่ามันถูกประมวลผลสำเร็จหรือไม่
-
Device twins - เอกสาร JSON เหล่านี้ถูกเก็บไว้ให้สอดคล้องกันระหว่างอุปกรณ์และ IoT Hub และใช้เพื่อเก็บการตั้งค่าหรือคุณสมบัติอื่น ๆ ที่รายงานโดยอุปกรณ์ หรือควรตั้งค่าในอุปกรณ์ (เรียกว่า desired) โดย IoT Hub
IoT Hub สามารถเก็บข้อความและคำขอวิธีการโดยตรงไว้ในระยะเวลาที่กำหนดค่าได้ (ค่าเริ่มต้นคือหนึ่งวัน) ดังนั้นหากอุปกรณ์หรือโค้ดแอปพลิเคชันสูญเสียการเชื่อมต่อ มันยังสามารถดึงข้อความที่ส่งในขณะที่มันออฟไลน์หลังจากที่มันเชื่อมต่อใหม่ Device twins จะถูกเก็บไว้ถาวรใน IoT Hub ดังนั้นในทุกเวลาอุปกรณ์สามารถเชื่อมต่อใหม่และรับ device twin ล่าสุดได้
✅ ทำการค้นคว้า: อ่านเพิ่มเติมเกี่ยวกับประเภทข้อความเหล่านี้ใน คำแนะนำการสื่อสารจากอุปกรณ์ไปยังคลาวด์ และ คำแนะนำการสื่อสารจากคลาวด์ไปยังอุปกรณ์ ในเอกสาร IoT Hub
เชื่อมต่ออุปกรณ์ของคุณกับบริการ IoT
เมื่อฮับถูกสร้างขึ้น อุปกรณ์ IoT ของคุณสามารถเชื่อมต่อกับมันได้ เฉพาะอุปกรณ์ที่ลงทะเบียนแล้วเท่านั้นที่สามารถเชื่อมต่อกับบริการได้ ดังนั้นคุณจะต้องลงทะเบียนอุปกรณ์ของคุณก่อน เมื่อคุณลงทะเบียน คุณจะได้รับสตริงการเชื่อมต่อที่อุปกรณ์สามารถใช้เพื่อเชื่อมต่อ สตริงการเชื่อมต่อนี้เป็นแบบเฉพาะอุปกรณ์ และมีข้อมูลเกี่ยวกับ IoT Hub, อุปกรณ์ และคีย์ลับที่อนุญาตให้อุปกรณ์นี้เชื่อมต่อ
🎓 สตริงการเชื่อมต่อเป็นคำทั่วไปสำหรับข้อความที่มีรายละเอียดการเชื่อมต่อ ข้อความเหล่านี้ถูกใช้เมื่อเชื่อมต่อกับ IoT Hubs, ฐานข้อมูล และบริการอื่น ๆ อีกมากมาย โดยปกติจะประกอบด้วยตัวระบุสำหรับบริการ เช่น URL และข้อมูลความปลอดภัย เช่น คีย์ลับ ข้อความเหล่านี้ถูกส่งไปยัง SDK เพื่อเชื่อมต่อกับบริการ
⚠️ สตริงการเชื่อมต่อควรเก็บไว้ให้ปลอดภัย! ความปลอดภัยจะถูกกล่าวถึงในรายละเอียดเพิ่มเติมในบทเรียนถัดไป
งาน - ลงทะเบียนอุปกรณ์ IoT ของคุณ
อุปกรณ์ IoT สามารถลงทะเบียนกับ IoT Hub ของคุณโดยใช้ Azure CLI
-
รันคำสั่งต่อไปนี้เพื่อลงทะเบียนอุปกรณ์:
az iot hub device-identity create --device-id soil-moisture-sensor \ --hub-name <hub_name>
แทนที่
<hub_name>
ด้วยชื่อที่คุณใช้สำหรับ IoT Hub ของคุณสิ่งนี้จะสร้างอุปกรณ์ที่มี ID เป็น
soil-moisture-sensor
-
เมื่ออุปกรณ์ IoT ของคุณเชื่อมต่อกับ IoT Hub โดยใช้ SDK มันต้องใช้สตริงการเชื่อมต่อที่ให้ URL ของฮับ พร้อมกับคีย์ลับ รันคำสั่งต่อไปนี้เพื่อรับสตริงการเชื่อมต่อ:
az iot hub device-identity connection-string show --device-id soil-moisture-sensor \ --output table \ --hub-name <hub_name>
แทนที่
<hub_name>
ด้วยชื่อที่คุณใช้สำหรับ IoT Hub ของคุณ -
เก็บสตริงการเชื่อมต่อที่แสดงในผลลัพธ์ไว้ เพราะคุณจะต้องใช้มันในภายหลัง
งาน - เชื่อมต่ออุปกรณ์ IoT ของคุณกับคลาวด์
ทำตามคู่มือที่เกี่ยวข้องเพื่อเชื่อมต่ออุปกรณ์ IoT ของคุณกับคลาวด์:
งาน - ตรวจสอบเหตุการณ์
สำหรับตอนนี้ คุณจะยังไม่อัปเดตโค้ดเซิร์ฟเวอร์ของคุณ แต่คุณสามารถใช้ Azure CLI เพื่อตรวจสอบเหตุการณ์จากอุปกรณ์ IoT ของคุณได้
-
ตรวจสอบให้อุปกรณ์ IoT ของคุณกำลังทำงานและส่งค่าความชื้นในดิน
-
รันคำสั่งต่อไปนี้ในพรอมต์คำสั่งหรือเทอร์มินัลของคุณเพื่อตรวจสอบข้อความที่ส่งไปยัง IoT Hub ของคุณ:
az iot hub monitor-events --hub-name <hub_name>
แทนที่
<hub_name>
ด้วยชื่อที่คุณใช้สำหรับ IoT Hub ของคุณคุณจะเห็นข้อความปรากฏในผลลัพธ์คอนโซลเมื่อมันถูกส่งโดยอุปกรณ์ IoT ของคุณ
Starting event monitor, use ctrl-c to stop... { "event": { "origin": "soil-moisture-sensor", "module": "", "interface": "", "component": "", "payload": "{\"soil_moisture\": 376}" } }, { "event": { "origin": "soil-moisture-sensor", "module": "", "interface": "", "component": "", "payload": "{\"soil_moisture\": 381}" } }
เนื้อหาของ
payload
จะตรงกับข้อความที่ส่งโดยอุปกรณ์ IoT ของคุณณ เวลาที่เขียน ส่วนขยาย
az iot
ยังไม่ทำงานเต็มรูปแบบบน Apple Silicon หากคุณใช้อุปกรณ์ Apple Silicon คุณจะต้องตรวจสอบข้อความด้วยวิธีอื่น เช่น ใช้ Azure IoT Tools สำหรับ Visual Studio Code -
ข้อความเหล่านี้มีคุณสมบัติจำนวนหนึ่งที่แนบมาด้วยโดยอัตโนมัติ เช่น เวลาที่ส่ง คุณสมบัติเหล่านี้เรียกว่า annotations เพื่อดู annotations ของข้อความทั้งหมด ใช้คำสั่งต่อไปนี้:
az iot hub monitor-events --properties anno --hub-name <hub_name>
แทนที่
<hub_name>
ด้วยชื่อที่คุณใช้สำหรับ IoT Hub ของคุณคุณจะเห็นข้อความปรากฏในผลลัพธ์คอนโซลเมื่อมันถูกส่งโดยอุปกรณ์ IoT ของคุณ
Starting event monitor, use ctrl-c to stop... { "event": { "origin": "soil-moisture-sensor", "module": "", "interface": "", "component": "", "properties": {}, "annotations": { "iothub-connection-device-id": "soil-moisture-sensor", "iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}", "iothub-connection-auth-generation-id": "637553997165220462", "iothub-enqueuedtime": 1619976150288, "iothub-message-source": "Telemetry", "x-opt-sequence-number": 1379, "x-opt-offset": "550576", "x-opt-enqueued-time": 1619976150277 }, "payload": "{\"soil_moisture\": 381}" } }
ค่าของเวลาใน annotations อยู่ใน UNIX time ซึ่งแสดงจำนวนวินาทีตั้งแต่เที่ยงคืนวันที่ 1 มกราคม 1970
ออกจากตัวตรวจสอบเหตุการณ์เมื่อคุณทำเสร็จแล้ว
งาน - ควบคุมอุปกรณ์ IoT ของคุณ
คุณยังสามารถใช้ Azure CLI เพื่อเรียกใช้วิธีการโดยตรงบนอุปกรณ์ IoT ของคุณได้
-
รันคำสั่งต่อไปนี้ในพรอมต์คำสั่งหรือเทอร์มินัลของคุณเพื่อเรียกใช้วิธีการ
relay_on
บนอุปกรณ์ IoT:az iot hub invoke-device-method --device-id soil-moisture-sensor \ --method-name relay_on \ --method-payload '{}' \ --hub-name <hub_name>
แทนที่
<hub_name>
ด้วยชื่อที่คุณใช้สำหรับ IoT Hub ของคุณ`สิ่งนี้จะส่งคำขอวิธีการโดยตรงสำหรับวิธีการที่ระบุโดย
method-name
วิธีการโดยตรงสามารถรับข้อมูลที่ส่งมาในรูปแบบ payload ซึ่งสามารถระบุได้ในพารามิเตอร์method-payload
เป็น JSONคุณจะเห็นรีเลย์เปิด และผลลัพธ์ที่สอดคล้องกันจากอุปกรณ์ IoT ของคุณ:
Direct method received - relay_on
-
ทำซ้ำขั้นตอนด้านบน แต่ตั้งค่า
--method-name
เป็นrelay_off
คุณจะเห็นรีเลย์ปิด และผลลัพธ์ที่สอดคล้องกันจากอุปกรณ์ IoT
🚀 ความท้าทาย
ระดับฟรีของ IoT Hub อนุญาตให้ส่งข้อความได้ 8,000 ข้อความต่อวัน โค้ดที่คุณเขียนส่งข้อความเทเลเมทรีทุกๆ 10 วินาที หนึ่งข้อความทุกๆ 10 วินาทีจะเท่ากับกี่ข้อความต่อวัน?
ลองคิดดูว่าควรส่งการวัดความชื้นในดินบ่อยแค่ไหน? คุณจะเปลี่ยนโค้ดของคุณอย่างไรเพื่อให้อยู่ในระดับฟรีและตรวจสอบได้บ่อยเท่าที่จำเป็นแต่ไม่บ่อยเกินไป? แล้วถ้าคุณต้องการเพิ่มอุปกรณ์ตัวที่สองล่ะ?
แบบทดสอบหลังการบรรยาย
ทบทวนและศึกษาด้วยตนเอง
IoT Hub SDK เป็นโอเพ่นซอร์สสำหรับทั้ง Arduino และ Python ในที่เก็บโค้ดบน GitHub มีตัวอย่างจำนวนมากที่แสดงวิธีการทำงานกับฟีเจอร์ต่างๆ ของ IoT Hub
- หากคุณใช้ Wio Terminal ลองดู ตัวอย่าง Arduino บน GitHub
- หากคุณใช้ Raspberry Pi หรืออุปกรณ์เสมือน ลองดู ตัวอย่าง Python บน GitHub
งานที่ได้รับมอบหมาย
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้