Мазмуну:

Alexa жана Raspberry Pi менен конок бөлмөсүн башкаруу: 12 кадам
Alexa жана Raspberry Pi менен конок бөлмөсүн башкаруу: 12 кадам

Video: Alexa жана Raspberry Pi менен конок бөлмөсүн башкаруу: 12 кадам

Video: Alexa жана Raspberry Pi менен конок бөлмөсүн башкаруу: 12 кадам
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Сентябрь
Anonim
Alexa жана Raspberry Pi менен конок бөлмөсүн көзөмөлдөңүз
Alexa жана Raspberry Pi менен конок бөлмөсүн көзөмөлдөңүз

Alexa (Amazon Echo or Dot) жана Raspberry Pi GPIO менен жашоо бөлмөңүздүн сыналгысын, жарыктарын жана күйөрманыңызды башкарыңыз.

1 -кадам: Алгачкы орнотуу

Мен Raspberry Pi 2 жана https://www.raspberrypi.org/downloads/raspbian/ көчүрүлгөн Raspbian Jessie сүрөтүн колдондум

Киргенден кийин, керектүү пакеттерди жана python китепканаларын орнотуу үчүн төмөнкү буйруктарды киргизиңиз:

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip орнотуу Flask колбасы-sudo apt-get install lirc

2 -кадам: Ngrok орнотуу

Ngrok орнотуу
Ngrok орнотуу

Https://ngrok.com/download дарегине баш багыңыз жана Linux ARMдин акыркы версиясын үй каталогунун ичинде zip катары ачыңыз:

unzip /home/pi/ngrok-stable-linux-arm.zip

Жаңы терминалды ачыңыз жана төмөнкү буйрукту киргизиңиз:

sudo./ngrok http 4000

Башка жаңы терминалды ачыңыз жана төмөнкү буйрукту киргизиңиз:

sudo./ngrok http 4500

Үчүнчү жаңы терминалды ачыңыз жана төмөнкү буйрукту киргизиңиз:

sudo./ngrok http 5000

3 -кадам: Light Switch Control үчүн Python Script

Жаңы терминалдык сессияны ачыңыз жана light_control.py аттуу жаңы python файлын түзүңүз:

nano light_control.py

Жаңы файлга төмөнкү кодду көчүрүү/чаптоо:

