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

6.2 KiB

Nastavení časovače - Virtuální IoT zařízení a Raspberry Pi

V této části lekce zavoláte svůj serverless kód, abyste porozuměli řeči, a nastavíte časovač na svém virtuálním IoT zařízení nebo Raspberry Pi na základě výsledků.

Nastavení časovače

Text, který se vrátí z volání převodu řeči na text, musí být odeslán do vašeho serverless kódu, aby byl zpracován pomocí LUIS, který vrátí počet sekund pro časovač. Tento počet sekund může být použit k nastavení časovače.

Časovače lze nastavit pomocí třídy Python threading.Timer. Tato třída přijímá dobu zpoždění a funkci, která se po uplynutí doby zpoždění vykoná.

Úkol - odeslání textu do serverless funkce

  1. Otevřete projekt smart-timer ve VS Code a ujistěte se, že je v terminálu načteno virtuální prostředí, pokud používáte virtuální IoT zařízení.

  2. Nad funkcí process_text deklarujte funkci nazvanou get_timer_time, která bude volat REST endpoint, který jste vytvořili:

    def get_timer_time(text):
    
  3. Přidejte do této funkce následující kód, který definuje URL pro volání:

    url = '<URL>'
    

    Nahraďte <URL> URL adresou vašeho REST endpointu, který jste vytvořili v předchozí lekci, buď na svém počítači, nebo v cloudu.

  4. Přidejte následující kód, který nastaví text jako vlastnost předanou jako JSON při volání:

    body = {
        'text': text
    }
    
    response = requests.post(url, json=body)
    
  5. Pod tímto kódem získejte seconds z odpovědi payloadu, přičemž vraťte 0, pokud volání selhalo:

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

    Úspěšná HTTP volání vracejí status kód v rozmezí 200, a váš serverless kód vrací 200, pokud byl text zpracován a rozpoznán jako záměr nastavení časovače.

Úkol - nastavení časovače na pozadí

  1. Přidejte následující import na začátek souboru, abyste importovali knihovnu Python threading:

    import threading
    
  2. Nad funkcí process_text přidejte funkci pro mluvení odpovědi. Prozatím bude pouze zapisovat do konzole, ale později v této lekci bude text mluvený.

    def say(text):
        print(text)
    
  3. Pod tímto kódem přidejte funkci, která bude volána časovačem, aby oznámila, ž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)
    

    Tato funkce přijímá počet minut a sekund pro časovač a sestavuje větu, která oznamuje, že časovač skončil. Zkontroluje počet minut a sekund a zahrne pouze ty jednotky času, které mají hodnotu. Například pokud je počet minut 0, zahrnou se pouze sekundy. Tato věta je poté odeslána do funkce say.

  4. Pod tímto kódem přidejte následující funkci create_timer pro vytvoření časovače:

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

    Tato funkce přijímá celkový počet sekund pro časovač, který bude odeslán v příkazu, a převádí je na minuty a sekundy. Poté vytvoří a spustí objekt časovače pomocí celkového počtu sekund, přičemž předá funkci announce_timer a seznam obsahující minuty a sekundy. Když časovač vyprší, zavolá funkci announce_timer a předá obsah tohoto seznamu jako parametry - první položka v seznamu se předá jako parametr minutes a druhá položka jako parametr seconds.

  5. Na konec funkce create_timer přidejte kód, který sestaví zprávu, která bude uživateli oznámena, že časovač začíná:

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

    Opět zahrnuje pouze jednotky času, které mají hodnotu. Tato věta je poté odeslána do funkce say.

  6. Na konec funkce process_text přidejte následující kód, který získá čas pro časovač z textu a poté vytvoří časovač:

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

    Časovač se vytvoří pouze tehdy, pokud je počet sekund větší než 0.

  7. Spusťte aplikaci a ujistěte se, že funkce aplikace také běží. Nastavte několik časovačů a výstup ukáže, že časovač byl nastaven, a poté ukáže, kdy 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 najdete ve složce code-timer/pi nebo code-timer/virtual-iot-device.

😀 Váš program pro časovač byl úspěšný!


Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.