|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "4d8e7a066d75b625e7a979c14157041d",
|
|
|
"translation_date": "2025-08-27T21:31:12+00:00",
|
|
|
"source_file": "2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md",
|
|
|
"language_code": "he"
|
|
|
}
|
|
|
-->
|
|
|
# העבר את הצמח שלך לענן
|
|
|
|
|
|

|
|
|
|
|
|
> סקיצה מאת [Nitya Narasimhan](https://github.com/nitya). לחצו על התמונה לגרסה גדולה יותר.
|
|
|
|
|
|
השיעור הזה נלמד כחלק מסדרת [IoT למתחילים - חקלאות דיגיטלית](https://youtube.com/playlist?list=PLmsFUfdnGr3yCutmcVg6eAUEfsGiFXgcx) מתוך [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn).
|
|
|
|
|
|
[](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 בענן, ומראות את הגודל ההתחלתי, יחד עם הרחבה מתוכננת. השטח שנוקה להרחבה הוא מעל 5 קילומטרים רבועים.
|
|
|
|
|
|
> 💁 מרכזי הנתונים הללו דורשים כמויות גדולות מאוד של חשמל, ולכן לחלקם יש תחנות כוח משלהם. בגלל גודלם ורמת ההשקעה מצד ספקי הענן, הם בדרך כלל ידידותיים מאוד לסביבה. הם יעילים יותר ממספר גדול של מרכזי נתונים קטנים, פועלים בעיקר על אנרגיה מתחדשת, וספקי הענן עובדים קשה להפחית פסולת, לצמצם שימוש במים ולשתול מחדש יערות שנכרתו כדי לספק שטח לבניית מרכזי נתונים. תוכלו לקרוא עוד על איך ספק ענן אחד עובד על קיימות באתר [Azure sustainability](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:
|
|
|
|
|
|
[](https://www.microsoft.com/videoplayer/embed/RE4Ibng?WT.mc_id=academic-17441-jabenn)
|
|
|
|
|
|
## יצירת מנוי ענן
|
|
|
|
|
|
כדי להשתמש בשירותים בענן, תצטרכו להירשם למנוי אצל ספק ענן. בשיעור הזה תירשמו למנוי Microsoft Azure. אם כבר יש לכם מנוי Azure, תוכלו לדלג על המשימה הזו. פרטי המנוי המתוארים כאן נכונים בזמן כתיבת השורות, אך עשויים להשתנות.
|
|
|
|
|
|
> 💁 אם אתם ניגשים לשיעורים הללו דרך בית הספר שלכם, ייתכן שכבר יש לכם מנוי Azure זמין. בדקו עם המורה שלכם.
|
|
|
|
|
|
ישנם שני סוגים שונים של מנוי Azure חינמי שתוכלו להירשם אליו:
|
|
|
|
|
|
* **Azure לסטודנטים** - זהו מנוי המיועד לסטודנטים בני 18 ומעלה. אין צורך בכרטיס אשראי כדי להירשם, ואתם משתמשים בכתובת האימייל של בית הספר שלכם כדי לאמת שאתם סטודנטים. כשאתם נרשמים, אתם מקבלים 100 דולר אמריקאי לשימוש במשאבי ענן, יחד עם שירותים חינמיים כולל גרסה חינמית של שירות IoT. זה נמשך 12 חודשים, ותוכלו לחדש כל שנה כל עוד אתם סטודנטים.
|
|
|
|
|
|
* **מנוי Azure חינמי** - זהו מנוי לכל מי שאינו סטודנט. תצטרכו כרטיס אשראי כדי להירשם למנוי, אך הכרטיס שלכם לא יחויב, זה רק משמש לאימות שאתם בני אדם אמיתיים ולא בוט. אתם מקבלים 200 דולר אשראי לשימוש ב-30 הימים הראשונים בכל שירות, יחד עם רמות חינמיות של שירותי Azure. לאחר שהאשראי שלכם נגמר, הכרטיס שלכם לא יחויב אלא אם תבחרו להמיר למנוי בתשלום לפי שימוש.
|
|
|
|
|
|
> 💁 Microsoft מציעה מנוי Azure Starter לסטודנטים מתחת לגיל 18, אך בזמן כתיבת השורות הוא אינו תומך בשירותי IoT.
|
|
|
|
|
|
### משימה - הירשמו למנוי ענן חינמי
|
|
|
|
|
|
אם אתם סטודנטים בני 18 ומעלה, תוכלו להירשם למנוי Azure לסטודנטים. תצטרכו לאמת עם כתובת אימייל של בית הספר שלכם. תוכלו לעשות זאת באחת משתי דרכים:
|
|
|
|
|
|
* הירשמו לחבילת המפתחים לסטודנטים של GitHub ב-[education.github.com/pack](https://education.github.com/pack). זה נותן לכם גישה למגוון כלים והצעות, כולל GitHub ו-Microsoft Azure. לאחר שתירשמו לחבילת המפתחים, תוכלו להפעיל את ההצעה של Azure לסטודנטים.
|
|
|
|
|
|
* הירשמו ישירות לחשבון Azure לסטודנטים ב-[azure.microsoft.com/free/students](https://azure.microsoft.com/free/students/?WT.mc_id=academic-17441-jabenn).
|
|
|
|
|
|
> ⚠️ אם כתובת האימייל של בית הספר שלכם לא מזוהה, פתחו [בעיה במאגר הזה](https://github.com/Microsoft/IoT-For-Beginners/issues) ונבדוק אם ניתן להוסיף אותה לרשימת ההיתרים של Azure לסטודנטים.
|
|
|
|
|
|
אם אינכם סטודנטים או שאין לכם כתובת אימייל תקפה של בית הספר, תוכלו להירשם למנוי Azure חינמי.
|
|
|
|
|
|
* הירשמו למנוי Azure חינמי ב-[azure.microsoft.com/free](https://azure.microsoft.com/free/?WT.mc_id=academic-17441-jabenn)
|
|
|
|
|
|
## שירותי IoT בענן
|
|
|
|
|
|
ה-MQTT broker הציבורי שבו השתמשתם הוא כלי נהדר ללמידה, אך יש לו מספר חסרונות ככלי לשימוש בסביבה מסחרית:
|
|
|
|
|
|
* אמינות - זהו שירות חינמי ללא הבטחות, ויכול להיסגר בכל רגע
|
|
|
* אבטחה - הוא ציבורי, כך שכל אחד יכול להאזין לטלמטריה שלכם או לשלוח פקודות לשליטה בחומרה שלכם
|
|
|
* ביצועים - הוא מיועד למספר קטן של הודעות בדיקה, ולכן לא יתמודד עם כמות גדולה של הודעות
|
|
|
* גילוי - אין דרך לדעת אילו מכשירים מחוברים
|
|
|
|
|
|
שירותי IoT בענן פותרים את הבעיות הללו. הם מתוחזקים על ידי ספקי ענן גדולים שמשקיעים רבות באמינות ונמצאים שם כדי לתקן כל בעיה שעלולה להתעורר. יש להם אבטחה מובנית שמונעת מהאקרים לקרוא את הנתונים שלכם או לשלוח פקודות זדוניות. הם גם בעלי ביצועים גבוהים, מסוגלים להתמודד עם מיליוני הודעות בכל יום, תוך ניצול הענן להתרחבות לפי הצורך.
|
|
|
|
|
|
> 💁 למרות שאתם משלמים על היתרונות הללו בתשלום חודשי, רוב ספקי הענן מציעים גרסה חינמית של שירות ה-IoT שלהם עם כמות מוגבלת של הודעות ביום או מכשירים שיכולים להתחבר. גרסה חינמית זו בדרך כלל מספיקה למפתחים ללמוד על השירות. בשיעור הזה תשתמשו בגרסה חינמית.
|
|
|
|
|
|
מכשירי IoT מתחברים לשירות ענן באמצעות SDK למכשיר (ספרייה שמספקת קוד לעבודה עם תכונות השירות) או ישירות דרך פרוטוקול תקשורת כמו MQTT או HTTP. ה-SDK למכשיר הוא בדרך כלל הדרך הקלה ביותר מכיוון שהוא מטפל בכל עבורכם, כמו לדעת אילו נושאים לפרסם או להירשם אליהם, וכיצד לטפל באבטחה.
|
|
|
|
|
|

|
|
|
|
|
|
המכשיר שלכם מתקשר עם חלקים אחרים של האפליקציה שלכם דרך השירות הזה - בדומה לאופן שבו שלחתם טלמטריה וקיבלתם פקודות דרך MQTT. זה נעשה בדרך כלל באמצעות SDK לשירות או ספרייה דומה. הודעות מגיעות מהמכשיר שלכם לשירות, שם רכיבים אחרים של האפליקציה שלכם יכולים לקרוא אותן, והודעות יכולות להישלח בחזרה למכשיר שלכם.
|
|
|
|
|
|

|
|
|
|
|
|
שירותים אלו מיישמים אבטחה על ידי ידיעה על כל המכשירים שיכולים להתחבר ולשלוח נתונים, או על ידי רישום מראש של המכשירים בשירות, או על ידי מתן מפתחות סודיים או תעודות למכשירים שהם יכולים להשתמש בהם כדי לרשום את עצמם בשירות בפעם הראשונה שהם מתחברים. מכשירים לא מוכרים אינם יכולים להתחבר, ואם הם מנסים השירות דוחה את החיבור ומתעלם מהודעות שנשלחות על ידם.
|
|
|
|
|
|
✅ בצעו מחקר: מהו החיסרון של שירות IoT פתוח שבו כל מכשיר או קוד יכולים להתחבר? האם תוכלו למצוא דוגמאות ספציפיות להאקרים שניצלו זאת?
|
|
|
|
|
|
רכיבים אחרים של האפליקציה שלכם יכולים להתחבר לשירות ה-IoT וללמוד על כל המכשירים שמחוברים או רשומים, ולתקשר איתם ישירות באופן פרטני או בקבוצות.
|
|
|
💁 שירותי IoT כוללים גם יכולות נוספות, וספקי הענן מציעים שירותים ויישומים נוספים שניתן לחבר לשירות. לדוגמה, אם ברצונך לאחסן את כל הודעות הטלמטריה שנשלחות מכל המכשירים בבסיס נתונים, בדרך כלל מדובר בכמה לחיצות בלבד בכלי ההגדרות של ספק הענן כדי לחבר את השירות לבסיס הנתונים ולהזרים את הנתונים פנימה.
|
|
|
## יצירת שירות IoT בענן
|
|
|
|
|
|
עכשיו כשיש לך מנוי ל-Azure, תוכל להירשם לשירות IoT. שירות ה-IoT של Microsoft נקרא Azure IoT Hub.
|
|
|
|
|
|

|
|
|
|
|
|
הסרטון הבא מספק סקירה קצרה על Azure IoT Hub:
|
|
|
|
|
|
[](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, תחילה יש להתקין אותו על המחשב האישי או ה-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 לסטודנטים, תצטרך לבחור את המנוי שבו תרצה להשתמש. הרץ את הפקודה הבאה כדי להציג את כל המנויים שיש לך גישה אליהם:
|
|
|
|
|
|
```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 geographies](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>` בשם עבור ה-Hub שלך. שם זה חייב להיות ייחודי ברמה גלובלית - כלומר, אף IoT Hub אחר שנוצר על ידי מישהו אחר לא יכול להיות בעל אותו שם. שם זה משמש ב-URL שמצביע על ה-Hub, ולכן חייב להיות ייחודי. השתמש במשהו כמו `soil-moisture-sensor-` והוסף מזהה ייחודי בסוף, כמו מילים אקראיות או שמך.
|
|
|
|
|
|
האפשרות `--sku F1` אומרת להשתמש ברמת חינם. רמת החינם תומכת ב-8,000 הודעות ביום יחד עם רוב התכונות של הרמות בתשלום.
|
|
|
|
|
|
> 🎓 רמות תמחור שונות של שירותי Azure נקראות tiers. כל רמה מציעה עלות שונה ותכונות או נפחי נתונים שונים.
|
|
|
|
|
|
> 💁 אם תרצה ללמוד עוד על תמחור, תוכל לבדוק את [מדריך התמחור של 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). כאשר אתה כותב קוד לקרוא הודעות שנשלחו ל-Hub, הן נקראות לעיתים קרובות אירועים.
|
|
|
|
|
|
* הודעות מענן למכשיר (C2D) - אלו הודעות שנשלחות מקוד אפליקציה, דרך IoT Hub למכשיר IoT.
|
|
|
|
|
|
* בקשות שיטה ישירה - אלו הודעות שנשלחות מקוד אפליקציה דרך IoT Hub למכשיר IoT כדי לבקש מהמכשיר לבצע פעולה, כמו לשלוט במפעיל. הודעות אלו דורשות תגובה כך שקוד האפליקציה שלך יוכל לדעת אם הן עובדו בהצלחה.
|
|
|
|
|
|
* Device twins - אלו מסמכי JSON שמסונכרנים בין המכשיר ל-IoT Hub, ומשמשים לאחסון הגדרות או תכונות אחרות שדווחו על ידי המכשיר, או שצריכות להיות מוגדרות על המכשיר (נקראות רצויות) על ידי ה-IoT Hub.
|
|
|
|
|
|
IoT Hub יכול לאחסן הודעות ובקשות שיטה ישירה למשך זמן שניתן להגדיר (ברירת המחדל היא יום אחד), כך שאם מכשיר או קוד אפליקציה מאבדים חיבור, הם עדיין יכולים לשחזר הודעות שנשלחו בזמן שהיו לא מחוברים לאחר שהם מתחברים מחדש. Device twins נשמרים באופן קבוע ב-IoT Hub, כך שבכל זמן מכשיר יכול להתחבר מחדש ולקבל את ה-Device twin העדכני ביותר.
|
|
|
|
|
|
✅ בצע מחקר: קרא עוד על סוגי הודעות אלו בהנחיות [Device-to-cloud communications](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-d2c-guidance?WT.mc_id=academic-17441-jabenn), ובהנחיות [Cloud-to-device communications](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-c2d-guidance?WT.mc_id=academic-17441-jabenn) בתיעוד של IoT Hub.
|
|
|
|
|
|
## חיבור המכשיר שלך לשירות IoT
|
|
|
|
|
|
לאחר שה-Hub נוצר, מכשיר ה-IoT שלך יכול להתחבר אליו. רק מכשירים רשומים יכולים להתחבר לשירות, ולכן תצטרך לרשום את המכשיר שלך תחילה. כאשר אתה רושם, תוכל לקבל מחרוזת חיבור שהמכשיר יכול להשתמש בה כדי להתחבר. מחרוזת חיבור זו היא ספציפית למכשיר, ומכילה מידע על ה-IoT Hub, המכשיר, ומפתח סודי שיאפשר למכשיר זה להתחבר.
|
|
|
|
|
|
> 🎓 מחרוזת חיבור היא מונח כללי לטקסט שמכיל פרטי חיבור. הן משמשות בעת חיבור ל-IoT Hubs, מסדי נתונים ושירותים רבים אחרים. בדרך כלל הן כוללות מזהה לשירות, כמו URL, ומידע אבטחה כמו מפתח סודי. אלו מועברים ל-SDKs כדי להתחבר לשירות.
|
|
|
|
|
|
> ⚠️ יש לשמור על מחרוזות חיבור מאובטחות! אבטחה תכוסה בפירוט בשיעור עתידי.
|
|
|
|
|
|
### משימה - רישום מכשיר ה-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 שלך.
|
|
|
|
|
|
פעולה זו תיצור מכשיר עם מזהה `soil-moisture-sensor`.
|
|
|
|
|
|
1. כאשר מכשיר ה-IoT שלך מתחבר ל-IoT Hub שלך באמצעות ה-SDK, הוא צריך להשתמש במחרוזת חיבור שמספקת את ה-URL של ה-Hub, יחד עם מפתח סודי. הרץ את הפקודה הבאה כדי לקבל את מחרוזת החיבור:
|
|
|
|
|
|
```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 for 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](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`. שיטות ישירות יכולות לקבל מטען המכיל נתונים עבור השיטה, וניתן לציין זאת בפרמטר `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)
|
|
|
|
|
|
## סקירה ולימוד עצמי
|
|
|
|
|
|
ה-SDK של IoT Hub הוא קוד פתוח עבור 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)
|
|
|
|
|
|
---
|
|
|
|
|
|
**כתב ויתור**:
|
|
|
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה. |