Sisukord:

Kontrolli elutuba Alexa ja Raspberry Pi abil: 12 sammu
Kontrolli elutuba Alexa ja Raspberry Pi abil: 12 sammu

Video: Kontrolli elutuba Alexa ja Raspberry Pi abil: 12 sammu

Video: Kontrolli elutuba Alexa ja Raspberry Pi abil: 12 sammu
Video: Часть 1 - Аудиокнига Герберта Уэллса «Анна Вероника» (гл. 01–03) 2024, September
Anonim
Kontrolli elutuba koos Alexa ja Raspberry Pi -ga
Kontrolli elutuba koos Alexa ja Raspberry Pi -ga

Juhtige oma elutoa telerit, valgustit ja ventilaatorit Alexa (Amazon Echo või Dot) ja Raspberry Pi GPIO abil.

Samm: esmane seadistamine

Kasutasin Raspberry Pi 2 ja Raspbian Jessie pilti, mis on alla laaditud aadressilt

Kui olete sisse loginud, sisestage nõutavad paketid ja pythoni teegid installimiseks järgmised käsud:

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Kolb-kolb-küsi sudo apt-get install lirc

Samm: seadistage Ngrok

Seadistage Ngrok
Seadistage Ngrok

Külastage aadressi https://ngrok.com/download ja hankige uusim Linuxi ARM -i väljalaskmine kodukataloogis:

pakkige lahti /home/pi/ngrok-stable-linux-arm.zip

Avage uus terminal ja sisestage järgmine käsk:

sudo./ngrok http 4000

Avage uus terminal ja sisestage järgmine käsk:

sudo./ngrok http 4500

Avage kolmas uus terminal ja sisestage järgmine käsk:

sudo./ngrok http 5000

Samm: valguslüliti juhtimise Pythoni skript

Avage uus terminaliseanss ja looge uus pythoni fail nimega light_control.py:

nano light_control.py

Kopeerige/kleepige järgmine kood uude faili:

kolvi impordist Kolbfrom flask_ask import Küsi, avaldus, convert_errors import RPi. GPIO GPIO -na importimise logimine import os GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app, '/') logging.getLogger (" setLevel (logging. DEBUG) @ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (olek): try: pinNum = 27, välja arvatud erand kui e: tagastuslause ('PIN -kood ei sobi.') GPIO.setup (pinNum, GPIO. OUT), kui olek on ['on', 'high']: GPIO.output (pinNum, GPIO. LOW), kui olek on ['off', ' madal ']: GPIO.output (pinNum, GPIO. HIGH) tagastuslause (' Turning {} The Living Room Lights'.format (status)) if _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 ', port = port)

Salvestage ja sulgege fail.

Käivitage kolviserver järgmiselt:

sudo python light_control.py

Jätke nii ngrok kui ka light_control.py tööle

Samm: ventilaatori juhtimise Pythoni skript

Avage uus terminaliseanss ja looge uus pythoni fail nimega fan_control.py:

nano fan_control.py

Kopeerige/kleepige järgmine kood uude faili:

kolvi impordist Kolb

from flask_ask import Küsi, avaldus, convert_errors import RPi. GPIO kui GPIO import logimine 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 (olek): try: pinNum = 22, välja arvatud erand kui e: tagastuslause ('PIN -number pole kehtiv. ') GPIO.seadistus (pinNum, GPIO. OUT), kui olek on [' sees ',' kõrge ']: GPIO.väljund (pinNum, GPIO. LOW), kui olek on [' väljas ',' madal ']: GPIO.output (pinNum, GPIO. HIGH) tagastamisavaldus („Turning {} the Living Room Lights”.format (status)) if _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', port = port)

Salvestage ja sulgege fail.

Käivitage kolviserver järgmiselt:

sudo python fan_control.py

Jätke nii ngrok, light_control.py kui ka fan_control.py tööle

Samm: LIRC paketi installimine ja konfigureerimine

Teleri juhtimiseks peate seadistama Raspberry Pi tihvti, et see tekitaks teie konkreetse teleri jaoks infrapuna (IR) signaale. Avage terminal ja sisestage järgmine käsk, et installida LIRC -pakett, mis jäljendab paljude kaugjuhtimispuldide infrapunasignaale.

sudo apt-get install lirc

Järgmisena peate lubama ja konfigureerima tuuma mooduli lirc_rpi. Selleks avage moodulid Nano redaktoris

sudo nano /etc /modules

Lisage faili järgmised read (veenduge, et parameeter gpio_out_pin osutab IR -LED -i juhtivale tihvtile):

lirc_devlirc_rpi gpio_out_pin = 17

Seejärel avage sudo abil fail hardware.conf, nagu varem:

sudo nano /etc/lirc/hardware.conf

Lisage failile järgmine konfiguratsioon:

LIRCD_ARGS = "-sisestage" LOAD_MODULES = tõsi

DRIVER = "vaikimisi"

SEADME = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Nüüd taaskäivitage Raspberry Pi:

sudo taaskäivitamine

6. toiming: Pythoni skript teleri juhtimiseks

Avage uus terminaliseanss ja looge uus pythoni fail nimega ir_control.py:

nano ir_control.py

Minge aadressile

Leidke teleriga ühilduv kaugjuhtimispult. Minu puhul on mul Sanyo teler, mis töötab konfiguratsioonifailiga sanyo-tv01. Kui olete leidnud telerit toetava faili, avage see ja vaadake käsuvalikud läbi.

Kopeerige/kleepige järgmine kood uude faili ja asendage sanyo-tv01 teie teleriga sobiva failinimega. Veenduge ka, et teleri konfiguratsioonifail toetaks teleri käske; Võimalik, et peate teleri konfiguratsioonifailiga õigesti töötamiseks muutma käske KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN ja KEY_MUTE.

kolvi impordist Kolbfrom flask_ask import Küsi, avaldus, convert_errors import RPi. GPIO kui GPIO import logimine 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): kui olek ['sisselülitamine']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") tagastusavaldus ("Teleri sisselülitamine") elifi olek ['lülita välja']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") tagastusavaldus ('Teleri väljalülitamine') elifi olek ['muuda sisendit]: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") return lause ('Teleri sisendi muutmine') elifi olek ['suurendage helitugevust]: 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 ") tagastusavaldus (" Teleri helitugevuse suurendamine ") elifi olek ['vähenda helitugevust]: 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_VOLUMEDSOWNYSENSION ") tagastusavaldus (" Teleri helitugevuse vähendamine ") elifi olek ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") tagastusavaldus (" Teleri vaigistamine ") elifi olek ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") tagastuslause (' Teleri vaigistuse tühistamine ') else: tagastuslause (' Kaugfunktsiooni ei leitud. ') kui _nimi_ ==' _main_ ': port = 5000 rakendust.run (host = '0.0.0.0', port = port)

Salvestage ja sulgege fail.

Käivitage kolviserver järgmiselt:

sudo python ir_control.py

Jätke kõik kolm ngrok terminaliakent, light_control.py, fan_control.py ja ir_control.py tööle

Samm: logige sisse AWS -i kontole

Logige sisse AWS -i kontole
Logige sisse AWS -i kontole

Kõigepealt looge või logige sisse oma AWS -i arendajakontole ja avage oma Alexa oskuste loend.

8. samm: teleri Alexa oskuste seadistamine

Teleri Alexa oskuste seadistamine
Teleri Alexa oskuste seadistamine

Valige "Lisa uus oskus".

Määrake oskuse nimeks „Trigger TV” ja kutse nimeks sõna (d), mida soovite oskuse aktiveerimiseks kasutada.

Jätkamiseks klõpsake nuppu „Järgmine”.

Kopeerige/kleepige väljale "Kavatskeem" järgmine:

"slots": [{"name": "status", "type": "TV_Function"}, {"name": "summa", "type": "AMAZON. NUMBER"}], "kavatsus": "GPIOControlIntent "}]}

Seejärel klõpsake nuppu „Lisa pesa tüüp”

Sisestage väljale „Sisesta tüüp” TV_Function.

Sisestage väljale „Sisesta väärtused” järgmised väärtused:

sisse lülitada

välja lülitama muuda sisend suurendama helitugevust vähendama helitugevust vaigistuse tühistamine

Seejärel kopeerige/kleepige väljale „Prooviväljendid” järgmine:

GPIOControlIntent {status}

GPIOControlIntent {status} {summa} võrra

Jätkamiseks klõpsake nuppu „Järgmine”.

Valige teenuse lõpp -punkti tüübiks „HTTPS” ja valige piirkond. Sisestage 2. sammus ngrok URL ja klõpsake nuppu „Järgmine”. URL peaks olema umbes selline:

ed6ea04d.ngrok.io

Jätkamiseks klõpsake "Järgmine" ja vajutage "Salvesta".

9. samm: süttib Alexa oskuste seadistamine

Tuled Alexa oskuste seadistamine
Tuled Alexa oskuste seadistamine

Sulgege avatud oskus ja valige "Lisa uus oskus".

Määrake oskuse nimeks „Lights Control” ja kutse nimeks sõna (d), mida soovite oskuse aktiveerimiseks kasutada.

Jätkamiseks klõpsake nuppu „Järgmine”. Kopeerige/kleepige väljale "Kavatskeem" järgmine:

{

"intents": [{"slots": [{"name": "status", "type": "LIGHTS_CONTROL"}], "kavatsus": "LightsControlIntent"}]}

Seejärel klõpsake nuppu „Lisa pesa tüüp”.

Sisestage väljale „Sisesta tüüp” „LIGHTS_CONTROL”.

Sisestage väljale „Sisesta väärtused” järgmised väärtused:

peal

väljas

Seejärel kopeerige/kleepige väljale „Prooviväljendid” järgmine:

LightsControlIntent turn {status}

Jätkamiseks klõpsake nuppu „Järgmine”. Valige teenuse lõpp -punkti tüübiks „HTTPS” ja valige piirkond. Sisestage 2. sammus ngrok URL ja klõpsake nuppu „Järgmine”. URL peaks olema umbes selline:

ed6ea04d.ngrok.io

Jätkamiseks klõpsake "Järgmine" ja vajutage "Salvesta".

10. samm: fännige Alexa oskuste seadistamine

Fänn Alexa oskuste seadistamine
Fänn Alexa oskuste seadistamine

Sulgege avatud oskus ja valige "Lisa uus oskus".

Määrake oskuse nimeks „Ventilaatori juhtimine“ja kutse nimeks sõna (d), mida soovite oskuse aktiveerimiseks kasutada.

Jätkamiseks klõpsake nuppu „Järgmine”.

Kopeerige/kleepige väljale "Kavatskeem" järgmine:

{

"intents": [{"slots": [{"name": "status", "type": "FAN_CONTROL"}], "kavatsus": "FANControlIntent"}]}

Seejärel klõpsake nuppu „Lisa pesa tüüp”.

Sisestage väljale „Sisesta tüüp” „FAN_CONTROL”.

Sisestage väljale „Sisesta väärtused” järgmised väärtused:

peal

väljas

Seejärel kopeerige/kleepige väljale „Prooviväljendid” järgmine:

FANControlIntent turn {status}

Jätkamiseks klõpsake nuppu „Järgmine”. Valige teenuse lõpp -punkti tüübiks „HTTPS” ja valige piirkond. Sisestage 2. sammus ngrok URL ja klõpsake nuppu „Järgmine”. URL peaks olema umbes selline:

ed6ea04d.ngrok.io

Jätkamiseks klõpsake "Järgmine" ja vajutage "Salvesta".

Samm: looge vooluring

Ehita ringkond
Ehita ringkond

Ühendage vooluring skeemil näidatud viisil. Ma kasutasin JBtek 8 kanaliga alalisvoolu 5 V releemoodulit, et ühendada oma kodu vahelduvvoolu 120v liin ja maandus.

12. samm: Alexa käsud

Nüüd saab Alexaga öelda järgmisi käske elutoa juhtimiseks.

Soovitan: