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/pa/2-farm/lessons/4-migrate-your-plant-to-the.../single-board-computer-conne...

11 KiB

ਆਪਣਾ IoT ਡਿਵਾਈਸ ਕਲਾਉਡ ਨਾਲ ਜੋੜੋ - ਵਰਚੁਅਲ IoT ਹਾਰਡਵੇਅਰ ਅਤੇ ਰਾਸਪਬੈਰੀ ਪਾਈ

ਇਸ ਪਾਠ ਦੇ ਇਸ ਹਿੱਸੇ ਵਿੱਚ, ਤੁਸੀਂ ਆਪਣੇ ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ ਜਾਂ ਰਾਸਪਬੈਰੀ ਪਾਈ ਨੂੰ ਆਪਣੇ IoT ਹੱਬ ਨਾਲ ਜੋੜੋਗੇ, ਤਾਂ ਜੋ ਟੈਲੀਮੇਟਰੀ ਭੇਜ ਸਕੋ ਅਤੇ ਕਮਾਂਡ ਪ੍ਰਾਪਤ ਕਰ ਸਕੋ।

ਆਪਣੇ ਡਿਵਾਈਸ ਨੂੰ IoT ਹੱਬ ਨਾਲ ਜੋੜੋ

ਅਗਲਾ ਕਦਮ ਤੁਹਾਡੇ ਡਿਵਾਈਸ ਨੂੰ IoT ਹੱਬ ਨਾਲ ਜੋੜਨਾ ਹੈ।

ਟਾਸਕ - IoT ਹੱਬ ਨਾਲ ਜੋੜੋ

  1. soil-moisture-sensor ਫੋਲਡਰ ਨੂੰ VS Code ਵਿੱਚ ਖੋਲ੍ਹੋ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਵਰਚੁਅਲ ਇਨਵਾਇਰਨਮੈਂਟ ਟਰਮੀਨਲ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਹੈ ਜੇ ਤੁਸੀਂ ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ ਵਰਤ ਰਹੇ ਹੋ।

  2. ਕੁਝ ਵਾਧੂ Pip ਪੈਕੇਜ ਇੰਸਟਾਲ ਕਰੋ:

    pip3 install azure-iot-device
    

    azure-iot-device ਤੁਹਾਡੇ IoT ਹੱਬ ਨਾਲ ਸੰਚਾਰ ਕਰਨ ਲਈ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ ਹੈ।

  3. ਹੇਠਾਂ ਦਿੱਤੇ ਇਮਪੋਰਟਸ ਨੂੰ app.py ਫਾਈਲ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਮੌਜੂਦਾ ਇਮਪੋਰਟਸ ਦੇ ਹੇਠਾਂ ਸ਼ਾਮਲ ਕਰੋ:

    from azure.iot.device import IoTHubDeviceClient, Message, MethodResponse
    

    ਇਹ ਕੋਡ ਤੁਹਾਡੇ IoT ਹੱਬ ਨਾਲ ਸੰਚਾਰ ਕਰਨ ਲਈ SDK ਨੂੰ ਇਮਪੋਰਟ ਕਰਦਾ ਹੈ।

  4. import paho.mqtt.client as mqtt ਲਾਈਨ ਨੂੰ ਹਟਾਓ ਕਿਉਂਕਿ ਇਹ ਲਾਇਬ੍ਰੇਰੀ ਹੁਣ ਲੋੜੀਂਦੀ ਨਹੀਂ ਹੈ। ਸਾਰੇ MQTT ਕੋਡ ਨੂੰ ਹਟਾਓ ਜਿਸ ਵਿੱਚ ਟਾਪਿਕ ਨਾਂ, mqtt_client ਵਰਤਣ ਵਾਲਾ ਕੋਡ ਅਤੇ handle_command ਸ਼ਾਮਲ ਹੈ। while True: ਲੂਪ ਨੂੰ ਰੱਖੋ, ਸਿਰਫ ਇਸ ਲੂਪ ਵਿੱਚੋਂ mqtt_client.publish ਲਾਈਨ ਨੂੰ ਹਟਾਓ।

  5. ਇਮਪੋਰਟ ਸਟੇਟਮੈਂਟਸ ਦੇ ਹੇਠਾਂ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ:

    connection_string = "<connection string>"
    

    <connection string> ਨੂੰ ਇਸ ਪਾਠ ਵਿੱਚ ਪਹਿਲਾਂ ਪ੍ਰਾਪਤ ਕੀਤੇ ਡਿਵਾਈਸ ਲਈ ਕਨੈਕਸ਼ਨ ਸਟ੍ਰਿੰਗ ਨਾਲ ਬਦਲੋ।

    💁 ਇਹ ਸਹੀ ਤਰੀਕਾ ਨਹੀਂ ਹੈ। ਕਨੈਕਸ਼ਨ ਸਟ੍ਰਿੰਗਜ਼ ਨੂੰ ਕਦੇ ਵੀ ਸੋਰਸ ਕੋਡ ਵਿੱਚ ਸਟੋਰ ਨਹੀਂ ਕਰਨਾ ਚਾਹੀਦਾ, ਕਿਉਂਕਿ ਇਹ ਸੋਰਸ ਕੋਡ ਕੰਟਰੋਲ ਵਿੱਚ ਚੈੱਕ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਅਤੇ ਕਿਸੇ ਵੀ ਦੁਆਰਾ ਲੱਭਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਅਸੀਂ ਇਹ ਸਿਰਫ ਸਹੂਲਤ ਲਈ ਕਰ ਰਹੇ ਹਾਂ। ਆਦਰਸ਼ ਤੌਰ 'ਤੇ ਤੁਹਾਨੂੰ ਕੁਝ ਜਿਵੇਂ ਇਨਵਾਇਰਨਮੈਂਟ ਵੈਰੀਏਬਲ ਅਤੇ python-dotenv ਵਰਗੇ ਟੂਲ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ। ਤੁਸੀਂ ਇਸ ਬਾਰੇ ਅਗਲੇ ਪਾਠ ਵਿੱਚ ਹੋਰ ਸਿੱਖੋਗੇ।

  6. ਇਸ ਕੋਡ ਦੇ ਹੇਠਾਂ, ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ ਤਾਂ ਜੋ ਇੱਕ ਡਿਵਾਈਸ ਕਲਾਇੰਟ ਆਬਜੈਕਟ ਬਣਾਇਆ ਜਾ ਸਕੇ ਜੋ IoT ਹੱਬ ਨਾਲ ਸੰਚਾਰ ਕਰ ਸਕੇ ਅਤੇ ਇਸਨੂੰ ਕਨੈਕਟ ਕਰ ਸਕੇ:

    device_client = IoTHubDeviceClient.create_from_connection_string(connection_string)
    
    print('Connecting')
    device_client.connect()
    print('Connected')
    
  7. ਇਸ ਕੋਡ ਨੂੰ ਚਲਾਓ। ਤੁਸੀਂ ਦੇਖੋਗੇ ਕਿ ਤੁਹਾਡਾ ਡਿਵਾਈਸ ਕਨੈਕਟ ਹੋ ਗਿਆ ਹੈ।

    pi@raspberrypi:~/soil-moisture-sensor $ python3 app.py 
    Connecting
    Connected
    Soil moisture: 379
    

ਟੈਲੀਮੇਟਰੀ ਭੇਜੋ

ਹੁਣ ਜਦੋਂ ਤੁਹਾਡਾ ਡਿਵਾਈਸ ਕਨੈਕਟ ਹੋ ਗਿਆ ਹੈ, ਤੁਸੀਂ MQTT ਬ੍ਰੋਕਰ ਦੀ ਬਜਾਏ IoT ਹੱਬ ਨੂੰ ਟੈਲੀਮੇਟਰੀ ਭੇਜ ਸਕਦੇ ਹੋ।

ਟਾਸਕ - ਟੈਲੀਮੇਟਰੀ ਭੇਜੋ

  1. ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ while True ਲੂਪ ਦੇ ਅੰਦਰ, ਸਿਰਫ ਸਲੀਪ ਤੋਂ ਪਹਿਲਾਂ ਸ਼ਾਮਲ ਕਰੋ:

    message = Message(json.dumps({ 'soil_moisture': soil_moisture }))
    device_client.send_message(message)
    

    ਇਹ ਕੋਡ ਇੱਕ IoT ਹੱਬ Message ਬਣਾਉਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਮਿੱਟੀ ਦੀ ਨਮੀ ਦੀ ਪੜਚੋਲ JSON ਸਟ੍ਰਿੰਗ ਦੇ ਰੂਪ ਵਿੱਚ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਇਸਨੂੰ IoT ਹੱਬ ਨੂੰ ਡਿਵਾਈਸ ਤੋਂ ਕਲਾਉਡ ਸੁਨੇਹੇ ਵਜੋਂ ਭੇਜਦਾ ਹੈ।

ਕਮਾਂਡਸ ਨੂੰ ਹੈਂਡਲ ਕਰੋ

ਤੁਹਾਡੇ ਡਿਵਾਈਸ ਨੂੰ ਸਰਵਰ ਕੋਡ ਤੋਂ ਇੱਕ ਕਮਾਂਡ ਹੈਂਡਲ ਕਰਨ ਦੀ ਲੋੜ ਹੈ ਤਾਂ ਜੋ ਰੀਲੇ ਨੂੰ ਕੰਟਰੋਲ ਕੀਤਾ ਜਾ ਸਕੇ। ਇਹ ਇੱਕ ਡਾਇਰੈਕਟ ਮੈਥਡ ਰਿਕਵੈਸਟ ਵਜੋਂ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ।

ਟਾਸਕ - ਡਾਇਰੈਕਟ ਮੈਥਡ ਰਿਕਵੈਸਟ ਨੂੰ ਹੈਂਡਲ ਕਰੋ

  1. 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 ਆਬਜੈਕਟ ਤੋਂ ਉਪਲਬਧ ਹੋ ਸਕਦਾ ਹੈ।

  2. ਡਾਇਰੈਕਟ ਮੈਥਡਸ ਨੂੰ ਇੱਕ ਰਿਸਪਾਂਸ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਤਾਂ ਜੋ ਕਾਲ ਕਰਨ ਵਾਲੇ ਕੋਡ ਨੂੰ ਦੱਸਿਆ ਜਾ ਸਕੇ ਕਿ ਇਹ ਹੈਂਡਲ ਕੀਤਾ ਗਿਆ ਹੈ। handle_method_request ਫੰਕਸ਼ਨ ਦੇ ਅੰਤ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ ਤਾਂ ਜੋ ਰਿਕਵੈਸਟ ਲਈ ਇੱਕ ਰਿਸਪਾਂਸ ਬਣਾਇਆ ਜਾ ਸਕੇ:

    method_response = MethodResponse.create_from_method_request(request, 200)
    device_client.send_method_response(method_response)
    

    ਇਹ ਕੋਡ ਡਾਇਰੈਕਟ ਮੈਥਡ ਰਿਕਵੈਸਟ ਨੂੰ HTTP ਸਟੇਟਸ ਕੋਡ 200 ਦੇ ਨਾਲ ਇੱਕ ਰਿਸਪਾਂਸ ਭੇਜਦਾ ਹੈ, ਅਤੇ ਇਸਨੂੰ IoT ਹੱਬ ਨੂੰ ਵਾਪਸ ਭੇਜਦਾ ਹੈ।

  3. ਇਸ ਫੰਕਸ਼ਨ ਪਰਿਭਾਸ਼ਾ ਦੇ ਹੇਠਾਂ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ:

    device_client.on_method_request_received = handle_method_request
    

    ਇਹ ਕੋਡ IoT ਹੱਬ ਕਲਾਇੰਟ ਨੂੰ ਦੱਸਦਾ ਹੈ ਕਿ ਜਦੋਂ ਇੱਕ ਡਾਇਰੈਕਟ ਮੈਥਡ ਕਾਲ ਕੀਤਾ ਜਾਵੇ ਤਾਂ handle_method_request ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰੋ।

💁 ਤੁਸੀਂ ਇਹ ਕੋਡ code/pi ਜਾਂ code/virtual-device ਫੋਲਡਰ ਵਿੱਚ ਲੱਭ ਸਕਦੇ ਹੋ।

😀 ਤੁਹਾਡਾ ਮਿੱਟੀ ਨਮੀ ਸੈਂਸਰ ਪ੍ਰੋਗਰਾਮ ਤੁਹਾਡੇ IoT ਹੱਬ ਨਾਲ ਜੁੜ ਗਿਆ ਹੈ!


ਅਸਵੀਕਤੀ:
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ Co-op Translator ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਾਲਾਂਕਿ ਅਸੀਂ ਸਹੀਅਤ ਲਈ ਯਤਨਸ਼ੀਲ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।