# टाइमर सेट गर्नुहोस् - भर्चुअल IoT हार्डवेयर र रास्पबेरी पाई यस पाठको यस भागमा, तपाईंले आफ्नो serverless कोडलाई कल गरेर भाषणलाई बुझ्ने प्रयास गर्नुहुनेछ, र परिणामको आधारमा आफ्नो भर्चुअल IoT उपकरण वा रास्पबेरी पाईमा टाइमर सेट गर्नुहुनेछ। ## टाइमर सेट गर्नुहोस् भाषणलाई पाठमा रूपान्तरण गर्ने कलबाट फर्किएको पाठलाई तपाईंको serverless कोडमा पठाउन आवश्यक छ, जसले LUIS मार्फत प्रक्रिया गरेर टाइमरका लागि सेकेन्डको संख्या फिर्ता ल्याउँछ। यो सेकेन्डको संख्या टाइमर सेट गर्न प्रयोग गर्न सकिन्छ। टाइमरहरू Python को `threading.Timer` क्लास प्रयोग गरेर सेट गर्न सकिन्छ। यो क्लासले ढिलाइ समय र एउटा फङ्सन लिन्छ, र ढिलाइ समयपछि फङ्सन कार्यान्वयन हुन्छ। ### कार्य - पाठलाई serverless फङ्सनमा पठाउनुहोस् 1. VS Code मा `smart-timer` प्रोजेक्ट खोल्नुहोस्, र यदि तपाईं भर्चुअल IoT उपकरण प्रयोग गर्दै हुनुहुन्छ भने टर्मिनलमा भर्चुअल वातावरण लोड भएको सुनिश्चित गर्नुहोस्। 1. `process_text` फङ्सनको माथि, `get_timer_time` नामक फङ्सन घोषणा गर्नुहोस्, जसले तपाईंले बनाएको REST endpoint कल गर्नेछ: ```python def get_timer_time(text): ``` 1. यो फङ्सनमा कल गर्नको लागि URL परिभाषित गर्न निम्न कोड थप्नुहोस्: ```python url = '' ``` `` लाई तपाईंले अघिल्लो पाठमा निर्माण गर्नुभएको REST endpoint को 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 दायरामा स्टाटस कोड फिर्ता गर्छन्, र तपाईंको serverless कोडले पाठलाई प्रक्रिया गरेर सेट टाइमर आशयको रूपमा पहिचान गरेमा 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) फोल्डरमा फेला पार्न सक्नुहुन्छ। 😀 तपाईंको टाइमर प्रोग्राम सफल भयो! --- **अस्वीकरण**: यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।