Turinys:
- 1 žingsnis: pradinė sąranka
- 2 veiksmas: nustatykite „Ngrok“
- 3 žingsnis: „Python“scenarijus šviesos jungikliui valdyti
- 4 veiksmas: ventiliatoriaus valdymo „Python“scenarijus
- 5 veiksmas: LIRC paketo diegimas ir konfigūravimas
- 6 veiksmas: „Python“scenarijus TV valdymui
- 7 veiksmas: prisijunkite prie AWS paskyros
- 8 veiksmas: televizoriaus „Alexa“įgūdžių sąranka
- 9 veiksmas: apšviečia „Alexa“įgūdžių sąranką
- 10 veiksmas: gerbėjo „Alexa“įgūdžių sąranka
- 11 žingsnis: sukurkite grandinę
- 12 žingsnis: „Alexa“komandos
Video: Valdykite svetainę su Alexa ir Raspberry Pi: 12 žingsnių
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Valdykite savo svetainės televizorių, šviesas ir ventiliatorių naudodami „Alexa“(„Amazon Echo“arba „Dot“) ir „Raspberry Pi GPIO“.
1 žingsnis: pradinė sąranka
Naudojau Raspberry Pi 2 ir Raspbian Jessie atvaizdą, atsisiųstą iš
Prisijungę įveskite šias komandas, kad įdiegtumėte reikiamus paketus ir „python“bibliotekas:
sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Kolbinė kolba-klauskite sudo apt-get install lirc
2 veiksmas: nustatykite „Ngrok“
Apsilankykite https://ngrok.com/download ir gaukite naujausią „Linux ARM“versiją kaip ZIP ir išpakuokite namų kataloge:
atsukite /home/pi/ngrok-stable-linux-arm.zip
Atidarykite naują terminalą ir įveskite šią komandą:
sudo./ngrok http 4000
Atidarykite kitą naują terminalą ir įveskite šią komandą:
sudo./ngrok http 4500
Atidarykite trečiąjį naują terminalą ir įveskite šią komandą:
sudo./ngrok http 5000
3 žingsnis: „Python“scenarijus šviesos jungikliui valdyti
Atidarykite naują terminalo sesiją ir sukurkite naują „python“failą, pavadintą light_control.py:
nano light_control.py
Nukopijuokite/įklijuokite šį kodą į naują failą:
iš kolbos importo Flaskfrom flask_ask importas Klausti, teiginys, konvertuoti_klaidos importuoti RPi. GPIO kaip GPIO importuoti registravimą importuoti os GPIO.setmode (GPIO. BCM) app = Kolba (_ vardas_) ask = Klausti (programa, '/') logging.getLogger (" setLevel (logging. DEBUG) @ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (status): try: pinNum = 27, išskyrus išimtį kaip e: grąžinimo pareiškimas ('PIN kodas neteisingas.') GPIO.setup (pinNum, GPIO. OUT), jei būsena ['on', 'high']: GPIO.output (pinNum, GPIO. LOW), jei būsena ['off', ' žemas ']: GPIO.output (pinNum, GPIO. HIGH) grąžinimo pareiškimas („Įjungus {} gyvenamojo kambario šviesas“. formatas (būsena)), jei _name_ ==' _main_ ': port = 4000 app.run (host =' 0.0.0.0 ', prievadas = prievadas)
Išsaugokite ir uždarykite failą.
Įjunkite kolbos serverį:
sudo python light_control.py
Palikite veikti tiek „ngrok“, tiek „light_control.py“
4 veiksmas: ventiliatoriaus valdymo „Python“scenarijus
Atidarykite naują terminalo sesiją ir sukurkite naują „python“failą, pavadintą fan_control.py:
nano fan_control.py
Nukopijuokite/įklijuokite šį kodą į naują failą:
iš kolbos importo kolba
iš „flask_ask“importavimo Klauskite, teiginys, konvertuokite klaidas importuodami RPi. GPIO kaip GPIO importo registravimo importavimas os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app, '/') logging.getLogger ("flask_ask").setLevel (logging. DEBUG) @ask.intent ('FanControlIntent', mapping = {'status': 'status'}) def fan_control (status): try: pinNum = 22, išskyrus išimtį kaip e: grąžinimo teiginys ('PIN kodas negalioja. ') GPIO.setup (pinNum, GPIO. OUT), jei būsena [' įjungta ',' aukšta ']: GPIO. išvestis (pinNum, GPIO. LOW), jei būsena yra [' išjungta ',' maža ']: GPIO.output (pinNum, GPIO. HIGH) grąžinimo pareiškimas („Įjungus {} gyvenamojo kambario šviesas“. Formatas (būsena)), jei _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', uostas = uostas)
Išsaugokite ir uždarykite failą.
Įjunkite kolbos serverį:
sudo python fan_control.py
Palikite veikti tiek „ngrok“, tiek „light_control.py“, tiek „fan_control.py“
5 veiksmas: LIRC paketo diegimas ir konfigūravimas
Norėdami valdyti televizorių, turite sukonfigūruoti „Raspberry Pi“kaištį, kad jis sukurtų jūsų konkrečiam televizoriui skirtus infraraudonųjų spindulių (IR) signalus. Atidarykite terminalą ir įveskite šią komandą, kad įdiegtumėte LIRC paketą, kuris imituoja daugelio nuotolinio valdymo pulto infraraudonųjų spindulių signalus.
sudo apt-get install lirc
Tada turite įjungti ir sukonfigūruoti lirc_rpi branduolio modulį. Norėdami tai padaryti, atidarykite modulius „Nano“redaktoriuje
sudo nano /etc /modules
Įtraukite toliau pateiktas eilutes į failą (įsitikinkite, kad parametras gpio_out_pin nurodo kaištį, valdantį IR šviesos diodą):
lirc_devlirc_rpi gpio_out_pin = 17
Tada atidarykite „hardware.conf“failą „Nano“, kaip ir anksčiau, naudodami „sudo“:
sudo nano /etc/lirc/hardware.conf
Prie failo pridėkite šią konfigūraciją:
LIRCD_ARGS = "-įveskite" LOAD_MODULES = tiesa
DRIVER = "numatytasis"
ĮRENGINIS = "/dev/lirc0"
MODULIAI = "lirc_rpi"
LIRCD_CONF = ""
LIRCMD_CONF = ""
Dabar iš naujo paleiskite „Raspberry Pi“:
sudo perkraukite
6 veiksmas: „Python“scenarijus TV valdymui
Atidarykite naują terminalo sesiją ir sukurkite naują „python“failą pavadinimu ir_control.py:
nano ir_control.py
Eikite į
Raskite nuotolinio valdymo pultą, suderinamą su jūsų televizoriumi. Mano atveju turiu „Sanyo“televizorių, kuris veikia su „sanyo-tv01“konfigūracijos failu. Radę failą, palaikantį jūsų televizorių, atidarykite jį ir peržiūrėkite komandų parinktis.
Nukopijuokite/įklijuokite šį kodą į naują failą ir pakeiskite „sanyo-tv01“failo pavadinimu, kuris tinka jūsų televizoriui. Taip pat įsitikinkite, kad televizoriaus komandas palaiko jūsų televizoriaus konfigūracijos failas; Kad tinkamai veiktų jūsų televizoriaus konfigūracijos failas, gali tekti keisti komandas KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN ir KEY_MUTE:
iš kolbos importo Flaskfrom flask_ask importas Klausti, teiginys, konvertuoti_klaidos importuoti RPi. GPIO kaip GPIO importuoti registravimo importavimą os GPIO.setmode (GPIO. BCM) app = Kolba (_ vardas_) klausti = Klausti (programa, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('GPIOControlIntent', mapping = {'status': 'status'}) #'pin': 'pin'}) def tv_function (status): jei būsena ['įjungti']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") grąžinimo pareiškimas ("Įjungiamas televizorius") elif statusas ['turn off']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") grąžinimo pareiškimas („ Televizoriaus išjungimas “) elifo būsena ['change input']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") return teiginys („Įvesties keitimas televizoriuje“) elifo būsena [„padidinti garsumą“]: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP ") grąžinimo pareiškimas (" Garso didinimas televizoriuje ") elifo būsena ['sumažinti garsumą']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN ") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDSOWN_SENSION" ") grąžinimo pareiškimas („ Sumažėja garsumas televizoriuje ") elifo būsena ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") grąžinimo pareiškimas ('TV nutildymas') elif statusas ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") grąžinimo pareiškimas ("TV įjungimas") else: return utasítás ("Nuotolinė funkcija nerasta."), jei _name_ ==' _main_ ': port = 5000 app.run (pagrindinis kompiuteris = '0.0.0.0', prievadas = prievadas)
Išsaugokite ir uždarykite failą.
Įjunkite kolbos serverį:
sudo python ir_control.py
Palikite veikti visus tris „ngrok“terminalo langus, „light_control.py“, „fan_control.py“ir „ir_control.py“
7 veiksmas: prisijunkite prie AWS paskyros
Pirmiausia sukurkite arba prisijunkite prie savo AWS kūrėjo paskyros ir atidarykite „Alexa Skills“sąrašą.
8 veiksmas: televizoriaus „Alexa“įgūdžių sąranka
Pasirinkite „Pridėti naują įgūdį“.
Nustatykite įgūdžių pavadinimą į „Trigger TV“, o užklausos pavadinimą - į žodį (-ius), kurį (-iuos) norite naudoti, kad suaktyvintumėte įgūdžius.
Norėdami tęsti, spustelėkite „Kitas“.
Nukopijuokite/įklijuokite šį laukelį „Ketinimo schema“:
"slots": [{"name": "status", "type": "TV_Function"}, {"name": "suma", "type": "AMAZON. NUMBER"}], "ketinimas": "GPIOControlIntent "}]}
Tada spustelėkite „Pridėti lizdo tipą“
Lauke „Įveskite tipą“įveskite TV_Function.
Lauke „Įveskite vertes“įveskite šias reikšmes:
įjungti
išjungti keisti įvestį padidinti garsumą mažinti garsumą nutildyti įjungti garsą
Tada nukopijuokite/įklijuokite šiuos elementus į langelį „Pavyzdiniai teiginiai“:
GPIOControlIntent {status}
GPIOControlIntent {status} pagal {summa}
Norėdami tęsti, spustelėkite „Kitas“.
Paslaugos pabaigos taško tipu pasirinkite „HTTPS“ir pasirinkite regioną. Įveskite ngrok URL iš 2 veiksmo ir spustelėkite „Kitas“. URL turėtų būti maždaug toks:
ed6ea04d.ngrok.io
Norėdami tęsti, spustelėkite „Kitas“ir paspauskite „Išsaugoti“.
9 veiksmas: apšviečia „Alexa“įgūdžių sąranką
Uždarykite atvirus įgūdžius ir pasirinkite „Pridėti naują įgūdį“.
Nustatykite įgūdžių pavadinimą į „Šviesos valdymas“, o kvietimo pavadinimą - į žodį (-ius), kurį (-ius) norite naudoti įgūdžiui suaktyvinti.
Norėdami tęsti, spustelėkite „Kitas“. Nukopijuokite/įklijuokite į langelį „Ketinimo schema“:
{
"intents": [{"slots": [{"name": "status", "type": "LIGHTS_CONTROL"}], "ketinimas": "LightsControlIntent"}]}
Tada spustelėkite „Pridėti lizdo tipą“.
Lauke „Įveskite tipą“įveskite „LIGHTS_CONTROL“.
Lauke „Įveskite vertes“įveskite šias reikšmes:
ant
išjungtas
Tada nukopijuokite/įklijuokite šį elementą į langelį „Pavyzdiniai teiginiai“:
LightsControlIntent posūkis {status}
Norėdami tęsti, spustelėkite „Kitas“. Paslaugos pabaigos taško tipu pasirinkite „HTTPS“ir pasirinkite regioną. Įveskite ngrok URL iš 2 veiksmo ir spustelėkite „Kitas“. URL turėtų būti maždaug toks:
ed6ea04d.ngrok.io
Norėdami tęsti, spustelėkite „Kitas“ir paspauskite „Išsaugoti“.
10 veiksmas: gerbėjo „Alexa“įgūdžių sąranka
Uždarykite atvirus įgūdžius ir pasirinkite „Pridėti naują įgūdį“.
Nustatykite įgūdžių pavadinimą į „Ventiliatoriaus valdymas“, o užklausos pavadinimą - į žodį (-ius), kurį (-iuos) norite naudoti įgūdžiui suaktyvinti.
Norėdami tęsti, spustelėkite „Kitas“.
Nukopijuokite/įklijuokite šį laukelį „Ketinimo schema“:
{
"intents": [{"slots": [{"name": "status", "type": "FAN_CONTROL"}], "ketinimas": "FANControlIntent"}]}
Tada spustelėkite „Pridėti lizdo tipą“.
Lauke „Įveskite tipą“įveskite „FAN_CONTROL“.
Lauke „Įveskite vertes“įveskite šias reikšmes:
ant
išjungtas
Tada nukopijuokite/įklijuokite šį elementą į langelį „Pavyzdiniai teiginiai“:
FANControlIntent posūkis {status}
Norėdami tęsti, spustelėkite „Kitas“. Paslaugos pabaigos taško tipu pasirinkite „HTTPS“ir pasirinkite regioną. Įveskite ngrok URL iš 2 veiksmo ir spustelėkite „Kitas“. URL turėtų būti maždaug toks:
ed6ea04d.ngrok.io
Norėdami tęsti, spustelėkite „Kitas“ir paspauskite „Išsaugoti“.
11 žingsnis: sukurkite grandinę
Prijunkite grandinę, kaip parodyta diagramoje. Aš prijungiau JBtek 8 kanalų nuolatinės srovės 5 V relės modulį, kad prisijungčiau prie savo namų kintamosios srovės 120 V linijos ir žemės.
12 žingsnis: „Alexa“komandos
Dabar su Alexa galima ištarti šias komandas, kad galėtumėte valdyti jūsų kambarį.
Rekomenduojamas:
Kaip gauti nemokamą svetainę (TLD, priegloba, SSL): 16 žingsnių
Kaip gauti nemokamą svetainę (TLD, priegloba, SSL): svetainės tampa dideliu dalyku. Anksčiau didelės svetainės, tokios kaip „Microsoft“, „Google“ir kt., Turėjo savo svetaines. Galbūt kai kurie tinklaraštininkai ir mažesnės įmonės taip pat padarė. Tačiau dabar, ypač šios COVID-19 pandemijos metu (taip, rašau tai 2020 m.)
Svetainė/„WiFi“valdoma LED juostelė su „Raspberry Pi“: 9 žingsniai (su nuotraukomis)
Svetainė/„WiFi“valdoma LED juostelė su „Raspberry Pi“: Fonas: Esu paauglys ir pastaruosius kelerius metus kuriu ir programuoju mažus elektronikos projektus, taip pat dalyvauju robotikos varžybose. Neseniai dirbau atnaujindamas savo stalo sąranką ir nusprendžiau, kad tai puikus priedas
Kaip sukurti svetainę „Raspberry Pi“naudojant „Node.js“, „Express“ir „MongoDB“1 dalis: 6 veiksmai
Kaip sukurti svetainę „Raspberry Pi“naudojant „Node.js“, „Express“ir „MongoDB“1 dalyje bus apžvelgiama reikalinga programinė įranga, naudojama kuriant „nod.js“programas, kaip naudotis prievadų peradresavimu, kaip sukurti programą naudojant „Express“ir kaip paleisti programą. Antroji šio dalyko dalis
Sukurkite 100% „Flash“svetainę!: 10 žingsnių
Sukurkite 100% „Flash“svetainę!: Ši pamoka padės jums sukurti 100% „Flash“svetainę. Aš tai skelbiu, nes čia nerandu šios temos vadovėlio. Radau tik " flash flash svetainės šablono kūrimą " čia paskelbta, tai jau kita tema;) Tai aš
Kaip sukurti savo svetainę: 16 žingsnių
Kaip sukurti savo svetainę: visiškai padengtas vadovas, kaip nemokamai gauti popieriaus į žiniatinklį, jei norite, ypač jei draugiški žiniatinklio valdytojai jums yra skolingi, tačiau net ir turėdami mažai patirties ir žinių galite sukurti svetainę ir ją gauti žiniatinklyje taip: