11 KiB
ਆਪਣਾ IoT ਡਿਵਾਈਸ ਕਲਾਉਡ ਨਾਲ ਜੋੜੋ - ਵਰਚੁਅਲ IoT ਹਾਰਡਵੇਅਰ ਅਤੇ ਰਾਸਪਬੈਰੀ ਪਾਈ
ਇਸ ਪਾਠ ਦੇ ਇਸ ਹਿੱਸੇ ਵਿੱਚ, ਤੁਸੀਂ ਆਪਣੇ ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ ਜਾਂ ਰਾਸਪਬੈਰੀ ਪਾਈ ਨੂੰ ਆਪਣੇ IoT ਹੱਬ ਨਾਲ ਜੋੜੋਗੇ, ਤਾਂ ਜੋ ਟੈਲੀਮੇਟਰੀ ਭੇਜ ਸਕੋ ਅਤੇ ਕਮਾਂਡ ਪ੍ਰਾਪਤ ਕਰ ਸਕੋ।
ਆਪਣੇ ਡਿਵਾਈਸ ਨੂੰ IoT ਹੱਬ ਨਾਲ ਜੋੜੋ
ਅਗਲਾ ਕਦਮ ਤੁਹਾਡੇ ਡਿਵਾਈਸ ਨੂੰ IoT ਹੱਬ ਨਾਲ ਜੋੜਨਾ ਹੈ।
ਟਾਸਕ - IoT ਹੱਬ ਨਾਲ ਜੋੜੋ
-
soil-moisture-sensorਫੋਲਡਰ ਨੂੰ VS Code ਵਿੱਚ ਖੋਲ੍ਹੋ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਵਰਚੁਅਲ ਇਨਵਾਇਰਨਮੈਂਟ ਟਰਮੀਨਲ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ ਜੇ ਤੁਸੀਂ ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ ਵਰਤ ਰਹੇ ਹੋ। -
ਕੁਝ ਵਾਧੂ Pip ਪੈਕੇਜ ਇੰਸਟਾਲ ਕਰੋ:
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 ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀਅਤ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।