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.
131 lines
13 KiB
131 lines
13 KiB
# டைமரை அமைக்கவும் - மெய்நிகர் IoT ஹார்ட்வேரும் Raspberry Pi-யும்
|
|
|
|
இந்த பாடத்தின் இந்த பகுதியில், உங்கள் சர்வர்லெஸ் கோடுகளை அழைத்து பேச்சை புரிந்து கொள்ளவும், முடிவுகளின் அடிப்படையில் உங்கள் மெய்நிகர் IoT சாதனத்தில் அல்லது Raspberry Pi-யில் டைமரை அமைக்கவும்.
|
|
|
|
## டைமரை அமைக்கவும்
|
|
|
|
பேச்சை உரை மாற்றும் அழைப்பில் இருந்து வரும் உரை, LUIS மூலம் செயலாக்கப்படுவதற்காக உங்கள் சர்வர்லெஸ் கோடுக்கு அனுப்பப்பட வேண்டும், டைமருக்கான விநாடிகளின் எண்ணிக்கையை பெற. இந்த விநாடிகளின் எண்ணிக்கையை டைமரை அமைக்க பயன்படுத்தலாம்.
|
|
|
|
Python `threading.Timer` வகுப்பைப் பயன்படுத்தி டைமரை அமைக்கலாம். இந்த வகுப்பு ஒரு தாமத நேரத்தையும் ஒரு செயல்பாட்டையும் எடுக்கிறது, மேலும் தாமத நேரத்திற்குப் பிறகு அந்த செயல்பாடு செயல்படுத்தப்படுகிறது.
|
|
|
|
### பணிகள் - உரையை சர்வர்லெஸ் செயல்பாட்டிற்கு அனுப்பவும்
|
|
|
|
1. VS Code-ல் `smart-timer` திட்டத்தை திறக்கவும், மேலும் நீங்கள் மெய்நிகர் IoT சாதனத்தைப் பயன்படுத்தினால், டெர்மினலில் மெய்நிகர் சூழல் ஏற்றப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்.
|
|
|
|
1. `process_text` செயல்பாட்டின் மேல், நீங்கள் உருவாக்கிய REST இறுதிப்புள்ளியை அழைக்க `get_timer_time` என்ற செயல்பாட்டை அறிவிக்கவும்:
|
|
|
|
```python
|
|
def get_timer_time(text):
|
|
```
|
|
|
|
1. இந்த செயல்பாட்டில் அழைக்க URL-ஐ வரையறுக்க கீழே உள்ள கோடுகளை சேர்க்கவும்:
|
|
|
|
```python
|
|
url = '<URL>'
|
|
```
|
|
|
|
நீங்கள் கடந்த பாடத்தில் உருவாக்கிய உங்கள் REST இறுதிப்புள்ளியின் URL-ஐ `<URL>`-இல் மாற்றவும், είτε உங்கள் கணினியில் அல்லது மேகத்தில்.
|
|
|
|
1. JSON-ஆக அனுப்பப்படும் உரையை ஒரு சொத்தாக அமைக்க கீழே உள்ள கோடுகளை சேர்க்கவும்:
|
|
|
|
```python
|
|
body = {
|
|
'text': text
|
|
}
|
|
|
|
response = requests.post(url, json=body)
|
|
```
|
|
|
|
1. இதற்குக் கீழே, பதிலின் payload-இல் இருந்து `seconds`-ஐ பெறவும், அழைப்பு தோல்வியடைந்தால் 0-ஐ திருப்பவும்:
|
|
|
|
```python
|
|
if response.status_code != 200:
|
|
return 0
|
|
|
|
payload = response.json()
|
|
return payload['seconds']
|
|
```
|
|
|
|
வெற்றிகரமான HTTP அழைப்புகள் 200 வரம்பில் ஒரு நிலை குறியீட்டை திருப்புகின்றன, மேலும் உங்கள் சர்வர்லெஸ் கோடு உரை செயலாக்கப்பட்டு டைமரை அமைக்கும் நோக்கமாக அடையாளம் காணப்பட்டால் 200-ஐ திருப்புகிறது.
|
|
|
|
### பணிகள் - பின்னணி திரையில் டைமரை அமைக்கவும்
|
|
|
|
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](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையை பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. எங்கள் தரத்தை உறுதிப்படுத்த முயற்சிக்கிறோம், ஆனால் தானியக்க மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கக்கூடும் என்பதை கவனத்தில் கொள்ளவும். அதன் தாய்மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கங்களுக்கு நாங்கள் பொறுப்பல்ல. |