# ย้ายต้นไม้ของคุณไปยังคลาวด์ ![ภาพสเก็ตโน้ตของบทเรียนนี้](../../../../../translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.th.jpg) > สเก็ตโน้ตโดย [Nitya Narasimhan](https://github.com/nitya) คลิกที่ภาพเพื่อดูขนาดใหญ่ขึ้น บทเรียนนี้เป็นส่วนหนึ่งของ [IoT for Beginners Project 2 - Digital Agriculture series](https://youtube.com/playlist?list=PLmsFUfdnGr3yCutmcVg6eAUEfsGiFXgcx) จาก [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn) [![เชื่อมต่ออุปกรณ์ของคุณกับคลาวด์ด้วย Azure IoT Hub](https://img.youtube.com/vi/bNxjopXkhvk/0.jpg)](https://youtu.be/bNxjopXkhvk) ## แบบทดสอบก่อนเรียน [แบบทดสอบก่อนเรียน](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/15) ## บทนำ ในบทเรียนที่ผ่านมา คุณได้เรียนรู้วิธีเชื่อมต่อพืชของคุณกับ MQTT broker และควบคุมรีเลย์จากโค้ดเซิร์ฟเวอร์ที่รันอยู่ในเครื่องของคุณเอง นี่เป็นแกนหลักของระบบรดน้ำอัตโนมัติที่เชื่อมต่ออินเทอร์เน็ต ซึ่งสามารถใช้ได้ตั้งแต่ต้นไม้ในบ้านไปจนถึงฟาร์มเชิงพาณิชย์ อุปกรณ์ IoT สื่อสารกับ MQTT broker สาธารณะเพื่อแสดงหลักการทำงาน แต่การใช้งานแบบนี้ไม่ใช่วิธีที่น่าเชื่อถือหรือปลอดภัยที่สุด ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับคลาวด์และความสามารถของ IoT ที่ให้บริการโดยผู้ให้บริการคลาวด์สาธารณะ รวมถึงวิธีการย้ายพืชของคุณไปยังบริการคลาวด์เหล่านี้จาก MQTT broker สาธารณะ ในบทเรียนนี้เราจะครอบคลุม: * [คลาวด์คืออะไร?](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud) * [สร้างการสมัครใช้งานคลาวด์](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud) * [บริการ IoT บนคลาวด์](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud) * [สร้างบริการ IoT บนคลาวด์](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud) * [สื่อสารกับ IoT Hub](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud) * [เชื่อมต่ออุปกรณ์ของคุณกับบริการ IoT](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud) ## คลาวด์คืออะไร? ก่อนที่จะมีคลาวด์ เมื่อบริษัทต้องการให้บริการแก่พนักงาน (เช่น ฐานข้อมูลหรือการจัดเก็บไฟล์) หรือแก่สาธารณะ (เช่น เว็บไซต์) พวกเขาจะต้องสร้างและจัดการศูนย์ข้อมูลเอง ซึ่งอาจมีตั้งแต่ห้องที่มีคอมพิวเตอร์ไม่กี่เครื่องไปจนถึงอาคารที่มีคอมพิวเตอร์จำนวนมาก บริษัทจะต้องจัดการทุกอย่าง รวมถึง: * การซื้อคอมพิวเตอร์ * การบำรุงรักษาฮาร์ดแวร์ * การจัดการพลังงานและการระบายความร้อน * การเชื่อมต่อเครือข่าย * ความปลอดภัย ทั้งในแง่ของอาคารและซอฟต์แวร์ * การติดตั้งและอัปเดตซอฟต์แวร์ สิ่งนี้อาจมีค่าใช้จ่ายสูง ต้องการพนักงานที่มีทักษะหลากหลาย และเปลี่ยนแปลงได้ช้า ตัวอย่างเช่น หากร้านค้าออนไลน์ต้องการเตรียมตัวสำหรับฤดูการขายที่คึกคัก พวกเขาจะต้องวางแผนล่วงหน้าเป็นเดือนเพื่อซื้อฮาร์ดแวร์เพิ่มเติม ตั้งค่า ติดตั้ง และติดตั้งซอฟต์แวร์เพื่อรองรับกระบวนการขาย หลังจากฤดูการขายสิ้นสุดลงและยอดขายลดลง พวกเขาจะเหลือคอมพิวเตอร์ที่ไม่ได้ใช้งานจนกว่าจะถึงฤดูการขายถัดไป ✅ คุณคิดว่าสิ่งนี้จะช่วยให้บริษัทเคลื่อนไหวได้รวดเร็วหรือไม่? หากร้านค้าเสื้อผ้าออนไลน์ได้รับความนิยมอย่างรวดเร็วเพราะคนดังสวมใส่เสื้อผ้าของพวกเขา พวกเขาจะสามารถเพิ่มกำลังการประมวลผลได้เร็วพอที่จะรองรับคำสั่งซื้อที่เพิ่มขึ้นอย่างรวดเร็วหรือไม่? ### คอมพิวเตอร์ของคนอื่น คลาวด์มักถูกล้อเลียนว่าเป็น 'คอมพิวเตอร์ของคนอื่น' แนวคิดเริ่มต้นนั้นง่ายมาก - แทนที่จะซื้อคอมพิวเตอร์ คุณเช่าคอมพิวเตอร์ของคนอื่น ผู้ให้บริการคลาวด์จะจัดการศูนย์ข้อมูลขนาดใหญ่ พวกเขาจะรับผิดชอบการซื้อและติดตั้งฮาร์ดแวร์ การจัดการพลังงานและการระบายความร้อน การเชื่อมต่อเครือข่าย ความปลอดภัยของอาคาร การอัปเดตฮาร์ดแวร์และซอฟต์แวร์ ทุกอย่าง ในฐานะลูกค้า คุณจะเช่าคอมพิวเตอร์ที่คุณต้องการ เช่าเพิ่มเมื่อความต้องการเพิ่มขึ้น และลดจำนวนที่เช่าเมื่อความต้องการลดลง ศูนย์ข้อมูลคลาวด์เหล่านี้มีอยู่ทั่วโลก ![ศูนย์ข้อมูลคลาวด์ของ Microsoft](../../../../../translated_images/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.th.png) ![การขยายศูนย์ข้อมูลคลาวด์ของ Microsoft](../../../../../translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.th.png) ศูนย์ข้อมูลเหล่านี้อาจมีขนาดหลายตารางกิโลเมตร ภาพด้านบนถ่ายเมื่อไม่กี่ปีก่อนที่ศูนย์ข้อมูลคลาวด์ของ Microsoft และแสดงขนาดเริ่มต้นพร้อมกับการขยายที่วางแผนไว้ พื้นที่ที่ถูกเคลียร์สำหรับการขยายมีขนาดมากกว่า 5 ตารางกิโลเมตร > 💁 ศูนย์ข้อมูลเหล่านี้ต้องการพลังงานจำนวนมากจนบางแห่งมีสถานีไฟฟ้าของตัวเอง เนื่องจากขนาดและการลงทุนจากผู้ให้บริการคลาวด์ พวกเขามักจะเป็นมิตรต่อสิ่งแวดล้อมมากกว่า พวกเขามีประสิทธิภาพมากกว่าศูนย์ข้อมูลขนาดเล็กจำนวนมาก ใช้พลังงานหมุนเวียนเป็นหลัก และผู้ให้บริการคลาวด์ทำงานอย่างหนักเพื่อลดของเสีย ลดการใช้น้ำ และปลูกป่าทดแทนพื้นที่ที่ถูกตัดเพื่อสร้างศูนย์ข้อมูล คุณสามารถอ่านเพิ่มเติมเกี่ยวกับความยั่งยืนของผู้ให้บริการคลาวด์ได้ที่ [Azure sustainability site](https://azure.microsoft.com/global-infrastructure/sustainability/?WT.mc_id=academic-17441-jabenn) ✅ ทำการค้นคว้า: อ่านเกี่ยวกับคลาวด์หลัก ๆ เช่น [Azure จาก Microsoft](https://azure.microsoft.com/?WT.mc_id=academic-17441-jabenn) หรือ [GCP จาก Google](https://cloud.google.com) พวกเขามีศูนย์ข้อมูลกี่แห่ง และตั้งอยู่ที่ไหนในโลก? การใช้คลาวด์ช่วยลดต้นทุนสำหรับบริษัท และช่วยให้พวกเขามุ่งเน้นในสิ่งที่พวกเขาทำได้ดีที่สุด โดยปล่อยให้ความเชี่ยวชาญด้านคลาวด์เป็นหน้าที่ของผู้ให้บริการ บริษัทไม่จำเป็นต้องเช่าหรือซื้อพื้นที่ศูนย์ข้อมูล จ่ายเงินให้ผู้ให้บริการหลายรายสำหรับการเชื่อมต่อและพลังงาน หรือจ้างผู้เชี่ยวชาญอีกต่อไป แต่สามารถจ่ายบิลรายเดือนให้ผู้ให้บริการคลาวด์เพื่อดูแลทุกอย่างแทน ผู้ให้บริการคลาวด์สามารถใช้ประโยชน์จากขนาดเศรษฐกิจเพื่อลดต้นทุน เช่น การซื้อคอมพิวเตอร์ในปริมาณมากในราคาที่ต่ำกว่า การลงทุนในเครื่องมือเพื่อลดภาระงานในการบำรุงรักษา หรือแม้กระทั่งการออกแบบและสร้างฮาร์ดแวร์ของตัวเองเพื่อปรับปรุงข้อเสนอคลาวด์ของพวกเขา ### Microsoft Azure Azure เป็นคลาวด์สำหรับนักพัฒนาจาก Microsoft และเป็นคลาวด์ที่คุณจะใช้ในบทเรียนนี้ วิดีโอด้านล่างให้ภาพรวมสั้น ๆ เกี่ยวกับ Azure: [![วิดีโอภาพรวมของ Azure](../../../../../translated_images/what-is-azure-video-thumbnail.20174db09e03bbb87d213f928d3cb27410305d2e567e952827de8478dbda959b.th.png)](https://www.microsoft.com/videoplayer/embed/RE4Ibng?WT.mc_id=academic-17441-jabenn) ## สร้างการสมัครใช้งานคลาวด์ ในการใช้บริการบนคลาวด์ คุณจะต้องสมัครใช้งานกับผู้ให้บริการคลาวด์ สำหรับบทเรียนนี้ คุณจะสมัครใช้งาน 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](https://education.github.com/pack) สิ่งนี้จะให้คุณเข้าถึงเครื่องมือและข้อเสนอหลากหลาย รวมถึง GitHub และ Microsoft Azure เมื่อคุณสมัครใช้งาน developer pack คุณสามารถเปิดใช้งานข้อเสนอ Azure for Students ได้ * สมัครใช้งานบัญชี Azure for Students โดยตรงที่ [azure.microsoft.com/free/students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-17441-jabenn) > ⚠️ หากที่อยู่อีเมลของโรงเรียนของคุณไม่ได้รับการยอมรับ ให้แจ้ง [ปัญหาใน repo นี้](https://github.com/Microsoft/IoT-For-Beginners/issues) และเราจะดูว่ามันสามารถเพิ่มในรายการอนุญาตของ Azure for Students ได้หรือไม่ หากคุณไม่ใช่นักเรียน หรือไม่มีที่อยู่อีเมลของโรงเรียนที่ถูกต้อง คุณสามารถสมัครใช้งาน Azure Free subscription ได้ * สมัครใช้งาน Azure Free Subscription ที่ [azure.microsoft.com/free](https://azure.microsoft.com/free/?WT.mc_id=academic-17441-jabenn) ## บริการ IoT บนคลาวด์ MQTT broker สาธารณะที่คุณใช้งานเป็นเครื่องมือที่ดีสำหรับการเรียนรู้ แต่มีข้อเสียหลายประการเมื่อใช้ในเชิงพาณิชย์: * ความน่าเชื่อถือ - เป็นบริการฟรีที่ไม่มีการรับประกัน และอาจถูกปิดได้ทุกเมื่อ * ความปลอดภัย - เป็นสาธารณะ ดังนั้นใคร ๆ ก็สามารถฟังข้อมูลของคุณหรือส่งคำสั่งเพื่อควบคุมฮาร์ดแวร์ของคุณได้ * ประสิทธิภาพ - ออกแบบมาสำหรับข้อความทดสอบเพียงไม่กี่ข้อความ จึงไม่สามารถรองรับข้อความจำนวนมากได้ * การค้นพบ - ไม่มีวิธีที่จะรู้ว่าอุปกรณ์ใดเชื่อมต่ออยู่ บริการ IoT บนคลาวด์ช่วยแก้ปัญหาเหล่านี้ พวกเขาได้รับการดูแลโดยผู้ให้บริการคลาวด์รายใหญ่ที่ลงทุนอย่างหนักในความน่าเชื่อถือและพร้อมที่จะแก้ไขปัญหาที่อาจเกิดขึ้น พวกเขามีความปลอดภัยในตัวเพื่อป้องกันแฮกเกอร์จากการอ่านข้อมูลของคุณหรือส่งคำสั่งที่ไม่พึงประสงค์ นอกจากนี้ยังมีประสิทธิภาพสูง สามารถจัดการข้อความหลายล้านข้อความต่อวัน โดยใช้ประโยชน์จากคลาวด์เพื่อปรับขนาดตามความต้องการ > 💁 แม้ว่าคุณจะต้องจ่ายค่าบริการเหล่านี้เป็นรายเดือน แต่ผู้ให้บริการคลาวด์ส่วนใหญ่มีเวอร์ชันฟรีของบริการ IoT ที่มีข้อจำกัด เช่น จำนวนข้อความต่อวันหรือจำนวนอุปกรณ์ที่สามารถเชื่อมต่อได้ เวอร์ชันฟรีนี้มักเพียงพอสำหรับนักพัฒนาในการเรียนรู้เกี่ยวกับบริการ ในบทเรียนนี้คุณจะใช้เวอร์ชันฟรี อุปกรณ์ IoT เชื่อมต่อกับบริการคลาวด์โดยใช้ device SDK (ไลบรารีที่ให้โค้ดสำหรับทำงานร่วมกับฟีเจอร์ของบริการ) หรือโดยตรงผ่านโปรโตคอลการสื่อสาร เช่น MQTT หรือ HTTP โดยปกติ device SDK จะเป็นเส้นทางที่ง่ายที่สุด เนื่องจากจัดการทุกอย่างให้คุณ เช่น การรู้ว่าควรเผยแพร่หรือสมัครสมาชิกหัวข้อใด และวิธีจัดการความปลอดภัย ![อุปกรณ์เชื่อมต่อกับบริการโดยใช้ device SDK โค้ดเซิร์ฟเวอร์ยังเชื่อมต่อกับบริการผ่าน SDK](../../../../../translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.th.png) จากนั้นอุปกรณ์ของคุณจะสื่อสารกับส่วนอื่น ๆ ของแอปพลิเคชันของคุณผ่านบริการนี้ - คล้ายกับที่คุณส่งข้อมูลและรับคำสั่งผ่าน MQTT โดยปกติจะใช้ service SDK หรือไลบรารีที่คล้ายกัน ข้อความจะมาจากอุปกรณ์ของคุณไปยังบริการ ซึ่งส่วนประกอบอื่น ๆ ของแอปพลิเคชันของคุณสามารถอ่านได้ จากนั้นข้อความสามารถส่งกลับไปยังอุปกรณ์ของคุณได้ ![อุปกรณ์ที่ไม่มีคีย์ลับที่ถูกต้องไม่สามารถเชื่อมต่อกับบริการ IoT ได้](../../../../../translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.th.png) บริการเหล่านี้มีการรักษาความปลอดภัยโดยการรู้จักอุปกรณ์ทั้งหมดที่สามารถเชื่อมต่อและส่งข้อมูลได้ ไม่ว่าจะโดยการลงทะเบียนอุปกรณ์ล่วงหน้ากับบริการ หรือโดยการให้อุปกรณ์มีคีย์ลับหรือใบรับรองที่สามารถใช้ลงทะเบียนตัวเองกับบริการได้เมื่อเชื่อมต่อครั้งแรก อุปกรณ์ที่ไม่รู้จักจะไม่สามารถเชื่อมต่อได้ หากพยายาม บริการจะปฏิเสธการเชื่อมต่อและเพิกเฉยต่อข้อความที่ส่งมา ✅ ทำการค้นคว้า: ข้อเสียของการมีบริการ IoT แบบเปิดที่อุปกรณ์หรือโค้ดใด ๆ สามารถเชื่อมต่อได้คืออะไร? คุณสามารถหาตัวอย่างเฉพาะของแฮกเกอร์ที่ใช้ประโยชน์จากสิ่งนี้ได้หรือไม่? ส่วนประกอบอื่น ๆ ของแอปพลิเคชันของคุณสามารถเชื่อมต่อกับบริการ IoT และเรียนรู้เกี่ยวกับอุปกรณ์ทั้งหมดที่เชื่อมต่อหรือที่ลงทะเบียนไว้ และสื่อสารกับพวกเขาได้โดยตรงทั้งแบบกลุ่มหรือแบบรายบุคคล 💁 บริการ IoT ยังมีความสามารถเพิ่มเติม และผู้ให้บริการคลาวด์ก็มีบริการและแอปพลิเคชันเพิ่มเติมที่สามารถเชื่อมต่อกับบริการได้เช่นกัน ตัวอย่างเช่น หากคุณต้องการจัดเก็บข้อความเทเลเมทรีทั้งหมดที่ส่งมาจากอุปกรณ์ทั้งหมดในฐานข้อมูล โดยปกติแล้วจะใช้เพียงไม่กี่คลิกในเครื่องมือการตั้งค่าของผู้ให้บริการคลาวด์เพื่อเชื่อมต่อบริการกับฐานข้อมูลและสตรีมข้อมูลเข้าไป ## สร้างบริการ IoT บนคลาวด์ เมื่อคุณมีการสมัครใช้งาน Azure แล้ว คุณสามารถลงทะเบียนเพื่อใช้งานบริการ IoT ได้ บริการ IoT จาก Microsoft เรียกว่า Azure IoT Hub ![โลโก้ Azure IoT Hub](../../../../../translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.th.png) วิดีโอด้านล่างนี้ให้ภาพรวมสั้น ๆ เกี่ยวกับ Azure IoT Hub: [![วิดีโอภาพรวม Azure IoT Hub](https://img.youtube.com/vi/smuZaZZXKsU/0.jpg)](https://www.youtube.com/watch?v=smuZaZZXKsU) > 🎥 คลิกที่ภาพด้านบนเพื่อดูวิดีโอ ✅ ใช้เวลาสักครู่เพื่อค้นคว้าและอ่านภาพรวมของ IoT Hub ใน [เอกสาร Microsoft IoT Hub](https://docs.microsoft.com/azure/iot-hub/about-iot-hub?WT.mc_id=academic-17441-jabenn) บริการคลาวด์ที่มีอยู่ใน Azure สามารถกำหนดค่าได้ผ่านพอร์ทัลบนเว็บ หรือผ่านอินเทอร์เฟซบรรทัดคำสั่ง (CLI) สำหรับงานนี้ คุณจะใช้ CLI ### งาน - ติดตั้ง Azure CLI ในการใช้ Azure CLI คุณต้องติดตั้ง CLI บน PC หรือ Mac ของคุณก่อน 1. ทำตามคำแนะนำใน [เอกสาร Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli?WT.mc_id=academic-17441-jabenn) เพื่อทำการติดตั้ง CLI 1. Azure CLI รองรับส่วนขยายหลายตัวที่เพิ่มความสามารถในการจัดการบริการ Azure หลากหลายประเภท ติดตั้งส่วนขยาย IoT โดยรันคำสั่งต่อไปนี้จากบรรทัดคำสั่งหรือเทอร์มินัลของคุณ: ```sh az extension add --name azure-iot ``` 1. จากบรรทัดคำสั่งหรือเทอร์มินัลของคุณ รันคำสั่งต่อไปนี้เพื่อเข้าสู่ระบบการสมัครใช้งาน Azure ของคุณจาก Azure CLI ```sh az login ``` หน้าต่างเว็บจะเปิดขึ้นในเบราว์เซอร์เริ่มต้นของคุณ เข้าสู่ระบบโดยใช้บัญชีที่คุณใช้สมัครใช้งาน Azure เมื่อคุณเข้าสู่ระบบแล้ว คุณสามารถปิดแท็บเบราว์เซอร์ได้ 1. หากคุณมีการสมัครใช้งาน Azure หลายรายการ เช่น การสมัครที่โรงเรียนจัดหาให้ และการสมัคร Azure for Students ของคุณเอง คุณจะต้องเลือกการสมัครที่คุณต้องการใช้ รันคำสั่งต่อไปนี้เพื่อแสดงรายการการสมัครทั้งหมดที่คุณสามารถเข้าถึงได้: ```sh az account list --output table ``` ในผลลัพธ์ คุณจะเห็นชื่อของแต่ละการสมัครพร้อมกับ `SubscriptionId` ```output ➜ ~ 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 ``` เพื่อเลือกการสมัครที่คุณต้องการใช้ ใช้คำสั่งต่อไปนี้: ```sh az account set --subscription ``` แทนที่ `` ด้วย Id ของการสมัครที่คุณต้องการใช้ หลังจากรันคำสั่งนี้ ให้รันคำสั่งเพื่อแสดงรายการบัญชีของคุณอีกครั้ง คุณจะเห็นคอลัมน์ `IsDefault` ถูกทำเครื่องหมายเป็น `True` สำหรับการสมัครที่คุณเพิ่งตั้งค่า ### งาน - สร้างกลุ่มทรัพยากร บริการ Azure เช่น อินสแตนซ์ IoT Hub, เครื่องเสมือน, ฐานข้อมูล หรือบริการ AI ถูกเรียกว่า **ทรัพยากร** ทุกทรัพยากรต้องอยู่ภายใน **กลุ่มทรัพยากร** ซึ่งเป็นการจัดกลุ่มเชิงตรรกะของทรัพยากรหนึ่งหรือมากกว่า > 💁 การใช้กลุ่มทรัพยากรหมายความว่าคุณสามารถจัดการบริการหลายตัวพร้อมกันได้ ตัวอย่างเช่น เมื่อคุณเรียนจบทุกบทเรียนสำหรับโปรเจกต์นี้ คุณสามารถลบกลุ่มทรัพยากร และทรัพยากรทั้งหมดในนั้นจะถูกลบโดยอัตโนมัติ 1. มีศูนย์ข้อมูล Azure หลายแห่งทั่วโลก แบ่งออกเป็นภูมิภาค เมื่อคุณสร้างทรัพยากรหรือกลุ่มทรัพยากรใน Azure คุณต้องระบุว่าคุณต้องการสร้างที่ไหน รันคำสั่งต่อไปนี้เพื่อรับรายการตำแหน่งที่ตั้ง: ```sh az account list-locations --output table ``` คุณจะเห็นรายการตำแหน่งที่ตั้ง รายการนี้จะยาว > 💁 ณ เวลาที่เขียน มี 65 ตำแหน่งที่คุณสามารถปรับใช้ได้ ```output ➜ ~ 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](https://azure.microsoft.com/global-infrastructure/geographies/?WT.mc_id=academic-17441-jabenn) 1. รันคำสั่งต่อไปนี้เพื่อสร้างกลุ่มทรัพยากรชื่อ `soil-moisture-sensor` ชื่อกลุ่มทรัพยากรต้องไม่ซ้ำกันในบัญชีของคุณ ```sh az group create --name soil-moisture-sensor \ --location ``` แทนที่ `` ด้วยตำแหน่งที่คุณเลือกในขั้นตอนก่อนหน้า ### งาน - สร้าง IoT Hub ตอนนี้คุณสามารถสร้างทรัพยากร IoT Hub ในกลุ่มทรัพยากรของคุณได้แล้ว 1. ใช้คำสั่งต่อไปนี้เพื่อสร้างทรัพยากร IoT Hub ของคุณ: ```sh az iot hub create --resource-group soil-moisture-sensor \ --sku F1 \ --partition-count 2 \ --name ``` แทนที่ `` ด้วยชื่อสำหรับฮับของคุณ ชื่อนี้ต้องไม่ซ้ำกันทั่วโลก - นั่นคือไม่มี IoT Hub อื่นที่สร้างโดยใครก็ตามที่สามารถมีชื่อเดียวกันได้ ชื่อนี้ใช้ใน URL ที่ชี้ไปยังฮับ ดังนั้นต้องไม่ซ้ำกัน ใช้บางอย่างเช่น `soil-moisture-sensor-` และเพิ่มตัวระบุที่ไม่ซ้ำกัน เช่น คำสุ่มหรือชื่อของคุณ ตัวเลือก `--sku F1` บอกให้ใช้ระดับฟรี ระดับฟรีรองรับข้อความ 8,000 ข้อความต่อวันพร้อมกับฟีเจอร์ส่วนใหญ่ของระดับที่มีค่าใช้จ่ายเต็มราคา > 🎓 ระดับราคาต่าง ๆ ของบริการ Azure เรียกว่า tiers แต่ละ tier มีค่าใช้จ่ายต่างกันและให้ฟีเจอร์หรือปริมาณข้อมูลที่แตกต่างกัน > 💁 หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการกำหนดราคา คุณสามารถตรวจสอบ [คู่มือการกำหนดราคา Azure IoT Hub](https://azure.microsoft.com/pricing/details/iot-hub/?WT.mc_id=academic-17441-jabenn) ตัวเลือก `--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](https://docs.microsoft.com/azure/event-hubs/?WT.mc_id=academic-17441-jabenn) เมื่อคุณเขียนโค้ดเพื่ออ่านข้อความที่ส่งไปยังฮับ ข้อความเหล่านี้มักถูกเรียกว่า 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 ล่าสุดได้ ✅ ทำการค้นคว้า: อ่านเพิ่มเติมเกี่ยวกับประเภทข้อความเหล่านี้ใน [คำแนะนำการสื่อสารจากอุปกรณ์ไปยังคลาวด์](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-d2c-guidance?WT.mc_id=academic-17441-jabenn) และ [คำแนะนำการสื่อสารจากคลาวด์ไปยังอุปกรณ์](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-c2d-guidance?WT.mc_id=academic-17441-jabenn) ในเอกสาร IoT Hub ## เชื่อมต่ออุปกรณ์ของคุณกับบริการ IoT เมื่อฮับถูกสร้างขึ้น อุปกรณ์ IoT ของคุณสามารถเชื่อมต่อกับมันได้ เฉพาะอุปกรณ์ที่ลงทะเบียนแล้วเท่านั้นที่สามารถเชื่อมต่อกับบริการได้ ดังนั้นคุณจะต้องลงทะเบียนอุปกรณ์ของคุณก่อน เมื่อคุณลงทะเบียน คุณจะได้รับสตริงการเชื่อมต่อที่อุปกรณ์สามารถใช้เพื่อเชื่อมต่อ สตริงการเชื่อมต่อนี้เป็นแบบเฉพาะอุปกรณ์ และมีข้อมูลเกี่ยวกับ IoT Hub, อุปกรณ์ และคีย์ลับที่อนุญาตให้อุปกรณ์นี้เชื่อมต่อ > 🎓 สตริงการเชื่อมต่อเป็นคำทั่วไปสำหรับข้อความที่มีรายละเอียดการเชื่อมต่อ ข้อความเหล่านี้ถูกใช้เมื่อเชื่อมต่อกับ IoT Hubs, ฐานข้อมูล และบริการอื่น ๆ อีกมากมาย โดยปกติจะประกอบด้วยตัวระบุสำหรับบริการ เช่น URL และข้อมูลความปลอดภัย เช่น คีย์ลับ ข้อความเหล่านี้ถูกส่งไปยัง SDK เพื่อเชื่อมต่อกับบริการ > ⚠️ สตริงการเชื่อมต่อควรเก็บไว้ให้ปลอดภัย! ความปลอดภัยจะถูกกล่าวถึงในรายละเอียดเพิ่มเติมในบทเรียนถัดไป ### งาน - ลงทะเบียนอุปกรณ์ IoT ของคุณ อุปกรณ์ IoT สามารถลงทะเบียนกับ IoT Hub ของคุณโดยใช้ Azure CLI 1. รันคำสั่งต่อไปนี้เพื่อลงทะเบียนอุปกรณ์: ```sh az iot hub device-identity create --device-id soil-moisture-sensor \ --hub-name ``` แทนที่ `` ด้วยชื่อที่คุณใช้สำหรับ IoT Hub ของคุณ สิ่งนี้จะสร้างอุปกรณ์ที่มี ID เป็น `soil-moisture-sensor` 1. เมื่ออุปกรณ์ IoT ของคุณเชื่อมต่อกับ IoT Hub โดยใช้ SDK มันต้องใช้สตริงการเชื่อมต่อที่ให้ URL ของฮับ พร้อมกับคีย์ลับ รันคำสั่งต่อไปนี้เพื่อรับสตริงการเชื่อมต่อ: ```sh az iot hub device-identity connection-string show --device-id soil-moisture-sensor \ --output table \ --hub-name ``` แทนที่ `` ด้วยชื่อที่คุณใช้สำหรับ IoT Hub ของคุณ 1. เก็บสตริงการเชื่อมต่อที่แสดงในผลลัพธ์ไว้ เพราะคุณจะต้องใช้มันในภายหลัง ### งาน - เชื่อมต่ออุปกรณ์ IoT ของคุณกับคลาวด์ ทำตามคู่มือที่เกี่ยวข้องเพื่อเชื่อมต่ออุปกรณ์ IoT ของคุณกับคลาวด์: * [Arduino - Wio Terminal](wio-terminal-connect-hub.md) * [คอมพิวเตอร์บอร์ดเดียว - Raspberry Pi/อุปกรณ์ IoT เสมือน](single-board-computer-connect-hub.md) ### งาน - ตรวจสอบเหตุการณ์ สำหรับตอนนี้ คุณจะยังไม่อัปเดตโค้ดเซิร์ฟเวอร์ของคุณ แต่คุณสามารถใช้ Azure CLI เพื่อตรวจสอบเหตุการณ์จากอุปกรณ์ IoT ของคุณได้ 1. ตรวจสอบให้อุปกรณ์ IoT ของคุณกำลังทำงานและส่งค่าความชื้นในดิน 1. รันคำสั่งต่อไปนี้ในพรอมต์คำสั่งหรือเทอร์มินัลของคุณเพื่อตรวจสอบข้อความที่ส่งไปยัง IoT Hub ของคุณ: ```sh az iot hub monitor-events --hub-name ``` แทนที่ `` ด้วยชื่อที่คุณใช้สำหรับ IoT Hub ของคุณ คุณจะเห็นข้อความปรากฏในผลลัพธ์คอนโซลเมื่อมันถูกส่งโดยอุปกรณ์ IoT ของคุณ ```output 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](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-vscode-iot-toolkit-cloud-device-messaging) 1. ข้อความเหล่านี้มีคุณสมบัติจำนวนหนึ่งที่แนบมาด้วยโดยอัตโนมัติ เช่น เวลาที่ส่ง คุณสมบัติเหล่านี้เรียกว่า *annotations* เพื่อดู annotations ของข้อความทั้งหมด ใช้คำสั่งต่อไปนี้: ```sh az iot hub monitor-events --properties anno --hub-name ``` แทนที่ `` ด้วยชื่อที่คุณใช้สำหรับ IoT Hub ของคุณ คุณจะเห็นข้อความปรากฏในผลลัพธ์คอนโซลเมื่อมันถูกส่งโดยอุปกรณ์ IoT ของคุณ ```output 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](https://wikipedia.org/wiki/Unix_time) ซึ่งแสดงจำนวนวินาทีตั้งแต่เที่ยงคืนวันที่ 1 มกราคม 1970 ออกจากตัวตรวจสอบเหตุการณ์เมื่อคุณทำเสร็จแล้ว ### งาน - ควบคุมอุปกรณ์ IoT ของคุณ คุณยังสามารถใช้ Azure CLI เพื่อเรียกใช้วิธีการโดยตรงบนอุปกรณ์ IoT ของคุณได้ 1. รันคำสั่งต่อไปนี้ในพรอมต์คำสั่งหรือเทอร์มินัลของคุณเพื่อเรียกใช้วิธีการ `relay_on` บนอุปกรณ์ IoT: ```sh az iot hub invoke-device-method --device-id soil-moisture-sensor \ --method-name relay_on \ --method-payload '{}' \ --hub-name ``` แทนที่ ` `ด้วยชื่อที่คุณใช้สำหรับ IoT Hub ของคุณ` สิ่งนี้จะส่งคำขอวิธีการโดยตรงสำหรับวิธีการที่ระบุโดย `method-name` วิธีการโดยตรงสามารถรับข้อมูลที่ส่งมาในรูปแบบ payload ซึ่งสามารถระบุได้ในพารามิเตอร์ `method-payload` เป็น JSON คุณจะเห็นรีเลย์เปิด และผลลัพธ์ที่สอดคล้องกันจากอุปกรณ์ IoT ของคุณ: ```output Direct method received - relay_on ``` 1. ทำซ้ำขั้นตอนด้านบน แต่ตั้งค่า `--method-name` เป็น `relay_off` คุณจะเห็นรีเลย์ปิด และผลลัพธ์ที่สอดคล้องกันจากอุปกรณ์ IoT --- ## 🚀 ความท้าทาย ระดับฟรีของ IoT Hub อนุญาตให้ส่งข้อความได้ 8,000 ข้อความต่อวัน โค้ดที่คุณเขียนส่งข้อความเทเลเมทรีทุกๆ 10 วินาที หนึ่งข้อความทุกๆ 10 วินาทีจะเท่ากับกี่ข้อความต่อวัน? ลองคิดดูว่าควรส่งการวัดความชื้นในดินบ่อยแค่ไหน? คุณจะเปลี่ยนโค้ดของคุณอย่างไรเพื่อให้อยู่ในระดับฟรีและตรวจสอบได้บ่อยเท่าที่จำเป็นแต่ไม่บ่อยเกินไป? แล้วถ้าคุณต้องการเพิ่มอุปกรณ์ตัวที่สองล่ะ? ## แบบทดสอบหลังการบรรยาย [แบบทดสอบหลังการบรรยาย](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/16) ## ทบทวนและศึกษาด้วยตนเอง IoT Hub SDK เป็นโอเพ่นซอร์สสำหรับทั้ง Arduino และ Python ในที่เก็บโค้ดบน GitHub มีตัวอย่างจำนวนมากที่แสดงวิธีการทำงานกับฟีเจอร์ต่างๆ ของ IoT Hub * หากคุณใช้ Wio Terminal ลองดู [ตัวอย่าง Arduino บน GitHub](https://github.com/Azure/azure-iot-pal-arduino/tree/master/pal/samples) * หากคุณใช้ Raspberry Pi หรืออุปกรณ์เสมือน ลองดู [ตัวอย่าง Python บน GitHub](https://github.com/Azure/azure-iot-sdk-python/tree/master/azure-iot-hub/samples) ## งานที่ได้รับมอบหมาย [เรียนรู้เกี่ยวกับบริการคลาวด์](assignment.md) --- **ข้อจำกัดความรับผิดชอบ**: เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้