From 56e657e01528c228e425bfdec4b77730969db973 Mon Sep 17 00:00:00 2001 From: Jim Bennett Date: Fri, 30 Jul 2021 10:12:39 -0700 Subject: [PATCH 1/6] Adding more on virtual environments. (#274) * Update README.md * Spelling fixes * Update hardware.md * Adding IoT for beginners episode * Adding intro video * Fixing formatting of read more and self study sections. * Adding instructions for installing the ReSpeaker * Adding auth to language understanding * Adding Wio terminal timer setting * Update config.h * Fixing links and images * Increasing version numbers for SD card fix * Adding SD card requirement * speech and translations * Adding more on translations * All Wio Terminal now working except playing audio * Adding more details on virtual environments. --- 1-getting-started/lessons/1-introduction-to-iot/pi.md | 8 ++++++-- .../lessons/1-introduction-to-iot/virtual-device.md | 10 ++++++---- 1-getting-started/lessons/4-connect-internet/README.md | 10 +++++----- .../single-board-computer-commands.md | 2 +- .../4-connect-internet/single-board-computer-mqtt.md | 2 +- .../single-board-computer-telemetry.md | 2 +- 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/1-getting-started/lessons/1-introduction-to-iot/pi.md b/1-getting-started/lessons/1-introduction-to-iot/pi.md index d9758603..3e8fffda 100644 --- a/1-getting-started/lessons/1-introduction-to-iot/pi.md +++ b/1-getting-started/lessons/1-introduction-to-iot/pi.md @@ -49,7 +49,9 @@ To program the Pi using the Grove sensors and actuators, you will need to instal curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s - ``` - One of the powerful features of Python is the ability to install [pip packages](https://pypi.org) - these are packages of code written by other people and published to the Internet. You can install a pip package onto your computer with one command, then use that package in your code. This Grove install script will install the pip packages you will use to work with the Grove hardware from Python. + One of the powerful features of Python is the ability to install [Pip packages](https://pypi.org) - these are packages of code written by other people and published to the Internet. You can install a Pip package onto your computer with one command, then use that package in your code. This Grove install script will install the Pip packages you will use to work with the Grove hardware from Python. + + > 💁 By default when you install a package it is available everywhere on your computer, and this can lead to problems with package versions - such as one application depending on one version of a package that breaks when you install a new version for a different application. To work around this problem, you can use a [Python virtual environment](https://docs.python.org/3/library/venv.html), essentially a copy of Python in a dedicated folder, and when you install Pip packages they get installed just to that folder. You won't be using virtual environments when using your Pi. The Grove install script installs the Grove Python packages globally, so to use a virtual environment you would need to set up a virtual environment then manually re-install the Grove packages inside that environment. It's easier to just use global packages, especially as a lot of Pi developers will re-flash a clean SD card for each project. 1. Reboot the Pi either using the menu or running the following command in the Terminal: @@ -163,7 +165,9 @@ Configure the installed Pi software and install the Grove libraries. curl -sL https://github.com/Seeed-Studio/grove.py/raw/master/install.sh | sudo bash -s - ``` - One of the powerful features of Python is the ability to install [pip packages](https://pypi.org) - these are packages of code written by other people and published to the Internet. You can install a pip package onto your computer with one command, then use that package in your code. This Grove install script will install the pip packages you will use to work with the Grove hardware from Python. + One of the powerful features of Python is the ability to install [Pip packages](https://pypi.org) - these are packages of code written by other people and published to the Internet. You can install a Pip package onto your computer with one command, then use that package in your code. This Grove install script will install the Pip packages you will use to work with the Grove hardware from Python. + + > 💁 By default when you install a package it is available everywhere on your computer, and this can lead to problems with package versions - such as one application depending on one version of a package that breaks when you install a new version for a different application. To work around this problem, you can use a [Python virtual environment](https://docs.python.org/3/library/venv.html), essentially a copy of Python in a dedicated folder, and when you install Pip packages they get installed just to that folder. You won't be using virtual environments when using your Pi. The Grove install script installs the Grove Python packages globally, so to use a virtual environment you would need to set up a virtual environment then manually re-install the Grove packages inside that environment. It's easier to just use global packages, especially as a lot of Pi developers will re-flash a clean SD card for each project. 1. Reboot the Pi by running the following command: diff --git a/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md b/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md index ec101791..132186ba 100644 --- a/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md +++ b/1-getting-started/lessons/1-introduction-to-iot/virtual-device.md @@ -30,13 +30,15 @@ This app will be in a folder called `nightlight`, and it will be re-used with di ### Configure a Python virtual environment -One of the powerful features of Python is the ability to install [pip packages](https://pypi.org) - these are packages of code written by other people and published to the Internet. You can install a pip package onto your computer with one command, then use that package in your code. You'll be using pip to install a package to talk to CounterFit. +One of the powerful features of Python is the ability to install [Pip packages](https://pypi.org) - these are packages of code written by other people and published to the Internet. You can install a Pip package onto your computer with one command, then use that package in your code. You'll be using Pip to install a package to talk to CounterFit. -By default when you install a package it is available everywhere on your computer, and this can lead to problems with package versions - such as one application depending on one version of a package that breaks when you install a new version for a different application. To work around this problem, you can use a [Python virtual environment](https://docs.python.org/3/library/venv.html), essentially a copy of Python in a dedicated folder, and when you install pip packages they get installed just to that folder. +By default when you install a package it is available everywhere on your computer, and this can lead to problems with package versions - such as one application depending on one version of a package that breaks when you install a new version for a different application. To work around this problem, you can use a [Python virtual environment](https://docs.python.org/3/library/venv.html), essentially a copy of Python in a dedicated folder, and when you install Pip packages they get installed just to that folder. + +> 💁 If you are using a Raspberry Pi then you didn't set up a virtual environment on that device to manage Pip packages, instead you are using global packages, as the Grove packages are installed globally by the installer script. #### Task - configure a Python virtual environment -Configure a Python virtual environment and install the pip packages for CounterFit. +Configure a Python virtual environment and install the Pip packages for CounterFit. 1. From your terminal or command line, run the following at a location of your choice to create and navigate to a new directory: @@ -91,7 +93,7 @@ Configure a Python virtual environment and install the pip packages for CounterF > 💁 Your Python version may be different - as long as it's version 3.6 or higher you are good. If not, delete this folder, install a newer version of Python and try again. -1. Run the following commands to install the pip packages for CounterFit. These packages include the main CounterFit app as well as shims for Grove hardware. These shims allow you to write code as if you were programming using physical sensors and actuators from the Grove ecosystem but connected to virtual IoT devices. +1. Run the following commands to install the Pip packages for CounterFit. These packages include the main CounterFit app as well as shims for Grove hardware. These shims allow you to write code as if you were programming using physical sensors and actuators from the Grove ecosystem but connected to virtual IoT devices. ```sh pip install CounterFit diff --git a/1-getting-started/lessons/4-connect-internet/README.md b/1-getting-started/lessons/4-connect-internet/README.md index 31567fcd..18233d7a 100644 --- a/1-getting-started/lessons/4-connect-internet/README.md +++ b/1-getting-started/lessons/4-connect-internet/README.md @@ -124,7 +124,7 @@ The cloud service can then use this telemetry data to make decisions around what The next part in adding Internet control to your nightlight is sending the light level telemetry to the MQTT broker on a telemetry topic. -#### Task +#### Task - send telemetry from your IoT device Send light level telemetry to the MQTT broker. @@ -145,9 +145,9 @@ There's no point in sending telemetry if there's nothing on the other end to lis #### Install Python and VS Code -If you don't have Python and VS Code installed locally, you will need to install them both to code the server. If you are using a virtual device, or are working on your Raspberry Pi you can skip this step. +If you don't have Python and VS Code installed locally, you will need to install them both to code the server. If you are using a virtual IoT device, or are working on your Raspberry Pi you can skip this step as you should already have this installed and configured. -##### Task +##### Task - install Python and VS Code Install Python and VS Code. @@ -165,7 +165,7 @@ One of the powerful features of Python is the ability to install [pip packages]( By default when you install a package it is available everywhere on your computer, and this can lead to problems with package versions - such as one application depending on one version of a package that breaks when you install a new version for a different application. To work around this problem, you can use a [Python virtual environment](https://docs.python.org/3/library/venv.html), essentially a copy of Python in a dedicated folder, and when you install pip packages they get installed just to that folder. -##### Task +##### Task - configure a Python virtual environment Configure a Python virtual environment and install the MQTT pip packages. @@ -234,7 +234,7 @@ Configure a Python virtual environment and install the MQTT pip packages. The server code can now be written in Python. -##### Task +##### Task - write the server code Write the server code. diff --git a/1-getting-started/lessons/4-connect-internet/single-board-computer-commands.md b/1-getting-started/lessons/4-connect-internet/single-board-computer-commands.md index 84464cb6..65ff56a4 100644 --- a/1-getting-started/lessons/4-connect-internet/single-board-computer-commands.md +++ b/1-getting-started/lessons/4-connect-internet/single-board-computer-commands.md @@ -12,7 +12,7 @@ Subscribe to commands. 1. Open the nightlight project in VS Code. -1. If you are using a virtual IoT device, ensure the terminal is running the virtual environment +1. If you are using a virtual IoT device, ensure the terminal is running the virtual environment. If you are using a Raspberry Pi you won't be using a virtual environment. 1. Add the following code after the definitions of the `client_telemetry_topic`: diff --git a/1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md b/1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md index a1f11d11..3d2e1ffc 100644 --- a/1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md +++ b/1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md @@ -14,7 +14,7 @@ Install the pip package 1. Open the nightlight project in VS Code. -1. If you are using a virtual IoT device, ensure the terminal is running the virtual environment. +1. If you are using a virtual IoT device, ensure the terminal is running the virtual environment. If you are using a Raspberry Pi you won't be using a virtual environment. 1. Run the following command to install the MQTT pip package: diff --git a/1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md b/1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md index 08bf6019..6cae5fa1 100644 --- a/1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md +++ b/1-getting-started/lessons/4-connect-internet/single-board-computer-telemetry.md @@ -12,7 +12,7 @@ Publish telemetry to the MQTT broker. 1. Open the nightlight project in VS Code. -1. If you are using a virtual IoT device, ensure the terminal is running the virtual environment +1. If you are using a virtual IoT device, ensure the terminal is running the virtual environment. If you are using a Raspberry Pi you won't be using a virtual environment. 1. Add the following import to the top of the `app.py` file: From 8b6335c8da5230f52ff9fdf8f7b78ede6680e871 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ali=20Hakim=20Ta=C5=9Fk=C4=B1ran?= <52009742+alihakimtaskiran@users.noreply.github.com> Date: Fri, 13 Aug 2021 22:46:31 +0300 Subject: [PATCH 2/6] Update README.tr.md (#283) --- translations/README.tr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/README.tr.md b/translations/README.tr.md index cfda4ec7..ba7420d3 100644 --- a/translations/README.tr.md +++ b/translations/README.tr.md @@ -73,7 +73,7 @@ We have two choices of IoT hardware to use for the projects depending on persona > **Quiz'ler hakkÄąnda bir not**: TÃŧm quizler [bu uygulamada](https://brave-island-0b7c7f50f.azurestaticapps.net), toplam 48 quiz için her birine 3 soru. Quizlerin ilgili derslerde linkleri vardÄąr. AyrÄąca quiz uygulamasÄą kendi cihanÄązdan da çalÄąÅŸabilir. Bunun için `quiz-app` kalsÃļrÃŧndeki talimatlara uyun. -## Lessons +## Dersler | | Proje AdÄą | Öğretilen Kavramlar | Hedeflenen Konular | BağlantÄąlÄą Ders | | :-: | :----------: | :-------------: | ------------------- | :-----------: | From 54ea95dcd6757b11e50649da5b1eef5a8f7a4cb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ali=20Hakim=20Ta=C5=9Fk=C4=B1ran?= <52009742+alihakimtaskiran@users.noreply.github.com> Date: Sat, 14 Aug 2021 22:44:48 +0300 Subject: [PATCH 3/6] Update README.tr.md (#285) --- translations/README.tr.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/translations/README.tr.md b/translations/README.tr.md index ba7420d3..ee25bbfd 100644 --- a/translations/README.tr.md +++ b/translations/README.tr.md @@ -52,11 +52,11 @@ AyrÄąca; dersten Ãļnce ufak bir quiz Ãļğrencinin konu hakkÄąnda bir fikri olmas Her proje Ãļğrencilerde ve hobicilerde bulunan gerçek donanÄąmlara dayanÄąr. Her proje; Ãļzel proje alanlarÄąna, ve ilgili temel bilgilere bakar. BaşarÄąlÄą bir geliştirici olmak için, sorunlarÄą çÃļzdÃŧğÃŧnÃŧz alanÄą anlamaya yardÄąmcÄą olur; bu temel bilgiyi sağlamak, Ãļğrencilerin, çÃļzmeleri istenebilecek sorunu kendi IoT çÃļzÃŧmleri ve Ãļğrendikleri hakkÄąnda dÃŧşÃŧnmelerini sağlar. Öğrenciler çÃļzÃŧm için neyi niçin Ãŧrettiklerini Ãļğrenir ve kullanÄącÄą onlarÄą takdir eder. -## Hardware +## DonanÄąm +Kişisel tercih, programlama dili bilgisi ve tercihi, Ãļğrenme amaçlarÄą ve erişilebilirlik için iki IoT donanÄąmÄą seçeneğimiz var. AyrÄąca donanÄąma erişimi olmayanlara ve o donanÄąmlarÄą henÃŧz Ãļğrenmeden satÄąn alamayacaklara 'sanal donanÄąm' şeklini sunduk. Daha fazlasÄąnÄą ve alÄąÅŸveriş listesini [donanÄąm sayfasÄąndan](../hardware.md) okuyabilirsiniz. Orada Seed Studio'dan arkadaşlarÄąmÄązdan satÄąn alabileceğiniz linkler mevcut. -We have two choices of IoT hardware to use for the projects depending on personal preference, programming language knowledge or preferences, learning goals and availability. We have also provided a 'virtual hardware' version for those who don't have access to hardware, or want to learn more before committing to a purchase. You can read more and find a 'shopping list' on the [hardware page](../hardware.md), including links to buy complete kits from our friends at Seeed Studio. -> 💁 Find our [Code of Conduct](../CODE_OF_CONDUCT.md), [Contributing](../CONTRIBUTING.md), and [Translation](../TRANSLATIONS.md) guidelines. We welcome your constructive feedback! +> 💁 [DavranÄąÅŸ kurallarÄąmÄąz](../CODE_OF_CONDUCT.md) , [KatkÄąlandÄąrma](../CONTRIBUTING.md), ve [Çeviri](../TRANSLATIONS.md) rehberlerimiz. YapÄącÄą geri bildiriminizi memnuniyetle karÅŸÄąlÄąyoruz ## Her ders şunlarÄą içerir: From 3cddcc36bb51dea9c1669e6a9c15e4a2c50ee64c Mon Sep 17 00:00:00 2001 From: "Mohammad Iftekher (Iftu) Ebne Jalal" Date: Tue, 17 Aug 2021 07:45:56 +0600 Subject: [PATCH 4/6] [Bn Translation] Store location data (#282) * Create README.bn.md * Create assignment.bn.md * Delete .dummy.md * Linking Bn Translation of 12 Co-authored-by: Jen Looper Co-authored-by: Jim Bennett --- .../translations/.dummy.md | 9 - .../translations/README.bn.md | 469 ++++++++++++++++++ .../translations/assignment.bn.md | 19 + translations/README.bn.md | 2 +- 4 files changed, 489 insertions(+), 10 deletions(-) delete mode 100644 3-transport/lessons/2-store-location-data/translations/.dummy.md create mode 100644 3-transport/lessons/2-store-location-data/translations/README.bn.md create mode 100644 3-transport/lessons/2-store-location-data/translations/assignment.bn.md diff --git a/3-transport/lessons/2-store-location-data/translations/.dummy.md b/3-transport/lessons/2-store-location-data/translations/.dummy.md deleted file mode 100644 index 6e7db247..00000000 --- a/3-transport/lessons/2-store-location-data/translations/.dummy.md +++ /dev/null @@ -1,9 +0,0 @@ -# Dummy File - -This file acts as a placeholder for the `translations` folder.
-**Please remove this file after adding the first translation** - -For the instructions, follow the directives in the [translations guide](https://github.com/microsoft/IoT-For-Beginners/blob/main/TRANSLATIONS.md) . - -## THANK YOU -We truly appreciate your efforts! diff --git a/3-transport/lessons/2-store-location-data/translations/README.bn.md b/3-transport/lessons/2-store-location-data/translations/README.bn.md new file mode 100644 index 00000000..c7699547 --- /dev/null +++ b/3-transport/lessons/2-store-location-data/translations/README.bn.md @@ -0,0 +1,469 @@ +# āϞ⧋āϕ⧇āĻļāύ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ + +![A sketchnote overview of this lesson](../../../../sketchnotes/lesson-12.jpg) + +> āĻ¸ā§āϕ⧇āϚāύ⧋āϟāϟāĻŋ āϤ⧈āϰ⧀ āĻ•āϰ⧇āϛ⧇āύ [Nitya Narasimhan](https://github.com/nitya)āĨ¤ āĻŦ⧜ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻĻ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ āĻ›āĻŦāĻŋāϟāĻŋāϤ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +## āϞ⧇āĻ•āϚāĻžāϰ-āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ + +[āϞ⧇āĻ•āϚāĻžāϰ-āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āϕ⧁āχāϜ](https://brave-island-0b7c7f50f.azurestaticapps.net/quiz/23) + +## āϏ⧂āϚāύāĻž + +āĻ—āϤ āĻĒāĻžāϠ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ⧇āϰ āĻĄā§‡āϟāĻž āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāϤ⧇ āĻāĻ•āϟāĻŋ āϜāĻŋāĻĒāĻŋāĻāϏ āϏ⧇āĻ¨ā§āϏāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšā§Ÿ āϤāĻž āφāĻŽāϰāĻž āĻļāĻŋāϖ⧇āĻ›āĻŋāϞāĻžāĻŽāĨ¤ āĻ–āĻžāĻĻā§āϝāϏāĻžāĻŽāĻ—ā§āϰ⧀āϤ⧇ āĻ­āĻ°ā§āϤāĻŋ āĻāĻ•āϟāĻŋ āĻŸā§āϰāĻžāϕ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āĻāĻŦāĻ‚ āĻāϟāĻŋāϰ āϝāĻžāĻ¤ā§āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāχ āĻĄā§‡āϟāĻžāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇, āĻāϟāĻŋ āĻ•ā§āϞāĻžāωāĻĄā§‡ āφāχāĻ“āϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇ āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āϕ⧋āĻĨāĻžāĻ“ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻĻāϰāĻ•āĻžāϰāĨ¤ + +āĻāχ āĻĒāĻžāϠ⧇ āφāχāĻ“āϟāĻŋ āĻĄā§‡āϟāĻž āϏāĻžā§āϚāϝāĻŧ āĻ•āϰāĻžāϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āωāĻĒāĻžāϝāĻŧ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāĻŽāϰāĻž āĻļāĻŋāĻ–āĻŦ āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰāϞ⧇āϏ āϕ⧋āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āφāχāĻ“āϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻĨ⧇āϕ⧇ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āϝāĻžā§Ÿ āϤāĻžāĻ“ āĻļāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰāĻŦā§‹āĨ¤ + +āĻāχ āĻĒāĻžāϠ⧇ āφāĻŽāϰāĻž āĻĻ⧇āĻ–āĻŦā§‹: + +* [āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ āĻāĻŦāĻ‚ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻŦāĻŋāĻšā§€āύ āĻĄā§‡āϟāĻž](#āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ-āĻāĻŦāĻ‚-āĻ•āĻžāĻ āĻžāĻŽā§‹āĻŦāĻŋāĻšā§€āύ-āĻĄā§‡āϟāĻž) +* [GPS āĻĄā§‡āϟāĻž IoT Hub āĻ āĻĒā§āϰ⧇āϰāĻŖ](#send-gps-data-to-an-iot-hub) +* [Hot, Warm, āĻāĻŦāĻ‚ Cold Path](#Hot-Warm-āĻāĻŦāĻ‚-Cold-Path) +* [āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻŦāĻŋāĻšā§€āύ āϕ⧋āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϜāĻŋāĻĒāĻŋāĻāϏ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž](#āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻŦāĻŋāĻšā§€āύ-āϕ⧋āĻĄ-āĻŦā§āϝāĻŦāĻšāĻžāϰ-āĻ•āϰ⧇-āϜāĻŋāĻĒāĻŋāĻāϏ-āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ-āĻĒāϰāĻŋāϚāĻžāϞāύāĻž) +* [Azure āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ](#azure-āĻ¸ā§āĻŸā§‹āϰ⧇āϜ-āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ) +* [āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻŦāĻŋāĻšā§€āύ-āϕ⧋āĻĄāϕ⧇-āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡-āϏāĻ‚āϝ⧁āĻ•ā§āϤāĻ•āϰāĻŖ](#āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻŦāĻŋāĻšā§€āύ-āϕ⧋āĻĄāϕ⧇-āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡-āϏāĻ‚āϝ⧁āĻ•ā§āϤāĻ•āϰāĻŖ) + +## āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ āĻāĻŦāĻ‚ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻŦāĻŋāĻšā§€āύ āĻĄā§‡āϟāĻž + +āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāϗ⧁āϞāĻŋ āĻĄā§‡āϟāĻž āύāĻŋāϝāĻŧ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāχ āĻĄā§‡āϟāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āφāĻ•āĻžāϰ āĻāĻŦāĻ‚ āϧāϰāϪ⧇āϰ āĻšā§Ÿā§‡ āĻĨāĻžāϕ⧇āĨ¤ āĻāϟāĻŋ āĻāĻ•āĻ• āϏāĻ‚āĻ–ā§āϝāĻž āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĻĒā§āϰāϚ⧁āϰ āĻĒāϰāĻŋāĻŽāĻžāϪ⧇ āĻŸā§‡āĻ•ā§āϏāϟ, āĻ­āĻŋāĻĄāĻŋāĻ“, āϚāĻŋāĻ¤ā§āϰ āĻŦāĻž āφāχāĻ“āϟāĻŋ āĻĄā§‡āϟāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻĄā§‡āϟāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĻ⧁āχ āĻ­āĻžāϗ⧇ āĻŦāĻŋāĻ­āĻ•ā§āϤ āĻ•āϰāĻž āϝāĻžāϝāĻŧ - *āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ* āĻĄā§‡āϟāĻž āĻāĻŦāĻ‚ *āĻ•āĻžāĻ āĻžāĻŽā§‹āĻŦāĻŋāĻšā§€āύ* āĻĄā§‡āϟāĻžāĨ¤ + +* **āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ āĻĄā§‡āϟāĻž (Structured Data)** āĻšāϞ āĻāĻŽāύ āϧāϰāϪ⧇āϰ āĻĄā§‡āϟāĻž āϝāĻž āĻāĻ•āϟāĻŋ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ, āĻ…āύāĻŽāύ⧀āϝāĻŧ āĻ•āĻžāĻ āĻžāĻŽā§‹āϝ⧁āĻ•ā§āϤ, āϝāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧāύāĻž āĻāĻŦāĻ‚ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŸā§‡āĻŦāĻŋāϞ āφāĻ•āĻžāϰ⧇ āϏāĻžāϜāĻžāύ⧋ āϝāĻžā§Ÿ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĄā§‡āϟāĻžāϰ āϏāĻžāĻĨ⧇ āϕ⧋āύ⧋āĻ­āĻžāĻŦ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻšāϞ āϕ⧋āύ⧋ āĻŦā§āϝāĻ•ā§āϤāĻŋāϰ āύāĻžāĻŽ, āϜāĻ¨ā§āĻŽ āϤāĻžāϰāĻŋāĻ– āĻāĻŦāĻ‚ āĻ āĻŋāĻ•āĻžāύāĻž āϏāĻš āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāĻŖāĨ¤ + +* **āĻ•āĻžāĻ āĻžāĻŽā§‹āĻŦāĻŋāĻšā§€āύ āĻĄā§‡āϟāĻž (Unstructured Data)** āĻšāϞ āĻāĻ•āϟāĻŋ āĻ…āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ, āύāĻŽāύ⧀āϝāĻŧ āĻ•āĻžāĻ āĻžāĻŽā§‹āϝ⧁āĻ•ā§āϤ āĻĄā§‡āϟāĻž, āϝāĻž āϘāύ āϘāύ āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻšāϞ⧋ - āϞāĻŋāĻ–āĻŋāϤ āύāĻĨāĻŋ āĻŦāĻž āĻ¸ā§āĻĒā§āϰ⧇āĻĄāĻļāĻŋāϟ āĨ¤ + +✅ āφāϰ āϕ⧀ āϕ⧀ āωāĻĻāĻžāĻšāϰāĻŖ āφāĻŽāϰāĻž āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ āĻāĻŦāĻ‚ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻŦāĻŋāĻšā§€āύ āĻĄā§‡āϟāĻžāϤ⧇ āĻ­āĻžāĻŦāϤ⧇ āĻĒāĻžāϰāĻŋ āϤāĻž āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŋāĨ¤ + +> 💁 āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āφāϧāĻž-āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ (Semi-Structured) āĻĄā§‡āϟāĻž āϰāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ, āϤāĻŦ⧇ āϤāĻĨā§āϝ⧇āϰ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻŸā§‡āĻŦāĻŋāϞ āφāĻ•āĻžāϰ⧇ āϏāĻžāϜāĻžāύ⧋ āϝāĻžā§ŸāύāĻž āĨ¤ + +āφāχāĻ“āϟāĻŋ āĻĄā§‡āϟāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻŦāĻŋāĻšā§€āύ āĻĄā§‡āϟāĻž (Unstructured Data) āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāĻŋāϤ āĻšāϝāĻŧāĨ¤ + +āĻ•āĻ˛ā§āĻĒāύāĻž āĻ•āϰāĻŋ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻŦāĻĄāĻŧ āĻŦāĻžāĻŖāĻŋāĻœā§āϝāĻŋāĻ• āĻ–āĻžāĻŽāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āϝāĻžāύāĻŦāĻžāĻšāύ⧇āϰ āĻŦāĻšāϰ⧇ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϧāϰāϪ⧇āϰ āĻ—āĻžāĻĄāĻŧāĻŋāϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻĻāϰāĻ•āĻžāϰ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ: + +* āĻŸā§āϰāĻžāĻ•ā§āϟāϰ⧇āϰ āϜāĻ¨ā§āϝ āϜāĻŋāĻĒāĻŋāĻāϏ āĻĄā§‡āϟāĻž āĻĻāϰāĻ•āĻžāϰ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻāϟāĻŋ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϝ⧇ āϤāĻžāϰāĻž āϏāĻ āĻŋāĻ• āĻ–āĻžāĻŽāĻžāϰ⧇ āĻŦāĻž āĻ•ā§āώ⧇āϤ⧇ āĻ•āĻžāϜ āĻ•āϰāϛ⧇ +* āϚāĻžāϞāĻ•āϰāĻž āύāĻŋāϰāĻžāĻĒāĻĻ⧇ āĻ—āĻžāĻĄāĻŧāĻŋ āϚāĻžāϞāĻžāĻšā§āϛ⧇ āĻ•āĻŋāύāĻž, āĻĄā§āϰāĻžāχāĻ­āĻžāϰ⧇āϰ āĻĒāϰāĻŋāϚāϝāĻŧ āύāĻŋāĻļā§āϚāĻŋāϤāĻ•āϰāĻŖ āĻāĻŦāĻ‚ āĻ•āϤāĻ•ā§āώāĻŖ āĻ•āĻžāϜ āĻ•āϰāϛ⧇ āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ–āĻžāĻĻā§āϝāϏāĻžāĻŽāĻ—ā§āϰ⧀ āĻĒāϰāĻŋāĻŦāĻšāύ⧇āϰ āĻŸā§āϰāĻžāĻ•āϗ⧁āϞāĻŋāϤ⧇ āϜāĻŋāĻĒāĻŋāĻāϏ āĻĄā§‡āϟāĻžāϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻ—āϤāĻŋāϏāĻ‚āĻ•ā§āϰāĻžāĻ¨ā§āϤ āĻĄā§‡āϟāĻžāĻ“ āĻĒā§āĻ°ā§Ÿā§‹āϜāύāĨ¤ +* āϰ⧇āĻĢā§āϰāĻŋāϜāĻžāϰ⧇āĻŸā§‡āĻĄ āĻŸā§āϰāĻžāϕ⧇āϰ āϜāĻ¨ā§āϝ āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻžāϰ āϤāĻĨā§āϝ āϖ⧁āĻŦ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϝāĻžāϤ⧇ āĻ–āĻžāĻŦāĻžāϰ āϖ⧁āĻŦ āĻ—āϰāĻŽ āĻŦāĻž āĻ āĻžāĻ¨ā§āĻĄāĻž āύāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāĻŦāĻšāϪ⧇āϰ āϏāĻŽā§Ÿ āϤāĻž āύāĻˇā§āϟ āύāĻž āĻšāϝāĻŧāĨ¤ + +āĻāχ āĻĄā§‡āϟāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϝāĻĻāĻŋ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏāϟāĻŋ āĻāĻ•āϟāĻŋ āĻŸā§āϰāĻžāϕ⧇āϰ āĻ•ā§āϝāĻžāĻŦ⧇ āĻĨāĻžāϕ⧇, āϤāĻŦ⧇ āĻŸā§āϰ⧇āϞāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻĄā§‡āϟāĻžāĻ“ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āϰ⧇āĻĢā§āϰāĻŋāϜāĻžāϰ⧇āĻŸā§‡āĻĄ āĻŸā§āϰ⧇āϞāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāĻŦ⧇, āϤāĻ–āύāχ āĻļ⧁āϧ⧁ āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻžāϰ āĻĄā§‡āϟāĻž āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ + +✅ āφāϰ āϕ⧋āύ āϕ⧋āύ āφāχāĻ“āϟāĻŋ āĻĄā§‡āϟāĻž āĻ—ā§āϰāĻšāĻŖ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇? āĻŸā§āϰāĻžāĻ•āϗ⧁āϞāĻŋ āϝ⧇ āϧāϰāϪ⧇āϰ āĻŦā§‹āĻāĻž āĻŦāĻšāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻāĻ•āϟ⧁ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āϏ⧇āχāϏāĻžāĻĨ⧇ āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāϪ⧇āϰ āĻĄā§‡āϟāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇āĻ“ āĻ­āĻžāĻŦāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + +āĻāχ āϤāĻĨā§āϝ āϝāĻžāύāĻŦāĻžāĻšāύ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϏāĻŦ āϤāĻĨā§āϝāĻžāĻŦāϞāĻŋ āφāϏāϞ⧇ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āχ IoT āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇ āĻĒāĻžāĻ āĻžāύ⧋ āĻšāϝāĻŧāĨ¤ āφāχāĻ“āϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻŋāϏāϟāĻŋāϕ⧇ āĻāχ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻŦāĻŋāĻšā§€āύ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāϤ⧇ āĻšāĻŦ⧇, āĻāϟāĻŋāϕ⧇ āĻāĻŽāύāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝāĻž āĻāϟāĻŋ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āĻŦāĻž āĻŦāĻŋāĻļā§āϞ⧇āώāϪ⧇āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āφāĻŦāĻžāϰ āĻāχ āĻĄā§‡āϟāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ•āĻžāĻ āĻžāĻŽā§‹āϰ āϏāĻžāĻĨ⧇āĻ“ āϝ⧇āύ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + +### SQL āĻāĻŦāĻ‚ NoSQL āĻ¸ā§āĻŸā§‹āϰ⧇āϜ + +āĻĄā§‡āϟāĻžāĻŦ⧇āϏāϗ⧁āϞāĻŋ āĻāĻŽāύ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϝāĻž āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻāĻŦāĻ‚ āĻ•ā§ā§Ÿā§‡āϰāĻŋ āĻ•āϰāĻžāϰ āϏ⧁āϝ⧋āĻ— āĻĻ⧇āϝāĻŧāĨ¤ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻĻ⧁āχ āĻĒā§āϰāĻ•āĻžāϰ āĻšā§Ÿ - SQL āĻāĻŦāĻ‚ NoSQL + +#### SQL databases + +āĻĒā§āϰāĻĨāĻŽāĻĻāĻŋāϕ⧇āϰ āĻĄāĻžāϟāĻžāĻŦ⧇āϏāϗ⧁āϞ⧋ āĻ›āĻŋāϞ āϰāĻŋāϞ⧇āĻļāύāĻžāϞ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāϏ (āφāϰāĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāϏ), āĻŦāĻž āϰāĻŋāϞ⧇āĻļāύāĻžāϞ āĻĄāĻžāϟāĻžāĻŦ⧇āϏāĨ¤ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāĻ°ā§āĻĄ āĻ•ā§āϝ⧋āϝāĻŧāĻžāϰ⧀ āĻ˛ā§āϝāĻžāĻ™ā§āϗ⧁āϝāĻŧ⧇āϜ (āĻāϏāĻ•āĻŋāωāĻāϞ) āĻāĻ–āĻžāύ⧇ āĻĄā§‡āϟāĻž āϝ⧋āĻ—, āĻ…āĻĒāϏāĻžāϰāĻŖ, āφāĻĒāĻĄā§‡āϟ āĻŦāĻž āϕ⧋āϝāĻŧ⧇āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϤāĻžāĻĻ⧇āϰ āϏāĻžāĻĨ⧇ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•ā§āϟ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻāϟāĻŋ āĻāϏāĻ•āĻŋāωāĻāϞ āĻĄā§‡āϟāĻžāĻŦ⧇āϏ āύāĻžāĻŽā§‡āĻ“ āĻĒāϰāĻŋāϚāĻŋā§āϤāĻŋ āϞāĻžāĻ­ āĻ•āϰ⧇āĨ¤ āĻāχ āĻĄāĻžāϟāĻžāĻŦ⧇āϏāϗ⧁āϞ⧋ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āύāĻŋāϝāĻŧ⧇ āĻ—āĻ āĻŋāϤ āϝāĻž āĻ¸ā§āĻĒā§āϰ⧇āĻĄāĻļā§€āĻŸā§‡āϰ āĻŽāϤāχ āĻĄā§‡āϟāĻž āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻāĻ•āϟāĻŋ āϏ⧁-āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āϏ⧇āϟāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āύāĻžāĻŽāϝ⧁āĻ•ā§āϤ āĻ•āϞāĻžāĻŽ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āϝāĻ–āύ āĻĄā§‡āϟāĻž āϝ⧋āĻ— āĻŦāĻž insert āĻ•āϰāĻž, āĻŸā§‡āĻŦāĻŋāϞ⧇ āĻāĻ•āϟāĻŋ āϏāĻžāϰāĻŋ āϝ⧋āĻ— āĻ•āϰāĻž, āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ•āϞāĻžāĻŽā§‡ āĻŽāĻžāύ āϰāĻžāĻ–āĻž - āĻāϏāĻŦ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤ āĻāϟāĻŋ āĻĄā§‡āϟāĻžāϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āĻ•āĻ ā§‹āϰ āĻ•āĻžāĻ āĻžāĻŽā§‹āϰ āĻŽāĻ§ā§āϝ⧇ āϰāĻžāϖ⧇ - āϝāĻĻāĻŋāĻ“ āĻ•āϞāĻžāĻŽāϗ⧁āϞāĻŋ āφāĻŽāϰāĻž āϚāĻžāχāϞ⧇ āĻ–āĻžāϞāĻŋ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰāĻŋ, āϤāĻŦ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻ•āϞāĻžāĻŽ āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āϚāĻžāχāϞ⧇ āĻ…āĻŦāĻļā§āϝāχ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϏāĻžāϰāĻŋāϰ (ROW) āĻŽāĻžāύāϗ⧁āϞāĻŋ āĻĒā§‚āϰāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāχ āĻĄā§‡āϟāĻžāĻŦ⧇āϏāϗ⧁āϞāĻŋ āϰāĻŋāϞ⧇āĻļāύāĻžāϞ - āϤāĻžāχ āĻāĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻ…āĻ¨ā§āϝāϟāĻŋāϰ āϏāĻžāĻĨ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ• āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + +![A relational database with the ID of the User table relating to the user ID column of the purchases table, and the ID of the products table relating to the product ID of the purchases table](../../../../images/sql-database.png) + +āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϝāĻĻāĻŋ āϕ⧋āύ āĻāĻ•āϟāĻŋ āĻŸā§‡āĻŦāĻŋāϞ⧇ āφāĻŽāϰāĻž āϕ⧋āύ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤ āĻŦāĻŋāĻŦāϰāĻŖ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŋ, āϤāĻžāĻšāϞ⧇ āĻĒā§āϰāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āϜāĻ¨ā§āϝ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āĻ¸ā§āĻŦāϤāĻ¨ā§āĻ¤ā§āϰ (UNIQUE) āφāχāĻĄāĻŋ āĻĨāĻžāĻ•āĻŦ⧇ āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āύāĻžāĻŽ āĻāĻŦāĻ‚ āĻ āĻŋāĻ•āĻžāύāĻž āϏāĻŽā§āĻŦāϞāĻŋāϤ āϏāĻžāϰāĻŋāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧāĨ¤ āφāĻŽāϰāĻž āϝāĻĻāĻŋ āϏ⧇āχ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻŦāĻŋāĻŦāϰāĻŖ āϝ⧇āĻŽāύ āϤāĻžāĻĻ⧇āϰ āĻ•ā§āϰāϝāĻŧ āϤāĻžāϞāĻŋāĻ•āĻž āĻ…āĻ¨ā§āϝ āĻŸā§‡āĻŦāĻŋāϞ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āϚāĻžāχ, āϤāĻžāĻšāϞ⧇ āϏ⧇āχ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āφāχāĻĄāĻŋāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāĻĻ⧇āϰ āύāϤ⧁āύ āĻŸā§‡āĻŦāĻŋāϞ⧇ āĻāĻ•āϟāĻŋ āĻ•āϞāĻžāĻŽ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤ āϝāĻ–āύ āφāĻŽāϰāĻž āϕ⧋āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāĻ°ā§€ā§āϰ āϤāĻĨā§āϝ āϖ⧁āρāϜāĻŦā§‹, āφāĻŽāϰāĻž āϤāĻžāĻĻ⧇āϰ āφāχāĻĄāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϤāĻžāĻĻ⧇āϰ āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤ āϤāĻĨā§āϝ āĻāĻ• āĻŸā§‡āĻŦāĻŋāϞ āĻĨ⧇āϕ⧇ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝ āĻŸā§‡āĻŦāĻŋāϞ āĻĨ⧇āϕ⧇ āϤāĻžāĻĻ⧇āϰ āϕ⧇āύāĻžāĻ•āĻžāϟāĻžāϰ āϏāĻ•āϞ āϤāĻĨā§āϝ āĻĒā§‡ā§Ÿā§‡ āϝāĻžāĻŦāĨ¤ + +āĻāϏāĻ•āĻŋāωāĻāϞ āĻĄā§‡āϟāĻžāĻŦ⧇āϏāϗ⧁āϞāĻŋ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻŦāĻ‚ āĻ¸ā§āĻ•āĻŋāĻŽāĻžāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āϰāĻžāĻ–āĻžāϰ āϜāĻ¨ā§āϝ āφāĻĻāĻ°ā§āĻļāĨ¤ + +✅ āĻāϏāĻ•āĻŋāωāĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ…āĻ­āĻŋāĻœā§āĻžāϤāĻž āύāĻž āĻĨāĻžāĻ•āϞ⧇ [SQL page - Wikipedia](https://wikipedia.org/wiki/SQL) āĻĨ⧇āϕ⧇ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϜāĻžāύāϤ⧇ āĻĒāĻžāϰāĻŦā§‹āĨ¤ + +āĻ•āĻŋāϛ⧁ āĻŦāĻšā§āϞ āĻĒāϰāĻŋāϚāĻŋāϤ āĻāϏāĻ•āĻŋāωāĻāϞ āĻĄā§‡āϟāĻžāĻŦ⧇āϏ āĻšāϞ⧋ Microsoft SQL Server, MySQL āĻāĻŦāĻ‚ PostgreSQL āĨ¤ + +✅ āĻ•āĻŋāϛ⧁ āĻ—āĻŦ⧇āώāĻŖāĻž āĻ•āϰāĻž āϝāĻžāĻ•: āĻāϏāĻ•āĻŋāωāĻāϞ āĻĄā§‡āϟāĻžāĻŦ⧇āϏ āĻāĻŦāĻ‚ āĻāĻĻ⧇āϰ āĻ•āĻ°ā§āĻŽāĻĒāϰāĻŋāϧāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻœā§āĻžāĻžāύ āĻ…āĻ°ā§āϜāύ āĻ•āϰāĻŋāĨ¤ + +#### NoSQL āĻĄā§‡āϟāĻžāĻŦ⧇āϏ + +NoSQL āĻĄā§‡āϟāĻžāĻŦāϏ⧇āϏ⧇āϰ āύāĻžāĻŽā§‡āϰ āφāϗ⧇ NO āĻŦāĻž 'āύāĻž' āϰāĻžāĻ–āĻžāϰ āĻ•āĻžāϰāĻŖāχ āĻšāϞ⧋ āϤāĻžāĻĻ⧇āϰ āϏ⧇āχ āϏ⧁āĻ—āĻ āĻŋāϤ āĻ•āĻžāĻ āĻžāĻŽā§‹ āύ⧇āχāĨ¤ āϤāĻžāϰāĻž 'āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟ āĻĄā§‡āϟāĻžāĻŦ⧇āϏ' āύāĻžāĻŽā§‡āĻ“ āĻĒāϰāĻŋāϚāĻŋāϤ āĻ•āĻžāϰāĻŖ āϤāĻžāϰāĻž āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āĻŽāϤ⧋ āĻ…āϏāĻ‚āĻ—āĻ āĻŋāϤ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + +> 💁 āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻœā§‡āύ⧇ āϰāĻžāĻ–āĻž āĻ­āĻžāϞ⧋ āϝ⧇ āĻ•āĻŋāϛ⧁ NoSQL āĻĄā§‡āϟāĻžāĻŦ⧇āϏ⧇ āφāĻŽāϰāĻž SQL āĻāϰ āĻŽāϤ āĻ•āϰ⧇ āĻ•ā§ā§Ÿā§‡āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦā§‹āĨ¤ + +![Documents in folders in a NoSQL database](../../../../images/noqsl-database.png) + +NoSQL āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇āϰ āĻāĻ•āϟāĻŋ āĻĒā§‚āĻ°ā§āĻŦāύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āύ⧇āχ āϝāĻž āĻĄā§‡āϟāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻž āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧ āĻ•āϰāĻŦ⧇, āĻŦāϰāĻ‚ āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āφāĻŽāϰāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ JSON āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϝ⧇āϕ⧋āύ⧋ āĻ…āĻŦāĻŋāĻ•ā§āϰāĻŋāϤ āĻĄā§‡āϟāĻž āϏāĻ¨ā§āύāĻŋāĻŦ⧇āĻļ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āĻāχ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟāϗ⧁āϞ⧋ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇āϰ āĻĢāĻžāχāϞ⧇āϰ āĻŽāϤ⧋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āϏāĻ‚āĻ—āĻ āĻŋāϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡ āĻ­āĻŋāĻ¨ā§āύ āĻ­āĻŋāĻ¨ā§āύ āĻĢāĻŋāĻ˛ā§āĻĄ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇ - āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϝāĻĻāĻŋ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ–āĻžāĻŽāĻžāϰ⧇āϰ āϝāĻžāύāĻŦāĻžāĻšāύ āĻĨ⧇āϕ⧇ āφāχāĻ“āϟāĻŋ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŋ, āĻ•āĻžāϰāĻ“ āĻ•āĻžāϰāĻ“ āϜāĻ¨ā§āϝ āĻ…ā§āϝāĻžāĻ•āϏāĻŋāϞāϰ⧋āĻŽāĻŋāϟāĻžāϰ āĻāĻŦāĻ‚ āĻ—āϤāĻŋāϰ āĻĄā§‡āϟāĻžāϰ āĻĢāĻŋāĻ˛ā§āĻĄ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇, āĻ…āĻ¨ā§āϝāĻĻ⧇āϰ āĻŸā§āϰ⧇āϞāĻžāϰ⧇ āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻžāϰ āĻĢāĻŋāĻ˛ā§āĻĄ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āϝāĻĻāĻŋ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϧāϰāϪ⧇āϰ āĻŸā§āϰāĻžāĻ• āϝ⧋āĻ— āĻ•āϰāϤ⧇ āϚāĻžāχ, āϝ⧇āĻŽāύ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻ˛ā§āϟ-āχāύ āĻ¸ā§āϕ⧇āϞ āϝ⧁āĻ•ā§āϤ āĻ—āĻžā§œāĻŋ āϝāĻž āĻāϤ⧇ āĻĨāĻžāĻ•āĻž āĻ“āϜāύ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āϤāĻžāĻšāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ IoT āĻĄāĻŋāĻ­āĻžāχāϏāϟāĻŋ āĻāχ āύāϤ⧁āύ āĻĢāĻŋāĻ˛ā§āĻĄāϟāĻŋ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ⧇āϰ āϕ⧋āύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ›āĻžāĻĄāĻŧāĻžāχ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āϝāĻžāĻŦ⧇āĨ¤ + +āĻ•āĻŋāϛ⧁ āϏ⧁āĻĒāϰāĻŋāϚāĻŋāϤ NoSQL database āĻšāϞ⧋ Azure CosmosDB, MongoDB āĻāĻŦāĻ‚ CouchDB āĨ¤ + +✅ āĻāĻ•āϟ⧁ āĻ—āĻŦ⧇āώāĻŖāĻž āĻ•āϰāĻž āϝāĻžāĻ•: āύ⧋āĻāϏāĻ•āĻŋāωāĻāϞ āĻĄā§‡āϟāĻžāĻŦ⧇āϏ āĻāĻŦāĻ‚ āĻāĻĻ⧇āϰ āĻ•āĻ°ā§āĻŽāĻĒāϰāĻŋāϧāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻœā§āĻžāĻžāύ āĻ…āĻ°ā§āϜāύ āĻ•āϰāĻŋāĨ¤ + +āĻāχ āĻĒāĻžāϠ⧇, āφāĻŽāϰāĻž āφāχāĻ“āϟāĻŋ āĻĄā§‡āϟāĻž āϏāĻžā§āϚāϝāĻŧ (Store) āĻ•āϰāϤ⧇ NoSQL āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦāĨ¤ + +## GPS āĻĄā§‡āϟāĻž IoT Hub āĻ āĻĒā§āϰ⧇āϰāĻŖ + +āĻ—āϤ āĻĒāĻžāϠ⧇ āφāĻŽāϰāĻž āφāĻŽāĻžāĻĻ⧇āϰ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻāĻ•āϟāĻŋ āϜāĻŋāĻĒāĻŋāĻāϏ āϏ⧇āĻ¨ā§āϏāϰ āĻĨ⧇āϕ⧇ āϜāĻŋāĻĒāĻŋāĻāϏ āĻĄā§‡āϟāĻž āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻāχ āφāχāĻ“āϟāĻŋ āĻĄā§‡āϟāĻž āĻ•ā§āϞāĻžāωāĻĄā§‡ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇, āϤāĻž āĻāĻ•āϟāĻŋ āφāχāĻ“āϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϤ⧇ āĻĒāĻžāĻ āĻžāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāĻŦāĻžāϰāĻ“ āφāĻŽāϰāĻž Azure IoT Hub āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ, āĻāĻ•āχ IoT āĻ•ā§āϞāĻžāωāĻĄ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϝāĻž āφāĻŽāϰāĻž āφāϗ⧇āϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋāϞāĻžāĻŽāĨ¤ + +![Sending GPS telemetry from an IoT device to IoT Hub](../../../../images/gps-telemetry-iot-hub.png) + +### āĻ•āĻžāϜ - GPS āĻĄā§‡āϟāĻž IoT Hub āĻ āĻĒā§āϰ⧇āϰāĻŖ + +1. āύāϤ⧁āύ āĻāĻ•āϟāĻŋ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ āϖ⧁āϞāϤ⧇ āĻšāĻŦ⧇ free tier āĻāϰ āĨ¤ + + > âš ī¸ āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ [āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ-⧍ āϞ⧇āϏāύ-ā§Ē āĻĨ⧇āϕ⧇ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ āϤ⧈āϰ⧀āϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞāĻŋ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻž āϝāĻžāĻŦ⧇](../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md#create-an-iot-service-in-the-cloud) āĻĒā§āĻ°ā§Ÿā§‹āϜāύāĻŦā§‹āϧ⧇āĨ¤ + + āύāϤ⧁āύ āĻāĻ•āϟāĻŋ Resource Group āĻ–ā§‹āϞāĻžāϰ āĻŦāĻŋāώ⧟āϟāĻŋ āĻŽāύ⧇ āϰāĻžāĻ–āϤ⧇ āĻšāĻŦ⧇, āϝ⧇āϟāĻŋāϰ āύāĻžāĻŽ `gps-sensor` āĻĻā§‡ā§ŸāĻž āϝāĻžā§Ÿ āύāϤ⧁āύ IoT Hub āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āχāωāύāĻŋāĻ• āύāĻžāĻŽ āϝ⧇āĻŽāύ `gps-sensor-` āĻĻā§‡ā§ŸāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + + > 💁 āϝāĻĻāĻŋ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ āĻĨāĻžāϕ⧇, āϏ⧇āϟāĻŋāĻ“ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāĻŦ⧇āĨ¤ āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ āĻāĻŦāĻ‚ āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻ—ā§āϰ⧁āĻĒ⧇āϰ āύāĻžāĻŽ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āϤ⧈āϰāĻŋāϰ āϏāĻŽā§ŸāĨ¤ + +1. āĻšāĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻĄāĻŋāĻ­āĻžāχāϏ āϝ⧋āĻ— āĻ•āϰāĻŋ āĻāĻŦāĻ‚ `gps-sensor` āύāĻžāĻŽ āĻĻāĻŋāχāĨ¤ āĻ•āĻžāύ⧇āĻ•āĻļāύ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āϟāĻŋ āύ⧋āϟ āϰāĻžāĻ–āĻŋ + +1. āφāϗ⧇āϰ āϧāĻžāĻĒ āĻĨ⧇āϕ⧇ āĻĄāĻŋāĻ­āĻžāχāϏ āϏāĻ‚āϝ⧋āĻ— āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āύāϤ⧁āύ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ -āĻ āϜāĻŋāĻĒāĻŋāĻāϏ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ āĻžāϤ⧇ āĻĄāĻŋāĻ­āĻžāχāϏ āϕ⧋āĻĄ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + + > âš ī¸ āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ [āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ-⧍ āϞ⧇āϏāύ-ā§Ē āĻĨ⧇āϕ⧇ āφāχāĻ“āϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻĄāĻŋāĻ­āĻžāχāϏ āϏāĻ‚āϝ⧋āϜāύ⧇āϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞāĻŋ ](../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md#connect-your-device-to-the-iot-service) āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻž āϝāĻžāĻŦ⧇āĨ¤ + +1. āϝāĻ–āύ āϜāĻŋāĻĒāĻŋāĻāϏ āĻĄā§‡āϟāĻž āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰāĻŦ, āϤāĻ–āύ āĻāϟāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ⧇ JSON āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇: + + ```json + { + "gps" : + { + "lat" : , + "lon" : + } + } + ``` + +1. āĻĒā§āϰāϤāĻŋ āĻŽāĻŋāύāĻŋāĻŸā§‡ āϜāĻŋāĻĒāĻŋāĻāϏ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ āĻžāϤ⧇ āĻšāĻŦ⧇ āϝāĻžāϤ⧇ āĻĻ⧈āύāĻŋāĻ• āĻŽā§āϝāĻžāϏ⧇āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ āϞāĻŋāĻŽāĻŋāϟ āĻļ⧇āώ āύāĻž āĻšā§ŸāĨ¤ + +āφāĻŽāϰāĻž āϝāĻĻāĻŋ Wio āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āĻ°ā§āϰāĻŋ, āϤāĻžāĻšāϞ⧇ āϏāĻŽāĻ¸ā§āϤ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ NTP āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏāĻŽāϝāĻŧ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻžāϰ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻšāĻŦ⧇āĨ¤ āĻ—āϤ āĻĒāĻžāĻ  āĻĨ⧇āϕ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϕ⧋āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ , āφāĻŽāĻžāĻĻ⧇āϰ āϕ⧋āĻĄāϟāĻŋ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇ āĻāϟāĻŋ āϜāĻŋāĻĒāĻŋāĻāϏ āϞ⧋āϕ⧇āĻļāύ āĻĒāĻžāĻ āĻžāύ⧋āϰ āφāϗ⧇ āϏāĻŋāϰāĻŋāϝāĻŧāĻžāϞ āĻĒā§‹āĻ°ā§āϟ āĻĨ⧇āϕ⧇ āϏāĻŽāĻ¸ā§āϤ āĻĄā§‡āϟāĻž āĻĒāĻĄāĻŧ⧇āϛ⧇āĨ¤ JSON āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϕ⧋āĻĄāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ: + +```cpp +DynamicJsonDocument doc(1024); +doc["gps"]["lat"] = gps.location.lat(); +doc["gps"]["lon"] = gps.location.lng(); +``` +āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇, āĻāϟāĻŋāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϏāĻŽāĻ¸ā§āϤ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻŦāĻŋāώ⧟āϟāĻŋ āĻŽāύ⧇ āϰāĻžāĻ–āϤ⧇ āĻšāĻŦ⧇āĨ¤ + +āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ āĻāĻŦāĻ‚ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āφāχāĻ“āϟāĻŋ āωāĻ­āϝāĻŧ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āϜāĻ¨ā§āϝ, āĻ…āĻ•ā§āώāĻžāĻ‚āĻļ āĻāĻŦāĻ‚ āĻĻā§āϰāĻžāϘāĻŋāĻŽāĻžāĻ‚āĻļ⧇āϰ āĻŽāĻžāύāϗ⧁āϞāĻŋ āĻĒ⧇āϤ⧇ āĻ—āϤ āĻĒāĻžāĻ  āĻĨ⧇āϕ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϕ⧋āĻĄāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϕ⧋āĻĄ āϏāĻš āϤāĻžāĻĻ⧇āϰ āϏāĻ āĻŋāĻ• JSON āĻĢāĻ°ā§āĻŽā§āϝāĻžāĻŸā§‡ āĻĒāĻžāĻ āĻžāϤ⧇ āĻšāĻŦ⧇: + +```python +message_json = { "gps" : { "lat":lat, "lon":lon } } +print("Sending telemetry", message_json) +message = Message(json.dumps(message_json)) +``` + +> 💁 āĻĒā§āĻ°ā§Ÿā§‹āϜāĻ¨ā§€ā§Ÿ āϏāĻ•āϞ āϕ⧋āĻĄ [code/wio-terminal](code/wio-terminal), [code/pi](code/pi) āĻŦāĻž [code/virtual-device](code/virtual-device) āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžāĻŦ⧇ āĨ¤ + +Run your device code and ensure messages are flowing into IoT Hub using the `az iot hub monitor-events` CLI command. +āĻĄāĻŋāĻ­āĻžāχāϏ āϕ⧋āĻĄāϟāĻŋ āϰāĻžāύ āĻ•āϰ⧇ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝ⧇ āĻŦāĻžāĻ°ā§āϤāĻžāϗ⧁āϞāĻŋ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻĒā§āϰāĻŦāĻžāĻšāĻŋāϤ āĻšāĻšā§āϛ⧇ `az iot hub monitor-events` āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡, āϏāĻŋāĻāϞāφāχ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ + +## Hot, Warm, āĻāĻŦāĻ‚ Cold Path + +āĻāĻ•āϟāĻŋ IoT āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻĒā§āϰāĻŦāĻžāĻšāĻŋāϤ āĻĄā§‡āϟāĻž āϏāĻŦāϏāĻŽāϝāĻŧ āϰāĻŋāϝāĻŧ⧇āϞ āϟāĻžāχāĻŽā§‡ āĻĒā§āϰāϏ⧇āϏ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ āĻ•āĻŋāϛ⧁ āĻĄā§‡āϟāĻž āϰāĻŋāϝāĻŧ⧇āϞ āϟāĻžāχāĻŽ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāϪ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ, āĻ•āĻŋāϛ⧁ āĻĄā§‡āϟāĻž āĻ…āĻ˛ā§āĻĒ āĻ•āĻŋāϛ⧁āĻ•ā§āώāĻŖ āĻĒāϰ⧇ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāĻž āϝāĻžāϝāĻŧ, āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĄā§‡āϟāĻž āĻ…āύ⧇āĻ• āĻĒāϰ⧇ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāϞ⧇āĻ“ āĻšā§ŸāĨ¤ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϏāĻŽāϝāĻŧ⧇ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰ⧇ āĻāĻŽāύ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϤ⧇ āϤāĻĨā§āϝ āĻĒā§āϰāĻŦāĻžāĻšāϕ⧇ Hot, Warm āĻāĻŦāĻ‚ Cold Path āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤ + +### Hot Path + +āĻšāϟ āĻĒāĻžāĻĨ (Hot Path) āĻāĻŽāύ āĻĄā§‡āϟāĻž āĻŦā§‹āĻāĻžāϝāĻŧ āϝāĻž āϰāĻŋāϝāĻŧ⧇āϞ āϟāĻžāχāĻŽā§‡ āĻŦāĻž āϰāĻŋāϝāĻŧ⧇āϞ āϟāĻžāχāĻŽā§‡āϰ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āϏāĻŽā§Ÿā§‡āχ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāϪ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧāĨ¤ āĻāϞāĻžāĻ°ā§āϟ āĻĻā§‡ā§ŸāĻžāϰ āϜāĻ¨ā§āϝ āϝ⧇āĻŽāύ - āϝ⧇ āϕ⧋āύāĻ“ āĻ—āĻžāĻĄāĻŧāĻŋ āĻāĻ•āϟāĻŋ āĻĄāĻŋāĻĒā§‹āϰ āĻ•āĻžāϛ⧇ āφāϏāϛ⧇ āĻ…āĻĨāĻŦāĻž āĻāĻ•āϟāĻŋ āϰ⧇āĻĢā§āϰāĻŋāϜāĻžāϰ⧇āĻŸā§‡āĻĄ āĻŸā§āϰāĻžāϕ⧇āϰ āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻž āϖ⧁āĻŦ āĻŦ⧇āĻļāĻŋ āĻāĻŽāύ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϰ āĻŽā§‹āĻ•āĻžāĻŦ⧇āϞāĻž āĻ•āϰāϤ⧇ āϏāϤāĻ°ā§āĻ•āϤāĻžāϰ āϜāĻ¨ā§āϝ āĻšāϟ āĻĒāĻžāĻĨ āĻĄā§‡āϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§ŸāĨ¤ + +āĻšāϟ āĻĒāĻžāĻĨ āĻĄā§‡āϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āĻ•ā§āϞāĻžāωāĻĄ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋ āϕ⧋āĻĄ āĻĒāĻžāĻ“āϝāĻŧāĻžāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋāϤ⧇ āϏāĻžāĻĄāĻŧāĻž āĻĻ⧇āĻŦ⧇āĨ¤ + +### Warm path + +āωāĻˇā§āĻŖ āĻĒāĻĨ (Warm path) āĻŦāϞāϤ⧇ āĻāĻŽāύ āϤāĻĨā§āϝāϕ⧇ āĻŦā§‹āĻāĻžāϝāĻŧ āϝāĻž āĻĒā§āϰāĻžāĻĒā§āϤāĻŋāϰ āĻĒāϰ⧇ āĻ…āĻ˛ā§āĻĒ āĻ•āĻŋāϛ⧁āĻ•ā§āώāĻŖ āϏāĻŽā§Ÿ āύāĻŋā§Ÿā§‡ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāĻž āϝāĻžāϝāĻŧ, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ āϰāĻŋāĻĒā§‹āĻ°ā§āϟāĻŋāĻ‚ āĻŦāĻž āĻ¸ā§āĻŦāĻ˛ā§āĻĒāĻŽā§‡āϝāĻŧāĻžāĻĻā§€ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖāĨ¤ āφāϗ⧇āϰ āĻĻāĻŋāύ⧇āϰ āϏāĻ‚āĻ—ā§ƒāĻšā§€āϤ āĻĄā§‡āϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ—āĻžāĻĄāĻŧāĻŋāϰ āĻŽāĻžāχāϞ⧇āĻœā§‡āϰ āĻĻ⧈āύāĻŋāĻ• āϰāĻŋāĻĒā§‹āĻ°ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻāχ āϧāϰāϪ⧇āϰ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§ŸāĨ¤ + +āĻ•ā§āϞāĻžāωāĻĄ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻāχ āĻĄā§‡āϟāĻž āĻāĻŽāύāĻ­āĻžāĻŦ⧇ āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰāĻž āĻšā§Ÿ āϝāĻžāϤ⧇ āĻĻā§āϰ⧁āϤ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ + +### Cold path + +āĻ āĻžāĻ¨ā§āĻĄāĻž āĻĒāĻĨ (Cold path) āĻŦāϞāϤ⧇ āϐāϤāĻŋāĻšāĻžāϏāĻŋāĻ• āϤāĻĨā§āϝ āĻŦā§‹āĻāĻžāϝāĻŧ, āĻĻā§€āĻ°ā§āϘāĻŽā§‡āϝāĻŧāĻžāĻĻ⧇ āϤāĻĨā§āϝ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇ āϝāĻ–āύāχ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ āϤāĻ–āύ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϝāĻžāύāĻŦāĻžāĻšāύ⧇āϰ āĻŦāĻžāĻ°ā§āώāĻŋāĻ• āĻŽāĻžāχāϞ⧇āϜ āϰāĻŋāĻĒā§‹āĻ°ā§āϟ āĻĒ⧇āϤ⧇ āĻ āĻžāĻ¨ā§āĻĄāĻž āĻĒāĻĨ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžā§Ÿ āĻ…āĻĨāĻŦāĻž āĻœā§āĻŦāĻžāϞāĻžāύāĻŋ āĻ–āϰāϚ āĻ•āĻŽāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻ…āύ⧁āϕ⧂āϞ āϰ⧁āϟ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϰ⧁āϟ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āϚāĻžāϞāĻžāϤ⧇āĻ“ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžā§Ÿ āĨ¤ + +āϕ⧋āĻ˛ā§āĻĄ āĻĒāĻžāĻĨ āĻĄā§‡āϟāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ data warehouse āĻ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻšāϝāĻŧ - āĻĄā§‡āϟāĻžāϗ⧁āϞāĻŋāϰ āĻŦāĻĄāĻŧ āĻĒāϰāĻŋāĻŽāĻžāϪ⧇ āϏāĻ‚āϰāĻ•ā§āώāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻĄā§‡āϟāĻžāĻŦ⧇āϏ āϝāĻž āĻ•āĻ–āύāĻ“ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāĻŦ⧇ āύāĻž āĻāĻŦāĻ‚ āĻĻā§āϰ⧁āϤ āĻāĻŦāĻ‚ āϏāĻšāĻœā§‡āχ āĻ•ā§ā§Ÿā§‡āϰāĻŋ āĻ•āϰāĻž āϝāĻžāĻŦ⧇āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻ•ā§āϞāĻžāωāĻĄ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇ āύāĻŋāϝāĻŧāĻŽāĻŋāϤāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ, āϏāĻĒā§āϤāĻžāĻš āĻŦāĻž āĻŽāĻžāϏ⧇ āĻāĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āϏāĻŽāϝāĻŧ⧇ āϚāϞāĻŦ⧇ āωāĻˇā§āĻŖ āĻĒāĻĨ⧇āϰ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻĨ⧇āϕ⧇ āĻ“ā§Ÿā§āϝāĻžāϰāĻšāĻžāωāϏ⧇ āĻāχ āĻĄā§‡āϟāĻž āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āĻ•āϰāĻžāϰ āĻ•āĻžāϜāĨ¤ + +✅ āĻāχ āĻĒāĻžāĻ āϗ⧁āϞāĻŋāϤ⧇ āφāĻŽāϰāĻž āĻāĻ–āύ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϝ⧇ āĻĄā§‡āϟāĻž āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻŋāĨ¤ āĻāϗ⧁āϞ⧋ āĻ•āĻŋ hot, warm āύāĻžāĻ•āĻŋ cold path āĻāϰ āϤāĻĨā§āϝ? + +## āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻŦāĻŋāĻšā§€āύ āϕ⧋āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϜāĻŋāĻĒāĻŋāĻāϏ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž + +āĻāĻ•āĻŦāĻžāϰ āφāĻŽāĻžāĻĻ⧇āϰ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻŦāĻžāĻšāĻŋāϤ āĻšāϝāĻŧ⧇ āϗ⧇āϞ⧇, āχāϭ⧇āĻ¨ā§āϟ-āĻšāĻžāĻŦ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻļā§‹āύāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻŋāϛ⧁ āϏāĻžāĻ°ā§āĻ­āĻžāϰāϞ⧇āϏ āϕ⧋āĻĄ āϞāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰāĻŦā§‹āĨ¤ āĻāϟāĻŋ āωāĻˇā§āĻŖ āĻĒāĻĨ⧇ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāĻžāϠ⧇ āϝāĻžāĻ¤ā§āϰāĻžāϰ āĻĒā§āϰāϤāĻŋāĻŦ⧇āĻĻāύ āϤ⧈āϰ⧀ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ + +![Sending GPS telemetry from an IoT device to IoT Hub, then to Azure Functions via an event hub trigger](../../../../images/gps-telemetry-iot-hub-functions.png) + +### āĻ•āĻžāϜ - āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻŦāĻŋāĻšā§€āύ āϕ⧋āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϜāĻŋāĻĒāĻŋāĻāϏ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž + +1. Azure Functions CLI āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ Azure Functions āĻ…ā§āϝāĻžāĻĒ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋāĨ¤ āĻĒāĻžāχāĻĨāύ āϰāĻžāύāϟāĻžāχāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ āϝāĻžāϰ āύāĻžāĻŽ `gps-trigger` āĻāĻŦāĻ‚ āĻĢāĻžāĻ‚āĻļāύ āĻ…ā§āϝāĻžāĻĒ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āύāĻžāĻŽā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āχ āύāĻžāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ Virtual environment āϤ⧈āϰ⧀āϰ āĻŦāĻŋāώ⧟āϟāĻŋ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + + > âš ī¸ āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ [āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ-⧍ āϞ⧇āϏāύ-ā§Ģ āĻĨ⧇āϕ⧇ āφāχāĻ“āϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻ°ā§āĻ­āĻžāϰāϞ⧇āϏ āĻāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϤ⧈āϰ⧀āϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞāĻŋ](../../../../2-farm/lessons/5-migrate-application-to-the-cloud/README.md#create-a-serverless-application) āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻž āϝāĻžāĻŦ⧇āĨ¤ + +1. Add an IoT Hub event trigger that uses the IoT Hub's Event Hub compatible endpoint. + + > âš ī¸ āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ [āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ-⧍ āϞ⧇āϏāύ-ā§Ģ āĻĨ⧇āϕ⧇ āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ āχāϭ⧇āĻ¨ā§āϟ āĻŸā§āϰāĻŋāĻ—āĻžāϰ āϤ⧈āϰ⧀āϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞāĻŋ](../../../../2-farm/lessons/5-migrate-application-to-the-cloud/README.md#create-an-iot-hub-event-trigger) āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻž āϝāĻžāĻŦ⧇āĨ¤ + +1. āχāϭ⧇āĻ¨ā§āϟ āĻšāĻžāĻŦ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āϏāĻ‚āϝ⧋āĻ— āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ `local.settings.json` āĻĢāĻžāχāϞ⧇ āĻāĻŦāĻ‚ `function.json` āĻĢāĻžāχāϞ⧇āϰ āϜāĻ¨ā§āϝ āϏ⧇āχ āĻāĻ¨ā§āĻŸā§āϰāĻŋāϰ KEY āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +1. āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ Azurite app āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ local storage emulator āĻšāĻŋāϏ⧇āĻŦ⧇āĨ¤ + +1. āϜāĻŋāĻĒāĻŋāĻāϏ āĻĄāĻŋāĻ­āĻžāχāϏ āĻĨ⧇āϕ⧇ āχāϭ⧇āĻ¨ā§āϟ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻĢāĻžāĻ‚āĻļāύ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ āϚāĻžāϞāĻžāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāĻ–āĻžāύ āĻĨ⧇āϕ⧇āχ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻž āϝāĻžāĻŦ⧇ āϝ⧇ āφāχāĻ“āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏāϟāĻŋ āϚāϞāϛ⧇ āĻāĻŦāĻ‚ āϜāĻŋāĻĒāĻŋāĻāϏ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ āĻžāĻšā§āϛ⧇āĨ¤ + + ```output + Python EventHub trigger processed an event: {"gps": {"lat": 47.73481, "lon": -122.25701}} + ``` + +## Azure āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ + +![The Azure Storage logo](../../../../images/azure-storage-logo.png) + +Azure āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āϟ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇ (General Purpose) āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϝāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āωāĻĒāĻžāϝāĻŧ⧇ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāĻŽāϰāĻž āĻŦā§āϞāĻŦ āĻšāĻŋāϏāĻžāĻŦ⧇, āϏāĻžāϰāĻŋāϤ⧇, āĻŸā§‡āĻŦāĻŋāϞ⧇ āĻŦāĻž āĻĢāĻžāχāϞ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ + +### Blob storage + +*āĻŦā§āϞāĻŦ* āĻŽāĻžāύ⧇ āĻšāϞ⧋ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻŦāĻĄāĻŧ āĻŦāĻ¸ā§āϤ⧁ (binary large objects) āϤāĻŦ⧇ āϝ⧇āϕ⧋āύ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻŦāĻŋāĻšā§€āύ āĻĄā§‡āϟāĻžāϰ āϜāĻ¨ā§āϝ āĻāχ āĻļāĻŦā§āĻĻ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§ŸāĨ¤ āφāχāĻ“āϟāĻŋ āĻĄā§‡āϟāĻž āϧāĻžāϰāĻŖāĻ•āĻžāϰ⧀ JSON āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āχāĻŽā§‡āϜ āĻāĻŦāĻ‚ āĻŽā§āĻ­āĻŋ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϤ⧇āĻ“ āĻŦā§āϞāĻŦ āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡ āϝ⧇āϕ⧋āύ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤ āĻŦā§āϞāĻŦ āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡ *āĻ•āύāĻŸā§‡āχāύāĻžāϰ* āĻāϰ āϧāĻžāϰāĻŖāĻž āϰāϝāĻŧ⧇āϛ⧇, āĻāϗ⧁āϞ⧋ āύāĻžāĻŽāϝ⧁āĻ•ā§āϤ āĻŦāĻžāϕ⧇āϟ/āĻĒāĻžāĻ¤ā§āϰ āϝāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āϝāĻžā§Ÿ, āĻāĻ•āϟāĻŋ āϰāĻŋāϞ⧇āĻļāύāĻžāϞ āĻĄāĻžāϟāĻžāĻŦ⧇āĻœā§‡ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻŽāϤ⧋āĨ¤ āĻāχ āĻĒāĻžāĻ¤ā§āϰ⧇ āĻŦā§āϞāĻŦ āϏāĻ‚āϰāĻ•ā§āώāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇, āϝ⧇āĻ­āĻžāĻŦ⧇ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻžāϰ⧇āϰ āĻšāĻžāĻ°ā§āĻĄāĻĄāĻŋāĻ¸ā§āϕ⧇ āĻĢāĻžāχāϞ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ + +IoT āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āφāĻŽāϰāĻž āĻāχ āĻĒāĻžāϠ⧇ āĻŦā§āϞāĻŦ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦāĨ¤ + +✅ āĻ•āĻŋāϛ⧁ āĻ—āĻŦ⧇āώāĻŖāĻž āĻ•āϰāĻž āϝāĻžāĻ•:[Azure Blob Storage](https://docs.microsoft.com/azure/storage/blobs/storage-blobs-overview?WT.mc_id=academic-17441-jabenn) āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻĒā§œā§‡ āφāϰ⧋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϜāĻžāύāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋāĨ¤ + +### Table storage + +āĻŸā§‡āĻŦāĻŋāϞ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āφāĻŽāĻžāĻĻ⧇āϰ āφāϧāĻž āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ—āϤ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āĻŸā§‡āĻŦāĻŋāϞ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āφāϏāϞ⧇ āĻāĻ•āϟāĻŋ NoSQL āĻĄāĻžāϟāĻžāĻŦ⧇āϏ, āϤāĻžāχ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āϏ⧇āϟ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ āύāĻž, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻŋ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻŸā§‡āĻŦāĻŋāϞ⧇ āĻĄā§‡āϟāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻžāϰāĻŋāϰ āϏāĻ‚āĻœā§āĻžāĻž āĻĻāĻŋāϤ⧇ āĻ…āύāĻ¨ā§āϝ āϕ⧀ (unique key) āĻĻāĻŋāϝāĻŧ⧇āĨ¤ + +✅ āĻ•āĻŋāϛ⧁ āĻ—āĻŦ⧇āώāĻŖāĻž āĻ•āϰāĻž āϝāĻžāĻ•: [Azure Table Storage](https://docs.microsoft.com/azure/storage/tables/table-storage-overview?WT.mc_id=academic-17441-jabenn) āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻĒā§œā§‡ āφāϰ⧋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϜāĻžāύāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋāĨ¤ + +### Queue storage + +āĻ•āĻŋāω āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻāĻ•āϟāĻŋ āϏāĻžāϰāĻŋāϤ⧇ 64KB āφāĻ•āĻžāϰ⧇āϰ āĻŦāĻžāĻ°ā§āϤāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āφāĻŽāϰāĻž āϏāĻžāϰāĻŋāϰ āĻĒāĻŋāĻ›āύ⧇āϰ āĻĻāĻŋāϕ⧇ āĻŦāĻžāĻ°ā§āϤāĻž āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžā§āϰāĻŋ āĻāĻŦāĻ‚ āϏ⧇āϗ⧁āϞāĻŋ āφāĻŦāĻžāϰ āϏāĻžāĻŽāύ⧇ āĻĨ⧇āϕ⧇ āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ Queue āĻāĻ–āĻžāύ⧇ āĻŦāĻžāĻ°ā§āϤāĻžāϗ⧁āϞāĻŋāϕ⧇ āĻ…āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟāĻ•āĻžāϞ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇ āϝāϤāĻ•ā§āώāĻŖ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻ¸ā§āĻĒ⧇āϏ āϰāϝāĻŧ⧇āϛ⧇, āϤāĻžāχ āĻāϟāĻŋ āĻŦāĻžāĻ°ā§āϤāĻžāϗ⧁āϞāĻŋāϕ⧇ āĻĻā§€āĻ°ā§āϘāĻŽā§‡āϝāĻŧāĻžāĻĻā§€ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āϤāĻžāϰāĻĒāϰ āϝāĻ–āύ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšā§Ÿ āϤāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϝāĻĻāĻŋ āϜāĻŋāĻĒāĻŋāĻāϏ āĻĄā§‡āϟāĻž āĻĒā§āϰāϏ⧇āϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŽāĻžāϏāĻŋāĻ• āĻ•āĻžāϜ āϚāĻžāϞāĻžāϤ⧇ āĻšā§Ÿ, āϤāĻžāĻšāϞ⧇ āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āĻāϟāĻŋāϕ⧇ āĻāĻ• āĻŽāĻžāϏ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻžāϰāĻŋāϤ⧇ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦā§‹, āϤāĻžāϰāĻĒāϰ āĻŽāĻžāϏ⧇āϰ āĻļ⧇āώ⧇ āϏāĻžāϰāĻŋāϰ āϏāĻŦ āĻŦāĻžāĻ°ā§āϤāĻž āĻāĻ•āϏāĻžāĻĨ⧇ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦā§‹āĨ¤ + +✅ āĻ•āĻŋāϛ⧁ āĻ—āĻŦ⧇āώāĻŖāĻž āĻ•āϰāĻž āϝāĻžāĻ•: [Azure Queue Storage](https://docs.microsoft.com/azure/storage/queues/storage-queues-introduction?WT.mc_id=academic-17441-jabenn) āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻĒā§œā§‡ āφāϰ⧋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϜāĻžāύāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋāĨ¤ + +### File storage + +āĻĢāĻžāχāϞ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻšāϞ āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻĢāĻžāχāϞ⧇āϰ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻāĻŦāĻ‚ āϝ⧇ āϕ⧋āύāĻ“ āĻ…ā§āϝāĻžāĻĒ āĻŦāĻž āĻĄāĻŋāĻ­āĻžāχāϏ āĻ¸ā§āĻŦā§€āĻ•ā§ƒāϤ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĒā§āϰ⧋āĻŸā§‹āĻ•āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāĻŽāϰāĻž āĻĢāĻžāχāϞ āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡ āφāĻŽāĻžāĻĻ⧇āϰ āϤāĻĨā§āϝ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰāĻŋ, āϤāĻžāϰāĻĒāϰ⧇ āĻĒāĻŋāϏāĻŋ āĻŦāĻž āĻŽā§āϝāĻžāϕ⧇āϰ āĻĄā§āϰāĻžāχāĻ­ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŽāĻžāωāĻ¨ā§āϟ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤ + +✅ āĻ•āĻŋāϛ⧁ āĻ—āĻŦ⧇āώāĻŖāĻž āĻ•āϰāĻž āϝāĻžāĻ•: [Azure File Storage](https://docs.microsoft.com/azure/storage/files/storage-files-introduction?WT.mc_id=academic-17441-jabenn) āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻĒā§œā§‡ āφāϰ⧋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϜāĻžāύāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋāĨ¤ + +## āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻŦāĻŋāĻšā§€āύ āϕ⧋āĻĄāϕ⧇ āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡ āϏāĻ‚āϝ⧁āĻ•ā§āϤāĻ•āϰāĻŖ + +āφāχāĻ“āϟāĻŋ āĻšāĻžāĻŦ āĻĨ⧇āϕ⧇ āĻŦāĻžāĻ°ā§āϤāĻžāϗ⧁āϞāĻŋ āϏāĻžā§āϚāϝāĻŧ āĻ•āϰāϤ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻĢāĻžāĻ‚āĻļāύ āĻ…ā§āϝāĻžāĻĒāϟāĻŋāϕ⧇ āĻāĻ–āύ āĻŦā§āϞāĻŦ āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ 2 āϟāĻŋ āωāĻĒāĻžāϝāĻŧ āϰāϝāĻŧ⧇āϛ⧇: + +* āĻĢāĻžāĻ‚āĻļāύ āϕ⧋āĻĄā§‡āϰ āĻ­āĻŋāϤāϰ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻŦā§āϞāĻŦ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ Python SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻŦā§āϞāĻŦ āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻĄā§‡āϟāĻž āĻŦā§āϞāĻŦ āĻšāĻŋāϏāĻžāĻŦ⧇ āϰāĻžāĻ–āϤ⧇ āĻšāĻŦ⧇āĨ¤ +* āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āφāωāϟāĻĒ⧁āϟ āĻĢāĻžāĻ‚āĻļāύ āĻŦāĻžāχāĻ¨ā§āĻĄāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ­ā§āϝāĻžāϞ⧁ āĻŦā§āϞ⧋āĻŦ āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡ āĻŦāĻžāχāĻ¨ā§āĻĄ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āĻāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻŦā§āϞāĻŦāϟāĻŋ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +āĻāχ āĻĒāĻžāϠ⧇, āφāĻŽāϰāĻž āĻŦā§āϞāĻŦ āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡āϰ āϏāĻžāĻĨ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āϝ⧋āĻ—āĻžāϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āϤāĻž āĻĻ⧇āĻ–āϤ⧇ Python SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦāĨ¤ + +![Sending GPS telemetry from an IoT device to IoT Hub, then to Azure Functions via an event hub trigger, then saving it to blob storage](../../../../images/save-telemetry-to-storage-from-functions.png) + +āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡ āĻĄā§‡āϟāĻž āĻāĻ•āϟāĻŋ JSON āĻŦā§āϞāĻŦ āĻšāĻŋāϏāĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāĻŦ⧇: + +```json +{ + "device_id": , + "timestamp" :