6.3 KiB
Nustatykite laikmatį - Virtuali IoT įranga ir Raspberry Pi
Šioje pamokos dalyje jūs iškviesite savo serverless kodą, kad suprastumėte kalbą ir nustatytumėte laikmatį savo virtualiame IoT įrenginyje arba Raspberry Pi, remdamiesi rezultatais.
Nustatykite laikmatį
Tekstas, grįžtantis iš kalbos į tekstą funkcijos, turi būti išsiųstas į jūsų serverless kodą, kad jį apdorotų LUIS, kuris grąžins laikmačio sekundžių skaičių. Šis sekundžių skaičius gali būti naudojamas laikmačiui nustatyti.
Laikmačius galima nustatyti naudojant Python threading.Timer
klasę. Ši klasė priima uždelsimo laiką ir funkciją, o po uždelsimo laiko funkcija yra vykdoma.
Užduotis - išsiųskite tekstą į serverless funkciją
-
Atidarykite
smart-timer
projektą VS Code ir įsitikinkite, kad terminale įjungta virtuali aplinka, jei naudojate virtualų IoT įrenginį. -
Virš
process_text
funkcijos deklaruokite funkciją, pavadintąget_timer_time
, kad iškviestumėte REST galinį tašką, kurį sukūrėte:def get_timer_time(text):
-
Pridėkite šį kodą į šią funkciją, kad apibrėžtumėte URL, kurį reikia iškviesti:
url = '<URL>'
Pakeiskite
<URL>
į jūsų sukurto REST galinio taško URL, kuris gali būti jūsų kompiuteryje arba debesyje. -
Pridėkite šį kodą, kad nustatytumėte tekstą kaip JSON savybę, perduodamą iškvietimui:
body = { 'text': text } response = requests.post(url, json=body)
-
Po to gaukite
seconds
iš atsakymo duomenų, grąžindami 0, jei iškvietimas nepavyko:if response.status_code != 200: return 0 payload = response.json() return payload['seconds']
Sėkmingi HTTP iškvietimai grąžina statuso kodą 200 diapazone, o jūsų serverless kodas grąžina 200, jei tekstas buvo apdorotas ir atpažintas kaip laikmačio nustatymo ketinimas.
Užduotis - nustatykite laikmatį fone veikiančioje gijoje
-
Pridėkite šį importo sakinį failo viršuje, kad importuotumėte Python
threading
biblioteką:import threading
-
Virš
process_text
funkcijos pridėkite funkciją, kuri kalbės atsakymą. Šiuo metu ji tik rašys į konsolę, bet vėliau šioje pamokoje ji kalbės tekstą.def say(text): print(text)
-
Po to pridėkite funkciją, kurią iškvies laikmatis, kad praneštų, jog laikmatis baigėsi:
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)
Ši funkcija priima laikmačio minučių ir sekundžių skaičių ir sukuria sakinį, kuris praneša, kad laikmatis baigėsi. Ji patikrina minučių ir sekundžių skaičių ir įtraukia tik tas laiko vienetus, kurie turi reikšmę. Pavyzdžiui, jei minučių skaičius yra 0, pranešime bus įtrauktos tik sekundės. Šis sakinys tada perduodamas
say
funkcijai. -
Po to pridėkite šią
create_timer
funkciją, kad sukurtumėte laikmatį:def create_timer(total_seconds): minutes, seconds = divmod(total_seconds, 60) threading.Timer(total_seconds, announce_timer, args=[minutes, seconds]).start()
Ši funkcija priima bendrą laikmačio sekundžių skaičių, kuris bus perduotas komandoje, ir konvertuoja jį į minutes ir sekundes. Tada ji sukuria ir paleidžia laikmačio objektą, naudodama bendrą sekundžių skaičių, perduodama
announce_timer
funkciją ir sąrašą, kuriame yra minutės ir sekundės. Kai laikmatis baigiasi, jis iškviečiaannounce_timer
funkciją ir perduoda šio sąrašo turinį kaip parametrus - pirmas sąrašo elementas perduodamas kaipminutes
parametras, o antrasis kaipseconds
parametras. -
Į
create_timer
funkcijos pabaigą pridėkite kodą, kuris sukurs pranešimą, skirtą vartotojui pranešti, kad laikmatis pradedamas:announcement = '' if minutes > 0: announcement += f'{minutes} minute ' if seconds > 0: announcement += f'{seconds} second ' announcement += 'timer started.' say(announcement)
Vėlgi, įtraukiamas tik tas laiko vienetas, kuris turi reikšmę. Šis sakinys tada perduodamas
say
funkcijai. -
Pridėkite šį kodą į
process_text
funkcijos pabaigą, kad gautumėte laikmačio laiką iš teksto, o tada sukurtumėte laikmatį:seconds = get_timer_time(text) if seconds > 0: create_timer(seconds)
Laikmatis sukuriamas tik tuo atveju, jei sekundžių skaičius yra didesnis nei 0.
-
Paleiskite programą ir įsitikinkite, kad funkcijų programa taip pat veikia. Nustatykite keletą laikmačių, ir išvestis parodys, kaip laikmatis nustatomas, o tada parodys, kai jis baigiasi:
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.
💁 Šį kodą galite rasti code-timer/pi arba code-timer/virtual-iot-device aplanke.
😀 Jūsų laikmačio programa buvo sėkminga!
Atsakomybės apribojimas:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius naudojant šį vertimą.