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/bg/2-farm/lessons/4-migrate-your-plant-to-the.../README.md

451 lines
49 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "4d8e7a066d75b625e7a979c14157041d",
"translation_date": "2025-08-28T11:22:33+00:00",
"source_file": "2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md",
"language_code": "bg"
}
-->
# Мигрирайте вашето растение към облака
![Скица на урока](../../../../../translated_images/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.bg.jpg)
> Скица от [Nitya Narasimhan](https://github.com/nitya). Кликнете върху изображението за по-голяма версия.
Този урок беше част от [IoT за начинаещи - Проект 2: Серия за дигитално земеделие](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 брокер и да управлявате реле чрез сървърен код, който работи локално. Това е основата на интернет-свързана автоматизирана система за поливане, която може да се използва както за отделни растения у дома, така и за комерсиални ферми.
IoT устройството комуникира с публичен MQTT брокер, за да демонстрира принципите, но това не е най-надеждният или сигурен начин. В този урок ще научите за облака и IoT възможностите, предоставени от публични облачни услуги. Ще научите също как да мигрирате вашето растение към една от тези облачни услуги от публичния MQTT брокер.
В този урок ще разгледаме:
* [Какво е облакът?](../../../../../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.bg.png)
![Планирано разширение на облачен център за данни на Microsoft](../../../../../translated_images/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.bg.png)
Тези центрове за данни могат да бъдат с площ от няколко квадратни километра. Изображенията по-горе са направени преди няколко години в облачен център за данни на Microsoft и показват първоначалния размер, както и планираното разширение. Разчистената площ за разширението е над 5 квадратни километра.
> 💁 Тези центрове за данни изискват толкова големи количества енергия, че някои имат собствени електроцентрали. Поради техния размер и нивото на инвестиции от облачните доставчици, те обикновено са много екологични. Те са по-ефективни от голям брой малки центрове за данни, работят предимно с възобновяема енергия, а облачните доставчици работят усилено за намаляване на отпадъците, ограничаване на водната употреба и залесяване на гори, за да компенсират изсечените за изграждане на центрове за данни. Можете да научите повече за усилията на един облачен доставчик за устойчивост на [сайта за устойчивост на Azure](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.bg.png)](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 Student Developer Pack на [education.github.com/pack](https://education.github.com/pack). Това ви дава достъп до набор от инструменти и оферти, включително GitHub и Microsoft Azure. След като се регистрирате за Developer Pack, можете да активирате офертата 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 брокер, който използвахте, е чудесен инструмент за обучение, но има редица недостатъци като инструмент за използване в комерсиална среда:
* Надеждност - това е безплатна услуга без гаранции и може да бъде изключена по всяко време
* Сигурност - тя е публична, така че всеки може да слуша вашата телеметрия или да изпраща команди за управление на вашия хардуер
* Производителност - тя е предназначена само за няколко тестови съобщения, така че не би се справила с голямо количество съобщения
* Откриване - няма начин да се знае кои устройства са свързани
IoT услугите в облака решават тези проблеми. Те се поддържат от големи облачни доставчици, които инвестират значително в надеждност и са на разположение да решат всякакви възникнали проблеми. Те имат вградена сигурност, която предотвратява хакери да четат вашите данни или да изпращат злонамерени команди. Освен това, те са с висока производителност, способни да обработват милиони съобщения всеки ден, като използват облака за мащабиране според нуждите.
> 💁 Въпреки че плащате за тези предимства с месечна такса, повечето облачни доставчици предлагат безплатна версия на своята IoT услуга с ограничен брой съобщения на ден или устройства, които могат да се свържат. Тази безплатна версия обикновено е повече от достатъчна за разработчик, който учи за услугата. В този урок ще използвате безплатна версия.
IoT устройствата се свързват с облачна услуга или чрез SDK за устройства (библиотека, която предоставя код за работа с функциите на услугата), или директно чрез комуникационен протокол като MQTT или HTTP. SDK за устройства обикновено е най-лесният начин, тъй като се грижи за всичко, като например знае кои теми да публикува или абонира, и как да обработва сигурността.
![Устройствата се свързват с услуга чрез SDK за устройства. Сървърният код също се свързва с услугата чрез SDK](../../../../../translated_images/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.bg.png)
Вашето устройство след това комуникира с други части на вашето приложение чрез тази услуга - подобно на начина, по който изпращахте телеметрия и получавахте команди чрез MQTT. Това обикновено става чрез SDK за услуги или подобна библиотека. Съобщенията идват от вашето устройство към услугата, където други компоненти на вашето приложение могат да ги прочетат, а съобщенията могат да бъдат изпратени обратно към вашето устройство.
![Устройства без валиден таен ключ не могат да се свържат с IoT услугата](../../../../../translated_images/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.bg.png)
Тези услуги внедряват сигурност, като знаят за всички устройства, които могат да се свържат и изпращат данни, или чрез предварителна регистрация на устройствата в услугата, или чрез предоставяне на устройства с тайни ключове или сертификати, които могат да използват за регистрация в услугата при първото свързване. Непознати устройства не могат да се свържат; ако опитат, услугата отхвърля връзката и игнорира изпратените от тях съобщения.
✅ Направете проучване: Какъв е недостатъкът на отворена IoT услуга, където всяко устройство или код може да се свърже? Можете ли да намерите конкретни примери за хакери, които се възползват от това?
Други компоненти на вашето приложение могат да се свържат с IoT услугата и да научат за всички устройства, които са свързани или регистрирани, и да комуникират с тях директно, индивидуално или в група.
💁 IoT услугите също така внедряват допълнителни възможности, а доставчиците на облачни услуги предлагат допълнителни услуги и приложения, които могат да бъдат свързани към услугата. Например, ако искате да съхранявате всички телеметрични съобщения, изпратени от всички устройства, в база данни, обикновено са необходими само няколко клика в инструмента за конфигурация на облачния доставчик, за да свържете услугата с база данни и да предавате данните нататък.
## Създаване на IoT услуга в облака
Сега, когато имате абонамент за Azure, можете да се регистрирате за IoT услуга. IoT услугата на Microsoft се нарича Azure IoT Hub.
![Логото на Azure IoT Hub](../../../../../translated_images/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.bg.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, първо трябва да го инсталирате на вашия компютър или 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>` с идентификатора на абонамента, който искате да използвате. След като изпълните тази команда, изпълнете отново командата за изброяване на акаунтите си. Ще видите, че колоната `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 услугите се наричат планове. Всеки план има различна цена и предоставя различни функции или обеми данни.
> 💁 Ако искате да научите повече за ценообразуването, можете да разгледате [ръководството за ценообразуване на 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 има няколко дефинирани начина за комуникация между устройството и хъба или между хъба и устройството.
> 💁 В основата си тази комуникация между IoT Hub и вашето устройство може да използва MQTT, HTTPS или AMQP.
* Съобщения от устройство към облака (D2C) - това са съобщения, изпратени от устройство към IoT Hub, като например телеметрия. Те могат да бъдат прочетени от приложния ви код.
> 🎓 В основата си IoT Hub използва Azure услуга, наречена [Event Hubs](https://docs.microsoft.com/azure/event-hubs/?WT.mc_id=academic-17441-jabenn). Когато пишете код за четене на съобщения, изпратени към хъба, те често се наричат събития.
* Съобщения от облака към устройството (C2D) - това са съобщения, изпратени от приложен код чрез IoT Hub към IoT устройство.
* Заявки за директни методи - това са съобщения, изпратени от приложен код чрез IoT Hub към IoT устройство, за да се поиска устройството да извърши нещо, като например управление на изпълнителен механизъм. Тези съобщения изискват отговор, за да може приложният код да разбере дали са обработени успешно.
* Устройствени двойници - това са JSON документи, които се синхронизират между устройството и IoT Hub и се използват за съхранение на настройки или други свойства, докладвани от устройството или зададени на устройството (наречени желани) от IoT Hub.
IoT Hub може да съхранява съобщения и заявки за директни методи за конфигурируем период от време (по подразбиране един ден), така че ако устройство или приложен код загуби връзка, то все още може да извлече съобщенията, изпратени, докато е било офлайн, след като се свърже отново. Устройствените двойници се съхраняват постоянно в IoT Hub, така че по всяко време устройство може да се свърже отново и да получи последния устройствен двойник.
✅ Направете проучване: Прочетете повече за тези типове съобщения в [Ръководството за комуникация от устройство към облака](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.
Това ще създаде устройство с идентификатор `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. Тези съобщения имат редица свойства, които се добавят автоматично, като например времевия печат, когато са изпратени. Те са известни като *анотации*. За да видите всички анотации на съобщенията, използвайте следната команда:
```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}"
}
}
```
Времевите стойности в анотациите са в [UNIX време](https://wikipedia.org/wiki/Unix_time), което представлява броя секунди от полунощ на 1<sup>ви</sup> януари 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)
## Преглед и самостоятелно обучение
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). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.