Orodha ya maudhui:

Ongeza Udhibiti wa Desturi wa Alexa kwa Mradi wa Raspberry Pi: Hatua 5
Ongeza Udhibiti wa Desturi wa Alexa kwa Mradi wa Raspberry Pi: Hatua 5

Video: Ongeza Udhibiti wa Desturi wa Alexa kwa Mradi wa Raspberry Pi: Hatua 5

Video: Ongeza Udhibiti wa Desturi wa Alexa kwa Mradi wa Raspberry Pi: Hatua 5
Video: THE WALKING DEAD SEASON 2 COMPLETE GAME 2024, Novemba
Anonim
Ongeza Udhibiti wa Desturi wa Alexa kwa Mradi wa Raspberry Pi
Ongeza Udhibiti wa Desturi wa Alexa kwa Mradi wa Raspberry Pi

Mradi huu umekusudiwa mtu yeyote ambaye ana mradi wa Raspberry Pi anayetumia Python ambaye anataka kuongeza udhibiti wa sauti kupitia vifaa vyao vya Amazon Echo. Huna haja ya kuwa programu ya uzoefu, lakini unapaswa kuwa sawa kutumia laini ya amri na kurekebisha nambari iliyopo ili kutoshea mahitaji yako.

Hapo awali nilianzisha mradi wa kuwezesha Raspberry yangu Pi kudhibitiwa kwa sauti na Alexa ili iweze kupasha maji kwenye kettle kwa joto fulani. Ingawa mwingiliano niliotaka ulikuwa rahisi sana (pitisha nambari moja kutoka kwa Alexa hadi Raspberry Pi), ilichukua kazi nyingi kufikia hali hiyo kutoka kwa mafunzo yaliyopo. Natumahi mafunzo haya yatafanya mchakato huo uwe haraka iwezekanavyo kwa wengine.

Katika mfano wangu, ninaanza na Raspberry Pi Zero W na Raspbian. Nina programu ya Python3 kwenye Pi yangu ambayo ina uwezo wa kuandika maandishi kwa onyesho la SPI, na nina uchunguzi wa kipima joto ambao naweza kusoma. Kwa wewe, programu hii inaweza kuwa karibu kila kitu, lakini wazo ni kwamba unaweza kuwa na vifaa vya kuingiza ambavyo unataka kusoma kupitia Alexa na / au vifaa vya pato ambavyo unataka kudhibiti kwa kutumia Alexa.

Lengo ni kutoka kwa programu ya msingi kama ile iliyoelezwa hapo juu hadi kifaa ambacho unaweza kudhibiti kwa urahisi na Echo yangu. Kwa kudhani una vifaa hivi tayari, mradi huu haukupaswi kukugharimu pesa yoyote. Mwishowe, utafika mahali ambapo unaweza kusema mambo kama:

Mimi: "Alexa, uliza kifaa changu kuangalia hali ya joto kwenye sensorer 1."

Jibu la Alexa: "Uchunguzi unasoma digrii 72.31."

au

Mimi: "Alexa, mwambie kifaa changu aandike George Washington"

Jibu: Onyesho lililounganishwa na Raspberry Pi yangu sasa linasomeka "George Washington"

Katika sehemu inayofuata, nitaelezea kile kinachohitajika kutokea nyuma ya pazia ili kufanya kazi hii. Ikiwa unataka tu kufanya kazi hii kwenye mradi wako na usijali jinsi inavyofanya kazi, jisikie huru kuiruka (ingawa inaweza kufanya iwe ngumu ikiwa kitu kitaenda vibaya).

Hatua ya 1: Usuli

Usuli
Usuli

Katika picha hii (mikopo: https://developer.amazon.com/en-US/docs/alexa/alex… tunaweza kuona usanifu wa jumla wa Zana za Alexa.

Unaposema kitu kwenye kifaa chako cha Echo, hutuma sauti kwa Wingu la Alexa, ambapo inachakatwa na ambapo majibu hutengenezwa kukujibu. Unapouliza hali ya hewa ni nini, ni wawili tu katika mawasiliano. Sasa tuseme kwamba unataka kuongeza udhibiti wa sauti kwenye moja ya miradi yako ndogo kwenye Raspberry Pi. Kusindika kila kitu ndani ya bodi kunahitaji vifaa muhimu na nambari ya hali ya juu sana ya kufanya mambo yaende. Suluhisho bora itakuwa kuinua wingu la Alexa, ambalo ni la kisasa sana na limepata vizuri sana katika kushughulikia mifumo tata ya hotuba. Vifaa vya Alexa hutoa njia nzuri ya kufanya hivyo.

Kidude cha Alexa kinawasiliana na kifaa cha Echo kwa kutumia bluetooth. Mara tu unganisho huu utakapoanzishwa, wawili hao hupitisha ujumbe kwa kutumia usimbuaji wa UTF-8. Wakati Echo inapitisha kitu kwenye kifaa, inaitwa maagizo. Mwelekeo mwingine unatajwa kama tukio. Kabla ya kuingia katika mtiririko halisi wa haya yote, tunapaswa kuanzisha kitu kingine muhimu: Ustadi wa Alexa wa kawaida.

Alexa inaruhusu watengenezaji kuunda ustadi wao wa kawaida, ambayo inawaruhusu kubuni mwingiliano wao na tabia zao za matumizi kwenye vifaa vyote vya Echo. Kwa mfano, msanidi programu anaweza kuunda ustadi wa kukuambia umbali kati ya viwanja vya ndege viwili huko Merika. Mtumiaji angeweza kusema: "Alexa, uliza kikokotoo changu cha umbali wa kawaida ni umbali gani kati ya LAX na JFK" na inaweza kujibu kwa "maili 2475". Je! Inafanyaje hii? Msanidi programu anapofanya ustadi wa kawaida, hufafanua kile kinachoitwa "dhamira za kitamaduni" na "matamshi ya mfano" yaliyo na "nafasi". Kwa mfano, katika ustadi huu ninaweza kuwa na dhamira "calc_dist" kuhesabu umbali kati ya alama mbili. Mfano wa usemi utakuwa "umbali gani kati ya {slot1} na {slot2}" au "umbali gani kati ya {slot1} na {slot2}". Nafasi zilizoonyeshwa kwenye mabano zina aina maalum. Kwa hali hii aina hizo zingekuwa nambari za uwanja wa ndege kama LAX, JFK, BOS, ATL. Mtumiaji anapouliza ustadi wa kawaida, Wingu la Alexa linajaribu kulinganisha kile mtumiaji anasema kwa dhamira ya kawaida kwa kutumia matamshi ya sampuli iliyotolewa na kujaribu kupata maadili halali ya yanayopangwa kwa ombi hilo. Katika mfano huu, ingegundua kuwa mtumiaji alitaka dhamira ya "calc_dist" na kwamba slot1 ni LAX na slot2 ni JFK. Kwa wakati huu, Alexa Cloud hupitisha kazi hiyo kwa nambari ya msanidi programu mwenyewe. Kimsingi, inawaambia waendelezaji nambari ambayo imepokea dhamira gani na maadili yote yanayopangwa yalikuwa, kati ya maelezo mengine.

Msanidi programu anaamua kuamua nambari yao inakaa, lakini chaguo maarufu sana ni kutumia kazi ya AWS Lambda. Ikiwa haujui hiyo ni nini, kimsingi ni huduma ambayo hukuruhusu kupakia nambari ambayo inaweza kuendeshwa wakati wowote na kisha ikutoze tu kwa muda ambao nambari yako inaendeshwa. Ikiwa tunaendelea na mfano wetu, nambari ya msanidi programu inaweza kuwa kazi ya Python inayopokea nambari mbili za uwanja wa ndege, inaangalia maeneo yao, inahesabu umbali, na kisha itatuma jibu tena kwa Wingu la Alexa kuzungumza kitu kwa mtumiaji. Wingu la Alexa lingetuma tena habari hiyo ya hotuba kwenye kifaa cha mtumiaji, na wangepata jibu.

Sasa tunaweza kurudi kwenye kifaa. Tunaweza kuunda ujuzi wa kawaida ambao umeundwa kufanya kazi haswa na vifaa. Msanidi programu anaweza kuandika ustadi ambao hutuma maagizo kwa kifaa kilichounganishwa. Maagizo hayo yana mzigo wa malipo ambayo inaweza kutumika hata hivyo inahitajika na kifaa. Ustadi huo pia unaweza kutuma maagizo na kisha usikilize tukio kutoka kwa gadget ili nambari ya ustadi iweze kupata habari iliyotumwa kutoka kwa kifaa.

Kuanzisha mtiririko huu inaruhusu kuunda zana yenye nguvu sana kwa sababu vifaa vya bei rahisi vinaweza kuwa na uwezo wa kuwasiliana na nambari kwenye wingu na kujibu amri za sauti kwa kutumia utambuzi bora wa sauti unaopatikana.

Ikumbukwe kwamba ujuzi mwingi huruhusu njia anuwai za kuingiliana nao. Kwa mfano, mtumiaji anaweza kuruka moja kwa moja kwa dhamira kwa kusema "Alexa, uliza kikokotoo changu cha umbali maalum ni umbali gani kati ya LAX na JFK" (inayoitwa ombi la risasi moja) au wanaweza kutumia tu dhamira ya uzinduzi: "Alexa, fungua kikokotozi changu cha umbali ". Mfano huu wa mwisho ungefuatwa na Alexa akijibu kwa haraka kwa habari zaidi. Mafunzo haya kwa makusudi huacha msaada kwa wa mwisho. Hasa haswa, bila kurekebisha kazi ya Lambda, unaweza kuomba ustadi tu kwa kutumia ombi la risasi moja. Chaguo hili la muundo linaruhusu mtindo kuwa rahisi zaidi (haifai kuunga mkono dhamira za uzinduzi au mtiririko wa mazungumzo), na nimegundua kuwa kawaida nataka kuingiliana na vifaa vyangu kwa kutumia dua moja ya risasi kwani kwa kawaida huwa haraka.

Hatua ya 2: Sajili Kidude kwenye Dashibodi ya Msanidi Programu wa Sauti ya Alexa

Ifuatayo ni maelezo ya hatua zinazohitajika. Nimeunda video sawa ambayo inaonyesha jinsi ya kufanya hatua hizi zote. Unaweza kutumia ama, au zote mbili, kukamilisha hatua hii.

  1. Nenda kwa
  2. Ikiwa tayari hauna akaunti ya bure, tengeneza moja
  3. Bonyeza kwenye "Bidhaa"
  4. Jaza lebo na uchague "Kidude cha Alexa"
  5. Jaza chochote unachotaka kwa sehemu zingine zilizobaki
  6. Bonyeza Maliza

Hatua ya 3: Unda Kazi ya AWS Lambda na Ujuzi wa Kimila

Unda Ustadi wa Kimila kwenye Dashibodi ya Msanidi Programu wa Alexa Skills

Nambari ya mafunzo haya inaweza kupatikana hapa

Kabla ya kumaliza hatua hii, utahitaji kuunda faili ya.zip ambayo ina kifurushi cha kupelekwa kwa kazi ya AWS Lambda kama inavyoonyeshwa kwenye mafunzo hapa.

  1. Pakua folda "lambda" kutoka kwa Github yangu ambayo ina "lambda_function.py" na "requirements.txt"
  2. Fungua kituo na ubadilishe saraka ya sasa iwe ndani ya folda hii.
  3. Endesha mlolongo ufuatao:

bomba kufunga -r mahitaji.txt -t ujuzi_env

cp lambda_function.py ujuzi_env cd ujuzi_env zip -r../../skill-code.zip

Faili yako ya.zip sasa itakuwa iko kwenye saraka ambayo folda ya lambda ilikuwa na itaitwa "skill-code.zip".

Ujumbe juu ya gharama ya kukaribisha kwenye AWS: Mafunzo haya yanahitaji kuwa na akaunti ya AWS (huru kuunda). Kazi za Lambda zinagharimu pesa, hata hivyo, bei zao za sasa katika mkoa wa N. Virginia ni $ 0.000000208 kwa matumizi ya 100ms na kumbukumbu ya 128MB. Kwa marejeleo, kila ombi la bili zangu za ustadi kuhusu 800ms za matumizi kwenye safu hii. Ili kupata bili ya $ 1.00USD, itabidi uombe kazi hii karibu mara 600, 000 ambayo (ikiwa inachukua sekunde 5 kwa ombi) itakuchukua zaidi ya siku 34 za bila kuacha kuita kazi yako. Gharama haipaswi kuwa suala muhimu isipokuwa uchapishe ustadi wako na idadi kubwa ya watu wanaanza kuitumia. Ikiwa una wasiwasi juu ya kupata bili kwenye AWS, fikiria kuanzisha kengele za matumizi ambazo zinakuarifu ikiwa matumizi yatapita kizingiti kilichofafanuliwa.

Ifuatayo ni maelezo ya hatua zinazohitajika. Nimeunda video sawa ambayo inaonyesha jinsi ya kufanya hatua hizi zote. Unaweza kutumia ama, au zote mbili kukamilisha hatua hii.

  1. Nenda kwa https://aws.amazon.com/ na ingia kwenye dashibodi au unda akaunti ya bure ikiwa huna
  2. Tafuta na ubonyeze Lambda chini ya huduma
  3. Bonyeza "Unda Kazi"
  4. Chagua "Mwandishi kutoka mwanzo", ipe jina, na uchague toleo la hivi karibuni la Python 3 kwa muda wa kukimbia
  5. Badilisha "hariri mstari ndani" ili "pakia faili ya.zip" na uchague faili ya.zip iliyoundwa hapo juu
  6. Katika dirisha jipya, nenda kwa https://developer.amazon.com/alexa/console/ask na uingie
  7. Bonyeza "Unda Ujuzi"
  8. Andika lebo, chagua mfano wa "Desturi" na "Toa yako mwenyewe" na ubofye "Unda Ujuzi"
  9. Bonyeza "Anza kutoka mwanzo" na bonyeza "Chagua"
  10. Chini ya "Nia", bonyeza "Ongeza"
  11. Unda dhamira maalum inayoitwa "alexa_to_pi" na ujaze "andika {person}" kama mfano wa usemi
  12. Fanya nafasi ya kusudi inayoitwa "mtu" na aina "AMAZON. Person"
  13. Unda dhamira maalum inayoitwa "pi_to_alexa" na ujaze "angalia halijoto kutoka kwa sensorer {sensor_num}
  14. Tengeneza mpangilio wa dhamira unaoitwa "sensor_num" na aina "AMAZON. NUMBER"
  15. Chini ya Maingiliano, washa "Kidhibiti cha Maingiliano Maalum"
  16. Chini ya Endpoint, chagua "AWS Lambda ARN" na unakili "Kitambulisho chako cha Ujuzi"
  17. Nenda nyuma kwenye Dashibodi ya AWS
  18. Bonyeza "Ongeza Kuchochea"
  19. Chagua "Kitanda cha Ujuzi cha Alexa", angalia "Wezesha" chini ya uthibitishaji wa Kitambulisho cha Ujuzi, weka kwenye Kitambulisho cha Ujuzi ambacho umenakili tu na ubonyeze ongeza
  20. Nakili Lambda ARN kwenye kona ya juu kulia
  21. Nenda nyuma kwenye Dashibodi ya Msanidi Programu wa Alexa na ubandike Lambda ARN kwenye uwanja wa "Mkoa wa Default"
  22. Chini ya Kuomba, weka Jina la Kuomba Ujuzi kuwa "kifaa changu"
  23. Bonyeza "Hifadhi Mfano" na kisha "Unda Mfano"
  24. Bonyeza "Jaribu" kwenye tabo za juu na ubadilishe kiteua kutoka "Zima" hadi "Maendeleo"
  25. Kumbuka kuwa magogo ya kazi ya Lambda yanapatikana katika huduma ya "CloudWatch" kwenye AWS.

Hatua ya 4: Sanidi Nambari kwenye Raspberry yako Pi

Kwa Raspberry yako Pi kuwasiliana na kifaa cha Alexa, inahitaji nambari fulani kuwezesha kupitisha habari juu ya Bluetooth na kudumisha unganisho hilo, pamoja na faili zingine kadhaa. Njia rahisi zaidi ya kuanza na faili za kisasa zaidi kutoka Amazon ni kutengeneza hazina yao ya Raspberry Pi Gadgets. Nenda kwenye saraka ya mradi wako wa sasa na uendeshe

clone ya git

Hii itapakia hazina yao yote na nambari yote muhimu kwenye Pi yako. Ina miradi ya mfano ambayo inaonyesha uwezo kadhaa wa vifaa vya Alexa. Ikiwa ungependa habari zaidi, angalia soma kwenye ukurasa wao wa Github.

Endesha kazi yao ya usanidi ili kupata kila kitu kimeundwa.

cd / nyumbani / pi / Sifa za Alexa-Raspberry-Pi-Sampuli

uzinduzi wa sudo python3.py --setup

Fuata vidokezo na ujibu "y" ukiulizwa ikiwa unataka kusanidi kwa kutumia hati zako za Kifaa. Kumbuka kitambulisho cha Amazon na Siri ya Gadget kutoka kuweka kifaa chako kwenye dashibodi ya msanidi programu kwani itaulizwa hapa. Nilichagua hali ya kupitisha "bt" kwa Raspberry yangu Pi Zero W. BLE haihimiliwi na vifaa vyote vya zamani vya Echo, lakini unaweza kuangalia ni nini vifaa vyako vinaweza. Ikiwa unatumia Pi yako katika hali ya Desktop, Amazon inapendekeza kubofya kulia kwenye ikoni ya Bluetooth kulia juu na kubofya "Ondoa" Bluetooth "kutoka kwa Jopo" ili kuepuka maswala ya muunganisho.

Kumbuka: hatua hii inaweza kuchukua muda kulingana na mahitaji ya kusanikishwa.

Sasa utakuwa na faili zote muhimu za usaidizi kurudi kwenye mradi wako na anza kuongeza kwenye kazi ili kuruhusu mawasiliano na Echo yako.

Ukichagua, unaweza kufuta folda ya "mifano" katika "Alexa-Gadgets-Raspberry-Pi-Samples / src"

Unaweza kuwa na nambari yako ya mradi popote unapopenda, lakini nitafanya folda katika saraka ya nyumbani kwa hiyo, vinginevyo unaweza kupakua folda na nambari kutoka kwa Github yangu, hakikisha kuhariri faili za.ini kama ilivyoelezwa hapo chini.

cd / nyumbani / pi

mkdir my_project cd my_project touch my_gadget.py touch my_gadget.ini

Sasa nimeunda faili mbili kwenye folda inayoitwa "my_project". Faili ya.ini ni muhimu. Hakikisha kuwa ina zifuatazo na mbadala katika kitambulisho chako cha Amazon na Siri ya Gadget:

[Mipangilio ya Gadget]

amazonId = INSERT_AMAZON_ID_HERE alexaGadgetSecret = INSERT_ALEXA_GADGET_SECRET_HERE [Uwezo wa Gadget] Custom. MyGadget = 1.0

Sasa, wacha tuangalie faili ya chatu kabla ya kwenda kwenye maelezo:

kuagiza json

kutoka kwa kuagiza agt AlexaGadget

darasa MyGadget (AlexaGadget):

def _init _ (binafsi):

super ()._ init _ ()

def on_custom_mygadget_alexatopi (kibinafsi, maagizo):

payload = json.loads (directive.payload.decode ("utf-8")) chapa ("Data iliyopokelewa:" + str (payload)) write_text (str (payload ['data'] ['person'] ['value ']))

def on_custom_mygadget_pitoalexa (binafsi, maagizo):

payload = json.loads (directive.payload.decode ("utf-8")) chapa ("Data iliyopokelewa:" + str (payload)) payload = {'data': "Uchunguzi umesomeka" + str (get_temp (payload) ['data'] ['sensor_num'] ['value'])) + "digrii."} self.send_custom_event ('Custom. MyGadget', 'PiToAlexa', malipo ya malipo) MyGadget (). kuu ()

Kwanza utaona kuwa inaita kazi mbili: write_text () na get_temp (). Katika nambari yangu, ninafafanua kazi hizi katika faili moja, lakini zinategemea vifaa vyangu kwa hivyo nimechagua kuziacha. Nimeambatanisha faili hii na kazi hizo zilizoainishwa kuchapisha tu na kurudisha data ya dummy ikiwa unataka kutumia nambari hii halisi. Ningeshauri kujaribu na nambari hii halisi kabla ya kuibadilisha ili ifanye kazi na mradi wako. Nimeambatanisha pia faili ya.ini, lakini hakikisha unaingia na kubadilisha kitambulisho na siri ya kifaa. Kazi ya juu hupokea data iliyopitishwa kutoka kwa Alexa. Kazi ya chini inapokea data katika muundo huo huo, lakini kifaa cha Alexa kitasubiri kwa sekunde tano ili tukio lipitishwe na mzigo wake wa malipo. Mshahara huu ni maalum kwa kuwa kifaa cha Alexa kitazungumza yaliyomo.

Mara baada ya kuwa na faili hizi, nenda kwenye folda ya "my_project" na uendeshe faili ya chatu.

Sudo reboot

cd / nyumbani / pi / my_project sudo python3./my_gadget.py

Ikiwa hii ni mara ya kwanza kuendesha programu, utahitaji kuilinganisha na kifaa chako cha Echo. Hakikisha kifaa chako cha Echo kiko karibu na Raspberry Pi, kwani tunahitaji kuruhusu unganisho la Bluetooth.

