6.2 KiB
Postavite mjerač vremena - Virtualni IoT uređaj i Raspberry Pi
U ovom dijelu lekcije pozvat ćete svoj serverless kod kako biste razumjeli govor i postavili mjerač vremena na svom virtualnom IoT uređaju ili Raspberry Pi-u na temelju rezultata.
Postavite mjerač vremena
Tekst koji se vraća iz poziva za pretvaranje govora u tekst treba poslati vašem serverless kodu kako bi ga obradio LUIS, koji će vratiti broj sekundi za mjerač vremena. Ovaj broj sekundi može se koristiti za postavljanje mjerača vremena.
Mjerači vremena mogu se postaviti pomoću Python klase threading.Timer
. Ova klasa uzima vrijeme odgode i funkciju, a nakon isteka vremena odgode funkcija se izvršava.
Zadatak - pošaljite tekst serverless funkciji
-
Otvorite projekt
smart-timer
u VS Code-u i osigurajte da je virtualno okruženje učitano u terminalu ako koristite virtualni IoT uređaj. -
Iznad funkcije
process_text
, deklarirajte funkciju nazvanuget_timer_time
za pozivanje REST krajnje točke koju ste kreirali:def get_timer_time(text):
-
Dodajte sljedeći kod u ovu funkciju kako biste definirali URL za poziv:
url = '<URL>'
Zamijenite
<URL>
s URL-om vaše REST krajnje točke koju ste izgradili u prošloj lekciji, bilo na vašem računalu ili u oblaku. -
Dodajte sljedeći kod kako biste postavili tekst kao svojstvo koje se prosljeđuje kao JSON u pozivu:
body = { 'text': text } response = requests.post(url, json=body)
-
Ispod toga, dohvatite
seconds
iz odgovora, vraćajući 0 ako poziv nije uspio:if response.status_code != 200: return 0 payload = response.json() return payload['seconds']
Uspješni HTTP pozivi vraćaju statusni kod u rasponu 200, a vaš serverless kod vraća 200 ako je tekst obrađen i prepoznat kao namjera za postavljanje mjerača vremena.
Zadatak - postavite mjerač vremena u pozadinskom threadu
-
Dodajte sljedeću naredbu za uvoz na vrh datoteke kako biste uvezli Python biblioteku threading:
import threading
-
Iznad funkcije
process_text
, dodajte funkciju za izgovaranje odgovora. Za sada će samo ispisivati na konzolu, ali kasnije u ovoj lekciji će izgovarati tekst.def say(text): print(text)
-
Ispod toga dodajte funkciju koja će biti pozvana od strane mjerača vremena kako bi najavila da je mjerač vremena završen:
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)
Ova funkcija uzima broj minuta i sekundi za mjerač vremena i gradi rečenicu koja kaže da je mjerač vremena završen. Provjerit će broj minuta i sekundi te uključiti samo jedinicu vremena koja ima vrijednost. Na primjer, ako je broj minuta 0, tada se u poruci uključuju samo sekunde. Ova rečenica se zatim šalje funkciji
say
. -
Ispod toga, dodajte sljedeću funkciju
create_timer
za kreiranje mjerača vremena:def create_timer(total_seconds): minutes, seconds = divmod(total_seconds, 60) threading.Timer(total_seconds, announce_timer, args=[minutes, seconds]).start()
Ova funkcija uzima ukupan broj sekundi za mjerač vremena koji će biti poslan u naredbi i pretvara ga u minute i sekunde. Zatim kreira i pokreće objekt mjerača vremena koristeći ukupan broj sekundi, prosljeđujući funkciju
announce_timer
i listu koja sadrži minute i sekunde. Kada mjerač vremena istekne, pozvat će funkcijuannounce_timer
i proslijediti sadržaj ove liste kao parametre - tako da prvi element liste bude proslijeđen kao parametarminutes
, a drugi element kao parametarseconds
. -
Na kraj funkcije
create_timer
dodajte kod za izgradnju poruke koja će se izgovoriti korisniku kako bi najavila da mjerač vremena počinje:announcement = '' if minutes > 0: announcement += f'{minutes} minute ' if seconds > 0: announcement += f'{seconds} second ' announcement += 'timer started.' say(announcement)
Opet, uključuje se samo jedinica vremena koja ima vrijednost. Ova rečenica se zatim šalje funkciji
say
. -
Dodajte sljedeće na kraj funkcije
process_text
kako biste dobili vrijeme za mjerač vremena iz teksta, a zatim kreirali mjerač vremena:seconds = get_timer_time(text) if seconds > 0: create_timer(seconds)
Mjerač vremena se kreira samo ako je broj sekundi veći od 0.
-
Pokrenite aplikaciju i osigurajte da funkcijska aplikacija također radi. Postavite nekoliko mjerača vremena, a izlaz će pokazati da je mjerač vremena postavljen, a zatim će pokazati kada istekne:
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.
💁 Ovaj kod možete pronaći u mapi code-timer/pi ili code-timer/virtual-iot-device.
😀 Vaš program za mjerač vremena bio je uspješan!
Odricanje od odgovornosti:
Ovaj dokument je preveden pomoću AI usluge za prevođenje Co-op Translator. Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešne interpretacije koje mogu proizaći iz korištenja ovog prijevoda.