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/6-consumer/lessons/3-spoken-feedback/single-board-computer-set-t...

12 KiB

ਟਾਈਮਰ ਸੈਟ ਕਰੋ - ਵਰਚੁਅਲ IoT ਹਾਰਡਵੇਅਰ ਅਤੇ ਰਾਸਪਬੈਰੀ ਪਾਈ

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

ਟਾਈਮਰ ਸੈਟ ਕਰੋ

ਸਪੀਚ-ਟੂ-ਟੈਕਸਟ ਕਾਲ ਤੋਂ ਵਾਪਸ ਆਉਣ ਵਾਲੇ ਟੈਕਸਟ ਨੂੰ ਤੁਹਾਡੇ ਸਰਵਰਲੈਸ ਕੋਡ ਨੂੰ ਭੇਜਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ ਤਾਂ ਜੋ LUIS ਦੁਆਰਾ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਜਾ ਸਕੇ, ਅਤੇ ਟਾਈਮਰ ਲਈ ਸਕਿੰਟ ਦੀ ਗਿਣਤੀ ਵਾਪਸ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾ ਸਕੇ। ਇਹ ਸਕਿੰਟ ਦੀ ਗਿਣਤੀ ਟਾਈਮਰ ਸੈਟ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ।

ਟਾਈਮਰ ਨੂੰ Python ਦੇ threading.Timer ਕਲਾਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸੈਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਕਲਾਸ ਇੱਕ ਡਿਲੇਅ ਸਮਾਂ ਅਤੇ ਇੱਕ ਫੰਕਸ਼ਨ ਲੈਂਦੀ ਹੈ, ਅਤੇ ਡਿਲੇਅ ਸਮਾਂ ਦੇ ਬਾਅਦ, ਫੰਕਸ਼ਨ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ।

ਕੰਮ - ਟੈਕਸਟ ਨੂੰ ਸਰਵਰਲੈਸ ਫੰਕਸ਼ਨ ਨੂੰ ਭੇਜੋ

  1. VS Code ਵਿੱਚ smart-timer ਪ੍ਰੋਜੈਕਟ ਖੋਲ੍ਹੋ, ਅਤੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਜੇ ਤੁਸੀਂ ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ ਤਾਂ ਟਰਮੀਨਲ ਵਿੱਚ ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ ਲੋਡ ਕੀਤਾ ਹੋਇਆ ਹੈ।

  2. process_text ਫੰਕਸ਼ਨ ਦੇ ਉੱਪਰ, ਇੱਕ ਫੰਕਸ਼ਨ get_timer_time ਘੋਸ਼ਿਤ ਕਰੋ ਜੋ ਤੁਸੀਂ ਬਣਾਇਆ REST ਐਂਡਪੌਇੰਟ ਨੂੰ ਕਾਲ ਕਰੇਗਾ:

    def get_timer_time(text):
    
  3. ਇਸ ਫੰਕਸ਼ਨ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ ਤਾਂ ਜੋ ਕਾਲ ਕਰਨ ਲਈ URL ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕੇ:

    url = '<URL>'
    

    <URL> ਨੂੰ ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ ਬਣਾਏ ਗਏ ਤੁਹਾਡੇ REST ਐਂਡਪੌਇੰਟ ਦੇ URL ਨਾਲ ਬਦਲੋ, ਚਾਹੇ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ 'ਤੇ ਹੋਵੇ ਜਾਂ ਕਲਾਉਡ ਵਿੱਚ।

  4. ਇਸ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ ਤਾਂ ਜੋ JSON ਦੇ ਰੂਪ ਵਿੱਚ ਕਾਲ ਵਿੱਚ ਭੇਜੀ ਜਾਣ ਵਾਲੀ ਟੈਕਸਟ ਨੂੰ ਇੱਕ ਪ੍ਰਾਪਰਟੀ ਵਜੋਂ ਸੈਟ ਕੀਤਾ ਜਾ ਸਕੇ:

    body = {
        'text': text
    }
    
    response = requests.post(url, json=body)
    
  5. ਇਸ ਦੇ ਹੇਠਾਂ, ਰਿਸਪਾਂਸ ਪੇਲੋਡ ਤੋਂ seconds ਪ੍ਰਾਪਤ ਕਰੋ, ਅਤੇ ਜੇ ਕਾਲ ਫੇਲ੍ਹ ਹੋਈ ਤਾਂ 0 ਵਾਪਸ ਕਰੋ:

    if response.status_code != 200:
        return 0
    
    payload = response.json()
    return payload['seconds']
    

    ਸਫਲ HTTP ਕਾਲ 200 ਰੇਂਜ ਵਿੱਚ ਸਟੇਟਸ ਕੋਡ ਵਾਪਸ ਕਰਦੇ ਹਨ, ਅਤੇ ਤੁਹਾਡਾ ਸਰਵਰਲੈਸ ਕੋਡ 200 ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੇ ਟੈਕਸਟ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਗਿਆ ਅਤੇ ਸੈਟ ਟਾਈਮਰ ਇਰਾਦਾ ਵਜੋਂ ਪਛਾਣਿਆ ਗਿਆ।

ਕੰਮ - ਬੈਕਗ੍ਰਾਊਂਡ ਥ੍ਰੈਡ 'ਤੇ ਟਾਈਮਰ ਸੈਟ ਕਰੋ

  1. ਫਾਇਲ ਦੇ ਉੱਪਰ ਹੇਠਾਂ ਦਿੱਤਾ ਇਮਪੋਰਟ ਸਟੇਟਮੈਂਟ ਸ਼ਾਮਲ ਕਰੋ ਤਾਂ ਜੋ Python ਲਾਇਬ੍ਰੇਰੀ threading ਨੂੰ ਇਮਪੋਰਟ ਕੀਤਾ ਜਾ ਸਕੇ:

    import threading
    
  2. process_text ਫੰਕਸ਼ਨ ਦੇ ਉੱਪਰ, ਇੱਕ ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਕਰੋ ਜੋ ਜਵਾਬ ਬੋਲਣ ਲਈ ਹੈ। ਇਸ ਸਮੇਂ ਇਹ ਸਿਰਫ਼ ਕੰਸੋਲ 'ਤੇ ਲਿਖੇਗਾ, ਪਰ ਇਸ ਪਾਠ ਵਿੱਚ ਬਾਅਦ ਵਿੱਚ ਇਹ ਟੈਕਸਟ ਬੋਲਿਆ ਜਾਵੇਗਾ।

    def say(text):
        print(text)
    
  3. ਇਸ ਦੇ ਹੇਠਾਂ ਇੱਕ ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਕਰੋ ਜੋ ਟਾਈਮਰ ਦੁਆਰਾ ਕਾਲ ਕੀਤਾ ਜਾਵੇਗਾ ਤਾਂ ਜੋ ਐਲਾਨ ਕੀਤਾ ਜਾ ਸਕੇ ਕਿ ਟਾਈਮਰ ਪੂਰਾ ਹੋ ਗਿਆ ਹੈ:

    def announce_timer(minutes, seconds):
        announcement = 'Times up on your '
        if minutes > 0:
            announcement += f'{minutes} minute '
        if seconds > 0:
            announcement += f'{seconds} second '
        announcement += 'timer.'
        say(announcement)
    

    ਇਹ ਫੰਕਸ਼ਨ ਟਾਈਮਰ ਲਈ ਮਿੰਟ ਅਤੇ ਸਕਿੰਟ ਦੀ ਗਿਣਤੀ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਵਾਕ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਦੱਸਦਾ ਹੈ ਕਿ ਟਾਈਮਰ ਪੂਰਾ ਹੋ ਗਿਆ ਹੈ। ਇਹ ਮਿੰਟ ਅਤੇ ਸਕਿੰਟ ਦੀ ਗਿਣਤੀ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ ਅਤੇ ਸਿਰਫ਼ ਉਹ ਸਮਾਂ ਯੂਨਿਟ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਇੱਕ ਗਿਣਤੀ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ, ਜੇ ਮਿੰਟ ਦੀ ਗਿਣਤੀ 0 ਹੈ ਤਾਂ ਸਿਰਫ਼ ਸਕਿੰਟ ਨੂੰ ਸੁਨੇਹੇ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਵਾਕ ਫਿਰ say ਫੰਕਸ਼ਨ ਨੂੰ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ।

  4. ਇਸ ਦੇ ਹੇਠਾਂ, ਹੇਠਾਂ ਦਿੱਤਾ create_timer ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਕਰੋ ਜੋ ਟਾਈਮਰ ਬਣਾਉਂਦਾ ਹੈ:

    def create_timer(total_seconds):
        minutes, seconds = divmod(total_seconds, 60)
        threading.Timer(total_seconds, announce_timer, args=[minutes, seconds]).start()
    

    ਇਹ ਫੰਕਸ਼ਨ ਟਾਈਮਰ ਲਈ ਕੁੱਲ ਸਕਿੰਟ ਦੀ ਗਿਣਤੀ ਲੈਂਦਾ ਹੈ ਜੋ ਕਮਾਂਡ ਵਿੱਚ ਭੇਜੀ ਜਾਵੇਗੀ, ਅਤੇ ਇਸ ਨੂੰ ਮਿੰਟ ਅਤੇ ਸਕਿੰਟ ਵਿੱਚ ਬਦਲਦਾ ਹੈ। ਫਿਰ ਇਹ ਕੁੱਲ ਸਕਿੰਟ ਦੀ ਗਿਣਤੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਟਾਈਮਰ ਆਬਜੈਕਟ ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ, announce_timer ਫੰਕਸ਼ਨ ਅਤੇ ਮਿੰਟ ਅਤੇ ਸਕਿੰਟ ਵਾਲੀ ਸੂਚੀ ਨੂੰ ਪਾਸ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਟਾਈਮਰ ਖਤਮ ਹੁੰਦਾ ਹੈ, ਇਹ announce_timer ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰੇਗਾ ਅਤੇ ਇਸ ਸੂਚੀ ਦੇ ਸਮੱਗਰੀ ਨੂੰ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਪਾਸ ਕਰੇਗਾ - ਇਸ ਲਈ ਸੂਚੀ ਦਾ ਪਹਿਲਾ ਆਈਟਮ minutes ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਪਾਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਦੂਜਾ ਆਈਟਮ seconds ਪੈਰਾਮੀਟਰ ਵਜੋਂ।

  5. create_timer ਫੰਕਸ਼ਨ ਦੇ ਅੰਤ ਵਿੱਚ, ਕੁਝ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ ਜੋ ਯੂਜ਼ਰ ਨੂੰ ਬੋਲਣ ਲਈ ਸੁਨੇਹਾ ਬਣਾਉਂਦਾ ਹੈ ਤਾਂ ਜੋ ਐਲਾਨ ਕੀਤਾ ਜਾ ਸਕੇ ਕਿ ਟਾਈਮਰ ਸ਼ੁਰੂ ਹੋ ਰਿਹਾ ਹੈ:

    announcement = ''
    if minutes > 0:
        announcement += f'{minutes} minute '
    if seconds > 0:
        announcement += f'{seconds} second '    
    announcement += 'timer started.'
    say(announcement)
    

    ਫਿਰ, ਇਹ ਸਿਰਫ਼ ਉਹ ਸਮਾਂ ਯੂਨਿਟ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਇੱਕ ਵੈਲਿਊ ਹੈ। ਇਹ ਵਾਕ ਫਿਰ say ਫੰਕਸ਼ਨ ਨੂੰ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ।

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

    seconds = get_timer_time(text)
    if seconds > 0:
        create_timer(seconds)
    

    ਟਾਈਮਰ ਸਿਰਫ਼ ਉਸ ਸਮੇਂ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਸਕਿੰਟ ਦੀ ਗਿਣਤੀ 0 ਤੋਂ ਵੱਧ ਹੁੰਦੀ ਹੈ।

  7. ਐਪ ਚਲਾਓ, ਅਤੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਫੰਕਸ਼ਨ ਐਪ ਵੀ ਚਲ ਰਹੀ ਹੈ। ਕੁਝ ਟਾਈਮਰ ਸੈਟ ਕਰੋ, ਅਤੇ ਆਉਟਪੁੱਟ ਦਿਖਾਏਗਾ ਕਿ ਟਾਈਮਰ ਸੈਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਅਤੇ ਫਿਰ ਦਿਖਾਏਗਾ ਜਦੋਂ ਇਹ ਖਤਮ ਹੁੰਦਾ ਹੈ:

    pi@raspberrypi:~/smart-timer $ python3 app.py 
    Set a two minute 27 second timer.
    2 minute 27 second timer started.
    Times up on your 2 minute 27 second timer.
    

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

😀 ਤੁਹਾਡਾ ਟਾਈਮਰ ਪ੍ਰੋਗਰਾਮ ਸਫਲ ਰਿਹਾ!


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