6.1 KiB
Aseta ajastin - Virtuaalinen IoT-laitteisto ja Raspberry Pi
Tässä oppitunnin osassa kutsut serverittömän koodisi ymmärtämään puhetta ja asetat ajastimen virtuaalisessa IoT-laitteessasi tai Raspberry Pi:ssä tulosten perusteella.
Aseta ajastin
Puheesta tekstiksi -kutsusta palautuva teksti täytyy lähettää serverittömään koodiisi, jotta LUIS voi käsitellä sen ja palauttaa ajastimen sekuntimäärän. Tätä sekuntimäärää voidaan käyttää ajastimen asettamiseen.
Ajastimia voidaan asettaa Pythonin threading.Timer
-luokan avulla. Tämä luokka ottaa viiveajan ja funktion, ja viiveajan jälkeen funktio suoritetaan.
Tehtävä - lähetä teksti serverittömään funktioon
-
Avaa
smart-timer
-projekti VS Code -editorissa ja varmista, että virtuaalinen ympäristö on ladattu terminaaliin, jos käytät virtuaalista IoT-laitetta. -
Julista
process_text
-funktion yläpuolelle funktio nimeltäget_timer_time
, joka kutsuu luomaasi REST-päätepistettä:def get_timer_time(text):
-
Lisää tähän funktioon seuraava koodi määrittääksesi kutsuttavan URL-osoitteen:
url = '<URL>'
Korvaa
<URL>
REST-päätepisteesi URL-osoitteella, jonka loit edellisessä oppitunnissa, joko tietokoneellasi tai pilvessä. -
Lisää seuraava koodi asettaaksesi tekstin JSON-ominaisuudeksi kutsua varten:
body = { 'text': text } response = requests.post(url, json=body)
-
Tämän alapuolelle hae
seconds
vastausdatasta ja palauta 0, jos kutsu epäonnistui:if response.status_code != 200: return 0 payload = response.json() return payload['seconds']
Onnistuneet HTTP-kutsut palauttavat tilakoodin 200-alueella, ja serveritön koodisi palauttaa 200, jos teksti käsiteltiin ja tunnistettiin ajastimen asettamiseksi.
Tehtävä - aseta ajastin taustasäikeessä
-
Lisää tiedoston alkuun seuraava tuontilauseke tuodaksesi Pythonin threading-kirjaston:
import threading
-
Lisää
process_text
-funktion yläpuolelle funktio, joka puhuu vastauksen. Toistaiseksi tämä vain kirjoittaa tekstin konsoliin, mutta myöhemmin tässä oppitunnissa se puhuu tekstin.def say(text): print(text)
-
Lisää tämän alapuolelle funktio, jota ajastin kutsuu ilmoittaakseen, että ajastin on päättynyt:
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ämä funktio ottaa ajastimen minuutti- ja sekuntimäärän ja rakentaa lauseen, joka ilmoittaa ajastimen päättyneen. Se tarkistaa minuutti- ja sekuntimäärät ja sisällyttää viestiin vain ne yksiköt, joilla on arvo. Esimerkiksi, jos minuuttien määrä on 0, viesti sisältää vain sekunnit. Tämä lause lähetetään sitten
say
-funktiolle. -
Lisää tämän alapuolelle seuraava
create_timer
-funktio ajastimen luomiseksi:def create_timer(total_seconds): minutes, seconds = divmod(total_seconds, 60) threading.Timer(total_seconds, announce_timer, args=[minutes, seconds]).start()
Tämä funktio ottaa ajastimen kokonaissekuntimäärän, joka lähetetään komennossa, ja muuntaa sen minuuteiksi ja sekunneiksi. Se luo ja käynnistää ajastin-olion käyttäen kokonaissekuntimäärää, välittäen
announce_timer
-funktion ja listan, joka sisältää minuutit ja sekunnit. Kun ajastin päättyy, se kutsuuannounce_timer
-funktion ja välittää tämän listan sisällön parametreina - joten listan ensimmäinen kohde välitetäänminutes
-parametrina ja toinen kohdeseconds
-parametrina. -
Lisää
create_timer
-funktion loppuun koodi, joka rakentaa käyttäjälle puhuttavan viestin ilmoittaakseen, että ajastin käynnistyy:announcement = '' if minutes > 0: announcement += f'{minutes} minute ' if seconds > 0: announcement += f'{seconds} second ' announcement += 'timer started.' say(announcement)
Tämä sisältää jälleen vain ne aikayksiköt, joilla on arvo. Tämä lause lähetetään sitten
say
-funktiolle. -
Lisää seuraava
process_text
-funktion loppuun saadaksesi ajastimen ajan tekstistä ja luodaksesi ajastimen:seconds = get_timer_time(text) if seconds > 0: create_timer(seconds)
Ajastin luodaan vain, jos sekuntien määrä on suurempi kuin 0.
-
Suorita sovellus ja varmista, että funktiosovellus on myös käynnissä. Aseta joitakin ajastimia, ja tuloste näyttää ajastimen asettamisen ja ilmoittaa, kun se päättyy:
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.
💁 Löydät tämän koodin code-timer/pi tai code-timer/virtual-iot-device -kansiosta.
😀 Ajastinohjelmasi onnistui!
Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.