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/1-getting-started/lessons/4-connect-internet
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
single-board-computer-commands.md chore(i18n): sync translations with latest source changes (#571) 6 months ago
single-board-computer-mqtt.md chore(i18n): sync translations with latest source changes (#571) 6 months ago
single-board-computer-telemetry.md chore(i18n): sync translations with latest source changes (#571) 6 months ago
wio-terminal-commands.md chore(i18n): sync translations with latest source changes (#571) 6 months ago
wio-terminal-mqtt.md chore(i18n): sync translations with latest source changes (#571) 6 months ago
wio-terminal-telemetry.md chore(i18n): sync translations with latest source changes (#571) 6 months ago

README.md

നിങ്ങളുടെ ഉപകരണം ഇന്റർനെട്ടുമായി ബന്ധിപ്പിക്കുക

ഈ പാഠത്തിന്റെ ഒരു സ്കെച്ചുകൾ അവലോകനം

Nitya Narasimhanയുടെ സ്കെച്ച്നോട്ട്. വലിയ വേഴ്സണിന് ചിത്രം ക്ലിക്ക് ചെയ്യുക.

ഈ പാഠം Microsoft Reactor നിന്നുള്ള Hello IoT സീരീസ്യുടെ ഭാഗമായാണ് പഠിപ്പിച്ചത്. ഈ പാഠം 2 വീഡിയോകളായി പഠിപ്പിച്ചു - 1 മണിക്കൂർ പാഠം, 1 മണിക്കൂർ ഓഫീസ് അവധി, പാഠത്തിലെ ഭാഗങ്ങൾ കൂടുതൽ വിശദമായി പരിശോധിച്ച് ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകി.

പാഠം 4: നിങ്ങളുടെ ഉപകരണം ഇന്റർനെ็ตുമായി ബന്ധിപ്പിക്കുക

പാഠം 4: നിങ്ങളുടെ ഉപകരണം ഇന്റർനെറ്റുമായി ബന്ധിപ്പിക്കുക - ഓഫീസ് സമയം

🎥 വീഡിയോകൾ കാണാൻ മുകളിൽ ചിത്രങ്ങൾ ക്ലിക്ക് ചെയ്യുക

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

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

പരിചയം

IoT ൽ Iയെ വ്യക്തമാക്കുന്നത് Internet ആണ് - ക്ലൗഡ് കണക്ടിവിറ്റി, IoT ഉപകരണങ്ങളുടെ പ്രവർത്തനങ്ങൾക്ക് സൗകര്യവും സേവനങ്ങളും നൽകുന്നു, സെൻസറുകളിൽ നിന്നുള്ള അളവുകൾ ശേഖരിച്ചും ആക്ടുവേറ്ററുകൾ നിയന്ത്രിക്കുന്ന സന്ദേശങ്ങൾ അയയ്ക്കുന്നതും ഉൾപ്പെടെ. IoT ഉപകരണങ്ങൾ സാധാരണയായി ഒരു ക്ലൗഡ് IoT സേവനത്തിലേക്ക് ഒരു സ്റ്റാൻഡേർഡ് കമ്യൂണിക്കേഷൻ പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് ബന്ധിപ്പിക്കപ്പെടുന്നു, ആ സേവനം നിങ്ങളുടെ IoT ആപ്ലിക്കേഷനിലെ ബാക്കി ഭാഗങ്ങളുമായി ബന്ധിപ്പിക്കുന്നു, നിങ്ങൾക്ക് ബ്രയിലോ നക്ഷത്രരും സേവനങ്ങൾ ഉപയോഗിച്ച് സ്മാർട്ട് തീരുമാനങ്ങൾ എടുക്കാനുംവെബ് ആപ്പുകൾ ഉപയോഗിച്ച് നിയന്ത്രണവും റിപ്പോർട്ടിംഗും നടത്താനും കഴിയും.

🎓 സെൻസറുകളിൽ നിന്ന് ശേഖരിച്ച ഡാറ്റ ക്ലൗഡിലേക്ക് അയക്കുന്ന പ്രവർത്തനം ടെലിമെട്രി എന്നാണ് വിളിക്കുന്നത്.

IoT ഉപകരണങ്ങൾ ക്ലൗഡിൽ നിന്ന് സന്ദേശങ്ങൾ സ്വീകരിക്കാൻ കഴിയും. സാധാരണയായി സന്ദേശങ്ങളിൽ കമാൻഡുകൾുംബുണ്ടാകുന്നു - ഇത് പ്രധാനമായും ഒരു പ്രവർത്തനം നിർവ്വഹിക്കാൻ ഉൾപ്പടെയുള്ള (പുനരാരംഭിക്കുക, ഫർമ്വെയർ അപ്ഡേറ്റ് ചെയ്യുക) അല്ലെങ്കിൽ ആക്ടുവേറ്റർ ഉപയോഗിക്കുക (ഒരു ലൈറ്റ് ഓണാക്കുക) പോലുള്ള നിർദ്ദേശങ്ങൾ.

ഈ പാഠം IoT ഉപകരണങ്ങൾ ക്ലൗഡുമായി ബന്ധിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന ചില കമ്യൂണിക്കേഷൻ പ്രോട്ടോക്കോളുകൾ പരിചയപ്പെടുത്തുന്നു, അവർ അയയ്ക്കാൻ കഴിയും അല്ലെങ്കിൽ സ്വീകരിക്കാനും കഴിയുന്ന ഡാറ്റാ തരം. നിങ്ങൾക്ക് ഇവയിൽ രണ്ടും കൈവശം നൽകുകയും നിങ്ങളുടെ നൈറ്റ്ലൈറ്റിന് ഇന്റർനെറ്റ് നിയന്ത്രണം ചേർക്കുകയും 'സർവർ' കോഡ് പ്രാദേശികമായി പ്രവർത്തിപ്പിച്ച് LED നിയന്ത്രണ തന്ത്രം നീക്കുകയും ചെയ്യും.

ഈ പാഠത്തിൽ 우리는 ചർച്ച ചെയ്യുന്നു:

കമ്യൂണിക്കേഷൻ പ്രോട്ടോക്കോളുകൾ

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

IoT ഉപകരണങ്ങൾ ഒരു ബ്രോക്കറുമായി ബന്ധിപ്പിച്ച് ടെലിമെട്രി പ്രസിദ്ധീകരിക്കുകയും കമാൻഡുകൾക്ക് സബ്സ്ക്രൈബ് ചെയ്യുകയും ചെയ്യുന്നു. ക്ലൗഡ് സേവനങ്ങൾ ബ്രോക്കറുമായി ബന്ധിപ്പിച്ച് എല്ലാ ടെലിമെട്രി സന്ദേശങ്ങളും സബ്സ്ക്രൈബ് ചെയ്യുകയും പ്രത്യേക ഉപകരണങ്ങളിലേക്കോ കമാൻഡുകൾ അയയ്ക്കുകയും ചെയ്യുന്നു.

MQTT ആണ് IoT ഉപകരണങ്ങൾക്ക് ഏറ്റവും പ്രസിദ്ധമായ കമ്യൂണിക്കേഷൻ പ്രോട്ടോക്കോൾ, ഇത് ഈ പാഠത്തിൽ ഉൾക്കൊള്ളിച്ചിരിക്കുന്നു. മറ്റ് പ്രോട്ടോകോളുകളിൽ AMQP, HTTP/HTTPS ഉൾപ്പെടുന്നു.

മെസേജ് ക്യൂയിംഗ് ടെലിമെട്രി ട്രാൻസ്പോർട്ട് (MQTT)

MQTT ഒരു ലൈറ്റ്‍വെയ്റ്റ്, തുറന്ന സ്റ്റാൻഡേർഡ് മെസേജിംഗ് പ്രോട്ടോക്കോൾ ആണ്, ഉപകരണങ്ങൾക്കിടയിൽ സന്ദേശങ്ങൾ അയയ്ക്കാൻ സാധിക്കുന്നു. ഇത് 1999-ൽ ഓയിൽ പൈപ്പ്ലൈനുകൾ നിരീക്ഷിക്കാൻ രൂപകല്‌പന ചെയ്തിരുന്നു, 15 വർഷത്തിന് ശേഷം IBM വിടുവിച്ച തുറന്ന സ്റ്റാൻഡേർഡ് ആണ്.

MQTT-യ്ക്ക് ഒരു ഏക ബ്രോക്കർ ഉണ്ട്, നിരവധി ക്ലയന്റുകൾ ഉണ്ട്. എല്ലാ ക്ലയന്റുകളും ബ്രോക്കറുമായി ബന്ധിപ്പിച്ച്, ബ്രോക്കർ വിരുദ്ധ ക്ലയന്റുകളിലേക്ക് സന്ദേശങ്ങൾ വഴിതെളിയിക്കുന്നു. സന്ദേശങ്ങൾ വ്യക്തിഗത ക്ലയന്റിലേയ്ക്ക് നേരിട്ട് അയയ്ക്കുകയില്ല, നാമീകൃത വിഷയങ്ങൾ ഉപയോഗിച്ച് വഴിതെളിയിക്കുന്നു. ഒരു ക്ലയന്റ് ഒരു വിഷയത്തിൽ പ്രസിദ്ധീകരിക്കും, ആ വിഷയ subscribed ചെയ്ത എല്ലാ ക്ലയന്റുകൾക്കും സന്ദേശം ലഭിക്കും.

IoT ഉപകരണം /telemetry വിഷയത്തിൽ ടെലിമെട്രി പ്രസിദ്ധീകരിക്കുന്നു, ക്ലൗഡ് സേവനം ആ വിഷയ subscribed ചെയ്യുന്നു

കുറച്ചു ഗവേഷണം ചെയ്യുക. നിങ്ങളുടെ IoT ഉപകരണങ്ങൾ വളരെ 많으면, നിങ്ങളുടെ MQTT ബ്രോക്കർ ആ എല്ലാ സന്ദേശങ്ങളും കൈകാര്യം ചെയ്യുന്നതിന് നിങ്ങൾ എങ്ങനെ ഉറപ്പു വരുത്തും?

MQTT-യിൽ നിങ്ങളുടെ IoT ഉപകരണം ബന്ധിപ്പിക്കുക

നിങ്ങളുടെ നൈറ്റ്ലൈറ്റിലേക്ക് ഇന്റർനെറ്റ് നിയന്ത്രണം ചേർക്കുന്നതിന്റെ ആദ്യഘട്ടം MQTT ബ്രോക്കർക്ക് ബന്ധിപ്പിക്കുക ആണ്.

ജോലി

നിങ്ങളുടെ ഉപകരണം MQTT ബ്രോക്കറുമായി ബന്ധിപ്പിക്കുക.

ഈ പാഠത്തിന്റെ ഈ ഭാഗത്ത്, നിങ്ങളുടെ IoT നൈറ്റ്ലൈറ്റിനെ ഇന്റർനെറ്റിൽ ബന്ധിപ്പിച്ച് അകലയായ നിയന്ത്രണം അനുവദിക്കും. ഈ പാഠത്തിലെ പിന്നീട്, നിങ്ങളുടെ IoT ഉപകരണം ലൈറ്റ് ലെവൽ ശേഖരിച്ചുകൊണ്ട് MQTT ഉപയോഗിച്ച് ഒരു പബ്ലിക് MQTT ബ്രോക്കറിലേക്ക് ടെലിമെട്രി സന്ദേശം അയക്കും, അത് നിങ്ങളുടെ എഴുതേണ്ട ചില സർവർ കോഡ് പിടിച്ചുകൊണ്ടിരിക്കും. ഈ കോഡ് ലൈറ്റ് ലെവൽ പരിശോധിച്ചുകൊണ്ട് ലൈറ്റ് LED ഓണാക്കാൻ അല്ലെങ്കിൽ ഓഫാക്കാൻ കമാൻഡ് സന്ദേശം അയക്കും.

ഇത്തരം ഒരു ക്രമീകരണത്തിന് യഥാർത്ഥ ലോക ഉദാഹരണം ബഹുഭൂരിപക്ഷം ലൈറ്റ് സെൻസറുകളിൽ നിന്ന് ഡാറ്റ ശേഖരിച്ച്, ലൈറ്റുകൾ ഓണാക്കാൻ തീരുമാനിക്കുക എന്നതാണ്, ഉദാഹരണത്തിന് സ്റ്റേഡിയം പോലുള്ള ഒരു സ്ഥലത്ത്. ഈ ക്രമീകരണം ഒരു സെൻസർ മേഘത്താൽ അല്ലെങ്കിൽ പക്ഷിക്കാൽ മൂടപ്പെട്ടിരിക്കുമ്പോൾ ലൈറ്റുകൾ ഓണാകാതിരിക്കാനും, മറ്റ് സെൻസറുകൾ എളുപ്പത്തിൽ വിളക്കളെ കണ്ടെത്തിയാൽ ലൈറ്റുകൾ ഓണാക്കാനുമാകും.

മറ്റു ഏതെല്ലാ സാഹചര്യങ്ങളിലും കമാൻഡുകൾ അയക്കുന്ന തിരുവിനു മുമ്പ് ബഹുസെൻസറുകളിൽ നിന്നുള്ള ഡാറ്റ വിലയിരുത്തേണ്ടതുണ്ടാകാം?

MQTT ബ്രോക്കർ സ്ഥാപിക്കുന്നതിന്റെ സങ്കീർണ്ണതകളെ മറികടക്കാൻ, നിങ്ങൾക്ക് ഒരു പൊതു ടെസ്റ്റ് സർവർ ഉപയോഗിക്കാം, അത് Eclipse Mosquitto എന്ന ഒരു ഓപ്പൺ-സോഴ്‌സ് MQTT ബ്രോക്കർ ഓടിക്കുന്നു. ഈ ടെസ്റ്റ് ബ്രോക്കർ പൊതുവായി test.mosquitto.orgൽ ലഭ്യമാണ്, അക്കൗണ്ട് ക്രമീകരണമോ ആവശ്യമില്ല, ഇത് MQTT ക്ലയന്റ്സും സർവറുകളും പരീക്ഷിക്കുന്നതിന് മികച്ച ഉപകരണം ആകുന്നു.

💁 ഈ ടെസ്റ്റ് ബ്രോക്കർ പബ്ലിക്കാണ്, സുരക്ഷിതമല്ല. നിങ്ങൾ പ്രസിദ്ധീകരിക്കുന്നതെല്ലാം ആരും കേൾക്കുന്നുണ്ടാകാം, അതുകൊണ്ട് സ്വകാര്യ ഡാറ്റയ്‌ക്കായി ഉപയോഗിക്കരുത്.

ലൈറ്റ് ലെവലുകൾ വായിച്ചുവെയ്ക്കുകയും പരിശോധിക്കുകയും ചെയ്ത് LED നിയന്ത്രിക്കുന്നതിനുള്ള ഫ്‌ളോ ചാർട്ട്

നിങ്ങളുടെ ഉപകരണം MQTT ബ്രോക്കറുമായി ബന്ധിപ്പിക്കാൻ താഴെ കാഴ്ച്ചവെച്ചിരിക്കുന്ന പദവികളിൽ അനുയോജ്യമായതു പിന്തുടരൂ:

MQTT-ൽ കൂടുതൽ ആഴത്തിൽ എത്തുക

ക്ലയന്റുകൾക്ക് ടോപിക്കുകൾ യുവാഹരണമുള്ളതിനാൽ ഹയർആർക്കിയിലേക്കുള്ള സബ്സ്ക്രിപ്ഷൻ വേർതിരിക്കുന്നു, വയൽഡ് കാർഡുകൾ ഉപയോഗിച്ചാണ്. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് /telemetry/temperature ലേഖനത്തിൽ താപനില ടെലിമെട്രി സന്ദേശങ്ങളും /telemetry/humidity ലേഖനത്തിൽ ഈർപ്പം സന്ദേശങ്ങളും അയക്കാം, പിന്നെ ക്ലൗഡ് ആപ്പിൽ /telemetry/* ലേഖനം സബ്സ്ക്രൈബ് ചെയ്യുമ്പോൾ താപനിലയും ഈർപ്പവും ടെലിമെട്രി സന്ദേശങ്ങളും ഉൾപ്പെടും.

സന്ദേശങ്ങൾ QoS (ഗുണനിലവാര ഉറപ്പ്) ഉപയോഗിച്ച് അയയ്ക്കാം, ഇത് സന്ദേശം ലഭിക്കാനുള്ള ഗ്യാരന്റി നിർണയിക്കുന്നു.

  • ഏറ്റവും കൂടുതൽ ഒരു തവണ - സന്ദേശം ഒരിക്കൽ മാത്രം അയയ്ക്കുകയും ക്ലയന്റ്, ബ്രോക്കർ മര്യാദകൾ സ്വീകരിക്കാതെ പോകുകയും ചെയ്യും (Fire and forget).
  • കുറഞ്ഞത് ഒരു തവണ - അയയ്ക്കുന്നവർ സന്ദേശത്തിന്റെ അംഗീകാരം ലഭിച്ചുപോലും മടങ്ങിവരുന്നു (അംഗീകരിച്ച ഡെലിവറി).
  • ശരിയായി ഒരു തവണ - അയയ്ക്കുന്നവനും സ്വീകരിക്കുന്നവനും രണ്ട് തലത്തിലുള്ള കൈമാറലിലൂടെ ഉറപ്പു വരുത്തുന്നു ഒന്ന് മാത്രമേ സന്ദേശം സ്വീകരിക്കൂ (അസ്യൂഡ് ഡെലിവറി).

ഏത് സാഹചര്യം assured delivery സന്ദേശം ആവശ്യപ്പെടും, fire and forget മു പോലെ?

Message Queueing ആണ് MQTTയുടെ പൂജ്യം, എന്നാൽ അതിന്റെ സന്ദർശനത്തിൽ മെസേജ് ക്യൂകൾ പിന്തുണയ്ക്കുന്നില്ല. സർവ്വീസ് ഉപകരണം ബന്ധമല്ലാത്തപ്പോൾ അയയ്ക്കപ്പെട്ട സന്ദേശങ്ങൾ മാധ്യമ ക്യൂകളിൽ നിന്ന് ലഭിക്കില്ല, QoS പ്രക്രിയ ഉപയോഗിച്ച് നിശ്ചിതമായി നിലവാരം ഫലമായ ചില സന്ദേശങ്ങൾ മാത്രം സ്വീകരിക്കാം. സന്ദേശങ്ങൾക്ക് retained ഫ്ലാഗ് സജ്ജീകരിക്കാൻ കഴിയും. ഇതു സജ്ജീകരിച്ചാൽ, MQTT ബ്രോക്കർ ആ വിഷയത്തിലുള്ള അവസാന സന്ദേശം സ്റ്റോർ ചെയ്ത് പിന്നീട് ആ വിഷയ subscribed ചെയ്ത ക്ലയന്റുകൾക്ക് അയക്കും. ഇതു വഴി ക്ലയന്റുകൾ എല്ലായ്പ്പോഴും ഏറ്റവും പുതിയ സന്ദേശം ലഭിക്കും.

MQTT കീപ് അലൈവ് ഫംഗ്ഷൻ പിന്തുണയ്ക്കുന്നു; ഇത് സന്ദേശങ്ങളുടെ ഇടവേള കൂടിയുള്ള സമയങ്ങളിൽ കണക്ഷൻ ജീവിച്ചിരിക്കുന്നുവോ എന്ന് പരിശോധിക്കുന്നു.

🦟 Eclipse Foundation-ന്റെ Mosquitto നിങ്ങൾക്ക് സ്വയം MQTT പരീക്ഷിക്കാനായി ഒരു സൗജന്യ MQTT ബ്രോക്കറും പബ്ലിക് MQTT ബ്രോക്കറുമായി test.mosquitto.org ലും ഉണ്ടാക്കുന്നു.

MQTT കണക്ഷനുകൾ പൊതു തുറന്നതും, യൂസർനാമുകളും പാസ്‌വേഡുകളും സർട്ടിഫിക്കറ്റ് ഉപയോഗിച്ച് എൻക്രിപ്റ്റ് ചെയ്ത് സുരക്ഷിതവുമായിരിക്കാം.

💁 MQTT TCP/IP വഴി സംവദിക്കുന്നു, അതു തന്നെ HTTP ന്റെ അടിസ്ഥാന നെറ്റ്‌വർക്ക് പ്രോട്ടോക്കോൾ ആണ്, പക്ഷേ വേറെ പോർട്ടിലായി. MQTT വെബ്‌സോക്കറ്റുകൾ വഴി വെബ് ആപ്പുകളുമായി ആശയവിനിമയം നടത്താൻ ഉപയോഗിക്കാം, പ്രത്യേകിച്ച് ഫയർവാൾസ് പോലുള്ള നിയന്ത്രണങ്ങൾ TCP MQTT കണക്ഷനുകൾ തടയുന്ന സാഹചര്യങ്ങളിലും.

ടെലിമെട്രി

ടെലിമെട്രി എന്ന വാക്ക് ഗ്രീക്ക് വേരുകൾdən ഉണ്ട്, അർഥം ദൂരത്തിൽ നിന്ന് അളക്കുക. ടെലിമെട്രി സെൻസറുകളിൽ നിന്ന് ഡാറ്റ ശേഖരിച്ച് ക്ലൗഡിലേക്ക് അയയ്ക്കുന്നത് ആണ്.

💁 ഏറ്റവും പഴയ ടെലിമെട്രി ഉപകരണം 1874 ൽ ഫ്രാൻസിൽ കണ്ടുപിടിച്ചു, മോണ്റ്റ് ബ്ലാങ്കിൽ നിന്നുള്ള യാഥാസ്ഥിതിക കാലാവസ്ഥയും മഞ്ഞ് ആഴവും പാരീസിലേക്ക് റിയൽ ടൈം അയച്ചിരുന്നു. ആ സമയത്ത് വയർലെസ് സാങ്കേതിക വിദ്യ ലഭ്യമല്ലാത്തതിനാലും ഫിസിക്കൽ വയറുകൾ ഉപയോഗിച്ചു.

പാഠം 1-ലെ സ്മാർട്ട് തെർമോസ്റ്റാറ്റ് ഉദാഹരണത്തിനെത്തിരിച്ച് നോക്കാം.

പല റൂം സെൻസറുകൾ ഉപയോഗിച്ച് ഇന്റർനെറ്റ് ബന്ധം ഉള്ള തെർമോസ്റ്റാറ്റ്

തെർമോസ്റ്റാറ്റിന് ടെലിമെട്രി ശേഖരിക്കാൻ താപനില സെൻസറുകൾ ഉണ്ട്. സാധാരണയായി ഇതിന് ഒരു നിർമിത താപനില സെൻസർ ഉണ്ടായിരിക്കാം, കൂടാതെ നിരവധി ദൂരത്തെ താപനില സെൻസറുകൾക്ക് Bluetooth Low Energy (BLE) പോലുള്ള വയർലെസ് പ്രോട്ടോക്കോൾ വഴി ബന്ധിപ്പിക്കാം.

അത് അയയ്ക്കുന്നത് ടെലിമെട്രി ഡാറ്റ ഉദാഹരണമായി:

പേര് നില വിവരണം
thermostat_temperature 18°C തെർമോസ്റ്റാറ്റിന്റെ നിർമ്മിത താപനില സെൻസറിലൂടെ അളന്ന താപനില
livingroom_temperature 19°C livingroom എന്ന പേര് നൽകിയ ദൂര താപനില സെൻസറിലൂടെ അളന്ന താപനില, അത് മണൽതോപ്പിൽ ഉണ്ട് എന്ന് തിരിച്ചറിയാൻ
bedroom_temperature 21°C bedroom എന്ന് പേരിടപ്പെട്ട ദൂര താപനില സെൻസറിലൂടെ അളന്ന താപനില

അതിനുശേഷം ക്ലൗഡ് സർവീസ് ഈ ടെലിമെട്രി ഡാറ്റ ഉപയോഗിച്ച് സൂക്ഷിച്ചുള്ള കമാൻഡുകൾ അയക്കാൻ തീരുമാനിക്കും, ഉദാഹരണത്തിന് ഹീറ്റിംഗ് നിയന്ത്രിക്കാൻ.

നിങ്ങളുടെ IoT ഉപകരണത്തിൽ നിന്ന് ടെലിമെട്രി അയയ്ക്കുക

നിങ്ങളുടെ നൈറ്റ്ലൈറ്റിൽ ഇന്റർനെറ്റ് നിയന്ത്രണം ചേർക്കുന്നതിന്റെ അടുത്ത ഘട്ടം ആണ് MQTT ബ്രോക്കറിലേക്ക് ലൈറ്റ് ലെവൽ ടെലിമെട്രി അയയ്ക്കുക.

ജോലി - നിങ്ങളുടെ IoT ഉപകരണത്തിൽ നിന്ന് ടെലിമെട്രി അയയ്ക്കുക

MQTT ബ്രോക്കറിലേക്ക് ലൈറ്റ് ലെവൽ ടെലിമെട്രി അയയ്ക്കുക.

ഡാറ്റ JSON എന്ന കോഡ്‌ഭാഷയായി അയയ്ക്കുന്നു - ജാവാസ്ക്രിപ്റ്റ് ഒബ്ജക്റ്റ് നോട്ടേഷൻ എന്നും അറിയപ്പെടുന്നു, കീ/വാല്യു ജോഡികൾ ഉപയോഗിച്ച് ടെക്സ്റ്റിൽ ഡാറ്റ എൻകോഡ് ചെയ്യാൻ സ്റ്റാൻഡേഡ്.

നിങ്ങൾക്ക് JSONക്കുറിച്ച് അറിയാമോ? അറിയാൻ പരിശ്രമിച്ചിട്ടില്ലെങ്കിൽ, JSON.org ഡോക്യുമെന്റേഷൻ കാണാം.

MQTT ബ്രോക്കറിലേക്ക് നിങ്ങളുടെ ഉപകരണത്തിൽ നിന്ന് ടെലിമെട്രി അയയ്ക്കാൻ അനുയോജ്യമായ പാത പിന്തുടരൂ:

MQTT ബ്രോക്കറിൽ നിന്ന് ടെലിമെട്രി സ്വീകരിക്കുക

ടെലിമെട്രി അയയ്ക്കുന്നത് ഏറെ ഫലം വരുത്തുന്നില്ലെങ്കിൽ, മറ്റേ വശത്ത് ആരും കേൾക്കുന്നില്ലെങ്കിൽ. ലൈറ്റ് ലെവൽ ടെലിമെട്രി പ്രോസസ്സ് ചെയ്യാൻ കേൾക്കുന്ന ഒരു 'സർവർ' കോഡ് ആവശ്യമാണ്. ഈ 'സർവർ' കോഡ് ഒരു ചെറിയ Python ആപ്പ് ആണ്, MQTT വഴി ടെലിമെട്രി സന്ദേശങ്ങൾ കേൾക്കുകയും ലൈറ്റ് ലെവലുകൾ പരിശോധിച്ച് LED ഓണാക്കാൻ അല്ലെങ്കിൽ ഓഫ് ചെയ്യാൻ കമാൻഡ് സന്ദേശം മറുപടി നൽകുകയും ചെയ്യും.

കുറച്ച് ഗവേഷണം: MQTT സന്ദേശങ്ങൾക്ക് കേൾക്കുന്നവൻ ഇല്ലെങ്കിൽ എന്ത് സംഭവിക്കും?

Python ഉം VS Codeഉ ഇൻസ്റ്റാൾ ചെയ്യുക

Python VS Code എന്നിവ നിങ്ങൾക്ക് പ്രാദേശികമായി ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലെങ്കിൽ, സർവർ കോഡ് എഴുതാൻ ഇവ രണ്ട് ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതാണ്. നിങ്ങൾ വർച്ച്വൽ IoT ഉപകരണം ഉപയോഗിച്ചോ അല്ലെങ്കിൽ Raspberry Pi-ൽ നേരിട്ട് കോഡുചെയ്യുന്നതായിരുന്നുവെങ്കിൽ, ഈ ഘട്ടം ഒഴിവാക്കാം, കാരണം നിങ്ങൾക്ക് ഇത് മുൻപേ ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടാകുമെന്നാണ് കരുതുന്നത്.

ജോലി - Python VS Code ഇൻസ്റ്റാൾ ചെയ്യുക

Python VS Code ഇൻസ്റ്റാൾ ചെയ്യുക.

  1. Python ഇൻസ്റ്റാൾ ചെയ്യുക. Python ഓടുന്നത് ഏറ്റവും പുതിയ പതിപ്പ് ഇൻസ്റ്റാൾ ചെയ്യാൻ Python ഡൗൺലോഡ് പേജ് സന്ദർശിക്കുക.

  2. Visual Studio Code (VS Code) ഇൻസ്റ്റാൾ ചെയ്യുക. Python കാന്റെയ്‌നിൾ കോഡ് എഴുതാൻ നിങ്ങൾ ഇത് ഉപയോഗിക്കണം. VS Code ഡോക്യുമെന്റേഷൻ കാണുക.

    💁 നിങ്ങൾക്ക് ഇഷ്ടമുള്ള Python IDE അല്ലെങ്കിൽ എഡിറ്റർ ഉപയോഗിക്കാം, എന്നാൽ ഈ പാഠങ്ങൾ VS Code അടിസ്ഥാനമാക്കി നിർദ്ദേശങ്ങൾ നൽകുന്നു.

  3. VS Code Pylance എക്സ്റ്റൻഷൻ ഇൻസ്റ്റാൾ ചെയ്യുക. Python ഭാഷാ പിന്തുണ നൽകുന്ന VS Code വിപുലീകരണം ആണ് ഇത്. ഇൻസ്റ്റാൾ ചെയ്യാനായി Pylance എക്സ്റ്റൻഷൻ ഡോക്യുമെന്റേഷൻ കാണുക.

Python വെർച്വൽ എൻവയോൺമെന്റ് ക്രമീകരിക്കുക

Python-ന്റെ ശക്തമായ ഫീച്ചറുകൾ 중 하나 ആണ് pip പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യാനുള്ള കഴിവ് - മറ്റുള്ളവർ എഴുതിയ കോഡ് പാക്കേജുകൾ ആണ് ഇവയും ഇന്റർനെറ്റിൽ പ്രസിദ്ധീകരിച്ചവയുമാണ്. നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ഒരു കമാൻഡിലൂടെ ഒരു pip പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്ത് ആ പാക്കേജ് എന്നതുതന്നെ നിങ്ങളുടെ കോഡിൽ ഉപയോഗിക്കാം. MQTT-യിലൂടെ ആശയവിനിമയം നടത്താൻ നിങ്ങൾ pip ഉപയോഗിച്ച് ഒരു പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യും.

പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യുമ്പോൾ അത് ഡീഫോൾട്ട് ആയി നിങ്ങളുടെ കമ്പ്യൂട്ടറിന്റെ എവിടെയും ലഭ്യമായിരിക്കും, ഇതു പാക്കേജ് വേർഷൻ സംബന്ധമായ പ്രശ്നങ്ങൾക്ക് വഴിയൊരുക്കും - ഒരു ആപ്ലിക്കേഷനുകൾക്ക് വേറിട്ട വേർഷനുള്ള പാക്കേജ് വേണമെന്ന് ആശ്രയിച്ച്, വേറിട്ട ആപ്ലിക്കേഷനുകൾക്കായി പുതിയ വേർഷൻ ഇൻസ്റ്റാൾ ചെയ്യുമ്പോൾ പഴയ വേർഷൻ തകരാറിലാകാം. ഈ പ്രശ്നം പരിഹരിക്കാൻ, നിങ്ങൾക്ക് Python virtual environment ഉപയോഗിക്കാം, അതായത് Python-ന്റെ ഒരു കോപ്പി ഒരു പ്രത്യേക ഫോൾഡറിൽ തന്നെ സൂക്ഷിക്കുന്നതും, pip പാക്കേജുകൾ നിർമ്മിച്ചപ്പോൾ ആ ഫോൾഡറിലേയ്ക്ക് മാത്രമാകുമെന്നതും.

ടാസ്‌ക് - Python virtual environment കാന്ഫിഗർ ചെയ്യുക

Python virtual environment സജ്ജമാക്കി MQTT pip പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യുക.

  1. നിങ്ങളുടെ ടെർമിനലിൽ അല്ലെങ്കിൽ കമാൻഡ് ലൈൻയിൽ, നിങ്ങൾക്ക് ഇഷ്ടം വരുന്ന ഒരു സ്ഥാനത്ത് പുതിയ ഡയറക്ടറി ഉണ്ടാക്കി അതിലേക്ക് പ്രവേശിക്കാൻ താഴെയുള്ള കമാൻഡ് ഓടിക്കുക:

    mkdir nightlight-server
    cd nightlight-server
    
  2. ഇപ്പോൾ .venv ഫോൾഡറിൽ ഒരു virtual environment സൃഷ്ടിക്കാൻ താഴെ കാണുന്നതുപോലെ കമാൻഡ് ഓടിക്കുക:

    python3 -m venv .venv
    

    💁 നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ Python 3-നൊപ്പം Python 2 ഉണ്ടാകാമെന്ന കാരണത്താൽ, virtual environment സൃഷ്ടിക്കാനായി python3 എന്നത് കർശനമായി വിളിക്കണം. python വിളിച്ചാൽ Python 2 ഉപയോഗിക്കാം.

  3. Virtual environment പ്രവർത്തനക്ഷമമാക്കുക:

    • Windows-ൽ:

      • Command Prompt അല്ലെങ്കിൽ Windows Terminal വഴി Command Prompt ഉപയോഗിക്കുന്നുവെങ്കിൽ, ഓടിക്കുക:

        .venv\Scripts\activate.bat
        
      • PowerShell ഉപയോഗിക്കുന്നുവെങ്കിൽ, ഓടിക്കുക:

        .\.venv\Scripts\Activate.ps1
        
    • macOS അല്ലെങ്കിൽ Linux-ൽ, ഓടിക്കുക:

      source ./.venv/bin/activate
      

    💁 ഈ കമാൻഡുകൾ virtual environment സൃഷ്ടിച്ചത് പോലെ തന്നെ സ്ഥാനത്ത് ഓടിക്കണം. .venv ഫോൾഡറിൽ നിവേശിക്കേണ്ട ആവശ്യമില്ല. സദാ virtual environment പ്രവർത്തനക്ഷമമാക്കുന്ന കമാൻഡ്, പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യാനുള്ള കമാൻഡ്, കോഡ് ഓടിക്കൽ എന്നിവയെല്ലാം virtual environment സൃഷ്ടിച്ച സ്ഥാനം മുതൽ ചെയ്യണം.

  4. Virtual environment പ്രവർത്തനക്ഷമമാക്കിയശേഷം, ഡീഫോൾട്ട് python കമാൻഡ് virtual environment സൃഷ്ടിക്കാൻ ഉപയോഗിച്ച Python വേർഷൻ ആയിരിക്കും ഓടുന്നത്. Python വേർഷൻ പരിശോധിക്കാൻ താഴെ കമാൻഡ് ഓടിക്കുക:

    python --version
    

    താഴെ കാണുന്ന വിധത്തിൽ আউട്ട്‌പുട്ട് വരും:

    (.venv) ➜  nightlight-server python --version
    Python 3.9.1
    

    💁 നിങ്ങളുടെ Python വേർഷൻ വ്യത്യസ്തമായിരിക്കാം. 3.6 അല്ലെങ്കിൽ അത്രയും മുകളിൽ ആണെങ്കിൽ മതിയാകും. അല്ലെങ്കിൽ ഫോൾഡർ മായ്ക്കുക, പുതിയ Python വേർഷൻ ഇൻസ്റ്റാൾ ചെയ്ത് വീണ്ടും ശ്രമിക്കുക.

  5. ഒരു ജനപ്രിയ MQTT ലൈബ്രറി ആയ Paho-MQTT ന് pip പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്തു:

    pip install paho-mqtt
    

    ഈ pip പാക്കേജ് virtual environment-ലിൽ മാത്രമാണ് ഇൻസ്റ്റാൾ ചെയ്യപ്പെടുന്നത്, പുറത്തേക്ക് ലഭ്യമാകില്ല.

സർവറിന്റെ കോഡ് എഴുതുക

സെർവർ കോഡ് ഇപ്പോൾ Python-ൽ എഴുതാം.

ടാസ്‌ക് - സർവർ കോഡ് എഴുതുക

സർവർ കോഡ് എഴുതുക.

  1. ടെർമിനൽ അല്ലെങ്കിൽ കമാൻഡ് ലൈനിൽ virtual environment പ്രവർത്തനക്ഷമമായിട്ടുള്ള സമയത്ത് app.py എന്ന Python ഫയൽ സൃഷ്ടിക്കാൻ താഴെ കമാൻഡ് ഓടിക്കുക:

    • Windows-ൽ ഓടിക്കുക:

      type nul > app.py
      
    • macOS അല്ലെങ്കിൽ Linux-ൽ ഓടിക്കുക:

      touch app.py
      
  2. നിലവിലെ ഫോൾഡർ VS Code-ൽ തുറക്കുക:

    code .
    
  3. VS Code തുടങ്ങുമ്പോൾ അതു Python virtual environment പ്രവർത്തനക്ഷമമാക്കും. ഇത് ബോട്ടം സ്റ്റാറ്റസ് ബാറിൽ കാണിക്കും:

    VS Code showing the selected virtual environment

  4. VS Code Terminal ഇതിനകം പ്രവർത്തനക്ഷമമായിരുന്നാൽ virtual environment പ്രവർത്തനക്ഷമമാകാറില്ല. ഈ തെർമിനൽ Kill the active terminal instance ബട്ടൺ ഉപയോഗിച്ച് അടയ്ക്കാം:

    VS Code Kill the active terminal instance button

  5. പുതിയൊരു VS Code Terminal ആരംഭിക്കാൻ Terminal -> New Terminal, അല്ലെങ്കിൽ CTRL+` അമർത്തുക. പുതിയ ടെർമിനലിൽ virtual environment ലോഡ് ചെയ്യും. ടെർമിനലിന്റെ പ്രോംപ്റ്റിൽ virtual environment (.venv) പേരും കാണിക്കും:

    ➜  nightlight-server source .venv/bin/activate
    (.venv) ➜  nightlight 
    
  6. VS Code എക്സ്പ്ലോററിൽ നിന്ന് app.py ഫയൽ തുറന്ന് താഴെയുള്ള കോഡ് ചേർക്കുക:

    import json
    import time
    
    import paho.mqtt.client as mqtt
    
    id = '<ID>'
    
    client_telemetry_topic = id + '/telemetry'
    client_name = id + 'nightlight_server'
    
    mqtt_client = mqtt.Client(client_name)
    mqtt_client.connect('test.mosquitto.org')
    
    mqtt_client.loop_start()
    
    def handle_telemetry(client, userdata, message):
        payload = json.loads(message.payload.decode())
        print("Message received:", payload)
    
    mqtt_client.subscribe(client_telemetry_topic)
    mqtt_client.on_message = handle_telemetry
    
    while True:
        time.sleep(2)
    

    6-ആം വരിയിലെ <ID> നിങ്ങളുടെ ഡിവൈസ് കോഡ് സൃഷ്ടിക്കുമ്പോൾ ഉപയോഗിച്ച ബഹുസ്വര ഐ.ഡി. ആയി മാറ്റുക.

    ⚠️ ഇത് നിങ്ങളുടെ ഡിവൈസിൽ ഉപയോഗിച്ച ഐ.ഡി തന്നെയാണ് ആയിരിക്കണം; അല്ലെങ്കിൽ സർവർ കോഡ് ശരിയായ ടോപ്പം സബ്സ്ക്രൈബ് ചെയ്യുകയോ പബ്ലിഷ് ചെയ്യുകയോ ചെയ്യുകയില്ല.

    ഈ കോഡ് ഒരു MQTT ക്ലയന്റ് ഒരുക്കുന്നു, പ്രത്യേക നാമത്തിൽ, test.mosquitto.org ബ്രോക്കറുമായി കണക്ട് ചെയ്യുന്നുണ്ട്. പിന്നെ ഒരു പ്രോസസ്സിംഗ് ലൂപ്പ് തുടങ്ങുന്നു, അത് ബാക്ക്ഗ്രൗണ്ട് ത്രെഡിൽ ഓടുന്നു, സബ്സ്ക്രൈബ് ചെയ്ത എല്ലാ ടോപ്പിക്കുകളിലെയും സന്ദേശങ്ങൾ കേൾക്കുന്നതിന്.

    ക്ലയന്റ് ടെലിമെട്രി ടോപ്പിക്ക് സന്ദേശങ്ങൾ സബ്സ്ക്രൈബ് ചെയ്ത്, ഒരു ഫംഗ്ഷൻ നിർവ്വചിക്കുന്നുണ്ട്. സന്ദേശം ലഭിക്കുമ്പോൾ അത് വിളിക്കപ്പെടുന്നു. ടെലിമെട്രി സന്ദേശം ലഭിച്ചതിൽ handle_telemetry ഫംഗ്ഷൻ കോള്ഡ് ചെയ്തു, സന്ദേശം കോൺസോളിൽ പ്രിന്റ് ചെയ്യുന്നു.

    ഒടുവിൽ ഒരു അനന്തലൂപ്പ് ആപ്പ് പ്രവർത്തിപ്പിക്കുന്നു. MQTT ക്ലയന്റ് ബാക്ക്ഗ്രൗണ്ട് ത്രെഡിൽ സന്ദേശങ്ങൾ കേൾക്കുകയും, പ്രാഥമിക ആപ്പ് പ്രവർത്തിക്കുന്നവരെയും തുടർന്നും പ്രവർത്തിക്കുകയാണ്.

  7. VS Code ടെർമിനലിൽ Python ആപ്പ് ഓടിക്കാൻ താഴെ കമാൻഡ് ഓടിക്കുക:

    python app.py
    

    ആപ്പ് IoT ഡിവൈസിൽ നിന്നുള്ള സന്ദേശങ്ങൾ കേൾക്കാൻ ആരംഭിക്കും.

  8. നിങ്ങളുടെ ഡിവൈസ് സ്ക്രീനിലുള്ള ലൈറ്റ് ലെവലുകൾ എഡ്ജസ്റ്റുചെയ്യുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക. സന്ദേശങ്ങൾ ടെർമിനലിൽ പ്രിന്റ് ചെയ്യപ്പെടും.

    (.venv) ➜  nightlight-server python app.py
    Message received: {'light': 0}
    Message received: {'light': 400}
    

    nightlight virtual environment-ലെ app.py ഓടിക്കണം, nightlight-server virtual environment-ലെ app.py സന്ദേശങ്ങൾ സ്വീകരിക്കാൻ.

💁 ഈ കോഡ് code-server/server ഫോൾഡറിൽ കാണാം.

ടെലിമെട്രി എത്രവേൾ അയച്ചിരിക്കണം?

ടെലിമെട്രി സംബന്ധിച്ച് പ്രധാന ചിന്തയം - ഡാറ്റ എത്ര അടിയന്തിരമായി അളക്കണം, അയക്കണം? ഉത്തരം - അവസ്ഥയെ ആശ്രയിച്ചിരിക്കുന്നു. അധികം അളക്കുന്നത് മാറ്റങ്ങളിൽ വേഗം പ്രതികരിക്കാനും സഹായിക്കും, എന്നാൽ അധിക വൈദ്യുതിശക്തി, bandwidth, ഡാറ്റ മൂല്യങ്ങൾ കൂടി വർധിപ്പിക്കും, ക്ലൗഡ് റിസോഴ്‌സുകൾ കൂടുതൽ ഉപയോഗിക്കും. ആവശ്യത്തിന് പതിവായി അളക്കണം, എന്നാൽ അളക്കൽ അധികമായിരിക്കരുത്.

തെർമോസ്റ്റാറ്റ്‌ക്കായി, ഏതാനും മിനിറ്റുകൾക്ക് ഒരു തവണ അളക്കുന്നത് മതിയാകും, കാരണം താപനിലيامാറ്റങ്ങൾ സാധാരണയായി ആണ്നാറളള. ദിവസത്തിൽ ഒരിക്കൽ മാത്രം അളക്കണമെങ്കിൽ, മധ്യധന്യ കാലത്ത് രാത്രി താപനിലയ്ക്കായി വീട്ടിൽ ആണുബിക്കാം; എന്നാൽ സെക്കൻഡ് തവണ അളക്കുന്നതുകൊണ്ട് അനാവശ്യമായി അനേകം താപനില അളക്കലുകൾ ഉണ്ടാകുകയും, ഉപയോക്താവിന്റെ ഇന്റർനെറ്റിന്റെ സ്പീഡ് bandwidth കുറയുകയും ചെയ്യും (കുറഞ്ഞ bandwidth പ്ലാനുള്ളവർക്ക് പ്രശ്നം). കൂടുതൽ വൈദ്യുതിമിനിയ്ബാക്കുള്ള ഡിവൈസുകൾക്ക് ഇത് പ്രശ്നം ആണ്, കൂടാതെ ക്ലൗഡ് പ്രോസസ്സിംഗ്, സംഭരണം എന്നിവയുടെ ചെലവുകൾ വർദ്ധിക്കും.

ഫാക്ടറിയിലെ യന്ത്രത്തിന്റെ പ്രവർത്തനം നിരീക്ഷിക്കുന്നത് പരിഗണിക്കുമ്പോൾ, ചിലപ്പോൾ യന്ത്രം തകരാൻ പോകുന്ന സൂചനകൾ കിട്ടുന്നതുപോലെ, സെക്കൻഡ് തവണകളിൽ അളക്കേണ്ടി വരും. bandwidth വിലയുകൽകുറഞ്ഞത് മതി, എന്നാൽ നിർബന്ധമായും ടെലിമെട്രി നഷ്ടപ്പെടുന്നത് ഒഴിവാക്കണം.

💁 ഈ സാഹചര്യം പരിഗണിച്ച് ടെലിമെട്രി ആദ്യം പ്രോസസ്സിംഗ് ചെയ്യാൻ edge device ഉപയോഗിച്ചിട്ടുണ്ടാകാം; ഇന്റർനെറ്റിന് ആശ്രയം കുറയ്ക്കാൻ.

കണക്ടിവിറ്റി നഷ്ടപ്പെടുക

ഇന്റർനെറ്റ് ബന്ധം വിശ്വസ്തമല്ല, പലസംബവ്മാർഗ്ഗങ്ങൾ ഉണ്ട്. ഇതിനിടയിൽ IoT ഡിവൈസ് എന്ത് ചെയ്യും - ഡാറ്റ നഷ്ടപ്പെടണമോ, കോൺക്റ്റിവിറ്റി മടങ്ങി വരുന്നതുവരെ ഡാറ്റ സൂക്ഷിക്കണമെന്നും? ഉത്തരം വിവരസങ്കേതം അനുസരിക്കുന്നു.

തെർമോസ്റ്റാറ്റിനായി, പുതിയ താപനില അളക്കൽ കഴിഞ്ഞപ്പോഴേക്കും പഴയ ഡാറ്റ നഷ്ടപ്പെടാം. ചൂട് ഓണ ആണോ ഓഫ് ആണോ എന്ന് ഇപ്പോഴത്തെ താപനില തീരുമാനിക്കും.

ഉൽപ്പാദന യന്ത്രങ്ങളിലാക്കുന്നത്, ഡാറ്റ സൂക്ഷിക്കേണ്ടത് ഉണ്ട്, പ്രത്യേകിച്ച് ട്രെൻഡുകൾ കണ്ടെത്തുന്നതിനായി. മെഷീൻ ലേണിംഗ് മോഡലുകൾ ഒരു കുറേ സമയത്തോളമുള്ള ഡാറ്റ പരിശോധിച്ച് അപൂർവ്വ വിവരങ്ങൾ കണ്ടെത്താൻ കഴിയും. ഇത് predictive maintenance സാധാരണ ഉപയോഗമാണ് - യന്ത്രം തകരാനുള്ള സൂചനകൾക്ക് മുൻപ് പരിഹാരങ്ങൾ ഏർപ്പെടുത്താൻ. ഇന്റർനെറ്റിന്റെ ഇടവേളയിൽ നിരവധി ടെലിമെട്രി ഡാറ്റ അയക്കാൻ കഴിയാത്ത പക്ഷം, സംഭരിച്ച് തിരികെ കണക്ട് ചെയ്തപ്പോഴവർക്ക് അയക്കണം.

IoT ഡിസൈൻ ചെയ്യുന്നത് ഇന്റർനെറ്റ് ഇല്ലാതായാലും ഡിവൈസ് പ്രവർത്തിക്കേണ്ടതുണ്ടോ എന്നുചിന്തിക്കണം. സ്മാർട്ട് തെർമോസ്റ്റാറ്റ് ഇന്റർനെറ്റിലേക്ക് ഡാറ്റ അയക്കാതിരുന്നതിലും കമ്മാന്ഡുകൾ സ്വീകരിക്കാതിരുന്നതിലും ഹീറ്റിംഗ് നിയന്ത്രണം നിഷ്പ്രഭമാക്കരുത്.

ഈ ഫെരാരി ബ്രിക്കായി, കാരണം ആൾക്ക് അന്തർസ്ഥാനത്ത് അപ്ഗ്രേഡ് ശ്രമം ചെയ്തു, സെല്‍ ലഭ്യമല്ലാത്ത സ്ഥലം

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

കമാൻഡുകൾ

കമാൻഡുകൾ ക്ലൗഡിൽ നിന്ന് ഡിവൈസിലേക്ക് അയക്കുന്ന സന്ദേശങ്ങൾ ആണ്, ഡിവൈസിന് എന്തെങ്കിലും ചെയ്യാൻ നിർദ്ദേശിക്കുന്നു. സാധാരണയായി ആക്ച്വേറ്റർ വഴി ഒരു ഔട്ട്പുട്ട് നൽകുക, അല്ലെങ്കിൽ സ്വയം റീബൂട്ട് ചെയ്യുക, അധിക ടെലിമെട്രി ശേഖരിക്കുക തുടങ്ങിയ ആൻസർ കമാൻഡ് നൽകുക.

ഇന്റർനെറ്റ് അനുബന്ധം ഉള്ള തെർമോസ്റ്റാറ്റ് കമാൻഡ് സ്വീകരിക്കുന്നു

തെർമോസ്റ്റാറ്റ് ക്ലൗഡിൽ നിന്ന് ഹീറ്റർ ഓണാക്കാൻ കമാൻഡ് സ്വീകരിച്ചേക്കാം. എല്ലാ സെൻസറുകളുടെ ടെലിമെട്രി പ്രകാരം, ക്ലൗഡ് സർവീസ് ഹീറ്റർ ഓണാക്കണമെന്ന് തീരുമാനിച്ചാൽ, കമാൻഡ് അയക്കും.

MQTT ബ്രോക്കറിലേക്ക് കമാൻഡുകൾ അയയ്‌ക്കുക

ഇന്റെർനെറ്റ്പ്രോജക്ടുള്ള നൈറ്റ് ലൈറ്റിനു വേണ്ടി, ഡിവൈസിൽ നിന്ന് ലഭിക്കുന്ന ലൈറ്റ് ലെവലുകളെ അടിസ്ഥാനമാക്കി ലൈറ്റ് നിയന്ത്രിക്കാൻ കമാൻഡ് സർവർ കോഡ് അയക്കേണ്ടത് അടുത്ത് പടി.

  1. VS Code-ൽ സർവർ കോഡ് തുറക്കുക

  2. client_telemetry_topic പ്രഖ്യാപനത്തിന് ശേഷം കമാൻഡുകൾ അയക്കേണ്ട ടോപ്പ് നിർവചിക്കാൻ താഴെയുള്ള വരി ചേർക്കുക:

    server_command_topic = id + '/commands'
    
  3. handle_telemetry ഫംഗ്ഷൻ അവസാനത്തിൽ താഴെയുള്ള കോഡ് ചേർക്കുക:

    command = { 'led_on' : payload['light'] < 300 }
    print("Sending message:", command)
    
    client.publish(server_command_topic, json.dumps(command))
    

    ലൈറ്റ് 300-ൽ താഴെ ആണെങ്കിൽ led_on ട്രൂ ആയി സെറ്റ് ചെയ്യേണ്ട JSON സന്ദേശം കമാൻഡ് ടോപ്പിക്ക് അയയ്ക്കുന്നു. ലൈറ്റിന് താഴ്ന്നാൽ LED ഓൺ ആക്കാൻ കമാൻഡ് അയയ്ക്കുന്നു.

  4. പൂർവ്വം പോലെ കോഡ് ഓടിക്കുക.

  5. നിങ്ങളുടെ ഡിവൈസിന്റെ ലൈറ്റ് ലെവലുകൾ മാറ്റുക. സന്ദേശങ്ങൾ വരുകയും കമാൻഡുകൾ അയയ്ക്കപ്പെടുകയും ടെർമിനലിൽ കാണിക്കും:

    (.venv) ➜  nightlight-server python app.py
    Message received: {'light': 0}
    Sending message: {'led_on': True}
    Message received: {'light': 400}
    Sending message: {'led_on': False}
    

💁 ടെലിമെട്രിയും കമാൻഡുകളും ഓരോ ഒരു ടോപ്പിക്കിൽ അയയ്ക്കുന്നു. അതിനാൽ പല ഡിവൈസുകളുടെ ടെലിമെട്രി ഒരേ ടോപ്പിക്കിൽ വരും, കമാൻഡുകളും ഒരേ ടോപ്പിക്കിൽ. എങ്കിൽ വ്യത്യസ്ത ഡിവൈസുകളിൽ കമാൻഡ് അയക്കാൻ വ്യക്തി ഐഡി ഉപയോഗിച്ച് വ്യത്യസ്ത ടോപ്പിക്കുകൾ ഉണ്ടാക്കാം, ഉദാ: /commands/device1, /commands/device2. അതിലൂടെ ഒരേ ഡിവൈസ് മാത്രമുള്ള മെസ്സേജുകൾ കേൾക്കാം.

💁 ഈ കോഡ് code-commands/server ഫോൾഡറിൽ ലഭ്യമാണ്.

IoT ഡിവൈസിൽ കമാൻഡുകൾ കൈകാര്യം ചെയ്യുക

സർവറിൽ നിന്ന് കമാൻഡുകൾ അയക്കുമ്പോൾ, ഡിവൈസിൽ അവ കൈകാര്യം ചെയ്ത് LED നിയന്ത്രിക്കാൻ കോഡ് ചേർക്കാം.

MQTT ബ്രോക്കറിൽ നിന്നുള്ള കമാൻഡ് കേൾക്കാനുള്ള അനുയോജ്യമായ മാർഗങ്ങൾ തൊഴിവരുത്തുക:

കോഡ് എഴുതി പ്രവർത്തിപ്പിച്ചശേഷം, ലൈറ്റ് ലെവലുകൾ മാറ്റി സെർവർ, ഡിവൈസ് ഔട്ട്പുട്ടും LED പ്രവർത്തനവും കാണുക.

കണക്ടിവിറ്റി നഷ്ടപ്പെടുക

ഒരു IoT ഡിവൈസിന് കണക്ടിവിറ്റി ഇല്ലാതെ കമാൻഡ് അയയ്ക്കേണ്ടതുണ്ടെങ്കിൽ ക്ലൗഡ് സേവനം എന്തു ചെയ്യും? വീണ്ടും സംവേദനാനുസരണം.

ഏറ്റവും പുതിയ കമാൻഡ് പഴയവരെ ഒതുക്കുന്നത് ആണെങ്കിൽ പഴയ കമാൻഡുകൾ ഒഴിവാക്കാം. ഉദാഹരണത്തിന്, ഹീറ്റർ ഓണാക്കണെന്ന കമാൻഡ് അയച്ച ശേഷമേ വാർത്തയിൽ ഹീറ്റർ ഓഫ് ചെയ്യാൻ കമാൻഡ് അയച്ചാൽ, ഓൺ ആയ കമാൻഡ് ഉപേക്ഷിക്കാം.

കമാൻഡുകൾ അനുക്രമത്തിൽ നിർവ്വഹിക്കേണ്ടത് ആണെങ്കിൽ (ഉദാ: റോബോട്ട് ഹാഥ് ഉയർത്തുക, പിന്നെ ഗ്രാബർ അടയ്ക്കുക), കണക്ടിവിറ്റി പുനഃസ്ഥാപിക്കുമ്പോൾ കമാൻഡുകൾ അനുക്രമത്തിൽ അയയ്ക്കണം.

ആവശ്യം എങ്കിൽ MQTT വഴി കമാൻഡുകൾ എല്ലായ്പ്പോഴും ശരിയായ അനുക്രമത്തിൽ അയക്കുകയും കൈകാര്യം ചെയ്യുകയും ചെയ്യുന്നത് എങ്ങനെ ഉറപ്പാക്കാം?


🚀 ചലഞ്ച്

മുൻ മൂന്ന് പാഠങ്ങളിൽ, നിങ്ങളുടെ വീട്ടിലും സ്കൂളിലും ജോലിസ്ഥലത്തിലുമുള്ള IoT ഡിവൈസുകൾ ആയി എത്രയെത്ര ഉണ്ടെന്നുറച്ച്, അവ മൈക്രോക്കൺട്രോളറുകളിലോ സിംഗിൾ-ബോർഡ് കംപ്യൂട്ടറുകളിലോ ഉള്ളതോ മിശ്രിതമായതോ ആണെന്ന് കാണുക, അവ ഉപയോഗിക്കുന്ന സെൻസറുകളും ആക്ചുവേറ്ററുകളും കണ്ടെത്തുക.

അവ അയക്കുന്ന ടെലിമെട്രി എന്താണ്? ലഭിക്കുന്ന സന്ദേശങ്ങളോ കമാൻഡുകളോ എന്തെല്ലാം? സുരക്ഷിതമാണോയെന്ന് ചിന്തിക്കുക.

പোষ്റ്റ്-ലെക്‌ചർ ക്വിസ്

Post-lecture quiz

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

MQTT വിക്കിപീഡിയ പേജ് ൽ MQTT hakkında കൂടുതൽ വായിക്കുക.

മോസ്‌ക്വിറ്റോ ഉപയോഗിച്ച് സ്വയം ഒരു MQTT ബ്രോക്കർ ഓടിക്കാൻ ശ്രമിക്കുക, നിങ്ങളുടെ IoT ഉപകരണം ಮತ್ತು സർവർ കോഡിൽ നിന്ന് അതിലേക്ക് കണക്റ്റ് ചെയ്യുക.

💁 സൂചന - ഡിഫോൾട്ട് ആയി മോസ്‌ക്വിറ്റോ അനോണിമസ് കണക്ഷനുകൾ (ഉപയോക്തൃനാമവും പാസ്വേഡും ഇല്ലാതെ കണക്ട് ചെയ്യുന്നത്) അനുവദിക്കുന്നില്ല, കൂടാതെ അത് ഓടുന്ന കമ്പ്യൂട്ടറിന്റെ പുറത്തുള്ള കണക്ഷനുകൾ അനുവദിക്കുന്നില്ല. ഈ പ്രശ്നം പരിഹരിക്കാൻ താഴെപ്പറയുന്നവ അടങ്ങിയ mosquitto.conf കോൺഫിഗ് ഫയൽ ഉപയോഗിക്കാം:

listener 1883 0.0.0.0
allow_anonymous true

ആസൈൻമെന്റ്

MQTT നെ മറ്റു കമ്മ്യൂണിക്കേഷൻ പ്രോട്ടോക്കോളുകളുമായി താരതമ്യം ചെയ്യുക


റദ്ദാക്കൽ കുറിപ്പ്:
ഈ പ്രമാണം AI വിവർത്തന സേവനം Co-op Translator ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നമുക്ക് സാധ്യമായത്ര ശരിയായ വിവർത്തനത്തിന് ശ്രമിക്കുകയുണ്ടെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിഴവുകൾ അല്ലെങ്കിൽ അസാധുതകൾ ഉണ്ടാകാവുന്നുവെന്ന് ദയവായി മനസിലാക്കുക. നാട്ടുരൂപത്തിലുള്ള അസൽ പ്രമാണം മാത്രമാണ് അധികാരപ്രദമായ ഉറവിടം ആയി കണക്കാക്കേണ്ടത്. നിർണ്ണായക വിവരങ്ങൾക്ക് പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം വേണ്ടിവരും. ഈ വിവർത്തനം ഉപയോഗിച്ചതിനാൽ ഉണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റായ മനസ്സിലാക്കലുകൾക്കോ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.