Feladatok ütemezése és közvetítése (Azure CLI)
Az Azure IoT Hub használatával ütemezheti és követheti nyomon az eszközök millióit frissítő feladatokat. Feladatok használata:
- Eszköz kívánt tulajdonságainak frissítése
- Címkék frissítése
- Közvetlen metódusok meghívása
A feladatok elméletileg befuttatják az egyik ilyen műveletet, és nyomon követik a végrehajtás előrehaladását egy eszközkészleten. Azokat az eszközöket, amelyekkel egy feladat kommunikál, egy ikereszköz-lekérdezés határozza meg. Egy háttéralkalmazás például egy feladattal meghívhat egy újraindítási metódust 10 000 eszközön, amelyet egy ikereszköz-lekérdezés határoz meg, és amelyet egy későbbi időpontban ütemeznek. Az alkalmazás ezután nyomon követheti az előrehaladást, amint az egyes eszközök megkapják és végrehajtják az újraindítási módszert.
Az alábbi cikkekben további információt talál ezekről a képességekről:
Ikereszköz és tulajdonságok: Ismerkedés az ikereszközökkel , valamint az ikereszközök megismerése és használata az IoT Hubban
Közvetlen módszerek: IoT Hub fejlesztői útmutató – közvetlen metódusok
Feljegyzés
A cikkben ismertetett funkciók csak az IoT Hub standard szintjén érhetők el. Az alapszintű és standard/ingyenes IoT Hub-szintekről további információt a megoldáshoz megfelelő IoT Hub-szint kiválasztása című témakörben talál.
Ez a cikk bemutatja, hogyan hozhat létre két Azure CLI-munkamenetet:
Szimulált eszközt létrehozó munkamenet. A szimulált eszköz úgy van konfigurálva, hogy bármely közvetlen metódus meghívásakor állapotkódot és JSON hasznos adatokat adjon vissza.
Két ütemezett feladatot létrehozó munkamenet. Az első feladat meghív egy közvetlen metódust, a második feladat pedig frissíti a kívánt ikereszköz-tulajdonságot a másik munkamenetben létrehozott szimulált eszközön.
Előfeltételek
Azure parancssori felület (CLI). A cikkben szereplő parancsokat az Azure Cloud Shell használatával is futtathatja, amely egy interaktív CLI-rendszerhéj, amely a böngészőben vagy egy alkalmazásban, például a Windows Terminálban fut. Ha a Cloud Shellt használja, nem kell semmit telepítenie. Ha inkább helyileg szeretné használni a parancssori felületet, ehhez a cikkhez az Azure CLI 2.36-os vagy újabb verziója szükséges. A verzió azonosításához futtassa a következőt:
az --version
. Az Azure CLI helyi telepítéséhez vagy frissítéséhez lásd: Az Azure CLI telepítése.IoT Hub az Azure-előfizetésben. Ha még nem rendelkezik központokkal, kövesse az IoT Hub létrehozása című témakörben leírt lépéseket.
Győződjön meg arról, hogy a 8883-as port nyitva van a tűzfalon. A cikkben szereplő eszközminta MQTT protokollt használ, amely a 8883-es porton keresztül kommunikál. Ez a port néhány vállalati és oktatási hálózati környezetben blokkolható. További információkért és a probléma megoldásának módjaiért lásd: Csatlakozás az IoT Hubhoz (MQTT).
A Cloud Shell előkészítése
Ha az Azure Cloud Shellt szeretné használni, először el kell indítania és konfigurálnia kell. Ha helyileg használja a parancssori felületet, ugorjon a Két CLI-munkamenet előkészítése szakaszra.
Az Azure Portal oldalfejlécéről válassza a Cloud Shell ikont.
Feljegyzés
Ha először használja a Cloud Shellt, a rendszer kéri, hogy hozzon létre egy tárolót, amely a Cloud Shell használatához szükséges. Válasszon ki egy előfizetést a tárfiók és a Microsoft Azure-fájlmegosztás létrehozásához.
A Cloud Shell eszköztár környezetválasztóját használva válassza ki az előnyben részesített CLI-környezetet. Ez a cikk a Bash-környezetet használja. A PowerShell-környezetet is használhatja.
Feljegyzés
Egyes parancsok eltérő szintaxist vagy formázást igényelnek a Bash- és PowerShell-környezetekben. További információ: Tippek az Azure CLI sikeres használatához.
Két CLI-munkamenet előkészítése
Ezután két Azure CLI-munkamenetet kell előkészítenie. Ha a Cloud Shellt használja, ezeket a munkameneteket külön Cloud Shell-lapon futtatja. Ha helyi CLI-ügyfelet használ, külön PARANCSSOR-példányokat futtat. A következő feladatokhoz használja a külön CLI-munkameneteket:
- Az első munkamenet egy IoT-eszközt szimulál, amely kommunikál az IoT Hubbal.
- A második munkamenet feladatokat ütemez a szimulált eszközhöz az IoT Hubbal.
Feljegyzés
Az Azure CLI-hez be kell jelentkeznie az Azure-fiókjába. Ha a Cloud Shellt használja, a rendszer automatikusan bejelentkezik az Azure-fiókjába. Ha helyi CLI-ügyfelet használ, minden cli-munkamenetbe be kell jelentkeznie. Az Azure CLI-rendszerhéj-munkamenet és az IoT Hub közötti összes kommunikáció hitelesítve és titkosítva van. Ennek eredményeképpen ez a cikk nem igényel olyan extra hitelesítést, amelyet valódi eszközzel, például egy kapcsolati sztring használ. További információ az Azure CLI-vel való bejelentkezésről: Bejelentkezés az Azure CLI-vel.
Az első CLI-munkamenetben futtassa az az extension add parancsot. A parancs hozzáadja az Azure CLI-hez készült Microsoft Azure IoT-bővítményt a CLI-felülethez. A bővítmény az IoT Hub, az IoT Edge és az IoT Device Provisioning Service (DPS) adott parancsait adja hozzá az Azure CLI-hez. A bővítmény telepítése után nem kell újra telepítenie egy Cloud Shell-munkamenetben sem.
az extension add --name azure-iot
Feljegyzés
Ez a cikk az Azure IoT-bővítmény legújabb, úgynevezett
azure-iot
verzióját használja. Az örökölt verzió neveazure-cli-iot-ext
. Egyszerre csak egy verziót kell telepítenie. A parancs segítségévelaz extension list
ellenőrizheti a jelenleg telepített bővítményeket.A bővítmény régi verziójának eltávolítására használható
az extension remove --name azure-cli-iot-ext
.A bővítmény új verziójának hozzáadására használható
az extension add --name azure-iot
.A telepített bővítmények megtekintéséhez használja a parancsot
az extension list
.Nyissa meg a második PARANCSSOR-munkamenetet. Ha böngészőben használja a Cloud Shellt, válassza az Új munkamenet megnyitása ikont az első CLI-munkamenet eszköztárán. Ha helyileg használja a parancssori felületet, nyisson meg egy második PARANCSSOR-példányt.
Eszköz létrehozása és szimulálása
Ebben a szakaszban egy eszközidentitást hoz létre az IoT Hubhoz az első CLI-munkamenetben, majd szimulál egy eszközt az eszközidentitás használatával. A szimulált eszköz válaszol a második PARANCSSOR-munkamenetben ütemezett feladatokra.
Szimulált eszköz létrehozása és indítása:
Az első CLI-munkamenetben futtassa az az iot hub device-identity create parancsot, és cserélje le a következő helyőrzőket a megfelelő értékekre. Ez a parancs létrehozza a szimulált eszköz eszközidentitását.
{DeviceName}. A szimulált eszköz neve.
{HubName}. Az IoT Hub neve.
az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName}
Az első CLI-munkamenetben futtassa az az iot-eszköz szimulálási parancsát, és cserélje le a következő helyőrzőket a megfelelő értékekre. Ez a parancs az előző lépésben létrehozott eszközt szimulálja. A szimulált eszköz úgy van konfigurálva, hogy egy közvetlen metódus meghívásakor állapotkódot és hasznos adatokat adjon vissza.
{DeviceName}. A szimulált eszköz neve.
{HubName}. Az IoT Hub neve.
az iot device simulate --device-id {DeviceName} --hub-name {HubName} \ --method-response-code 201 \ --method-response-payload '{"result":"Direct method successful"}'
Tipp.
Az az iot device simulate parancs alapértelmezés szerint 100 eszközről felhőbe irányuló üzenetet küld 3 másodperces időközzel az üzenetek között. A szimuláció az összes üzenet elküldése után befejeződik. Ha azt szeretné, hogy a szimuláció tovább fusson, a
--msg-count
paraméterrel további üzeneteket adhat meg, vagy a--msg-interval
paraméterrel hosszabb intervallumot adhat meg az üzenetek között. A szimulált eszköz újraindításához ismét futtathatja a parancsot.
Feladat ütemezése közvetlen metódus meghívásához
Ebben a szakaszban egy feladatot ütemez a második CLI-munkamenetbe, hogy közvetlen metódust hívjon meg az első CLI-munkamenetben futó szimulált eszközön.
Ellenőrizze, hogy fut-e a szimulált eszköz az első CLI-munkamenetben. Ha nem, indítsa újra az az iot-eszköz szimulálási parancsának újra futtatásával a Létrehozás és szimulálás eszközről.
A második CLI-munkamenetben futtassa az az iot hub feladat létrehozási parancsát, és cserélje le a következő helyőrzőket a megfelelő értékekre. Ebben a példában nincs már meglévő metódus az eszközhöz. A parancs ütemez egy feladatot, amely egy példametódusnevet hív meg a szimulált eszközön, és null értéket ad meg a metódus hasznos adatainak. A metódus a válaszában egy állapotkódot és hasznos adatokat biztosít.
{HubName}. Az IoT Hub neve.
{JobName}. Az ütemezett feladat neve. A feladatnevek egyediek, ezért a parancs minden futtatásakor válasszon másik feladatnevet.
{MethodName}. A közvetlen metódus neve. A szimulált eszköz nem rendelkezik már meglévő metódussal, így tetszőleges nevet választhat ehhez a parancshoz.
{DeviceName}. A szimulált eszköz neve.
az iot hub job create --hub-name {HubName} --job-id {JobName} \ --job-type scheduleDeviceMethod \ --method-name {MethodName} --method-payload 'null' \ --query-condition "deviceId = '{DeviceName}'"
Tipp.
A közvetlen metódust meghívó feladat az iot hub-feladat létrehozási parancsának ütemezésekor meg kell adnia az értékeket mind a paraméterek, mind az
--method-name
--method-payload
opcionális paraméterek számára. Olyan közvetlen metódusok esetén, amelyek nem fogadnak el hasznos adatokat, adja megnull
a--method-payload
paramétert.Az első CLI-munkamenetben ellenőrizze, hogy a kimenet megjeleníti-e a metódushívást. Az alábbi képernyőképen az
{MethodName}
{DeviceName}
előző lépés parancssoriaz iot hub job create
felületének parancsában használtukSampleDevice
SampleMethod
a helyőrzőket és a helyőrzőket.
Feladat ütemezése az ikereszköz tulajdonságainak frissítéséhez
Ebben a szakaszban egy feladatot ütemez a második PARANCSSOR-munkamenetbe, hogy frissítse a kívánt ikereszköz-tulajdonságot az első CLI-munkamenetben futó szimulált eszközön.
Ellenőrizze, hogy fut-e a szimulált eszköz az első CLI-munkamenetben. Ha nem, indítsa újra az az iot-eszköz szimulálási parancsának újra futtatásával a Létrehozás és szimulálás eszközről.
A második CLI-munkamenetben futtassa az az iot hub feladat létrehozási parancsát, és cserélje le a következő helyőrzőket a megfelelő értékekre. Ebben a példában egy feladatot ütemezünk, amely a kívánt ikertulajdonság
BuildingNo
értékét 45-re állítja a szimulált eszközhöz.{HubName}. Az IoT Hub neve.
{JobName}. Az ütemezett feladat neve. A feladatnevek egyediek, ezért a parancs minden futtatásakor válasszon másik feladatnevet.
{DeviceName}. A szimulált eszköz neve.
az iot hub job create --hub-name {HubName} --job-id {JobName} \ --job-type scheduleUpdateTwin \ --twin-patch '{"properties":{"desired": {"BuildingNo": 45}}}' \ --query-condition "deviceId = '{DeviceName}'"
Az első CLI-munkamenetben győződjön meg arról, hogy a kimenet a jelentett ikereszköz-tulajdonság sikeres frissítését mutatja, jelezve, hogy a kívánt ikereszköz-tulajdonság is frissült.
Következő lépések
Ebben a cikkben az Azure CLI használatával szimulált egy eszközt, és feladatokat ütemezett egy közvetlen metódus futtatására, és frissítette az ikereszköz tulajdonságait a szimulált eszközhöz.
Az IoT Hub és az eszközfelügyeleti minták megismerésének folytatásához frissítsen egy képet az Azure IoT Hub eszközfrissítési oktatóanyagában a Raspberry Pi 3 B+ referenciarendszerkép használatával.