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
11 KiB
123 lines
11 KiB
# ನಿಮ್ಮ IoT ಸಾಧನವನ್ನು ಕ್ಲೌಡ್ಗೆ ಸಂಪರ್ಕಿಸಲು - ವರ್ಚುವಲ್ IoT ಹಾರ್ಡ್ವೇರ್ ಮತ್ತು ರಾಸ್ಪ್ಬೆರಿ ಪೈ
|
|
|
|
ಪಾಠದ ಈ ಭಾಗದಲ್ಲಿ, ನೀವು ನಿಮ್ಮ ವರ್ಚುವಲ್ IoT ಸಾಧನ ಅಥವಾ ರಾಸ್ಪ್ಬೆರಿ ಪೈ ಅನ್ನು ನಿಮ್ಮ IoT ಹಬ್ಗೆ ಸಂಪರ್ಕಿಸಿ, ಟೆಲಿಮೆಟ್ರಿ ಕಳುಹಿಸಲು ಮತ್ತು ಆದೇಶಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಮಾಡುತ್ತೀರಿ.
|
|
|
|
## ನಿಮ್ಮ ಸಾಧನವನ್ನು IoT ಹಬ್ಗೆ ಸಂಪರ್ಕಿಸಿ
|
|
|
|
ಮುಂದಿನ ಹಂತವು ನಿಮ್ಮ ಸಾಧನವನ್ನು IoT ಹಬ್ಗೆ ಸಂಪರ್ಕಿಸುವುದು.
|
|
|
|
### ಕಾರ್ಯ - IoT ಹಬ್ಗೆ ಸಂಪರ್ಕಿಸು
|
|
|
|
1. VS ಕೋಡಿನಲ್ಲಿ `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
|
|
```
|
|
|
|
ಈ ಕೋಡ್ SDK ಅನ್ನು ನಿಮ್ಮ IoT ಹಬ್ ಜೊತೆಗೆ ಸಂವಹನ ಮಾಡಲು ಇಂಪೋರ್ಟ್ ಮಾಡುತ್ತದೆ.
|
|
|
|
1. `import paho.mqtt.client as mqtt` ಲೈನ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ ಏಕೆಂದರೆ ಈ ಲೈಬ್ರರಿಯ enää ಅಗತ್ಯವಿಲ್ಲ. 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)
|
|
```
|
|
|
|
ಈ ಕೋಡ್ ಮಣ್ಣು ತೇವಾಂಶ ಓದಿಕೆಯನ್ನು JSON ಸರಣಿಯಾಗಿ ಅಳವಡಿಸಿದ IoT ಹಬ್ `Message` ರಚಿಸುತ್ತದೆ, ನಂತರ ಇದನ್ನು ಸಾಧನದಿಂದ ಕ್ಲೌಡ್ ಸಂದೇಶವಾಗಿ 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)
|
|
```
|
|
|
|
ಈ ಕೋಡ್ 200 HTTP ಸ್ಥಿತಿ ಕೋಡ್ ಜೊತೆ ನೇರ ವಿಧಾನ ವಿನಂತಿಗೆ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ, ಮತ್ತು ಇದನ್ನು 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) ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯನ್ನು ತಲುಪಲು ಪ್ರಯತ್ನಿಸುವಾಗ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ accuracies ಬಾರತವಿರುವ ಸಾಧ್ಯತೆ ಇರುತ್ತದೆ ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿರಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜು ನಂಬಿಕೆ ಇದ್ದ ಮೂಲವಾಗಿರಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗಬಹುದಾದ ಯಾವುದೇ ಅರ್ಥಮಾಡಿಕೊಳ್ಳದ ಅಥವಾ ತಪ್ಪಾದ ಅರ್ಥದ ಕುರಿತು ನಾವು ಜವಾಬ್ದಾರಿತರಾಗುವುದಿಲ್ಲ.
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |