6.8 KiB
Állíts be egy időzítőt - Virtuális IoT hardver és Raspberry Pi
A lecke ezen részében hívni fogod a szerver nélküli kódodat, hogy megértsd a beszédet, és az eredmények alapján beállíts egy időzítőt a virtuális IoT eszközödön vagy a Raspberry Pi-n.
Időzítő beállítása
A beszéd szöveggé alakításából visszakapott szöveget el kell küldeni a szerver nélküli kódodnak, hogy a LUIS feldolgozza, és visszaadja az időzítőhöz szükséges másodpercek számát. Ez a másodpercek száma használható az időzítő beállításához.
Az időzítők beállításához a Python threading.Timer
osztályát használhatod. Ez az osztály egy késleltetési időt és egy függvényt vesz át, és a késleltetési idő után végrehajtja a függvényt.
Feladat - küldd el a szöveget a szerver nélküli függvénynek
-
Nyisd meg a
smart-timer
projektet a VS Code-ban, és győződj meg róla, hogy a virtuális környezet betöltődött a terminálban, ha virtuális IoT eszközt használsz. -
A
process_text
függvény fölött deklarálj egyget_timer_time
nevű függvényt, amely a létrehozott REST végpontot hívja meg:def get_timer_time(text):
-
Adj hozzá a következő kódot ehhez a függvényhez, hogy meghatározd a hívandó URL-t:
url = '<URL>'
Cseréld ki a
<URL>
helyére a REST végpontod URL-jét, amelyet az előző leckében hoztál létre, akár a számítógépeden, akár a felhőben. -
Adj hozzá a következő kódot, hogy a szöveget JSON tulajdonságként add át a hívásban:
body = { 'text': text } response = requests.post(url, json=body)
-
Ezután szerezd meg a válasz payload-jából a
seconds
értéket, és térj vissza 0-val, ha a hívás sikertelen volt:if response.status_code != 200: return 0 payload = response.json() return payload['seconds']
A sikeres HTTP hívások 200-as tartományba eső állapotkódot adnak vissza, és a szerver nélküli kódod 200-at ad vissza, ha a szöveget feldolgozták és időzítő beállítási szándékként ismerték fel.
Feladat - időzítő beállítása háttérszálon
-
Add hozzá a következő import utasítást a fájl tetejére, hogy importáld a Python
threading
könyvtárát:import threading
-
A
process_text
függvény fölött adj hozzá egy függvényt, amely válaszként szöveget mond ki. Egyelőre ez csak a konzolra ír, de később a leckében ez a szöveg ki lesz mondva.def say(text): print(text)
-
Ezután adj hozzá egy függvényt, amelyet az időzítő hív meg, hogy bejelentse, hogy az időzítő lejárt:
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)
Ez a függvény az időzítőhöz tartozó percek és másodpercek számát veszi át, és egy mondatot épít, amely bejelenti, hogy az időzítő lejárt. Ellenőrzi a percek és másodpercek számát, és csak azokat az időegységeket tartalmazza, amelyeknek van értéke. Például, ha a percek száma 0, akkor csak a másodpercek szerepelnek az üzenetben. Ez a mondat ezután a
say
függvénynek kerül átadásra. -
Ezután add hozzá a következő
create_timer
függvényt, hogy létrehozz egy időzítőt:def create_timer(total_seconds): minutes, seconds = divmod(total_seconds, 60) threading.Timer(total_seconds, announce_timer, args=[minutes, seconds]).start()
Ez a függvény az időzítőhöz küldött teljes másodpercek számát veszi át, és átalakítja percekké és másodpercekké. Ezután létrehoz és elindít egy időzítő objektumot a teljes másodpercek számával, átadva az
announce_timer
függvényt és egy listát, amely tartalmazza a perceket és másodperceket. Amikor az időzítő lejár, meghívja azannounce_timer
függvényt, és a lista tartalmát paraméterként adja át - így a lista első eleme aminutes
paraméterként, a második pedig aseconds
paraméterként kerül átadásra. -
A
create_timer
függvény végére adj hozzá néhány kódot, amely egy üzenetet épít a felhasználónak, hogy bejelentse, hogy az időzítő elindul:announcement = '' if minutes > 0: announcement += f'{minutes} minute ' if seconds > 0: announcement += f'{seconds} second ' announcement += 'timer started.' say(announcement)
Ez ismét csak azokat az időegységeket tartalmazza, amelyeknek van értéke. Ez a mondat ezután a
say
függvénynek kerül átadásra. -
Add hozzá a következőket a
process_text
függvény végéhez, hogy a szövegből megszerezd az időzítőhöz szükséges időt, majd létrehozd az időzítőt:seconds = get_timer_time(text) if seconds > 0: create_timer(seconds)
Az időzítő csak akkor jön létre, ha a másodpercek száma nagyobb, mint 0.
-
Futtasd az alkalmazást, és győződj meg róla, hogy a függvényalkalmazás is fut. Állíts be néhány időzítőt, és a kimenet megmutatja, hogy az időzítő beállításra került, majd azt is, amikor lejár:
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.
💁 Ezt a kódot megtalálod a code-timer/pi vagy a code-timer/virtual-iot-device mappában.
😀 Az időzítő programod sikeres volt!
Felelősség kizárása:
Ez a dokumentum az AI fordítási szolgáltatás, a Co-op Translator segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Fontos információk esetén javasolt professzionális, emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.