You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/th/2-farm/lessons/4-migrate-your-plant-to-the.../README.md

451 lines
59 KiB

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "4d8e7a066d75b625e7a979c14157041d",
"translation_date": "2025-08-27T21:59:15+00:00",
"source_file": "2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md",
"language_code": "th"
}
-->
# ย้ายต้นไม้ของคุณไปยังคลาวด์
![ภาพสเก็ตโน้ตของบทเรียนนี้](../../../../../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 <SubscriptionId>
```
แทนที่ `<SubscriptionId>` ด้วย 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 <location>
```
แทนที่ `<location>` ด้วยตำแหน่งที่คุณเลือกในขั้นตอนก่อนหน้า
### งาน - สร้าง IoT Hub
ตอนนี้คุณสามารถสร้างทรัพยากร IoT Hub ในกลุ่มทรัพยากรของคุณได้แล้ว
1. ใช้คำสั่งต่อไปนี้เพื่อสร้างทรัพยากร IoT Hub ของคุณ:
```sh
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](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 <hub_name>
```
แทนที่ `<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 <hub_name>
```
แทนที่ `<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 <hub_name>
```
แทนที่ `<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 <hub_name>
```
แทนที่ `<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 <hub_name>
```
แทนที่ `
<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) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้