колбадан импорттоо Flaskfromдан flask_ask импорттоо Суроо, билдирүү, convert_errors RPi. GPIO импорттоо GPIO катары импорттоо журналы импорт 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 in Exception in e: return statement ('PIN номер жараксыз.') GPIO.setup (pinNum, GPIO. OUT) эгер статус ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) if status ['off', ' төмөн ']: GPIO.output (pinNum, GPIO. HIGH) кайтаруу билдирүүсү (' Living Room Lights'ти күйгүзүү '. формат (статус)) эгер _name_ ==' _main_ ': port = 4000 app.run (host =' 0.0.0.0 ', порт = порт)

Файлды сактап, жабыңыз.

Колба серверин баштоо:

Sudo python light_control.py

Ngrok жана light_control.py экөөнү тең иштетип коюңуз

4 -кадам: Күйөрмандарды башкаруу үчүн Python Script

Жаңы терминалдык сеансты ачыңыз жана fan_control.py аттуу жаңы python файлын түзүңүз:

nano fan_control.py

Жаңы файлга төмөнкү кодду көчүрүү/чаптоо:

колбадан импорттук

flask_ask импортунан Суроо, билдирүү, convert_errors RPi. GPIO импорттоо GPIO катары импорттоо журналы импорт 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 in Exception in e: return операторунун билдирүүсүндө ('пин номери) жарактуу эмес. ') GPIO.setup (pinNum, GPIO. OUT) эгер статус [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) if status [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) кайтаруу билдирүүсү ('Living Room Lights'ти күйгүзүү'. Формат (статус)) if _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', порт = порт)

Файлды сактап, жабыңыз.

Колба серверин баштоо:

sudo python fan_control.py

Ngrok, light_control.py жана fan_control.py экөөнү тең иштетип коюңуз

5 -кадам: LIRC топтомун орнотуу жана конфигурациялоо

Сыналгыны көзөмөлдөө үчүн, сиз өзүңүздүн белгилүү телевизоруңуз үчүн инфракызыл (IR) сигналдарды жаратуу үчүн Raspberry Pi'деги пинди конфигурациялашыңыз керек. Терминалды ачыңыз жана көптөгөн алыстан башкаруунун инфракызыл сигналдарын эмуляциялаган LIRC пакетин орнотуу үчүн төмөнкү буйрукту киргизиңиз.

sudo apt-get lirc орнотуу

Андан кийин, lirc_rpi ядро модулун иштетип, конфигурациялашыңыз керек. Бул үчүн модулдарды Nano редакторунда ачыңыз

Sudo нано /ж.б. /модулдар

Төмөнкү саптарды файлга кошуңуз (gpio_out_pin параметри IR LEDин көзөмөлдөгөн пинге багытталганын тактаңыз):

lirc_devlirc_rpi gpio_out_pin = 17

Андан кийин, Nanoдо hardware.conf файлын sudo менен мурдагыдай ачыңыз:

sudo nano /etc/lirc/hardware.conf

Файлга төмөнкү конфигурацияны кошуңуз:

LIRCD_ARGS = "-uinput" LOAD_MODULES = true

DRIVER = "демейки"

ТҮЗМӨК = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

Эми, Raspberry Pi'ни өчүрүп күйгүзүңүз:

sudo өчүрүп күйгүзүү

6 -кадам: Телевизорду башкаруу үчүн Python Script

Жаңы терминалдык сеансты ачыңыз жана ir_control.py аттуу жаңы python файлын түзүңүз:

nano ir_control.py

Баруу

Сыналгыңызга шайкеш келген алыстан табыңыз. Менин учурда менде sanyo-tv01 конфигурация файлы менен иштеген Sanyo сыналгы бар. Сыналгыңызды колдогон файлды тапкандан кийин, аны ачып, буйрук параметрлерин карап көрүңүз.

Төмөнкү кодду жаңы файлга көчүрүп/чаптаңыз жана sanyo-tv01ди сыналгыңыз менен иштеген файлдын атына алмаштырыңыз. Ошондой эле, сыналгы конфигурациясы тв буйруктарын колдоорун текшериңиз; Сыналгыңыздын конфигурация файлы менен туура иштөө үчүн KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN жана KEY_MUTE буйруктарын өзгөртүүгө туура келиши мүмкүн:

колбадан импорттоо Flaskfromдан flask_ask импорттоо Суроо, билдирүү, convert_errors RPi. GPIO импорттоо GPIO катары импорттоо журналы импорт 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 ['күйгүзүү']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") кайтаруу билдирүүсү ('ТВны күйгүзүү') elif абалы ['өчүрүү']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") кайтаруу билдирүүсү ('Телевизорду өчүрүү') elif абалы ['өзгөртүү киргизүү']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") кайтуу билдирүү ('Сыналгыдагы киргизүү өзгөртүлүүдө') elif абалы ['үнүн жогорулатуу']: 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 ") кайтаруу билдирүүсү ('Сыналгынын үнүн жогорулатуу') elif абалы ['көлөмүн азайтуу']: 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.sy_ ") кайтаруу билдирүүсү (" Телевизордун үнүн азайтуу ')) elif абалы [' үнсүз ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") кайтаруу билдирүүсү (' Телдин үнүн өчүрүү ') elif абалы [' үнүн чыгаруу ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") кайтаруу билдирүүсү (' Сыналгынын үнү чыгарылат ') башка: кайтаруу билдирүүсү (' Алыскы функция табылган жок. ') эгер _name_ ==' _main_ ': порт = 5000 колдонмо.run (хост = '0.0.0.0', порт = порт)

Файлды сактап, жабыңыз.

Колба серверин баштоо:

sudo python ir_control.py

Үч ngrok терминал терезелерин, light_control.py, fan_control.py жана ir_control.py иштөөдө калтыруу

7 -кадам: AWS эсебине кириңиз

AWS эсебине кириңиз
AWS эсебине кириңиз

Адегенде AWS Иштеп чыгуучу каттоо эсебиңизди түзүңүз же ага кириңиз жана Alexa Skills тизмесин ачыңыз.

8 -кадам: TV Alexa Skill Setup

TV Alexa жөндөмүн орнотуу
TV Alexa жөндөмүн орнотуу

"Жаңы көндүм кошуу" дегенди тандаңыз.

Көндүмдүн атын "Триггер ТВ" жана Чакыруу Атын жөндөмдү активдештирүү үчүн колдонгуңуз келген сөзгө (лорго) коюңуз.

Улантуу үчүн 'Кийинкини' басыңыз.

Төмөнкүлөрдү "Максат схемасы" кутусуна көчүрүү/чаптоо:

"slots": [{"name": "status", "type": "TV_Function"}, {"name": "amount", "type": "AMAZON. NUMBER"}], "ниет": "GPIOControlIntent "}]}

Андан кийин, 'Slot түрүн кошууну' чыкылдатыңыз

'Типти киргизиңиз' талаасына TV_Function'ду киргизиңиз.

'Маанилерди киргизиңиз' талаасына төмөнкү баалуулуктарды киргизиңиз:

күйгүзүү

өчүрүү өзгөртүү киргизүүнү көбөйтүү көлөмүн азайтуу көлөмүн үнүн басуу

Кийинки, "Үлгү сөздөр" кутусуна төмөнкүлөрдү көчүрүү/чаптоо:

GPIOControlIntent {status}

GPIOControlIntent {status} {сумма}

Улантуу үчүн 'Кийинкини' басыңыз.

Кызматтын Чекит Типи катары "HTTPS" тандап, аймакты тандаңыз. 2 -кадамдан ngrok URL киргизип, "Кийинки" баскычын басыңыз. URL төмөнкүдөй болушу керек:

ed6ea04d.ngrok.io

Улантуу үчүн "Кийинкини" чыкылдатыңыз жана "Сактоо" баскычын басыңыз.

9 -кадам: Lights Alexa Skill Setup

Lights Alexa Skill Setup
Lights Alexa Skill Setup

Ачык жөндөмдү жаап, "Жаңы көндүм кошуу" дегенди тандаңыз.

Көндүмдүн атын "Жарыктарды башкаруу" жана Чакыруунун атын жөндөмдү иштетүү үчүн колдонгуңуз келген сөзгө (лорго) коюңуз.

Улантуу үчүн 'Кийинкини' басыңыз. Төмөнкүлөрдү "Максат схемасы" кутусуна көчүрүү/чаптоо:

{

"ниет": [{"уячалар": [{"аты": "абал", "түрү": "LIGHTS_CONTROL"}], "ниет": "LightsControlIntent"}]}

Андан кийин, 'Slot түрүн кошууну' чыкылдатыңыз.

"Түрүн киргизиңиз" талаасына "LIGHTS_CONTROL" киргизиңиз.

'Маанилерди киргизиңиз' талаасына төмөнкү баалуулуктарды киргизиңиз:

боюнча

өчүк

Кийинки, "Үлгү сөздөр" кутусуна төмөнкүлөрдү көчүрүү/чаптоо:

LightsControlIntent бурулушу {status}

Улантуу үчүн 'Кийинкини' басыңыз. Кызматтын Чекит Түрү катары 'HTTPS' тандап, аймакты тандаңыз. 2 -кадамдагы ngrok URL дарегин киргизип, "Кийинки" баскычын басыңыз. URL төмөнкүдөй болушу керек:

ed6ea04d.ngrok.io

Улантуу үчүн "Кийинкини" чыкылдатыңыз жана "Сактоо" баскычын басыңыз.

10 -кадам: Fan Alexa Skill Setup

Fan Alexa Skill Setup
Fan Alexa Skill Setup

Ачык жөндөмдү жаап, "Жаңы көндүм кошуу" дегенди тандаңыз.

Көндүмдүн атын "Күйөрмандарды башкаруу" жана Чакыруунун атын жөндөмдү иштетүү үчүн колдонгуңуз келген сөзгө (лорго) коюңуз.

Улантуу үчүн 'Кийинкини' басыңыз.

Төмөнкүлөрдү "Максат схемасы" кутусуна көчүрүү/чаптоо:

{

"ниет": [{"уячалар": [{"аты": "абал", "түрү": "FAN_CONTROL"}], "ниет": "FANControlIntent"}]}

Андан кийин, 'Slot түрүн кошууну' чыкылдатыңыз.

'Type Type' талаасына "FAN_CONTROL" киргизиңиз.

'Маанилерди киргизиңиз' талаасына төмөнкү баалуулуктарды киргизиңиз:

боюнча

өчүк

Кийинки, "Үлгү сөздөр" кутусуна төмөнкүлөрдү көчүрүү/чаптоо:

FANControlIntent бурулушу {status}

Улантуу үчүн 'Кийинкини' басыңыз. Кызматтын Акыркы чекит түрү катары 'HTTPS' тандап, аймакты тандаңыз. 2 -кадамдагы ngrok URL дарегин киргизип, "Кийинки" баскычын басыңыз. URL төмөнкүдөй болушу керек:

ed6ea04d.ngrok.io

Улантуу үчүн "Кийинкини" чыкылдатыңыз жана "Сактоо" баскычын басыңыз.

11 -кадам: Ciruit куруңуз

Цирутту куруу
Цирутту куруу

Схеманы диаграммада көрсөтүлгөндөй туташтырыңыз. Мен үйлөрүмө AC 120v линиясы менен жерге туташуу үчүн JBtek 8 Channel DC 5V Relay Module колдондум.

12 -кадам: Alexa буйруктары

Эми Alexa менен сиз жашаган бөлмөңүздү көзөмөлдөө үчүн төмөнкү буйруктарды айтсаңыз болот.

Сунушталууда: