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/ml/3-transport/lessons/2-store-location-data
localizeflow[bot] 8671d5c4aa
chore(i18n): sync translations with latest source changes (#571)
6 months ago
..
README.md chore(i18n): sync translations with latest source changes (#571) 6 months ago
assignment.md chore(i18n): sync translations with latest source changes (#571) 6 months ago

README.md

സ്ഥലം വിവരങ്ങൾ സംഭരിക്കുക

ഈ പാഠത്തിന്റെ സ്കെച്ച്നോട്ട് അവലോകനം

സ്കെച്ച്നോട് നിത്യ നരസ്പേഹൻ എഴുതിയതാണ്. കൂടുതൽ വലുതായ വർഗ്ഗം കാണാൻ ചിത്രം ക്ലിക്കുചെയ്യുക.

പ്രീ-ലക്ചർ ക്വിസ്

പ്രീ-ലക്ചർ ക്വിസ്

പരിചയം

അവസാന പാഠത്തിൽ, നിങ്ങൾ ജിപിഎസ് സെൻസർ ഉപയോഗിച്ച് സ്ഥലം വിവരങ്ങൾ എടുക്കുന്നത് പഠിച്ചു. ഭക്ഷണം നിറച്ച ഒരു ട്രക്കിൻ്റെ സ്ഥലം, അതിന്റെ യാത്ര എന്നിവ ഭാവ്യ രൂപത്തിൽ കാണിക്കാൻ ഈ ഡാറ്റ ക്ലൗഡിലെ ഒരു ഐഒടി സർവീസിലേക്ക് അയച്ച് അവിടെ സംഭരിച്ചു വെക്കേണ്ടതുണ്ട്.

ഈ പാഠത്തിൽ, ഐഒടി ഡാറ്റ സംഭരിക്കുന്ന വിവിധ മാർഗ്ഗങ്ങൾ നിങ്ങൾക്കു പഠിപ്പിക്കും, സെർവർലെസ് കോഡ് ഉപയോഗിച്ച് ഐഒടി സർവീസിൽ നിന്നുള്ള ഡാറ്റ എങ്ങനെ സംഭരിക്കാമെന്ന് പഠിക്കും.

ഈ പാഠത്തിൽ നാം ചർച്ച ചെയ്യുന്നതൊക്കെ:

സംരചിതവും അസംരചിതവുമായ ഡാറ്റ

കമ്പ്യൂട്ടർ സിസ്റ്റങ്ങൾ ഡാറ്റ കൈകാര്യം ചെയ്യുന്നു, ഈ ഡാറ്റ വിവിധ രൂപങ്ങളിലായി ലഭ്യമാണ്. ഒരേ നമ്പറുകളായിരിക്കാം, വലുതായ വാക്കുകൾ, വീഡിയോകൾ, ചിത്രങ്ങൾ, ഒപ്പം ഐഒടി ഡാറ്റയും. സാധാരണയായി ഡാറ്റ രണ്ട് വിഭാഗങ്ങളായി തിരിയപ്പെടുന്നു - സംരചിത ഡാറ്റയും അസംരചിത ഡാറ്റയും.

  • സംരചിത ഡാറ്റ എന്ന് പറയുന്നത് നന്നായി നിർവചിച്ചും, കഠിനമായ ഘടനയുള്ളതും, സാധാരണയായി ഡാറ്റയുടെ പട്ടികകളിലേക്ക് മാപ്പ് ചെയ്യുന്ന ഡാറ്റയാണ്. ഉദാഹരണമായി, ഒരാളുടെ പേര്, ജനനത്തിയതി, വിലാസം എന്നിവ ഉൾക്കൊള്ളുന്നു.

  • അസംരചിത ഡാറ്റ എന്ന് പറയുന്നത് നിശ്ചിത ഘടനയില്ലാത്ത, ഒരുപാട് മാറുന്ന ഘടനയുള്ള ഡാറ്റയാണ്. ഉദാഹരണമായി, എഴുത്തുകൊണ്ടുള്ള രേഖകൾ അല്ലെങ്കിൽ സ്പ്രെഡ്ഷീറ്റുകൾ.

കുറച്ച് ഗവേഷണം ചെയ്യൂ: നിങ്ങൾക്ക് മറ്റു സംരചിതവും അസംരചിതവുമായ ഡാറ്റയുടെ ഉദാഹരണങ്ങൾ എന്തെന്തൊക്കെയാണെന്ന് ചിന്തിക്കൂ?

💁 അർദ്ധസംരചിത ഡാറ്റയും ഉണ്ട്, അത് ഘടനയുള്ളതാണ്, പക്ഷേ നിശ്ചിത പട്ടികകളിൽ ഉൾപ്പെടുന്നില്ല

ഐഒടി ഡാറ്റ സാധാരണയായി അസംരചിത ഡാറ്റയായി കണക്കാക്കുന്നു.

ഗവൃഹ കർഷക തോട്ടത്തിന് വലിയ കാറുകൂട്ടിൽ ഐഒടി ഉപകരണങ്ങൾ ചേർക്കുന്നുവെന്ന് കൽപ്പന ചെയ്യുക. വ്യത്യസ്ത വാഹനങ്ങളിലാകും വ്യത്യസ്ത ഉപകരണങ്ങൾ ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുക. ഉദാഹരണത്തിന്:

  • ട്രാക്ടറുകൾ പോലുള്ള കർഷക വാഹനങ്ങൾക്ക് ശരിയായ നിലമേഖലയിൽ പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഉറപ്പുവരുത്താൻ ജിപിഎസ് ഡാറ്റ വേണം
  • ഭക്ഷണം വെയർഹൗസിലേക്ക് കൊണ്ടുപോകുന്ന ഡെലിവറി ട്രക്കുകൾക്ക് ജിപിഎസ് ഡാറ്റ കൂടാതെ വേഗതയും ആക്സിലറേഷൻ ഡാറ്റയും വേണം; സഞ്ചാര യാത്രാമുറി തിരിച്ചറിയലും ആരംഭ/അവസാന വിവരങ്ങളും വേണം; ഇത് ഡ്രൈവർ നിയമാനുസൃതം ജോലി സമയങ്ങൾ പാലിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കാൻ
  • റഫ്രിഡ്ജറേറ്റഡ് ട്രക്കുകൾക്ക് അധികമായി താപനില ഡാറ്റ വേണം, ഭക്ഷണം ഗതാഗതത്തിൽ നാശം ചെയ്യാതിരിക്കാൻ ഉഷ്ണം കൂടാതിരിക്കാനും തണുപ്പിക്കാതിരിക്കാനും

ഈ ഡാറ്റ സ്ഥിരമായി മാറുന്നുണ്ടാകാം. ഉദാഹരണത്തിന്, ഐഒടി ഉപകരണം ട്രക്ക് കാബിൽ ഉണ്ടെങ്കിൽ, ട്രെയിലർ മാറുമ്പോൾ അയക്കുന്ന ഡാറ്റ മാറ്റപ്പെടാം. ഉദാഹരണമായി, റഫ്രിഡ്ജറേറ്റഡ് ട്രെയിലർ ഉപയോഗിക്കുമ്പോൾ മാത്രമേ താപനിലയുടെ വിവരങ്ങൾ അയക്കൂ.

മറ്റ് ഏത് ഐഒടി ഡാറ്റ ശേഖരിക്കാമെന്ന് ചിന്തിക്കൂ? ട്രക്കുകൾ ഏതു തരം ചരക്കുകൾ പ്രചരിപ്പിക്കാവുന്നതാണെന്ന്, കൂടാതെ പരിപാലന ഡാറ്റയും പരിഗണിക്കൂ.

വാഹനം അടിസ്ഥാനമാക്കിയുള്ള ഡാറ്റ വ്യത്യസ്തമായിരിക്കാം, പക്ഷേ എല്ലാമേലെ ഒരേ ഐഒടി സർവീസിലേക്ക് അയയ്ക്കുന്നു. ഐഒടി സർവീസ് ഈ അസംരചിത ഡാറ്റ പ്രോസസ് ചെയ്‌തുതന്നെ, ഇത് തിരയാനും വിശകലനം ചെയ്യാനും കഴിയുന്ന വിധത്തിൽ സംഭരിച്ചു വേണം, വ്യത്യസ്ത ഘടനകൾ കൈകാര്യം ചെയ്യാൻ കഴിയണം.

SQL vs NoSQL സംഭരണം

ഡാറ്റാബേസുകൾ ഡാറ്റാ സംഭരിക്കാൻ, ചോദ്യം ചെയ്യാൻ സഹായിക്കുന്ന സേവനങ്ങളാണ്. ഡാറ്റാബേസുകൾ രണ്ട് തരങ്ങളുണ്ട് - SQL, NoSQL

SQL ഡാറ്റാബേസുകൾ

ആദ്യത്തെ ഡാറ്റാബേസുകൾ റിലേഷണൽ ഡാറ്റാബേസ് മാനേജ്മെന്റ് സിസ്റ്റങ്ങൾ (RDBMS) അല്ലെങ്കിൽ റിലേഷൻഷിപ്പുള്ള ഡാറ്റാബേസുകളാണ്. അവ SQL ഡാറ്റാബേസുകൾ എന്നും അറിയപ്പെടുന്നു, കാരണം അവയുമായി ഇടപഴകാൻ ഉപയോഗിക്കുന്ന ഭാഷ Structured Query Language (SQL) ആണ്. ഈ ഡാറ്റാബേസുകൾ ഒരിടത്തുള്ള നിശ്ചിത പട്ടികകളുള്ള ഒരു സ്കീമയാണ് ആശ്രയം, സ്പ്രെഡ്ഷീറ്റുപോലെയാണ്. ഓരോ പട്ടികക്കും നിരവധി പേരിട്ട കോളങ്ങൾ ഉണ്ട്. ഡാറ്റ ചേർക്കുമ്പോൾ, പട്ടികയിലൊരു പത്തിൽ ഒരു വരി ചേർക്കുന്നു, ഓരോ കോളത്തിനും മൂല്യങ്ങൾ നൽകുന്നു. ഈ ഘടന കഠിനമാണ് — ചില കോളങ്ങൾ ഒഴുക്കാം, പക്ഷേ പുതിയ കോളം കൂട്ടണമെങ്കിൽ ഡാറ്റാബേസിൽ മാറ്റം വരുത്തി നിലവിലുള്ള വരികൾക്ക് മൂല്യം നൽകണം. ഈ ഡാറ്റാബേസുകൾ റിലേഷണൽ ആണ് — ഒരു പട്ടിക മറ്റൊന്നുമായി ബന്ധമുള്ളതാണെന്നും.

ഉപയോക്തൃ പട്ടികയുടെ ഐഡിയ്ക്ക് പർച്ചേസസ് പട്ടികയിലുള്ള ഉപയോക്തൃ ഐഡി കോളത്തെ ബന്ധിപ്പിക്കുന്നത്, ഉൽപ്പന്നങ്ങൾ പട്ടികയുടെ ഐഡിയ്ക്ക് പർച്ചേസസ് പട്ടികയിലെ ഉൽപ്പന്ന ഐഡിക്കുമായി ബന്ധിപ്പിക്കുന്നത് കാണിക്കുന്ന ഒരു റിലേഷണൽ ഡാറ്റാബേസ്

ഉദാഹരണത്തിന്, ഒരു ഉപയോക്താവിന്റെ വ്യക്തിഗത വിവരങ്ങൾ ഒരു പട്ടികയിൽ സൂക്ഷിക്കുന്നുവെങ്കിൽ, ഓരോ ഉപയോക്താവിനും ഒരു അകത്ത് യുണീക്ക് ഐഡി ഉണ്ടാകും, അത് ഉപയോക്താവിന്റെ പേര് വിലാസം എന്നിവ അടങ്ങിയ പട്ടികയിൽ ഉപയോഗിക്കും. പിന്നീട് ആ ഉപയോക്താവിന്റെ മറ്റു വിവരങ്ങൾ, ഉദാ. അവർ നടത്തിയ വാങ്ങലുകൾ വേണമെന്ന് മറ്റൊരു പട്ടികയിൽ സൂക്ഷിക്കേണ്ടുണ്ടെങ്കിൽ, പുതിയ പട്ടികയിൽ ആ ഉപയോക്താവിന്റെ ID ഉള്ളൊരു കോളം ഉണ്ടാകും. ഉപയോക്താവിന്റെ വ്യക്തിഗത വിവരങ്ങൾ ഒരേ പട്ടികയിൽ നിന്നും വാങ്ങലുകൾ മറ്റൊരു പട്ടികയിൽ നിന്നും ഈ ID ഉപയോഗിച്ച് കണ്ടെത്തിക്കാം.

SQL ഡാറ്റാബേസുകൾ സംരചിത ഡാറ്റ സംഭരിക്കാനും നിങ്ങളുടെ സ്കീമയുമായി ഡാറ്റ പൊരുത്തപ്പെടാൻ ഉറപ്പുവരുത്താനും അനുയോജ്യമാണ്.

നിങ്ങൾക്ക് SQL ഉപയോഗിച്ചിട്ടില്ലെങ്കിൽ, വിഖിപീഡിയയിലെ SQL പേജ് വായിക്കാൻ ഒരു പക്ഷേ സമയം എടുക്കൂ.

മൈക്രോസോഫ്റ്റ് SQL സർവർ, MySQL, PostgreSQL എന്നിവ ഭരണപരമായി അറിയപെടുന്നു.

കുറച്ച് ഗവേഷണം ചെയ്യൂ: ഈ SQL ഡാറ്റാബേസുകളെയും അവയുടെ കഴിവുകളെയും കുറിച്ച് പഠിക്കൂ.

NoSQL ഡാറ്റാബേസ്

NoSQL ഡാറ്റാബേസുകൾ SQL ഡാറ്റാബേസുകളുടേതുപോലെ കഠിന ഘടന ഇല്ലാത്തതിനാൽ NoSQL എന്നാണ് വിളിക്കുന്നത്. അവ ഡോക്യുമെന്റ് ഡാറ്റാബേസുകൾ എന്നും അറിയപ്പെടുന്നു, കാരണം രേഖകളും അസംരചിത ഡാറ്റയും സംഭരിക്കാൻ ഇറങ്ങിയിരിക്കുന്നു.

💁 അവർക്ക് അവരുടെ പേരിനുപറ kontravrsiesേ, ചില NoSQL ഡാറ്റാബേസുകൾ SQL ഉപയോഗിച്ച് ഡാറ്റ ചോദ്യം ചെയ്യാൻ അനുവദിക്കുന്നു.

ഒരിടത്തുള്ള ഫോൾഡറുകളിൽ രേഖകൾ കാണിക്കുന്ന NoSQL ഡാറ്റാബേസ്

NoSQL ഡാറ്റാബേസുകൾക്ക് ഡാറ്റ സൂക്ഷിക്കുന്നതിന് മുമ്പ് നിശ്ചിത സ്കീമയുണ്ടെങ്കിൽ അതിൽ ബദ്ധപ്പെടേണ്ടതില്ല, തൽസമയത്ത് നിങ്ങൾക്ക് JSON രേഖകൾ ഉപയോഗിച്ച് ഏതും അസംരചിത ഡാറ്റ ചേർക്കാം. ഈ രേഖകൾ നിങ്ങളുടെ കമ്പ്യൂട്ടറിലുള്ള ഫയലുകളെപ്പോലെ ഫോൾഡറങ്ങളായി ക്രമീകരിക്കാം. ഓരോ രേഖക്കും മറ്റ് രേഖകളിൽ നിന്നും വ്യത്യസ്ത ഫീൽഡുകൾ ഉണ്ടാകാം - ഉദാഹരണത്തിന്, നിങ്ങളുടെ കർഷക വാഹനങ്ങളിൽ നിന്നുള്ള ഐഒടി ഡാറ്റ സൂക്ഷിക്കുന്നുവെങ്കിൽ, ചില രേഖകൾക്ക് ആക്സിലറോമീറ്റർ, വേഗത സംബന്ധിച്ച ഫീൽഡുകൾ ഉണ്ടാകാം, മറ്റ് ചിലത് ട്രെയിലറിലെ താപനില ഫീൽഡുകൾ ഉള്ളത്. പുതിയ ഒരു ട്രക്ക് തരം ചേർക്കേണ്ടിവന്നാൽ - ഉദാഹരണത്തിന്, കാഴ്ചയിൽ ഉൽപ്പന്ന ഭാരമിതിക്ക് സ്കെയിലുകൾ ഉള്ളത് - നിങ്ങളുടെ ഐഒടി ഉപകരണം പുതിയ ഫീൽഡ് ചേർക്കാം, ഡാറ്റാബേസ് മാറ്റക്കേണ്ടാവില്ല തന്നെ അത് സൂക്ഷിക്കും.

മനസ്സിലാക്കപ്പെടുന്ന NoSQL ഡാറ്റാബേസുകളിൽ Azure CosmosDB, MongoDB, CouchDB എന്നിവ ഉൾപ്പെടുന്നു.

കുറച്ച് ഗവേഷണം ചെയ്യൂ: ഈ NoSQL ഡാറ്റാബേസുകളും അവയുടെ കഴിവുകളും പഠിക്കൂ.

ഈ പാഠത്തിൽ, നിങ്ങൾ NoSQL സംഭരണം ഉപയോഗിച്ച് ഐഒടി ഡാറ്റ സംഭരിക്കും.

GPS ഡാറ്റ ഒരു IoT ഹബിലേക്ക് അയക്കുക

അവസാന പാഠത്തിൽ, നിങ്ങൾ GPS സെൻസറിൽ നിന്നുള്ള GPS ഡാറ്റ പിടിച്ച് ഒരു ഐഒടി ഉപകരണത്തിൽ നിന്ന് പിടിച്ചു. ഈ ഐഒടി ഡാറ്റ ക്ലൗഡിൽ സംഭരിക്കാൻ, നിങ്ങൾക്ക് അത് ഒരു ഐഒടി സർവീസിലേക്ക് അയക്കണം. വീണ്ടും, നിങ്ങൾക്ക് മുമ്പത്തെ പ്രൊജക്റ്റിൽ ഉപയോഗിച്ച ഇറങ്ങിയ അയതേയുള്ള ആസ്യൂർ ഐഒടി ഹബ്ലെയും ഉപയോഗിക്കും.

ഐഒടി ഉപകരണത്തിൽ നിന്നുള്ള GPS ടെലിമെട്രി ഐഒടി ഹബിലിലേക്ക് അയയ്ക്കുന്നു

ടാസ്‌ക് - GPS ഡാറ്റ ഒരു IoT ഹബിലേക്ക് അയയ്ക്കുക

  1. സൗജന്യ തരത്തിൽ ഒരു പുതിയ ഐഒടി ഹബ് സൃഷ്ടിക്കുക.

    ⚠️ ആവശ്യമെങ്കിൽ പ്രൊജക്റ്റ് 2, പാഠം 4 ൽ നിന്ന് ഒരു ഐഒടി ഹബ് എങ്ങിനെ സൃഷ്ടിക്കാമെന്ന് കാണാം.

    പുതിയ Resource Group സൃഷ്ടിക്കുക. Resource Group നാമം gps-sensor വയ്ക്കുക, പുതിയ IoT Hub നാമം gps-sensor-<നിങ്ങളുടെ പേര്> പോലെയാണ് ആക്കുക.

    💁 മുമ്പത്തെ പ്രൊജക്റ്റിൽ നിന്നുള്ള നിങ്ങളുടെ IoT Hub ഇപ്പോഴും ഉണ്ടെങ്കിൽ, അതേ ഉപയോഗിക്കാം. മറ്റ് സേവനങ്ങൾ സൃഷ്ടിക്കുമ്പോൾ ഈ IoT Hub നാമവും Resource Group നാമവും ഉപയോഗിക്കാൻ ഓർമപ്പെടുത്തുക.

  2. ഒരു പുതിയ ഉപകരണം IoT Hub ൽ ചേർക്കുക. ഈ ഉപകരണത്തിൻറെ പേര് gps-sensor ഇടുക. ഉപകരണത്തിന്റെ കണക്ഷൻ സ്ട്രിംഗ് എടുക്കുക.

  3. ഉപകരണ കോഡ് അപ്ഡേറ്റ് ചെയ്ത് മുൻപത്തെ ഘട്ടത്തിൽ നിന്നുള്ള ഉപകരണ കണക്ഷൻ സ്ട്രിംഗ് ഉപയോഗിച്ച് GPS ഡാറ്റ പുതിയ IoT Hub ൽ അയയ്ക്കുക.

    ⚠️ ആവശ്യമെങ്കിൽ പ്രൊജക്റ്റ് 2, പാഠം 4 ൽ നിന്ന് ഉപകരണം ഒരു IoT സർവീസുമായി എങ്ങനെ കണക്ട് ചെയ്യാമെന്ന് കാണുക.

  4. GPS ഡാറ്റ അയയ്ക്കുമ്പോൾ താഴെ കാണുന്ന ഫോർമാറ്റിൽ JSON ആയി അയയ്ക്കുക:

    {
        "gps" :
        {
            "lat" : <latitude>,
            "lon" : <longitude>
        }
    }
    
  5. ദിവസേന നിങ്ങൾക്ക് അനുവദിച്ച സന്ദേശ പരിധി ലംഘിക്കാതിരിക്കാനും ഓരോ മിനുട്ടിൽ ഒരിക്കൽ GPS ഡാറ്റ അയക്കുക.

Wio Terminal ഉപയോഗിക്കുകയാണെങ്കിൽ, ആവശ്യമായ എല്ലാ ലൈബ്രറികളുമെല്ലാം ചേർക്കുകയും, NTP സർവ്വർ ഉപയോഗിച്ച് സമയം ക്രമീകരിക്കുകയും ചെയ്യുക. നിങ്ങളുടെ കോഡ് സെറിയൽ പോർട്ട് നിന്ന് എല്ലാ ഡാറ്റയും വായിച്ചു കഴിഞ്ഞെന്ന് ഉറപ്പാക്കണം, GPS സ്ഥലം അയച്ചുകൊടുക്കാൻ മുമ്പ്, മുമ്പത്തെ പാഠത്തിൽ നിന്നുള്ള നിലവിലുള്ള കോഡ് ഉപയോഗിച്ച്. JSON ഡോക്യുമെന്റ് നിർമ്മിക്കാൻ താഴെ കാണുന്ന കോഡ് ഉപയോഗിക്കുക:

DynamicJsonDocument doc(1024);
doc["gps"]["lat"] = gps.location.lat();
doc["gps"]["lon"] = gps.location.lng();

Virtual IoT ഉപകരണം ഉപയോഗിക്കുകയാണെങ്കിൽ, വരികചിത്രമായ അന്തരീക്ഷത്തിലൂടെ എല്ലാ ലൈബ്രറികളും ഇൻസ്റ്റാൾ ചെയ്യുക.

Raspberry Pi, Virtual IoT ഉപകരണങ്ങൾ രണ്ടും, മുൻപത്തെ പാഠത്തിലെ നിലവിലുള്ള കോഡ് ഉപയോഗിച്ച് അക്ഷാംശം, രേഖാംശം മൂല്യങ്ങൾ നേടുക, തുടർന്ന് ശരിയായ JSON ഫോർമാറ്റിൽ താഴെ കാണുന്ന കോഡ് ഉപയോഗിച്ച് അയയ്ക്കുക:

message_json = { "gps" : { "lat":lat, "lon":lon } }
print("Sending telemetry", message_json)
message = Message(json.dumps(message_json))

💁 ഈ കോഡ് നിങ്ങൾക്ക് code/wio-terminal, code/pi, അല്ലെങ്കിൽ code/virtual-device ഫോൾഡറുകളിൽ കണ്ടെത്താം.

നിങ്ങളുടെ ഉപകരണ കോഡ് പ്രവർത്തിപ്പിക്കുക, az iot hub monitor-events CLI കമാന്റ് ഉപയോഗിച്ച് സന്ദേശങ്ങൾ IoT Hub ൽ എത്തിക്കുകയാണെന്ന് ഉറപ്പാക്കുക.

ഹോട്ട്, വാം, കൊൾഡ് പാത്തുകൾ

ഐഒടി ഉപകരണത്തിൽ നിന്നുള്ള ഡാറ്റ ക്ലൗഡിലേക്ക് ശക്തിപ്രാപിക്കുമ്പോൾ എല്ലാ ഡാറ്റയും യഥാസമയം പ്രോസസ് ചെയ്യുന്നതല്ല. ചില ഡാറ്റയ്ക്ക് യഥാസമയം പ്രോസസ്സിംഗ് വേണം, ചില ഡാറ്റയ്ക്ക് മാറ്റാനലേക്ക്מעט നേരം കഴിഞ്ഞ് പ്രോസസ് ചെയ്യാം, ചില ഡാറ്റ പിന്നീട് വളരെ താഴെ പ്രോസസ് ചെയ്യാം. ഡാറ്റ വ്യത്യസ്ത സമയങ്ങളിൽ പ്രോസസ് ചെയ്യുന്ന വിവിധ സേവനങ്ങളിലേക്കുള്ള പ്രവാഹം ഹോട്ട്, വാം, കൊൾഡ് പാത്തുകൾ എന്നാണ് അറിയപ്പെടുന്നത്.

ഹോട്ട് പാത

ഹോട്ട് പാതയെന്നുപറയുന്നത് യഥാസമയം അല്ലെങ്കിൽ അതിനടുത്ത് ഡാറ്റ പ്രോസസ് ചെയ്യേണ്ടതാണെങ്കിൽ. നിങ്ങൾക്ക് അലേർട്ടുകൾക്കായാണ് ഹോട്ട് പാത ഡാറ്റ ഉപയോഗിക്കുക, ഉദാഹരണത്തിന് ഒരു വാഹനം ഡിപ്പോയിൽ എത്തുന്നു എന്നറിയിച്ചിരിക്കുവാൻ, അല്ലെങ്കിൽ റഫ്രിഡ്ജറേറ്റഡ് ട്രക്കിൽ താപനില വളരെ ഉയർന്നതാണെന്നറിയാൻ.

ഹോട്ട് പാത്ത് ഡാറ്റ ഉപയോഗിക്കാൻ, നിങ്ങളുടെ കോഡ് ഇവന്റുകൾ ലഭിക്കുമ്പോൾ ഉടനെ പ്രതികരിക്കും.

വാം പാത

വാം പാതയെന്നത് ഡാറ്റ കിട്ടിവെച്ചു കുറേ നേരം കഴിഞ്ഞ് പ്രോസസ് ചെയ്യാവുന്നവയാണ്, ഉദാഹരണത്തിന് റിപ്പോർട്ടുകൾക്കും ക്രമേണ പ്രവർത്തന വിശകലനത്തിനും. നിങ്ങളുടെ ദൈനംദിന വാഹന മൈലേജ് റിപ്പോർട്ടുകൾക്ക് മുൻവേദന വരെയുള്ള ഡാറ്റ വാം പാതയിൽ ഉപയോഗിക്കാം.

വാം പാത ഡാറ്റ ക്ലൗഡിലെ ഒരു വേഗം ആക്സസ് ചെയ്യാവുന്ന സംഭരണത്തിൽ സൂക്ഷിക്കുന്നു.

കൊൾഡ് പാത

കൊൾഡ് പാത പഴയ ഡാറ്റയെ സൂക്ഷിക്കുകയും അതെടുത്ത് വച്ചാൽ ആവശ്യത്തിൽപ്രകാരം പ്രോസസ് ചെയ്യാവുന്നതാണ്. ഉദാഹരണത്തിന്, വാഹങ്ങളുടെ വാർഷിക മൈലേജ് റിപ്പോർട്ടുകൾക്ക്, എത്രത്തോളം ഇന്ധന ചെലവ് കുറയ്ക്കാൻ ഏറ്റവും മികച്ച പാത കണ്ടെത്താൻ വിശകലനം നടത്താൻ കൊൾഡ് പാത ഉപയോഗിക്കാം.

കൊൾഡ് പാത ഡാറ്റ ഡാറ്റ വെയർഹൗസ്‌സുകളിൽ സൂക്ഷിക്കുന്നു - വലുതും മാറ്റം വരാത്തതുമായ ഡാറ്റ സംഭരിക്കാൻ രൂപകൽപ്പന ചെയ്ത ഡാറ്റാബേസുകൾ, എളുപ്പത്തിൽ ചോദ്യം ചെയ്യാവുന്നതും. സാധാരണയായി, നിങ്ങളുടെ ക്ലൗഡ് ആപ്ലിക്കേഷനിൽ നിശ്ചിത സമയത്ത് (ദിവസം, ആഴ്‌ച, മാസം) ഒരു ജോബ് ഓടിച്ച് വാം പാത സംഭരിച്ച ഡാറ്റ ഡാറ്റ വെയർഹൗസിലേക്ക് മാറ്റിവിടും.

ഈ പാഠങ്ങളിൽ ഇതുവരെ നിങ്ങൾ ശേഖരിച്ച ഡാറ്റ ഹോട്ട്, വാം, അല്ലെങ്കിൽ കൊൾഡ് പാത ഡാറ്റയാണോ എന്ന് ചിന്തിക്കുക.

സെർവർലെസ് കോഡ് ഉപയോഗിച്ച് ജിപിഎസ് ഇവന്റുകൾ കൈകാര്യം ചെയ്യുക

ഡാറ്റ നിങ്ങളുടെ IoT Hub ൽ എത്തുമ്പോൾ, Event Hub അനുകൂലമായ എൻഡ്‌പോയിന്റിലേക്കുള്ള ഇവന്റുകൾ കേൾക്കാൻ നിങ്ങൾക്ക് സെർവർലെസ് കോഡ് എഴുതാവുന്നതാണ്. ഇത് വാം പാതയായാണ് - ഈ ഡാറ്റ അടുത്ത പാഠത്തിൽ യാത്ര കുറിച്ചറിയിക്കുന്നതിനായി സംഭരിക്കും.

ഐഒടി ഉപകരണത്തിൽ നിന്നുള്ള GPS ടെലിമെട്രി ഐഒടി ഹബിലേക്കും ശേഷം ഒരു ഇവന്റ് ഹബ് ട്രിഗർ വഴി ആസ്യൂർ ഫംഗ്ഷൻസ് ဆേസിലേക്ക് അയക്കുന്നു

ടാസ്‌ക് - സെർവർലെസ് കോഡ് ഉപയോഗിച്ച് ജിപിഎസ് ഇവന്റുകൾ കൈകാര്യം ചെയ്യുക

  1. ആസ്യൂർ ഫംഗ്ഷൻസ് CLI ഉപയോഗിച്ച് ഒരു ആസ്യൂർ ഫംഗ്ഷൻസ് ആപ്പ് സൃഷ്ടിക്കുക. Python റൺടൈം ഉപയോഗിക്കുക, gps-trigger എന്ന ഫോൾഡറിലാക്കി സൃഷ്ടിക്കുക, ഫംഗ്ഷൻസ് ആപ്പ് പ്രോജെക്ടിന് അതേ പേര് നല്‍കുക. ഒരു ವರ್ಚ്വൽ പരിതസ്ഥിതിയും ഉപയോഗിക്കുക.

    ⚠️ ആവശ്യമെങ്കിൽ പ്രൊജക്റ്റ് 2, പാഠം 5 ൽ നിന്ന് ആസ്യൂർ ഫംഗ്ഷൻസ് പ്രോജക്ട് എങ്ങനെ സൃഷ്ടിക്കാമെന്ന് കാണുക.

  2. IoT ഹബിൽ Event Hub അനുയോജ്യമായ എൻഡ്‌പോയിന്റ് ഉപയോഗിക്കുന്ന ഒരു IoT ഹബ് ഇവന്റ് ട്രിഗർ ചേർക്കുക.

⚠️ നിങ്ങള്‍ക്ക് ആവശ്യമുണ്ടെങ്കില്‍ പ്രോജക്ട് 2, പഠനം 5-ല്‍ നിന്നുള്ള ഒരു ഐ.ഒ.ടി ഹബ് ഇവന്റ് ട്രിഗ്ഗര്‍ സൃഷ്ടിക്കുന്നതിന്‍റെ നിര്‍ദ്ദേശങ്ങള്‍ കാണാവുന്നതാണ്.

  1. local.settings.json ഫയലിൽ ഇവന്റ് ഹബ് അനുയോജ്യമായ endpoint കണക്ഷൻ സ്ട്രിംഗ് സജ്ജമാക്കി, ആ എൻട്രിക്ക് വേണ്ടി കി function.json ഫയലിൽ ഉപയോഗിക്കുക.

  2. Azurite ആപ്പ് ഒരു ലോക്കൽ സ്റ്റോറേജ് എമുലേറ്ററായി ഉപയോഗിക്കുക

  3. നിങ്ങളുടെ functions ആപ്പ് പ്രവർത്തിപ്പിച്ച് നിങ്ങളുടെ GPS ഉപകരണം ഇവന്റുകൾ സ്വീകരിക്കുകയാണെന്ന് ഉറപ്പാക്കുക. നിങ്ങളുടെ IoT ഡിവൈസ് പ്രവർത്തിക്കുന്നുവും GPS ഡാറ്റ അയയ്ക്കുകയുമാണ് ഉറപ്പാക്കുക.

    Python EventHub trigger processed an event: {"gps": {"lat": 47.73481, "lon": -122.25701}}
    

Azure സ്റ്റോറേജ് അക്കൗണ്ടുകൾ

Azure സ്റ്റോറേജ് ലോഗോ

Azure സ്റ്റോറേജ് അക്കൗണ്ട്‌സ് ഒരു പൊതുവായ ഉദ്ദേശത്തിലുള്ള സ്റ്റോറേജ് സേവനമാണ്, ഇത് വിവിധവിധത്തിൽ ഡാറ്റ സംഭരിക്കാൻ സഹായിക്കുന്നു. നിങ്ങൾക്ക് blob-കൾ, queue-കൾ, table-കൾ, അല്ലെങ്കിൽ ഫയലുകളായി ഒരേസമയം ഡാറ്റ സംഭരിക്കാൻ കഴിയും.

Blob സ്റ്റോറേജ്

Blob എന്ന പദം binary large objects എന്നതിന് അർത്ഥമുണ്ടെങ്കിലും, യാതൊരു ഘടനയില്ലാത്ത ഏതൊരു ഡാറ്റയെയും സൂചിപ്പിക്കാൻ ഉപയോഗിക്കുന്നു. IoT ഡാറ്റ ഉള്ള JSON ഡോക്യുമെന്റുകളും, ചിത്രം, ചലച്ചിത്ര ഫയലുകളും Blob സ്റ്റോറേജിൽ സहेജിക്കാം. Blob സ്റ്റോറേജിന് containers എന്ന ആശയം ഉണ്ട്, relational ഡാറ്റാബേസ്中的 tables-നെപ്പോലെ നാം ഡാറ്റ പകരുന്ന നാമമുള്ള ബക്കറ്റുകൾ. ഈ കൺറ്റെയ്‌നറുകൾക്ക് ഒരു അല്ലെങ്കിൽ അതിലധികം ഫോൾഡറുകൾ ഉണ്ടാകാം blobs സൂക്ഷിക്കാൻ, ഓരോ ഫോൾഡറിലും മറ്റ് ഫോൾഡറുകൾ ഉണ്ടായിരിക്കും, കമ്പ്യൂട്ടറിലെ ഹാർഡ് ഡിസ്കിൽ ഫയലുകൾ സൂക്ഷിക്കുന്നത് പോലെ.

ഈ പാഠത്തിൽ അവിടെനుండെ IoT ഡാറ്റ blobs ആയി സൂക്ഷിക്കാൻ Blob സ്റ്റോറേജ് ഉപയോഗിക്കും.

കുറച്ച് പഠനം: Azure Blob Storage വായിക്കുക

Table സ്റ്റോറേജ്

Table സ്റ്റോറേജ് അർദ്ധഘടനയുള്ള ഡാറ്റ സൂക്ഷിക്കാൻ അനുവദിക്കുന്നു. ഇത് വാസ്തവത്തിൽ ഒരു NoSQL ഡാറ്റാബേസ് ആണ്, അതിനാൽ നേരത്തെ നിർവ്വചിച്ച ടേബിൾ സെറ്റ് ആവശ്യമില്ല, എന്നാൽ ഒരോ വരിയെയും അവലംബിക്കാനും വിശിഷ്ട കീകൾ ഉപയോഗിച്ച് ഒരോ ടേബിളിലോ അതിലധികത്തിലോ ഡാറ്റ സൂക്ഷിക്കാൻ രൂപകൽപ്പന ചെയ്തതാണ്.

കുറച്ച് പഠനം: Azure Table Storage വായിക്കുക

Queue സ്റ്റോറേജ്

Queue സ്റ്റോറേജ് ഏറ്റവും 64KB വലുപ്പമുള്ള സന്ദേശങ്ങൾ ഒരു നിരയിലാക്കി സൂക്ഷിക്കാൻ സഹായിക്കുന്നു. നിങ്ങൾക്ക് സന്ദേശങ്ങൾ നിരയുടെ പിന്നിലേക്ക് ചേർക്കാം, മുന്നില്‍ നിന്നും വായിക്കാം. Queue-കളിൽ സംഭരിച്ച സന്ദേശങ്ങൾ സ്റ്റോറേജ് സ്ഥലമുണ്ടെങ്കിൽ നിരന്തരം സൂക്ഷിക്കപ്പെടുന്നു, അതിനാൽ സന്ദേശങ്ങൾ ദീർഘകാലം സൂക്ഷിക്കാനും ആവശ്യപ്പെട്ടപ്പോള്‍ വായിക്കാനുമാകും. ഉദാഹരണത്തിന്, നിങ്ങൾ ഒരു മാസത്തെ GPS ഡാറ്റ പ്രവൃത്തി നടത്തണമെന്ന് ആഗ്രഹിക്കുന്നുവെങ്കിൽ, ആ മാസംതോറും ദിവസവും അത് നിർത്തിവെച്ച് മാസാവസാനത്തിൽ എല്ലാ സന്ദേശങ്ങളും പ്രോസസ്സ് ചെയ്യാവുന്നതാണ്.

കുറച്ച് പഠനം: Azure Queue Storage വായിക്കുക

ഫയൽ സ്റ്റോറേജ്

Cloud-ൽ ഫയലുകൾ സൂക്ഷിക്കുന്നതാണ് ഫയൽ സ്റ്റോറേജ്, ഏതൊരു ആപ്പും ഉപകരണം ഇൻഡസ്ട്രി സ്റ്റാൻഡേർഡ് പ്രോട്ടോകോളുകൾ ഉപയോഗിച്ച് കണക്ട് ചെയ്യാവുന്നതാണ്. ഫയലുകൾ ഫയൽ സ്റ്റോറേജിൽ എഴുതാം, ശേഷം നിങ്ങളുടെ പി.സി. അല്ലെങ്കിൽ മാക്കിൽ ഡ്രൈവായി മൗണ്ട് ചെയ്യാം.

കുറച്ച് പഠനം: Azure File Storage വായിക്കുക

നിങ്ങളുടെ സർവർലെസ് കോഡ് സ്റ്റോറേജുമായി ബന്ധിപ്പിക്കുക

നിങ്ങളുടെ ഫങ്ഷൻസ് ആപ്പ് ఇప్పుడు blob സ്റ്റോറേജുമായി കണക്ട് ചെയ്ത് IoT ഹബ് സന്ദേശങ്ങൾ സൂക്ഷിക്കണം. ഇത് ചെയ്യാൻ 2 മാർഗ്ഗങ്ങളുണ്ട്:

  • ഫങ്ഷൻ കോഡിനുള്ളിൽ Python SDK ഉപയോഗിച്ച് blob സ്റ്റോറേജുമായി കണക്ട് ചെയ്ത് ഡാറ്റ blob-കളായി എഴുതുക
  • output ഫങ്ഷൻ ബൈൻഡിംഗ് ഉപയോഗിച്ച് ഫങ്ഷന്റെ റിട്ടേൺ വാല്യു blob സ്റ്റോറേജുമായി ബന്ധിപ്പിച്ച് ഓട്ടോമാറ്റിക്കായി blob സംരക്ഷിക്കുക

ഈ പാഠത്തിൽ നിങ്ങൾ Python SDK ഉപയോഗിച്ച് blob സ്റ്റോറേജുമായി എങ്ങനെ പ്രവർത്തിക്കാമെന്ന് കാണും.

IoT ഡിവൈസിൽ നിന്നുള്ള GPS ടെലിമെട്രി IoT ഹബിലേക്ക്, പിന്നീട് ഇവന്റ് ഹബ് ട്രിഗ്ഗർ വഴി Azure Functions-ലേക്ക് അയയ്ക്കുന്നു, പിന്നെ അത് blob സ്റ്റോറേജിലേയ്ക്കുമാറ്റുന്നു

ഡാറ്റ താഴെപ്പറയുന്ന ഫോർമാറ്റിൽ JSON blob ആയി സൂക്ഷിക്കും:

{
    "device_id": <device_id>,
    "timestamp" : <time>,
    "gps" :
    {
        "lat" : <latitude>,
        "lon" : <longitude>
    }
}

ടാസ്‌ക് - നിങ്ങളുടെ സർവർലെസ് കോഡ് സ്റ്റോറേജുമായി കണക്ട് ചെയ്യുക

  1. ഒരു Azure സ്റ്റോറേജ് അക്കൗണ്ട് സൃഷ്ടിക്കുക. അതിന് gps<നിങ്ങളുടെ പേര്> പോലൊരു പേര് നൽകരുത്.

    ⚠️ പ്രോജക്ട് 2, പഠനം 5-ൽ സ്റ്റോറേജ് അക്കൗണ്ട് സൃഷ്ടിക്കുന്നതിന്‍റെ നിര്‍ദ്ദേശങ്ങള്‍ കാണാവുന്നതാണ്.

    പഴയ പ്രോജക്ടിൽ നിന്ന് ഒരു സ്റ്റോറേജ് അക്കൗണ്ട് ഉണ്ടെങ്കിൽ അത് വീണ്ടും ഉപയോഗിക്കാവുന്നതാണ്.

    💁 ഇതേ സ്റ്റോറേജ് അക്കൗണ്ട് പിന്നീട് Azure Functions ആപ്പ് ഡിപ്ലോയ്മെന്‍റിനും ഉപയോഗിക്കാവുന്നതാണ്.

  2. സ്റ്റോറേജ് അക്കൗണ്ടിനായുള്ള കണക്ഷൻ സ്ട്രിംഗ് നേടാൻ താഴെയുള്ള കമാൻഡ് ഓടിക്കുക:

    az storage account show-connection-string --output table \
                                              --name <storage_name>
    

    <storage_name>-നെ മുൻപത്തെ ഘട്ടത്തിൽ നിങ്ങൾ സൃഷ്ടിച്ചിട്ടുള്ള സ്റ്റോറേജ് അക്കൗണ്ടിന്റെ പേരിൽ മാറ്റുക.

  3. മുൻപത്തെ ഘട്ടത്തിലെ മൂല്യം ഉപയോഗിച്ച് local.settings.json ഫയലിൽ നിങ്ങളുടെ സ്റ്റോറേജ് അക്കൗണ്ട് കണക്ഷൻ സ്ട്രിംഗിനായി പുതിയ എൻട്രി ചേർക്കുക. അതിന് STORAGE_CONNECTION_STRING എന്ന പേര് നൽകുക

  4. Azure സ്റ്റോറേജ് പിപ് പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യാൻ requirements.txt ഫയലിൽ താഴെയുള്ള വരികൾ ചേർക്കുക:

    azure-storage-blob
    

    ഈ ഫയലിലുള്ള പാക്കേജുകൾ നിങ്ങളുടെ വെർച്വൽ എൻവയോൺമെന്റിൽ ഇൻസ്റ്റാൾ ചെയ്യുക.

    പിശക് ഉണ്ടായാൽ, വെർച്വൽ എൻവയോൺമെന്റിലെ പിപ് വേർഷൻ ഏറ്റവും പുതിയതായി അപ്‌ഗ്രേഡ് ചെയ്യാൻ താഴെയുള്ള കമാൻഡ് ഉപയോഗിക്കുക, പിന്നെ വീണ്ടും ശ്രമിക്കുക:

    pip install --upgrade pip
    
  5. iot-hub-trigger-ന്‍റെ __init__.py ഫയലിൽ താഴെപ്പറയുന്ന ഇംപോർട്ട് സ്റ്റേറ്റ്മെന്റുകൾ ചേർക്കുക:

    import json
    import os
    import uuid
    from azure.storage.blob import BlobServiceClient, PublicAccess
    

    json സിസ്റ്റം മോഡ്യൂൾ JSON വായിക്കാനും എഴുതാനും, os സിസ്റ്റം മോഡ്യൂൾ കണക്ഷൻ സ്ട്രിംഗ് വായിക്കാനും, uuid സിസ്റ്റം മോഡ്യൂൾ GPS റീഡിംഗിനുള്ള ഒരറ്റിപ്പെരുന്ന ഐഡി സൃഷ്ടിക്കാനും ഉപയോഗിക്കും.

    azure.storage.blob പാക്കേജ് Python SDK ആണ് blob സ്റ്റോറേജുമായി പ്രവർത്തിക്കാൻ.

  6. main മെത്തഡിന് മുമ്പ് താഴെ കാണിച്ചിരിക്കുന്ന ഹേലപ്പർ ഫങ്ഷൻ ചേർക്കുക:

    def get_or_create_container(name):
        connection_str = os.environ['STORAGE_CONNECTION_STRING']
        blob_service_client = BlobServiceClient.from_connection_string(connection_str)
    
        for container in blob_service_client.list_containers():
            if container.name == name:
                return blob_service_client.get_container_client(container.name)
    
        return blob_service_client.create_container(name, public_access=PublicAccess.Container)
    

    Python blob SDK-ൽ ഒരു കൺറ്റെയ്‌നർ ഉണ്ടാകണമെങ്കിൽ സൃഷ്ടിക്കാനുള്ള ഹേലപ്പർ മെത്തഡ് ഇല്ല. ഈ കോഡ് local.settings.json (അഥവാ ക്ലൗഡിലേക്ക് ഡിപ്ലോയ്മെന്റ് കഴിഞ്ഞ് Application Settings) നിന്നു കണക്ഷൻ സ്ട്രിംഗ് ലോഡ് ചെയ്തു, BlobServiceClient ക്ലാസ് സൃഷ്ടിച്ച് blob സ്റ്റോറേജ് അക്കൗണ്ടുമായി ഇടപഴകുന്നു. തുടർന്ന് അക്കൗണ്ടിലെ എല്ലാ കൺറ്റെയ്‌നറുകളും ലൂപ്പ് ചെയ്യുന്നു, നൽകിയ നാമമുള്ളത് അന്വേഷിക്കുന്നു - കണ്ടെത്തിയാൽ ആ കൺറ്റെയ്‌നറുമായി ഇടപഴകാന്‍ ContainerClient ക്ലാസ് റിട്ടേൺ ചെയ്യുന്നു. കണ്ടെത്തിയില്ലെങ്കിൽ, പുതിയ കൺറ്റെയ്‌നർ സൃഷ്ടിച്ച് അതിന് വേണ്ട ക്ലയന്റ് റിട്ടേൺ ചെയ്യുന്നു.

    പുതിയ കൺറ്റെയ്‌നർ സൃഷ്ടിക്കുമ്പോൾ, അവിടെയുള്ള blobs പരിശോധിക്കാനായി പൊതുഅവകാശം അനുവദിക്കുന്നു. ഇത് അടുത്ത പാഠത്തില്‍ GPS ഡാറ്റ ഒരു മാപ്പില്‍ കാഴ്ചവയ്ക്കാൻ ഉപയോഗിക്കും.

  7. സോയിൽ മോയ്ച്ചറിലുണ്ടായിരുന്ന പോലെ അല്ലാതെ, ഈ കോഡിൽ എല്ലാ ഇവന്റും സൂക്ഷിക്കുന്നതിനാണ്, അതിനാൽ main ഫങ്ഷനിലെ for event in events: ലൂപ്പിനുള്ളിൽ logging സ്റ്റേറ്റ്മെന്റിന് താഴെ താഴെ കൊടുത്തിരിക്കുന്ന കോഡ് ചേർക്കുക:

    device_id = event.iothub_metadata['connection-device-id']
    blob_name = f'{device_id}/{str(uuid.uuid1())}.json'
    

    ഈ കോഡ് ഇവന്റ് മീറ്റഡേറ്റയിൽ നിന്നുള്ള ഉപകരണം ഐഡി (device ID) എടുക്കുന്നു, തുടർന്ന് അത് ഉപയോഗിച്ച് blob നാമം സൃഷ്ടിക്കുന്നു. blobs ഫോൾഡറുകളിൽ സൂക്ഷിക്കാം, ഡിവൈസ് ഐഡി ഫോൾഡർ നാമമായി ഉപയോഗിക്കപ്പെടും, അതിനാൽ ഓരോ ഉപകരണത്തിനും എല്ലാ GPS ഇവന്റുകളും ഒരു ഫോൾഡറിലാകും. blob നാമം ഈ ഫോൾഡറും പിന്നീട് ഒരു ഡോക്യുമെന്റ് നാമവും ഫോർവേഡ് സ്ലാഷ് ഉപയോഗിച്ച് വേർതിരിക്കുന്നു, Linux, macOS പാതകളെപ്പോലെ (Windows-ഉം ഈ രീതിയാണ് ഉപയോഗിക്കുന്നത്, പക്ഷേ ബാക്ക് സ്ലാഷ്), ഡോക്യുമെന്റ് നാമം Python uuid മോഡ്യൂൾ ഉപയോഗിച്ച് സൃഷ്ടിക്കപ്പെട്ട യुनिकർ ഐडीയാണ്, ഫയൽ തരം json.

    ഉദാഹരണത്തിന്, gps-sensor ഉപകരണം ഐഡിക്ക്, blob നാമം gps-sensor/a9487ac2-b9cf-11eb-b5cd-1e00621e3648.json പോലെയായിരിക്കും.

  8. താഴെ കൊടുത്തിരിക്കുന്ന കോഡ് ഇതിനുശേഷം ചേർക്കുക:

    container_client = get_or_create_container('gps-data')
    blob = container_client.get_blob_client(blob_name)
    

    ഈ കോഡ് get_or_create_container ഹേലപ്പർ ക്ലാസ് ഉപയോഗിച്ച് കൺറ്റെയ്‌നർ ക്ലയന്റ് സ്വീകരിക്കുന്നു, തുടർന്ന് blob നാമം ഉപയോഗിച്ച് blob ക്ലയന്റ് ഓബ്‌ജക്ട് ലഭിക്കുന്നു. ഈ blob ക്ലയന്റ് നിലവിലുണ്ടായ blob-കളിലേക്കോ പുതിയ blob-കളിലേക്കോ റഫറൻസ് ആയി ഉപയോഗിക്കാം.

  9. ഇതിന് ശേഷം താഴെ കൊടുക്കുന്ന കോഡ് ചേർക്കുക:

    event_body = json.loads(event.get_body().decode('utf-8'))
    blob_body = {
        'device_id' : device_id,
        'timestamp' : event.iothub_metadata['enqueuedtime'],
        'gps': event_body['gps']
    }
    

    ഇത് blob സ്റ്റോറേജിലേക്കു എഴുതാനുള്ള blob ബോഡിയുടെ ഘടന ആണിത്. ഇത് JSON ഡോക്യുമെന്റാണ്, ഇതിൽ ഉപകരണത്തിന്റെ ഐഡി, ടെലിമെട്ടറി IoT ഹബിലേക്ക് അയച്ച സമയവും, GPS കോഓർഡിനേറ്റുകളും അടങ്ങിയിരിക്കുന്നു.

    💁 സന്ദേശം അയച്ച സമയമായി നിലവിലുള്ള സമയം ഉപയോഗിക്കാൻ പകരം enqueued time ഉപയോഗിക്കുന്നത് പ്രധാനമാണ്. ഫങ്ഷൻസ് ആപ്പ് പ്രവർത്തനരഹിതമായാൽ, സന്ദേശം ഹബിൽ കുറച്ച് നേരം നിൽക്കുമെന്ന സാധ്യതയുണ്ട്.

  10. ഇതിനു താഴെ താഴെ കൊടുത്തിരിക്കുന്ന കോഡ് ചേർക്കുക:

    logging.info(f'Writing blob to {blob_name} - {blob_body}')
    blob.upload_blob(json.dumps(blob_body).encode('utf-8'))
    

    ഈ കോഡ് കുറിപ്പിടുന്നു blob എഴുതാൻ പോകുന്നു എന്ന്, അവയുടെ വിശദാംശങ്ങളോടെ, പിന്നെ പുതിയ ബ്ലോബിന്റെ ഉള്ളടക്കമായി blob ബോഡി അപ്‌ലോഡ് ചെയ്യുന്നു.

  11. ഫങ്ഷൻസ് ആപ്പ് പ്രവർത്തിപ്പിക്കുക. എല്ലാ GPS ഇവന്റുകളുടെയും blobs എഴുതപ്പെടുന്നത് ഔട്ട്‌പുട്ടിൽ കാണാം:

    [2021-05-21T01:31:14.325Z] Python EventHub trigger processed an event: {"gps": {"lat": 47.73092, "lon": -122.26206}}
    ...
    [2021-05-21T01:31:14.351Z] Writing blob to gps-sensor/4b6089fe-ba8d-11eb-bc7b-1e00621e3648.json - {'device_id': 'gps-sensor', 'timestamp': '2021-05-21T00:57:53.878Z', 'gps': {'lat': 47.73092, 'lon': -122.26206}}
    

    💁 IoT ഹബ് ഇവന്റ് മോനിറ്റർ ഒരേസമയം പ്രവർത്തിപ്പിക്കാതിരിക്കുക.

💁 ഈ കോഡ് code/functions ഫോൾഡറിലുണ്ട്.

ടാസ്‌ക് - അപ്‌ലോഡ് ചെയ്ത blobs പരിശോധന ചെയ്യുക

  1. സൃഷ്ടിച്ച blobs കാണാൻ നിങ്ങൾക്ക് Azure Storage Explorer എന്ന സൗജന്യ ടൂൾ ഉപയോഗിക്കാം, അല്ലെങ്കിൽ CLI മുതൽ.

    1. CLI ഉപയോഗിക്കാൻ ആദ്യം അക്കൗണ്ട് കീ ആവശ്യമുണ്ട്. ഇത് ഏതെങ്കിലും കമാൻഡ് ഓടിച്ച് നേടാം:

      az storage account keys list --output table \
                                   --account-name <storage_name>
      

      <storage_name>-നെ സ്റ്റോറേജ് അക്കൗണ്ടിന്‍റെ പേരിൽ മാറ്റുക.

      key1-ന്റെ മൂല്യം കോപ്പി ചെയ്യുക.

    2. കൺറ്റെയ്‌നറിലെ blobs ലിസ്റ്റുചെയ്യാൻ താഴെയുള്ള കമാൻഡ് ഓടിക്കുക:

      az storage blob list --container-name gps-data \
                           --output table \
                           --account-name <storage_name> \
                           --account-key <key1>
      

      <storage_name>-നെ നിങ്ങളുടെ സ്റ്റോറേജ് അക്കൗണ്ടിന്റെ പേരിൽ, <key1>-നെ കഴിഞ്ഞ ഘട്ടം കോപ്പി ചെയ്ത key1-യുടെ മൂല്യം കൊണ്ട് മാറ്റുക.

      ഇത് കൺറ്റെയ്‌നറിലെ എല്ലാ blobs എണ്ണം കാണിക്കും:

      Name                                                  Blob Type    Blob Tier    Length    Content Type              Last Modified              Snapshot
      ----------------------------------------------------  -----------  -----------  --------  ------------------------  -------------------------  ----------
      gps-sensor/1810d55e-b9cf-11eb-9f5b-1e00621e3648.json  BlockBlob    Hot          45        application/octet-stream  2021-05-21T00:54:27+00:00
      gps-sensor/18293e46-b9cf-11eb-9f5b-1e00621e3648.json  BlockBlob    Hot          45        application/octet-stream  2021-05-21T00:54:28+00:00
      gps-sensor/1844549c-b9cf-11eb-9f5b-1e00621e3648.json  BlockBlob    Hot          45        application/octet-stream  2021-05-21T00:54:28+00:00
      gps-sensor/1894d714-b9cf-11eb-9f5b-1e00621e3648.json  BlockBlob    Hot          45        application/octet-stream  2021-05-21T00:54:28+00:00
      
    3. താഴെയുള്ള കമാൻഡ് ഉപയോഗിച്ച് ഒരു blob ഡൗൺലോഡ് ചെയ്യുക:

      az storage blob download --container-name gps-data \
                               --account-name <storage_name> \
                               --account-key <key1> \
                               --name <blob_name> \
                               --file <file_name>
      

      <storage_name>-നെ സ്റ്റോറേജ് അക്കൗണ്ടിന്റെ പേരിൽ, <key1>-നെ മുമ്പ് കോപ്പി ചെയ്ത key1 മൂല്യത്തിൽ, <blob_name>-നെ അവസാന ഘട്ടം ലിസ്റ്റിൽ Name കോളത്തിലുണ്ടായ ഫോൾഡർ നാമം ഉൾപ്പെടുത്തിയ മുഴുവൻ blob നാമത്തിൽ, <file_name>-നെ ലോക്കൽ ഫയൽ നാമത്തിൽ മാറ്റുക.

    ഡൗൺലോഡ് കഴിഞ്ഞ്, JSON ഫയൽ VS Code-ൽ തുറക്കുക, നിങ്ങൾക്ക് GPS സ്ഥലം വിശദാംശങ്ങൾ ഉൾക്കൊള്ളുന്ന blob കാണാം:

    {"device_id": "gps-sensor", "timestamp": "2021-05-21T00:57:53.878Z", "gps": {"lat": 47.73092, "lon": -122.26206}}
    

ടാസ്‌ക് - Functions ആപ്പ് ക്ലൗഡിലേക്ക് ഡിപ്ലോയ്മെന്റ് ചെയ്യുക

നിങ്ങളുടെ Functions ആപ്പ് സജ്ജമാണ്, ഇപ്പോൾ അത് ക്ലൗഡിലേക്ക് ഡിപ്ലോയ്മെന്റ് ചെയ്യാം.

  1. നിങ്ങളുടെ മുമ്പ് സൃഷ്ടിച്ച സ്റ്റോറേജ് അക്കൗണ്ട് ഉപയോഗിച്ച് പുതിയ Azure Functions ആപ്പ് സൃഷ്ടിക്കൂ. ഇതിനായി gps-sensor- പോലൊരു പേര് ഉപയോഗിച്ച്, അവസാനം യഥാർത്ഥഈഡന്റിഫയറോ ചില പേരെയോ ചേർക്കുക.

    ⚠️ പ്രോജക്ട് 2, പഠനം 5-ൽ Functions ആപ്പ് സൃഷ്ടിക്കുന്നതിനുള്ള നിര്‍ദ്ദേശങ്ങള്‍ കാണാവുന്നതാണ്.

  2. IOT_HUB_CONNECTION_STRING ആയും STORAGE_CONNECTION_STRING ആയും Application Settings-ലേക്ക് അപ്‌ലോഡ് ചെയ്യുക

    ⚠️ പ്രോജക്ട് 2, പഠനം 5-ൽ Application Settings അപ്‌ലോഡ് ചെയ്യുന്നതിന്‍റെ നിര്‍ദ്ദേശങ്ങള്‍ കാണാവുന്നതാണ്.

  3. നിങ്ങളുടെ ലോക്കൽ Functions ആപ്പ് ക്ലൗഡിലേക്ക് ഡിപ്ലോയ്മെന്റ് ചെയ്യൂ.

    ⚠️ പ്രോജക്ട് 2, പഠനം 5-ൽ Functions ആപ്പ് ഡിപ്ലോയ്മെന്റ് സംബന്ധിച്ച നിര്‍ദ്ദേശങ്ങള്‍ കാണാവുന്നതാണ്.


🚀 വെല്ലുവിളി

GPS ഡാറ്റ സാരമായ പിശകില്ലാത്തതാണ്, സ്ഥിതിഗതികൾ ചില മീറ്ററുകൾ മുതൽ കൂടുതലായി പൊതുവായി പിഴവുണ്ടാകാം, പ്രത്യേകിച്ച് സൂളക്കായ നേരങ്ങളിലോ ഉയരം കൂടിയ കെട്ടിടങ്ങളുള്ള പ്രദേശങ്ങളിലോ.

സാറ്റലൈറ്റ് നാവിഗേഷന്‍ എങ്ങനെ ഇതിന് മറുപടി പറയുമെന്ന് ആലോചിക്കൂ? നിങ്ങളുടെ sat-nav ഇൗ കൂടുതൽ മികച്ച സ്ഥാനം പ്രവചനങ്ങൾക്ക് എന്തൊക്കെ ഡാറ്റ ഉപയോഗിക്കുന്നു?

പാഠത്തിനുശേഷം ക്വിസ്

പാഠത്തിനുശേഷം ക്വിസ്

അവലോകനം & സ്വയം പഠനം

നിയമനം

ഫങ്ക്ഷന്‍ ബൈന്‍ഡിംഗുകള്‍ അന്വേഷിക്കുക


തിരഞ്ഞെടുപ്പ്:
ഈ ദോക്കൂമെന്റ് എഐ പകർച്ചവേദിയായ Co-op Translator ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം സത്യസമയം നിർബന്ധിച്ച് കൃത്യത ഉറപ്പുവരുത്താൻ ശ്രമിച്ചിരുന്നുവെങ്കിലും, സ്വയംമാറ്റത്തിലുള്ള വിവർത്തനങ്ങളിൽ പിശകുകളും അദ്ധ്രുത്തുകൾ ഉണ്ടാകാമെന്ന് ദയവായി അറിയിക്കുക. സ原ട документ് അവന്റെ മാതൃഭാഷയിൽ ഏറ്റവും രണ്ടു ഉത്തരവാദിയായ ഉറവിടമായി കണക്കാക്കേണ്ടതാണ്. അത്യാഹിത വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം നിർദേശിക്കുന്നു. ഈ വിവർത്തനം ഉപയോഗിച്ചുകൊണ്ട് ഉണ്ടായ റോഡിന്റെയും തെറ്റായ അർത്ഥനിലവാരത്തിന്റെയും ഉത്തരവാദിത്തം ഞങ്ങൾക്ക് ഇല്ല.