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

11 KiB

ടൈമർ നൽകുക - വര്ച്വൽ ഐഒടി ഹാർഡ്‌വെയറും റാസ്ബെറി പിയും

പാഠവിഭാഗത്തിൽ, നിങ്ങൾ നിങ്ങളുടെ സർവറ്ലെസ്സ് കോഡ് വിളിച്ച് സംസാരത്തെ മനസിലാക്കുകയും ഫലങ്ങളെ അടിസ്ഥാനമാക്കി നിങ്ങളുടെ വര്ച്വൽ ഐഒടി ഉപകരണത്തിലോ റാസ്ബെറി പിയിലോ ടൈമർ ക്രമീകരിക്കുകയും ചെയ്യും.

ടൈമർ നൽകുക

സ്പീച്ച് ടു ടെക്സ്റ്റ് കോൾ থেকে തിരികെ ലഭിക്കുന്ന ടെക്സ്റ്റ് നിങ്ങളുടെ സർവറ്ലെസ്സ് കോഡിന് അയച്ച് LUIS പ്രോസസ്സ് ചെയ്യാൻ സമയമെടുക്കണം, ടൈമറിന്റെ സെക്കൻഡ് സംഖ്യ തിരിച്ചുകിട്ടുന്നതിന്. ഈ സെക്കൻഡ് സംഖ്യ ടൈമർ ക്രമീകരിക്കാൻ ഉപയോഗിക്കാവുന്നതാണ്.

Python ൽ threading.Timer ക്ലാസ് ഉപയോഗിച്ചാണ് ടൈമർ ക്രമീകരിക്കുന്നത്. ഈ ക്ലാസ്സ് ഒരു വൈകിയ സമയം (delay time)യും ഒരു ഫംഗ്ഷനും സ്വീകരിച്ചു, വൈകിയ ശേഷം ആ ഫംഗ്ഷൻ നിർവഹിച്ചു.

ജോലി - ടെക്സ്റ്റ് സർവറ്ലെസ്സ് ഫംഗ്ഷനിലേക്ക് അയയ്ക്കുക

  1. VS Code ല്‍ smart-timer പ്രോജക്ട് തുറക്കുക, വര്ച്വൽ ഐഒടി ഉപകരണം ഉപയോഗിക്കുന്നുണ്ടെങ്കിൽ ടെർമിനലിൽ വര്ച്വൽ എന്വയോണ്മെന്റ് ലോഡുള്ളത് ഉറപ്പാക്കുക.

  2. process_text ഫംഗ്ഷനിനു മുകളിൽ, നിങ്ങൾ സൃഷ്ടിച്ച REST എന്റ്പോയിന്റ് വിളിക്കാനുള്ള get_timer_time എന്ന ഫംഗ്ഷൻ പ്രഖ്യാപിക്കുക:

    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 സ്റ്റാറ്റസ് കൊടുക്കും.

ജോലി - ബ Background thread ല്‍ ടൈമർ ക്രമീകരിക്കുക

  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 ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. ഞങ്ങൾ ഏറ്റവും കൃത്യതയ്ക്ക് ശ്രമിക്കുന്നെങ്കിലും, യാന്ത്രിക വിവർത്തനങ്ങളിൽ പിഴവുകളും അശുദ്ധികളും ഉണ്ടാകാമെന്ന് ദയവായി അറിയുക. സ്വദേശീയ ഭാഷയിൽ ഉള്ള അറ്റച്ഛ документം അതിന്റെ അധികാരമുള്ള ഉറവിടമായി പരിഗണിക്കേണ്ടതാണ്. പ്രധാനപ്പെട്ട വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മാനവിക വിവർത്തനം ശുപാർശ ചെയ്യുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിനാൽ ഉണ്ടാകുന്ന ഏതു തെറ്റിദ്ധാരണകൾക്കും ഞങ്ങൾ ഉത്തരവാദികളല്ല.