12 KiB
നിങ്ങളുടെ IoT ഡിവൈസ് ക്ലൗഡുമായി ബന്ധിപ്പിക്കുക - വിർച്വൽ IoT ഹാർഡ്വെയർ এবং റാസ്പ്ബെറി പൈ
പാഠത്തിന്റെ ഈ ഭാഗത്തിൽ, നിങ്ങൾ നിങ്ങളുടെ വിർച്വൽ IoT ഡിവൈസോ റാസ്പ്ബെറി പൈനോ നിങ്ങളുടെ IoT ഹബുമായി ബന്ധിപ്പിച്ച് ടെലിമെട്രി അയയ്ക്കാനും കമാൻഡുകൾ സ്വീകരിക്കാനും പഠിക്കും.
നിങ്ങളുടെ ഡിവൈസ് IoT ഹബുമായി ബന്ധിപ്പിക്കുക
അടുത്ത ഘട്ടം നിങ്ങളുടെ ഡിവൈസിനെ IoT ഹബുമായി ബന്ധിപ്പിക്കുകയാണ്.
ടാസ്ക് - IoT ഹബുമായി ബന്ധിപ്പിക്കുക
-
VS Code-ൽ
soil-moisture-sensorഫോൾഡർ തുറക്കുക. നിങ്ങൾ വിർച്വൽ IoT ഡിവൈസ്സ് ഉപയോഗിക്കുന്നുവെങ്കിൽ ടെർമിനലിൽ വിർച്വൽ എൻവയൺമെന്റ് പ്രവർത്തിക്കുന്നതായിരിക്കണം. -
ചില അധിക പിപ്പ് പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യുക:
pip3 install azure-iot-deviceazure-iot-deviceഎന്നത് നിങ്ങളുടെ IoT ഹബുമായി സംവദിക്കാൻ ഉപയോഗിക്കുന്ന ലൈബ്രറിയാണ്. -
നിലവിലുള്ള ഇൻപോർട്ടുകളുടെ താഴെ
app.pyഫയലിന്റെ മുകളിൽ താഴെപ്പറയുന്ന ഇൻപോർട്ടുകൾ ചേർക്കുക:from azure.iot.device import IoTHubDeviceClient, Message, MethodResponseഈ കോഡ് നിങ്ങളുടെ IoT ഹബുമായി സംവദിക്കാൻ SDK ഇംപോർട്ട് ചെയ്യുന്നു.
-
import paho.mqtt.client as mqttലൈൻ നീക്കം ചെയ്യുക, ഈ ലൈബ്രറി ഇനി വേണ്ടതല്ല. എല്ലാ MQTT കോഡുകളും, ടോപ്പിക് നെയിമുകളും,mqtt_clientഉപയോഗിക്കുന്ന കോഡുകളും,handle_commandഎന്നിവയും നീക്കുക.while True:ലൂപ് ഉണ്ടാകട്ടെ, പക്ഷേ ഈ ലൂപിൽ നിന്ന്mqtt_client.publishലൈൻ മായ്ക്കുക. -
ഇൻപോർട്ട് സ്റ്റേറ്റ്മെന്റുകൾ താഴെ താഴെയുള്ള കോഡ് ചേർക്കുക:
connection_string = "<connection string>"<connection string>എന്നതിന്റെ സ്ഥലം ഈ പാഠത്തിൽ മുമ്പെ നിങ്ങൾ ലഭിച്ച ഡിവൈസ് കോൺണക്ഷൻ സ്ട്രിങ് ഉപയോഗിച്ചുകൊണ്ട് മാറ്റുക.💁 ഇത് മികച്ച പ്രാക്ടീസ് അല്ല. കോൺണക്ഷൻ സ്ട്രിംഗുകൾ ഒരിക്കലും സോഴ്സ് കോഡിൽ സംഭരിക്കരുത്, കാരണം ഇത് സോഴ്സ് കോഡ് കൺട്രോളിൽ പരിശോധിക്കപ്പെടുകയും ആരും കണ്ടുപിടിക്കാവുന്നതാണ്. എളുപ്പമായതിനാൽ ഇതിനെ ഇവിടെ ചെയ്യുകയാണ്. സംഗതി പരമാവധി എണ്വയൺമെന്റ് വേറിയബിൾ പോലുള്ള ഒരു ഉപാധി ഉപയോഗിച്ച്,
python-dotenvപോലൊരു ടൂൾ ഉപയോഗിച്ച് നടത്താം. ഇതു സംബന്ധിച്ച് അടുത്ത പാഠത്തിൽ കൂടുതൽ പഠിക്കും. -
ഈ കോഡിന്റെ താഴെ, IoT ഹബുമായ് സംവദിക്കാവുന്ന ഒരു ഡിവൈസ് ക്ലയന്റ് ഒബ്ജക്റ്റ് സൃഷ്ടിച്ച് അത് കണക്റ്റ് ചെയ്യാൻ താഴെ കൊടുത്ത കോഡ് ചേർക്കുക:
device_client = IoTHubDeviceClient.create_from_connection_string(connection_string) print('Connecting') device_client.connect() print('Connected') -
ഈ കോഡ് റൺ ചെയ്യുക. നിങ്ങളുടെ ഡിവൈസ് കണക്റ്റ് ആകുന്നത് കാണിക്കും.
pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py Connecting Connected Soil moisture: 379
ടെലിമെട്രി അയക്കുക
ഇപ്പോൾ നിങ്ങളുടെ ഡിവൈസ് കണക്റ്റ് ചെയ്തതിനാൽ, നിങ്ങൾ ടെലിമെട്രി MQTT ബ്രൊകറിനു പകരം IoT ഹബിലേക്ക് അയക്കാൻ കഴിയും.
ടാസ്ക് - ടെലിമെട്രി അയയ്ക്കുക
-
while Trueലൂപിലേക്ക്,സ്ലീപ്പിന് മുൻപ് താഴെപ്പറയുന്ന കോഡ് ചേർക്കുക:message = Message(json.dumps({ 'soil_moisture': soil_moisture })) device_client.send_message(message)ഈ കോഡ് ഒരു IoT ഹബ്
Messageസൃഷ്ടിക്കുന്നു, അത് JSON സ്ട്രിംഗ് രൂപത്തിൽ മണ്ണ് ഇളവും വായിക്കൽ ഉൾക്കൊള്ളുന്നു, തുടർന്ന് ഇത് ഡിവൈസ്-ടു-ക്ലൗഡ് സന്ദേശമായി IoT ഹബിലേക്ക് അയയ്ക്കുന്നു.
കമാൻഡുകൾ കൈകാര്യം ചെയ്യുക
നിങ്ങളുടെ ഡിവൈസിന് റെയ്ലേ നിയന്ത്രിക്കാൻ സെർവർ കോഡിൽ നിന്നുള്ള കമാൻഡ് കൈകാര്യം ചെയ്യാൻ വേണം. ഇത് ഒരു ഡീരക്ട് മെथഡ്സ് അഭ്യർത്ഥന ആയി അയയ്ക്കപ്പെടുന്നു.
ടാസ്ക് - ഡീരക്ട് മെഥഡ് അഭ്യർത്ഥന കൈകാര്യം ചെയ്യുക
-
while Trueലൂപിന് മുമ്പായി താഴെ കൊടുത്ത കോഡ് ചേർക്കുക:def handle_method_request(request): print("Direct method received - ", request.name) if request.name == "relay_on": relay.on() elif request.name == "relay_off": relay.off()ഇത്
handle_method_requestഎന്ന മെഥഡ് നിർവ്വചിക്കുന്നു, IoT ഹബ് ഒരു ഡീരക്ട് മെഥഡ് വിളിക്കുമ്പോൾ ഇത് വിളിക്കപ്പെടും. ഓരോ ഡീരക്ട് മെഥഡിന്റെയും ഒരു പേര് ഉണ്ട്, ഈ കോഡ്relay_onഎന്ന മെഥഡ് റെയ്ലെ ഓണാക്കാൻ,relay_offറെയ്ലെ ആണാക്കാൻ വിളിയ്ക്കും എന്നു പ്രതീക്ഷിക്കുന്നു.💁 ഇത് ഒരു ഏകദേശം ഡീരക്ട് മെഥഡ് അഭ്യർത്ഥനയിലൂടെയും നടപ്പാക്കാവുന്നതാണ്, ഇതിൽ റെയ്ലെയുടെ ആവശ്യമുള്ള നില ഒരു പെയ്ലോഡിൽ പാസാക്കി മെഥഡ് അഭ്യർത്ഥനയുമായി പാസ്സാക്കാനും
requestഒബ്ജക്റ്റിൽ നിന്ന് ലഭിക്കാനും കഴിയും. -
കോൾ ചെയ്യുന്ന കോഡിന് കൈകാര്യം ചെയ്തതായി പ്രതികരണം നൽകാൻ ഡീരക്ട് മെഥഡുകൾക്ക് പ്രതികരണം ആവശ്യമാണ്. അഭ്യർത്ഥനയ്ക്ക് പ്രതികരണം സൃഷ്ടിക്കാൻ താഴെ കൊടുത്ത കോഡ്
handle_method_requestഫങ്ഷൻ അവസാനത്തിൽ ചേർക്കുക:method_response = MethodResponse.create_from_method_request(request, 200) device_client.send_method_response(method_response)ഈ കോഡ് ഡീരക്ട് മെഥഡ് അഭ്യർത്ഥനയ്ക്ക് HTTP സ്റ്റാറ്റസ് കോഡ് 200 സഹിതം പ്രതികരണം അയക്കുന്നു, അത് IoT ഹബിലേക്ക് തിരികെ അയയ്ക്കുന്നു.
-
ഈ ഫങ്ഷൻ നിർവചനത്തിന് താഴെ താഴെ കൊടുത്ത കോഡ് ചേർക്കുക:
device_client.on_method_request_received = handle_method_requestഒരു ഡീരക്ട് മെഥഡ് വിളിക്കുമ്പോൾ IoT ഹബ് ക്ലയന്റ്
handle_method_requestഫങ്ഷന് വിളിച്ചു ഡയറക്ട് മെഥഡ് കൈകാര്യം ചെയ്യാൻ ഈ കോഡ് സഹായിക്കുന്നു.
💁 ഈ കോഡ് code/pi അല്ലെങ്കിൽ code/virtual-device ഫോൾഡറുകളിൽ കണ്ടെത്താവുന്നതാണ്.
😀 നിങ്ങളുടെ മണ്ണ് ഇളവും സെൻസർ പ്രോഗ്രാം IoT ഹബുമായി കണക്റ്റ് ചെയ്തിരിക്കുന്നു!
ഡിസ്ക്ലൈമർ:
ഈ ഡോക്യൂമെന്റ് AI വിവർത്തന സേവനമായ Co-op Translator ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തിരിക്കുന്നു. ഞങ്ങൾaccuracy ഉദ്ദേശിക്കുമ്പോഴും, സ്വയമേധയാ വിവർത്തനങ്ങളിൽ പിഴവുകൾ അല്ലെങ്കിൽ ഭാഗികമായ അakurതകൾ ഉണ്ടായിരിക്കാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. ലേഖനത്തിന്റെ മാതൃഭാഷയിലെ യഥാർത്ഥ ഡോക്യൂമെന്റ് സത്യമായ ഉറവിടമായി കണക്കാക്കേണ്ടതാണ്. പ്രധാന വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിലൂടെ സൃഷ്ടിക്കുന്ന യാതൊരു തെറ്റിദ്ധാരണക്കും ഞങ്ങൾ ഉത്തരവാദികളല്ല.