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.
123 lines
12 KiB
123 lines
12 KiB
# നിങ്ങളുടെ IoT ഡിവൈസ് ക്ലൗഡുമായി ബന്ധിപ്പിക്കുക - വിർച്വൽ IoT ഹാർഡ്വെയർ এবং റാസ്പ്ബെറി പൈ
|
|
|
|
പാഠത്തിന്റെ ഈ ഭാഗത്തിൽ, നിങ്ങൾ നിങ്ങളുടെ വിർച്വൽ IoT ഡിവൈസോ റാസ്പ്ബെറി പൈനോ നിങ്ങളുടെ IoT ഹബുമായി ബന്ധിപ്പിച്ച് ടെലിമെട്രി അയയ്ക്കാനും കമാൻഡുകൾ സ്വീകരിക്കാനും പഠിക്കും.
|
|
|
|
## നിങ്ങളുടെ ഡിവൈസ് IoT ഹബുമായി ബന്ധിപ്പിക്കുക
|
|
|
|
അടുത്ത ഘട്ടം നിങ്ങളുടെ ഡിവൈസിനെ IoT ഹബുമായി ബന്ധിപ്പിക്കുകയാണ്.
|
|
|
|
### ടാസ്ക് - IoT ഹബുമായി ബന്ധിപ്പിക്കുക
|
|
|
|
1. VS Code-ൽ `soil-moisture-sensor` ഫോൾഡർ തുറക്കുക. നിങ്ങൾ വിർച്വൽ IoT ഡിവൈസ്സ് ഉപയോഗിക്കുന്നുവെങ്കിൽ ടെർമിനലിൽ വിർച്വൽ എൻവയൺമെന്റ് പ്രവർത്തിക്കുന്നതായിരിക്കണം.
|
|
|
|
1. ചില അധിക പിപ്പ് പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യുക:
|
|
|
|
```sh
|
|
pip3 install azure-iot-device
|
|
```
|
|
|
|
`azure-iot-device` എന്നത് നിങ്ങളുടെ IoT ഹബുമായി സംവദിക്കാൻ ഉപയോഗിക്കുന്ന ലൈബ്രറിയാണ്.
|
|
|
|
1. നിലവിലുള്ള ഇൻപോർട്ടുകളുടെ താഴെ `app.py` ഫയലിന്റെ മുകളിൽ താഴെപ്പറയുന്ന ഇൻപോർട്ടുകൾ ചേർക്കുക:
|
|
|
|
```python
|
|
from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
|
|
```
|
|
|
|
ഈ കോഡ് നിങ്ങളുടെ IoT ഹബുമായി സംവദിക്കാൻ SDK ഇംപോർട്ട് ചെയ്യുന്നു.
|
|
|
|
1. `import paho.mqtt.client as mqtt` ലൈൻ നീക്കം ചെയ്യുക, ഈ ലൈബ്രറി ഇനി വേണ്ടതല്ല. എല്ലാ MQTT കോഡുകളും, ടോപ്പിക് നെയിമുകളും, `mqtt_client` ഉപയോഗിക്കുന്ന കോഡുകളും, `handle_command` എന്നിവയും നീക്കുക. `while True:` ലൂപ് ഉണ്ടാകട്ടെ, പക്ഷേ ഈ ലൂപിൽ നിന്ന് `mqtt_client.publish` ലൈൻ മായ്ക്കുക.
|
|
|
|
1. ഇൻപോർട്ട് സ്റ്റേറ്റ്മെന്റുകൾ താഴെ താഴെയുള്ള കോഡ് ചേർക്കുക:
|
|
|
|
```python
|
|
connection_string = "<connection string>"
|
|
```
|
|
|
|
`<connection string>` എന്നതിന്റെ സ്ഥലം ഈ പാഠത്തിൽ മുമ്പെ നിങ്ങൾ ലഭിച്ച ഡിവൈസ് കോൺണക്ഷൻ സ്ട്രിങ് ഉപയോഗിച്ചുകൊണ്ട് മാറ്റുക.
|
|
|
|
> 💁 ഇത് മികച്ച പ്രാക്ടീസ് അല്ല. കോൺണക്ഷൻ സ്ട്രിംഗുകൾ ഒരിക്കലും സോഴ്സ് കോഡിൽ സംഭരിക്കരുത്, കാരണം ഇത് സോഴ്സ് കോഡ് കൺട്രോളിൽ പരിശോധിക്കപ്പെടുകയും ആരും കണ്ടുപിടിക്കാവുന്നതാണ്. എളുപ്പമായതിനാൽ ഇതിനെ ഇവിടെ ചെയ്യുകയാണ്. സംഗതി പരമാവധി എണ്വയൺമെന്റ് വേറിയബിൾ പോലുള്ള ഒരു ഉപാധി ഉപയോഗിച്ച്, [`python-dotenv`](https://pypi.org/project/python-dotenv/) പോലൊരു ടൂൾ ഉപയോഗിച്ച് നടത്താം. ഇതു സംബന്ധിച്ച് അടുത്ത പാഠത്തിൽ കൂടുതൽ പഠിക്കും.
|
|
|
|
1. ഈ കോഡിന്റെ താഴെ, IoT ഹബുമായ് സംവദിക്കാവുന്ന ഒരു ഡിവൈസ് ക്ലയന്റ് ഒബ്ജക്റ്റ് സൃഷ്ടിച്ച് അത് കണക്റ്റ് ചെയ്യാൻ താഴെ കൊടുത്ത കോഡ് ചേർക്കുക:
|
|
|
|
```python
|
|
device_client = IoTHubDeviceClient.create_from_connection_string(connection_string)
|
|
|
|
print('Connecting')
|
|
device_client.connect()
|
|
print('Connected')
|
|
```
|
|
|
|
1. ഈ കോഡ് റൺ ചെയ്യുക. നിങ്ങളുടെ ഡിവൈസ് കണക്റ്റ് ആകുന്നത് കാണിക്കും.
|
|
|
|
```output
|
|
pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py
|
|
Connecting
|
|
Connected
|
|
Soil moisture: 379
|
|
```
|
|
|
|
## ടെലിമെട്രി അയക്കുക
|
|
|
|
ഇപ്പോൾ നിങ്ങളുടെ ഡിവൈസ് കണക്റ്റ് ചെയ്തതിനാൽ, നിങ്ങൾ ടെലിമെട്രി MQTT ബ്രൊകറിനു പകരം IoT ഹബിലേക്ക് അയക്കാൻ കഴിയും.
|
|
|
|
### ടാസ്ക് - ടെലിമെട്രി അയയ്ക്കുക
|
|
|
|
1. `while True` ലൂപിലേക്ക്,സ്ലീപ്പിന് മുൻപ് താഴെപ്പറയുന്ന കോഡ് ചേർക്കുക:
|
|
|
|
```python
|
|
message = Message(json.dumps({ 'soil_moisture': soil_moisture }))
|
|
device_client.send_message(message)
|
|
```
|
|
|
|
ഈ കോഡ് ഒരു IoT ഹബ് `Message` സൃഷ്ടിക്കുന്നു, അത് JSON സ്ട്രിംഗ് രൂപത്തിൽ മണ്ണ് ഇളവും വായിക്കൽ ഉൾക്കൊള്ളുന്നു, തുടർന്ന് ഇത് ഡിവൈസ്-ടു-ക്ലൗഡ് സന്ദേശമായി IoT ഹബിലേക്ക് അയയ്ക്കുന്നു.
|
|
|
|
## കമാൻഡുകൾ കൈകാര്യം ചെയ്യുക
|
|
|
|
നിങ്ങളുടെ ഡിവൈസിന് റെയ്ലേ നിയന്ത്രിക്കാൻ സെർവർ കോഡിൽ നിന്നുള്ള കമാൻഡ് കൈകാര്യം ചെയ്യാൻ വേണം. ഇത് ഒരു ഡീരക്ട് മെथഡ്സ് അഭ്യർത്ഥന ആയി അയയ്ക്കപ്പെടുന്നു.
|
|
|
|
## ടാസ്ക് - ഡീരക്ട് മെഥഡ് അഭ്യർത്ഥന കൈകാര്യം ചെയ്യുക
|
|
|
|
1. `while True` ലൂപിന് മുമ്പായി താഴെ കൊടുത്ത കോഡ് ചേർക്കുക:
|
|
|
|
```python
|
|
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` ഒബ്ജക്റ്റിൽ നിന്ന് ലഭിക്കാനും കഴിയും.
|
|
|
|
1. കോൾ ചെയ്യുന്ന കോഡിന് കൈകാര്യം ചെയ്തതായി പ്രതികരണം നൽകാൻ ഡീരക്ട് മെഥഡുകൾക്ക് പ്രതികരണം ആവശ്യമാണ്. അഭ്യർത്ഥനയ്ക്ക് പ്രതികരണം സൃഷ്ടിക്കാൻ താഴെ കൊടുത്ത കോഡ് `handle_method_request` ഫങ്ഷൻ അവസാനത്തിൽ ചേർക്കുക:
|
|
|
|
```python
|
|
method_response = MethodResponse.create_from_method_request(request, 200)
|
|
device_client.send_method_response(method_response)
|
|
```
|
|
|
|
ഈ കോഡ് ഡീരക്ട് മെഥഡ് അഭ്യർത്ഥനയ്ക്ക് HTTP സ്റ്റാറ്റസ് കോഡ് 200 സഹിതം പ്രതികരണം അയക്കുന്നു, അത് IoT ഹബിലേക്ക് തിരികെ അയയ്ക്കുന്നു.
|
|
|
|
1. ഈ ഫങ്ഷൻ നിർവചനത്തിന് താഴെ താഴെ കൊടുത്ത കോഡ് ചേർക്കുക:
|
|
|
|
```python
|
|
device_client.on_method_request_received = handle_method_request
|
|
```
|
|
|
|
ഒരു ഡീരക്ട് മെഥഡ് വിളിക്കുമ്പോൾ IoT ഹബ് ക്ലയന്റ് `handle_method_request` ഫങ്ഷന് വിളിച്ചു ഡയറക്ട് മെഥഡ് കൈകാര്യം ചെയ്യാൻ ഈ കോഡ് സഹായിക്കുന്നു.
|
|
|
|
> 💁 ഈ കോഡ് [code/pi](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/code/pi) അല്ലെങ്കിൽ [code/virtual-device](../../../../../2-farm/lessons/4-migrate-your-plant-to-the-cloud/code/virtual-device) ഫോൾഡറുകളിൽ കണ്ടെത്താവുന്നതാണ്.
|
|
|
|
😀 നിങ്ങളുടെ മണ്ണ് ഇളവും സെൻസർ പ്രോഗ്രാം IoT ഹബുമായി കണക്റ്റ് ചെയ്തിരിക്കുന്നു!
|
|
|
|
---
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
**ഡിസ്ക്ലൈമർ**:
|
|
ഈ ഡോക്യൂമെന്റ് AI വിവർത്തന സേവനമായ [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തിരിക്കുന്നു. ഞങ്ങൾaccuracy ഉദ്ദേശിക്കുമ്പോഴും, സ്വയമേധയാ വിവർത്തനങ്ങളിൽ പിഴവുകൾ അല്ലെങ്കിൽ ഭാഗികമായ അakurതകൾ ഉണ്ടായിരിക്കാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. ലേഖനത്തിന്റെ മാതൃഭാഷയിലെ യഥാർത്ഥ ഡോക്യൂമെന്റ് സത്യമായ ഉറവിടമായി കണക്കാക്കേണ്ടതാണ്. പ്രധാന വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിലൂടെ സൃഷ്ടിക്കുന്ന യാതൊരു തെറ്റിദ്ധാരണക്കും ഞങ്ങൾ ഉത്തരവാദികളല്ല.
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |