Cuprins:
- Pasul 1: Configurare inițială
- Pasul 2: Configurați Ngrok
- Pasul 3: Script Python pentru controlul comutatorului de lumină
- Pasul 4: Script Python pentru controlul fanilor
- Pasul 5: Instalarea și configurarea pachetului LIRC
- Pasul 6: Script Python pentru control TV
- Pasul 7: conectați-vă la contul AWS
- Pasul 8: Configurare abilități TV Alexa
- Pasul 9: Lights Alexa Skill Setup
- Pasul 10: Configurarea abilităților Alexa Fan
- Pasul 11: Construiește Ciruit
- Pasul 12: Comenzi Alexa
Video: Controlează camera de zi cu Alexa și Raspberry Pi: 12 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Controlează-ți televizorul din cameră, luminile și ventilatorul cu Alexa (Amazon Echo sau Dot) și Raspberry Pi GPIO.
Pasul 1: Configurare inițială
Am folosit un Raspberry Pi 2 și o imagine Raspbian Jessie descărcată de pe
Odată conectat, introduceți următoarele comenzi pentru a instala pachetele necesare și bibliotecile python:
sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Flask flask-ask sudo apt-get install lirc
Pasul 2: Configurați Ngrok
Accesați https://ngrok.com/download și obțineți cea mai recentă versiune Linux ARM sub formă de zip și dezarhivați în directorul principal:
dezarhivați /home/pi/ngrok-stable-linux-arm.zip
Deschideți un terminal nou și introduceți următoarea comandă:
sudo./ngrok http 4000
Deschideți un alt terminal nou și introduceți următoarea comandă:
sudo./ngrok http 4500
Deschideți al treilea terminal nou și introduceți următoarea comandă:
sudo./ngrok http 5000
Pasul 3: Script Python pentru controlul comutatorului de lumină
Deschideți o nouă sesiune de terminal și creați un nou fișier python numit light_control.py:
nano light_control.py
Copiați / lipiți următorul cod în noul fișier:
din flask import Flaskde la flask_ask import Ask, statement, convert_errors import RPi. GPIO ca GPIO import logging import os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (status): try: pinNum = 27 cu excepția Exception ca e: return statement („Numărul pinului nu este valid.”) GPIO.setup (pinNum, GPIO. OUT) dacă starea în ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) dacă starea în ['off', ' low ']: instrucțiune de returnare GPIO.output (pinNum, GPIO. HIGH) (' Turning {} the Living Room Lights'.format (status)) if _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 ', port = port)
Salvați și închideți fișierul.
Porniți serverul balon cu:
sudo python light_control.py
Lăsați ngrok și light_control.py să ruleze
Pasul 4: Script Python pentru controlul fanilor
Deschideți o nouă sesiune de terminal și creați un nou fișier python numit fan_control.py:
nano fan_control.py
Copiați / lipiți următorul cod în noul fișier:
din flacon import Flacon
din flask_ask import Ask, statement, convert_errors import RPi. GPIO ca GPIO import logging import 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 cu excepția Exception as e: return statement ('Pin number nu este valid. ') GPIO.setup (pinNum, GPIO. OUT) if status in [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) if status in [' off ',' low ']: Instrucțiunea de returnare GPIO.output (pinNum, GPIO. HIGH) („Întoarcerea {} luminilor din camera de zi”. Format (stare)) dacă _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', port = port)
Salvați și închideți fișierul.
Porniți serverul balon cu:
sudo python fan_control.py
Lăsați ngrok, light_control.py și fan_control.py să ruleze
Pasul 5: Instalarea și configurarea pachetului LIRC
Pentru a controla televizorul, trebuie să configurați un pin pe Raspberry Pi pentru a genera semnale în infraroșu (IR) pentru televizorul dvs. specific. Deschideți terminalul și introduceți următoarea comandă pentru a instala un pachet LIRC care emulează semnalele în infraroșu ale multor telecomenzi.
sudo apt-get install lirc
Apoi, trebuie să activați și să configurați modulul kernel lirc_rpi. Pentru aceasta, deschideți module în editorul Nano
sudo nano / etc / modules
Adăugați liniile de mai jos în fișier (asigurați-vă că parametrul gpio_out_pin indică pinul care controlează LED-ul IR):
lirc_devlirc_rpi gpio_out_pin = 17
Apoi, deschideți fișierul hardware.conf în Nano ca înainte cu sudo:
sudo nano /etc/lirc/hardware.conf
Adăugați următoarea configurație în fișier:
LIRCD_ARGS = "- uinput" LOAD_MODULES = adevărat
DRIVER = "implicit"
DEVICE = "/ dev / lirc0"
MODULES = "lirc_rpi"
LIRCD_CONF = ""
LIRCMD_CONF = ""
Acum, reporniți Raspberry Pi:
sudo reboot
Pasul 6: Script Python pentru control TV
Deschideți o nouă sesiune de terminal și creați un nou fișier python numit ir_control.py:
nano ir_control.py
Accesați
Găsiți o telecomandă care este compatibilă cu televizorul dvs. În cazul meu, am un televizor Sanyo care funcționează cu fișierul de configurare sanyo-tv01. Odată ce ați găsit un fișier care acceptă televizorul dvs., deschideți-l și consultați opțiunile de comandă.
Copiați / lipiți următorul cod în noul fișier și înlocuiți sanyo-tv01 cu numele fișierului care funcționează cu televizorul dvs. De asemenea, asigurați-vă că comenzile TV sunt acceptate de fișierul de configurare al televizoarelor; Este posibil să trebuiască să modificați comenzile KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN și KEY_MUTE pentru a funcționa corect cu fișierul de configurare al televizorului:
din flask import Flaskde la flask_ask import Ask, statement, convert_errors import RPi. GPIO ca GPIO import logging import os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app, '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ ask.intent ('GPIOControlIntent', mapping = {'status': 'status'}) # 'pin': 'pin'}) def tv_function (status): if status in ['turn on']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return statement ('Turning the TV') elif status in ['turn off']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") return statement ('Turning the TV') elif status in ['change input']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") return statement ('Schimbarea intrării pe televizor') starea elif în ['crește volumul']: 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 ") return statement ('Volumul crescător la televizor') starea elif în ['reduce volumul']: 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_VOLUMEDOWN") os.system ") declarație de returnare ('Volumul scăzut la televizor') starea elif în ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") declarație de returnare ('Muting the TV') status elif în ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") instrucțiune return (' Unmuting the TV ') else: return statement (' Remote function not found. ') if _name_ ==' _main_ ': port = 5000 app.run (gazdă = '0.0.0.0', port = port)
Salvați și închideți fișierul.
Porniți serverul balon cu:
sudo python ir_control.py
Lăsați toate cele trei ferestre terminale ngrok, light_control.py, fan_control.py și ir_control.py în funcțiune
Pasul 7: conectați-vă la contul AWS
Mai întâi creați sau conectați-vă la contul dvs. de dezvoltator AWS și deschideți lista de abilități Alexa.
Pasul 8: Configurare abilități TV Alexa
Selectați „Adăugați o abilitate nouă”.
Setați Numele abilității la „Trigger TV” și Numele invocării la cuvântul (cuvintele) pe care doriți să îl utilizați pentru a activa abilitatea.
Faceți clic pe „Următorul” pentru a continua.
Copiați / lipiți următoarele în caseta „Schemă de intenție”:
"slots": [{"name": "status", "type": "TV_Function"}, {"name": "amount", "type": "AMAZON. NUMBER"}], "intent": "GPIOControlIntent "}]}
Apoi, faceți clic pe „Adăugați un tip de slot”
Introduceți funcția TV_ în câmpul „Introduceți tipul”.
Introduceți următoarele valori în câmpul „Introduceți valori”:
aprinde
opri schimbare intrare creștere volum scădere volum dezactivare dezactivare
Apoi, copiați / lipiți următoarele în caseta „Exemple de enunțuri”:
GPIOControlIntent {status}
GPIOControlIntent {status} după {amount}
Faceți clic pe „Următorul” pentru a continua.
Selectați „HTTPS” ca tip de punct final al serviciului și selectați o regiune. Introduceți adresa URL ngrok de la pasul 2 și faceți clic pe „Următorul”. Adresa URL ar trebui să fie ceva de genul:
ed6ea04d.ngrok.io
Faceți clic pe „Următorul” pentru a continua și apăsați „Salvare”.
Pasul 9: Lights Alexa Skill Setup
Închideți abilitatea deschisă și selectați „Adăugați o abilitate nouă”.
Setați Numele abilității la „Controlul luminilor” și Numele invocării la cuvântul (cuvintele) pe care doriți să îl utilizați pentru a activa abilitatea.
Faceți clic pe „Următorul” pentru a continua. Copiați / lipiți următoarele în caseta „Schemă de intenție”:
{
"intents": [{"slots": [{"name": "status", "type": "LIGHTS_CONTROL"}], "intent": "LightsControlIntent"}]}
Apoi, faceți clic pe „Adăugați un tip de slot”.
Introduceți „LIGHTS_CONTROL” în câmpul „Enter Type”.
Introduceți următoarele valori în câmpul „Introduceți valori”:
pe
oprit
Apoi, copiați / lipiți următoarele în caseta „Exemple de enunțuri”:
LightsControlIntent turn {status}
Faceți clic pe „Următorul” pentru a continua. Selectați „HTTPS” ca tip de punct final al serviciului și selectați o regiune. Introduceți adresa URL ngrok de la pasul 2 și faceți clic pe „Următorul”. Adresa URL ar trebui să fie ceva de genul:
ed6ea04d.ngrok.io
Faceți clic pe „Următorul” pentru a continua și apăsați „Salvare”.
Pasul 10: Configurarea abilităților Alexa Fan
Închideți abilitatea deschisă și selectați „Adăugați o abilitate nouă”.
Setați Numele abilității la „Control fan” și Numele invocării la cuvântul (cuvintele) pe care doriți să îl utilizați pentru a activa abilitatea.
Faceți clic pe „Următorul” pentru a continua.
Copiați / lipiți următoarele în caseta „Schemă de intenție”:
{
"intents": [{"slots": [{"name": "status", "type": "FAN_CONTROL"}], "intent": "FANControlIntent"}]}
Apoi, faceți clic pe „Adăugați un tip de slot”.
Introduceți „FAN_CONTROL” în câmpul „Introduceți tipul”.
Introduceți următoarele valori în câmpul „Introduceți valori”:
pe
oprit
Apoi, copiați / lipiți următoarele în caseta „Exemple de enunțuri”:
FANControlIntent turn {status}
Faceți clic pe „Următorul” pentru a continua. Selectați „HTTPS” ca tip de punct final al serviciului și selectați o regiune. Introduceți adresa URL ngrok de la pasul 2 și faceți clic pe „Următorul”. Adresa URL ar trebui să fie ceva de genul:
ed6ea04d.ngrok.io
Faceți clic pe „Următorul” pentru a continua și apăsați „Salvare”.
Pasul 11: Construiește Ciruit
Conectați circuitul așa cum se arată în diagramă. Am folosit un modul de releu JBtek 8 canale DC 5V pentru a mă conecta la casele mele, la linia 120v și la masă.
Pasul 12: Comenzi Alexa
Acum, următoarele comenzi pot fi comunicate lui Alexa pentru a vă controla camera de zi.
Recomandat:
MOSFET DC MOTOR Controlează viteza utilizând Arduino: 6 pași
Viteza de control MOSFET DC MOTOR folosind Arduino: În acest tutorial vom învăța cum să controlăm viteza motorului DC folosind un modul MOSFET. Urmăriți videoclipul
Cum se controlează motorul DC cu L298n și Arduino: 5 pași
Cum se controlează motorul DC cu L298n și Arduino: Bună ziua tuturor. Să ne prezentăm. Numele meu este Dimitris și sunt din Grecia. Îmi place foarte mult Arduino pentru că este o placă inteligentă. Voi încerca să descriu cât mai bine acest lucru instructabil pentru a face de oricine. Asadar, hai sa incepem
Controlează-ți motorul EV3 cu Alexa: 9 pași
Controlează-ți motorul EV3 cu Alexa: Vrei să-ți controlezi LEGO EV3 cu comenzi vocale? În acest proiect, ați putea încerca să mutați un motor EV3 vorbind cu Alexa. Tot ce aveți nevoie este un Amazon Echo Dot, o placă IoT Arduino Nano 33 și un EV3 cu dongle WiFi și motor. Ideea este de a construi
IoTyper - Controlează computerul prin Alexa (IoT): 5 pași (cu imagini)
IoTyper - Controlați-vă computerul prin Alexa (IoT): Nu v-ați gândit vreodată să vă controlați computerul cu IoT? Lumea noastră devine mai inteligentă zi de zi și astăzi ne transformăm computerul într-un PC chiar mai inteligent decât este deja. Să începem! IoTyper se bazează pe două microcontrolere de bază: ATMega 32U4 care poate
Controlează-ți șemineul cu HomeKit și Alexa: 7 pași
Controlează-ți șemineul cu HomeKit și Alexa: recent am instalat un șemineu pe gaz, care include o telecomandă. Și după ce am văzut câteva exemple de oameni care și-au integrat șemineele în sistemele de control de acasă, am început să caut aceleași. Șemineul meu are această telecomandă