Katika programu ya Alexa kwenye kifaa chako cha rununu, bonyeza "vifaa" kwenye kona ya chini kulia.

Bonyeza "Echo & Alexa" juu kushoto.

Bonyeza kwenye kifaa chako cha Echo.

Chini ya "WIRELESS", gonga "Vifaa vya Bluetooth".

Gonga "Oanisha VIFAA vipya" na unapaswa kuona kifaa chako kwenye orodha.

Gonga kwenye kifaa chako. Unapaswa kuona ripoti ya Pi kwamba imefanikiwa kuoanishwa.

Wakati unatazama pato kwenye Pi yako, jaribu kutoa amri ya sauti kwa Echo:

Wewe: "Alexa, uliza kifaa changu kuangalia joto kutoka kwa sensor moja"

Ikiwa kila kitu kilifanya kazi vizuri, unapaswa kusikia:

Echo: "Uchunguzi unasoma digrii 120.505."

Wewe: "Alexa, mwambie kifaa changu aandike George Washington."

Pi inapaswa kuchapisha:

Data iliyopokelewa: {'data': {'person': {'name': 'person', 'value': 'George Washington', 'confirmationStatus': 'NONE'}}}

George Washington"

Hatua ya 5: Kufunga

Video iliyoonyeshwa hapa ni mfano wa gadget inayofanya kazi na kusoma joto (uchunguzi sawa katika F vs. C) na kuandika majina kwa onyesho rahisi.

Sasa kwa kuwa unatumaini kuwa na kitu kinachofanya kazi, unapaswa kujaribu kwenda na kubadilisha hii ili kufanya mradi wako mwenyewe uwe na uwezo zaidi. Kumbuka kwamba unaweza kuhariri nia kwa urahisi katika Dashibodi ya Msanidi Alexa na kwamba nafasi zote unazotumia zitapelekwa kwa Pi yako kwenye mzigo wa malipo. Kwa kuongezea, unaweza kuwa na Alexa iseme kitu chochote ambacho ungependa kwa kuhariri tu malipo unayopitisha kwenye tukio kutoka kwa nambari yako ya Raspberry Pi.

Tafadhali kumbuka kuwa mafunzo haya hayakusudiwa kuwa suluhisho la mwisho kwa uwezo wote ambao unaweza kutaka na Kidude cha Alexa. Ni mdogo kwa kukusudia kukupa kazi mbili rahisi za kupitisha data katika kila mwelekeo kati ya Alexa na Gadget. Ikiwa una nia ya kujenga mifano ya maingiliano ya kisasa zaidi, nitakuhimiza usome faili zote za kusoma katika https://github.com/alexa/Alexa-Gadgets-Raspberry-P… na kujaribu mifano yote wanayotoa. Napenda pia kupendekeza usome nyaraka za Zana ya vifaa vya Alexa na Kitengo cha Ujuzi cha Alexa.

Ilipendekeza: