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.
133 lines
11 KiB
133 lines
11 KiB
# ടൈമർ നൽകുക - വര്ച്വൽ ഐഒടി ഹാർഡ്വെയറും റാസ്ബെറി പിയും
|
|
|
|
പാഠവിഭാഗത്തിൽ, നിങ്ങൾ നിങ്ങളുടെ സർവറ്ലെസ്സ് കോഡ് വിളിച്ച് സംസാരത്തെ മനസിലാക്കുകയും ഫലങ്ങളെ അടിസ്ഥാനമാക്കി നിങ്ങളുടെ വര്ച്വൽ ഐഒടി ഉപകരണത്തിലോ റാസ്ബെറി പിയിലോ ടൈമർ ക്രമീകരിക്കുകയും ചെയ്യും.
|
|
|
|
## ടൈമർ നൽകുക
|
|
|
|
സ്പീച്ച് ടു ടെക്സ്റ്റ് കോൾ থেকে തിരികെ ലഭിക്കുന്ന ടെക്സ്റ്റ് നിങ്ങളുടെ സർവറ്ലെസ്സ് കോഡിന് അയച്ച് LUIS പ്രോസസ്സ് ചെയ്യാൻ സമയമെടുക്കണം, ടൈമറിന്റെ സെക്കൻഡ് സംഖ്യ തിരിച്ചുകിട്ടുന്നതിന്. ഈ സെക്കൻഡ് സംഖ്യ ടൈമർ ക്രമീകരിക്കാൻ ഉപയോഗിക്കാവുന്നതാണ്.
|
|
|
|
Python ൽ `threading.Timer` ക്ലാസ് ഉപയോഗിച്ചാണ് ടൈമർ ക്രമീകരിക്കുന്നത്. ഈ ക്ലാസ്സ് ഒരു വൈകിയ സമയം (delay time)യും ഒരു ഫംഗ്ഷനും സ്വീകരിച്ചു, വൈകിയ ശേഷം ആ ഫംഗ്ഷൻ നിർവഹിച്ചു.
|
|
|
|
### ജോലി - ടെക്സ്റ്റ് സർവറ്ലെസ്സ് ഫംഗ്ഷനിലേക്ക് അയയ്ക്കുക
|
|
|
|
1. VS Code ല് `smart-timer` പ്രോജക്ട് തുറക്കുക, വര്ച്വൽ ഐഒടി ഉപകരണം ഉപയോഗിക്കുന്നുണ്ടെങ്കിൽ ടെർമിനലിൽ വര്ച്വൽ എന്വയോണ്മെന്റ് ലോഡുള്ളത് ഉറപ്പാക്കുക.
|
|
|
|
1. `process_text` ഫംഗ്ഷനിനു മുകളിൽ, നിങ്ങൾ സൃഷ്ടിച്ച REST എന്റ്പോയിന്റ് വിളിക്കാനുള്ള `get_timer_time` എന്ന ഫംഗ്ഷൻ പ്രഖ്യാപിക്കുക:
|
|
|
|
```python
|
|
def get_timer_time(text):
|
|
```
|
|
|
|
1. ഈ ഫംഗ്ഷനിൽ URL നിർവ്വചിക്കാൻ താഴെയുള്ള കോഡ് ചേർക്കുക:
|
|
|
|
```python
|
|
url = '<URL>'
|
|
```
|
|
|
|
`<URL>` -ൽ നിങ്ങളുടെ കഴിഞ്ഞ പാഠത്തിൽ നിർമ്മിച്ച REST എന്റ്പോയിന്റിന്റെ URL കൾ മാറ്റുക, അത് നിങ്ങളുടെ കമ്പ്യൂട്ടറിലോ ക്ലൗഡിലോ ആയിരിക്കും.
|
|
|
|
1. ടെക്സ്റ്റ് JSON ആയി ഫംഗ്ഷനിലേക്ക് പാസ്സ് ചെയ്യുന്നതിന് താഴെ കാണിച്ചിരിക്കുന്ന കോഡ് ചേർക്കുക:
|
|
|
|
```python
|
|
body = {
|
|
'text': text
|
|
}
|
|
|
|
response = requests.post(url, json=body)
|
|
```
|
|
|
|
1. ഇതിന് താഴെ, റസ്പോൺസ് പേലോഡിൽ നിന്നുള്ള `seconds` പകർന്നു, കാൾ പരാജയപ്പെട്ടാൽ 0 തിരികെ നൽകുക:
|
|
|
|
```python
|
|
if response.status_code != 200:
|
|
return 0
|
|
|
|
payload = response.json()
|
|
return payload['seconds']
|
|
```
|
|
|
|
വിജയകരമായ HTTP കോൾ 200 രേഞ്ചിലുള്ള സ്റ്റാറ്റസ് കോഡ് അടക്കം നൽകും, നിങ്ങളുടെ സർവറ്ലെസ്സ് കോഡ് ടെക്സ്റ്റ് സജ്ജമാക്കി ടൈമർ ഇൻറന്റ് തിരിച്ചറിയുവാൻ 200 സ്റ്റാറ്റസ് കൊടുക്കും.
|
|
|
|
### ജോലി - ബ Background thread ല് ടൈമർ ക്രമീകരിക്കുക
|
|
|
|
1. ഫയലിന്റെ മുകളിൽ Python threading ലൈബ്രറി ഇംപോർട്ട് ചെയ്യാൻ താഴെയുള്ള കോഡ് ചേർക്കുക:
|
|
|
|
```python
|
|
import threading
|
|
```
|
|
|
|
1. `process_text` ഫംഗ്ഷനിനു മുകളിൽ ഒരു പ്രതികരണം പറയാനുള്ള ഫംഗ്ഷൻ ചേർക്കുക. ഇപ്പോൾ ഇത് കൺസോളിലേക്ക് എഴുതും, പിന്നീട് ഈ പാഠത്തിൽ ഇത് സംസാരിക്കും.
|
|
|
|
```python
|
|
def say(text):
|
|
print(text)
|
|
```
|
|
|
|
1. ഇതിന് താഴെ, ടൈമർ പൂർത്തിയായതായി അറിയിക്കുന്നതിനുള്ള ഒരു ഫംഗ്ഷൻ ചേർക്കുക:
|
|
|
|
```python
|
|
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` ഫംഗ്ഷനിലേക്ക് അയക്കും.
|
|
|
|
1. ഇതിന് താഴെ, ടൈമർ സൃഷ്ടിക്കാൻ താഴെ കാണുന്ന `create_timer` ഫംഗ്ഷൻ ചേർക്കുക:
|
|
|
|
```python
|
|
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` ആയി പാസാക്കും.
|
|
|
|
1. `create_timer` ഫംഗ്ഷൻ അവസാനം, ടൈമർ ആരംഭിക്കുന്ന സന്ദേശം പറയുന്നതിന് താഴെ കാണുന്ന കോഡ് ചേർക്കുക:
|
|
|
|
```python
|
|
announcement = ''
|
|
if minutes > 0:
|
|
announcement += f'{minutes} minute '
|
|
if seconds > 0:
|
|
announcement += f'{seconds} second '
|
|
announcement += 'timer started.'
|
|
say(announcement)
|
|
```
|
|
|
|
ഇതും സമയ യൂണിറ്റിനും ഒരു മൂല്യമുണ്ടെങ്കിൽ മാത്രമേ ഉൾക്കുറിപ്പ് നൽകൂ. ഈ വാചകവും `say` ഫംഗ്ഷനിലേക്ക് അയക്കും.
|
|
|
|
1. `process_text` ഫംഗ്ഷൻ അവസാനം, ടെക്സ്റ്റിൽ നിന്നുള്ള ടൈമറിന്റെ സമയം പിടിച്ച് ടൈമർ സൃഷ്ടിക്കുന്ന കോഡ് ചേർക്കുക:
|
|
|
|
```python
|
|
seconds = get_timer_time(text)
|
|
if seconds > 0:
|
|
create_timer(seconds)
|
|
```
|
|
|
|
സെക്കൻഡ് സംഖ്യ 0-ൽ വലിയതായിരിക്കും മാത്രമേ ടൈമർ സൃഷ്ടിക്കപ്പെടൂ.
|
|
|
|
1. ആപ്പ് রান്ചെയ്യുക, ഫംഗ്ഷൻ ആപ്പും നടക്കുന്നതായിരിക്കണം. ചില ടൈമറുകൾ സജ്ജമാക്കി, ടൈമർ ക്രമീകരിക്കുന്നതിനും കാലഹരണപ്പെടുന്നതിനും ഔട്ട്പുട്ട് കാണിക്കുക:
|
|
|
|
```output
|
|
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](../../../../../6-consumer/lessons/3-spoken-feedback/code-timer/pi) അല്ലെങ്കിൽ [code-timer/virtual-iot-device](../../../../../6-consumer/lessons/3-spoken-feedback/code-timer/virtual-iot-device) ഫോൾഡറുകളിൽ ലഭ്യമാണ്.
|
|
|
|
😀 നിങ്ങളുടെ ടൈമർ പ്രോഗ്രാം വിജയകരമായി പൂർത്തിയായി!
|
|
|
|
---
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
**അസമ്മതിപത്രം**:
|
|
ഈ ഡോക്യുമെന്റ് AI വിവർത്തന സേവനമായ [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. ഞങ്ങൾ ഏറ്റവും കൃത്യതയ്ക്ക് ശ്രമിക്കുന്നെങ്കിലും, യാന്ത്രിക വിവർത്തനങ്ങളിൽ പിഴവുകളും അശുദ്ധികളും ഉണ്ടാകാമെന്ന് ദയവായി അറിയുക. സ്വദേശീയ ഭാഷയിൽ ഉള്ള അറ്റച്ഛ документം അതിന്റെ അധികാരമുള്ള ഉറവിടമായി പരിഗണിക്കേണ്ടതാണ്. പ്രധാനപ്പെട്ട വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മാനവിക വിവർത്തനം ശുപാർശ ചെയ്യുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിനാൽ ഉണ്ടാകുന്ന ഏതു തെറ്റിദ്ധാരണകൾക്കും ഞങ്ങൾ ഉത്തരവാദികളല്ല.
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |