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

6.1 KiB

Nastavenie časovača - Virtuálne IoT zariadenie a Raspberry Pi

V tejto časti lekcie zavoláte svoj serverless kód na rozpoznanie reči a nastavíte časovač na vašom virtuálnom IoT zariadení alebo Raspberry Pi na základe výsledkov.

Nastavenie časovača

Text, ktorý sa vráti z volania reči na text, je potrebné odoslať do vášho serverless kódu, aby ho spracoval LUIS a získal počet sekúnd pre časovač. Tento počet sekúnd sa potom použije na nastavenie časovača.

Časovače je možné nastaviť pomocou triedy Python threading.Timer. Táto trieda prijíma čas oneskorenia a funkciu, ktorá sa vykoná po uplynutí času oneskorenia.

Úloha - odoslanie textu do serverless funkcie

  1. Otvorte projekt smart-timer vo VS Code a uistite sa, že virtuálne prostredie je načítané v termináli, ak používate virtuálne IoT zariadenie.

  2. Nad funkciou process_text deklarujte funkciu s názvom get_timer_time, ktorá zavolá REST endpoint, ktorý ste vytvorili:

    def get_timer_time(text):
    
  3. Pridajte do tejto funkcie nasledujúci kód na definovanie URL adresy, ktorú treba zavolať:

    url = '<URL>'
    

    Nahraďte <URL> URL adresou vášho REST endpointu, ktorý ste vytvorili v predchádzajúcej lekcii, buď na vašom počítači alebo v cloude.

  4. Pridajte nasledujúci kód na nastavenie textu ako vlastnosti odoslanej vo formáte JSON:

    body = {
        'text': text
    }
    
    response = requests.post(url, json=body)
    
  5. Pod týmto kódom získajte seconds z odpovede payloadu, pričom vráťte 0, ak volanie zlyhalo:

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

    Úspešné HTTP volania vracajú stavový kód v rozsahu 200, a váš serverless kód vracia 200, ak bol text spracovaný a rozpoznaný ako úmysel nastavenia časovača.

Úloha - nastavenie časovača na pozadí

  1. Pridajte nasledujúci import na začiatok súboru na importovanie knižnice threading v Pythone:

    import threading
    
  2. Nad funkciou process_text pridajte funkciu na vyslovenie odpovede. Zatiaľ bude len zapisovať do konzoly, ale neskôr v tejto lekcii bude hovoriť text.

    def say(text):
        print(text)
    
  3. Pod týmto pridajte funkciu, ktorú zavolá časovač na oznámenie, že časovač skončil:

    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)
    

    Táto funkcia prijíma počet minút a sekúnd pre časovač a vytvára vetu, ktorá oznámi, že časovač skončil. Skontroluje počet minút a sekúnd a zahrnie iba tie časové jednotky, ktoré majú hodnotu. Napríklad, ak je počet minút 0, zahrnú sa iba sekundy. Táto veta sa potom odošle do funkcie say.

  4. Pod týmto pridajte nasledujúcu funkciu create_timer na vytvorenie časovača:

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

    Táto funkcia prijíma celkový počet sekúnd pre časovač, ktorý bude odoslaný v príkaze, a konvertuje ich na minúty a sekundy. Potom vytvorí a spustí objekt časovača pomocou celkového počtu sekúnd, pričom odovzdá funkciu announce_timer a zoznam obsahujúci minúty a sekundy. Keď časovač vyprší, zavolá funkciu announce_timer a odovzdá obsah tohto zoznamu ako parametre - prvá položka v zozname sa odovzdá ako parameter minutes a druhá položka ako parameter seconds.

  5. Na koniec funkcie create_timer pridajte kód na vytvorenie správy, ktorá sa oznámi používateľovi, že časovač sa spúšťa:

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

    Opäť sa zahrnie iba tá časová jednotka, ktorá má hodnotu. Táto veta sa potom odošle do funkcie say.

  6. Pridajte nasledujúce na koniec funkcie process_text, aby ste získali čas pre časovač z textu a potom vytvorili časovač:

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

    Časovač sa vytvorí iba vtedy, ak je počet sekúnd väčší ako 0.

  7. Spustite aplikáciu a uistite sa, že funkčná aplikácia tiež beží. Nastavte niekoľko časovačov a výstup ukáže, že časovač bol nastavený, a potom ukáže, keď vyprší:

    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.
    

💁 Tento kód nájdete v priečinku code-timer/pi alebo code-timer/virtual-iot-device.

😀 Váš program na časovač bol úspešný!


Upozornenie:
Tento dokument bol preložený pomocou služby AI prekladu Co-op Translator. Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.