Мазмұны:

Alexa және Raspberry Pi көмегімен қонақ бөлмені басқару: 12 қадам
Alexa және Raspberry Pi көмегімен қонақ бөлмені басқару: 12 қадам

Бейне: Alexa және Raspberry Pi көмегімен қонақ бөлмені басқару: 12 қадам

Бейне: Alexa және Raspberry Pi көмегімен қонақ бөлмені басқару: 12 қадам
Бейне: Home Assistant. Урок 1.0 - Самый простой способ установки на Raspberry PI 4B, первые настройки, HACS 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 бейнесін қолдандым.

Жүйеге кіргеннен кейін қажетті бумалар мен питон кітапханаларын орнату үшін келесі пәрмендерді енгізіңіз:

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

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 -қадам: Жарықты ауыстыруды басқаруға арналған Python сценарийі

Жаңа терминалды сеансты ашып, light_control.py атты жаңа питон файлын жасаңыз:

nano light_control.py

Келесі кодты жаңа файлға көшіру/қою:

колбадан импорттаудан Flaskflask_ask импорттау Сұрау, мәлімдеме, convert_errors RPi. GPIO импорттау журналын GPIO ретінде импорттау GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Сұрау (қолданба, '/') logging.getLogger (« flask_ask «). setLevel (logging. DEBUG) @ask.intent ('LightControlIntent', mapping = {'status': 'status'}) def light_control (status): try: pinNum = 27, e: return операторы жағдайынан басқа 'PIN коды жарамсыз.') GPIO.setup (pinNum, GPIO. OUT), егер күй ['on', 'high'] күйінде болса: GPIO. шығысы (pinNum, GPIO. LOW), егер күй ['off', 'күйінде болса төмен ']: GPIO.output (pinNum, GPIO. HIGH) қайтару туралы мәлімдеме (' қонақ бөлмесінің шамдарын қосу '. пішімі (күйі)) егер _name_ ==' _main_ ': port = 4000 app.run (host =' 0.0.0.0 ', порт = порт)

Файлды сақтаңыз және жабыңыз.

Колбалық серверді келесіден бастаңыз:

sudo python light_control.py

Ngrok және light_control.py екеуін де қосулы күйде қалдырыңыз

4 -қадам: желдеткіштерді басқаруға арналған Python сценарийі

Жаңа терминалды сеансты ашып, fan_control.py деп аталатын жаңа питон файлын жасаңыз:

нано fan_control.py

Келесі кодты жаңа файлға көшіру/қою:

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

flask_ask импортынан Сұрау, мәлімдеме, convert_errors RPi. GPIO импорттау GPIO ретінде импорттау журналын импорттау GPIO.setmode (GPIO. BCM) қолданбасы = Flask (_ name_) ask = Ask (қолданба, '/') logging.getLogger («flask_ask»).setLevel (logging. DEBUG) @ask.intent ('FanControlIntent', mapping = {'status': 'status'}) def fan_control (status): try: pinNum = 22 қоспағанда, e: return операторы ('PIN нөмірі) жарамсыз ': GPIO.output (pinNum, GPIO. HIGH) қайтару мәлімдемесі ('қонақ бөлмесінің шамдарын қосу'. Пішімі (күйі)) егер _name_ == '_main_': port = 4500 app.run (хост = '0.0.0.0 ', порт = порт)

Файлды сақтаңыз және жабыңыз.

Колбалық серверді келесіден бастаңыз:

sudo python fan_control.py

Ngrok, light_control.py және fan_control.py екеуін де қосулы күйде қалдырыңыз

5 -қадам: LIRC бумасын орнату және конфигурациялау

Теледидарды басқару үшін Raspberry Pi -дегі түйреуішті арнайы теледидар үшін инфрақызыл (IR) сигналдарды шығару үшін конфигурациялау қажет. Терминалды ашып, көптеген қашықтан басқару пультінің инфрақызыл сигналдарын эмуляциялайтын LIRC пакетін орнату үшін келесі пәрменді енгізіңіз.

sudo apt-get lirc орнатыңыз

Әрі қарай, lirc_rpi ядро модулін қосу және конфигурациялау қажет. Ол үшін Nano редакторында модульдерді ашыңыз

sudo nano /etc /модульдер

Файлға төмендегі жолдарды қосыңыз (gpio_out_pin параметрі ИК жарықдиодты басқаратын түйреуішті көрсететініне көз жеткізіңіз):

17

Содан кейін, Nano ішіндегі hardware.conf файлын sudo көмегімен бұрынғыдай ашыңыз:

sudo nano /etc/lirc/hardware.conf

Файлға келесі конфигурацияны қосыңыз:

LIRCD_ARGS = «-енгізу» LOAD_MODULES = ақиқат

DRIVER = «әдепкі»

ҚҰРЫЛҒЫ = «/dev/lirc0»

МОДУЛДАР = «lirc_rpi»

LIRCD_CONF = «»

LIRCMD_CONF = «»

Енді Raspberry Pi -ді қайта жүктеңіз:

sudo қайта жүктеу

6 -қадам: теледидарды басқаруға арналған Python сценарийі

Жаңа терминалды сеансты ашып, ir_control.py деп аталатын жаңа питон файлын жасаңыз:

nano ir_control.py

Http://lirc-remotes.sourceforge.net/remotes-table сайтына өтіңіз.

Теледидарға сәйкес келетін қашықтан басқару құралын табыңыз. Менің жағдайда sanyo-tv01 конфигурация файлымен жұмыс істейтін Sanyo теледидары бар. Теледидарды қолдайтын файлды тапқаннан кейін оны ашыңыз және пәрмен параметрлерін қарап шығыңыз.

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

колбадан импорттаудан Flaskflask_ask импорттау Сұрау, мәлімдеме, convert_errors RPi. GPIO импорттау журналы GPIO ретінде импорттау GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Сұрау (қолданба, '/') 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»-os1sy) «) қайтару мәлімдемесі ('Теледидардағы дыбыс деңгейін төмендету') 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 Developer есептік жазбасын жасаңыз немесе оған кіріңіз және Alexa дағдыларының тізімін ашыңыз.

8 -қадам: TV Alexa дағдыларын орнату

ТВ Alexa дағдыларын орнату
ТВ Alexa дағдыларын орнату

«Жаңа дағды қосу» таңдаңыз.

Біліктілік атауын «Триггерлік теледидар» және шақыру атын шеберлікті белсендіру үшін қолданғыңыз келетін сөзге орнатыңыз.

Жалғастыру үшін 'Келесі' түймесін басыңыз.

Келесі әрекеттерді «Ниет схемасы» өрісіне көшіріңіз/қойыңыз:

{«ниет»: [{

«слоттар»: [{«name»: «status», «type»: «TV_Function»}, {«name»: «amount», «type»: «AMAZON. NUMBER»}], «ниет»: «GPIOControlIntent «}]}

Әрі қарай, «Ұяшық түрін қосу» түймесін басыңыз.

'Type Type' өрісіне TV_Function енгізіңіз.

'Мәндерді енгізу' өрісіне келесі мәндерді енгізіңіз:

қосу

өшіру өзгерту кірісті жоғарылату дыбыс деңгейін төмендету дыбысты өшіру

Әрі қарай, төмендегілерді «Үлгі сөздері» өрісіне көшіріңіз/қойыңыз:

GPIOControlIntent {status}

GPIOControlIntent {status} бойынша {саны}

Жалғастыру үшін 'Келесі' түймесін басыңыз.

Қызметтің соңғы нүктесі түрі ретінде 'HTTPS' таңдаңыз және аймақты таңдаңыз. 2 -қадамдағы ngrok URL мекенжайын енгізіңіз және 'Келесі' түймесін басыңыз. URL келесідей болуы керек:

ed6ea04d.ngrok.io

Жалғастыру үшін 'Келесі' түймесін басыңыз және 'Сақтау' түймесін басыңыз.

9 -қадам: Alexa дағдыларын орнату

Шамдар Alexa Skill Setup
Шамдар Alexa Skill Setup

Ашық дағдыларды жабыңыз және «Жаңа дағды қосу» таңдаңыз.

Біліктілік атауын «Жарықты басқару» және шақыру атын шеберлікті белсендіру үшін қолданғыңыз келетін сөзге орнатыңыз.

Жалғастыру үшін 'Келесі' түймесін басыңыз. Төмендегілерді «Ниет схемасы» өрісіне көшіру/қою:

{

«ниет»: [{«слоттар»: [{«аты»: «күй», «түрі»: «LIGHTS_CONTROL»}], «ниет»: «LightsControlIntent»}]}

Әрі қарай, «Ұяшық түрін қосу» түймесін басыңыз.

«Түрді енгізу» өрісіне «LIGHTS_CONTROL» енгізіңіз.

'Мәндерді енгізу' өрісіне келесі мәндерді енгізіңіз:

қосулы

өшірулі

Әрі қарай, төмендегілерді «Үлгі сөздері» өрісіне көшіріңіз/қойыңыз:

LightsControlIntent бұрылу {status}

Жалғастыру үшін 'Келесі' түймесін басыңыз. Қызметтің соңғы нүктесі түрі ретінде 'HTTPS' таңдаңыз және аймақты таңдаңыз. 2 -қадамдағы ngrok URL мекенжайын енгізіңіз және «Келесі» түймесін басыңыз. URL келесідей болуы керек:

ed6ea04d.ngrok.io

Жалғастыру үшін 'Келесі' түймесін басыңыз және 'Сақтау' түймесін басыңыз.

10 -қадам: Fan Alexa дағдыларын орнату

Fan Alexa дағдыларын орнату
Fan Alexa дағдыларын орнату

Ашық дағдыларды жабыңыз және «Жаңа дағды қосу» таңдаңыз.

Дағды атын «Желдеткішті басқару» және шақыру атын шеберлікті белсендіру үшін қолданғыңыз келетін сөзге орнатыңыз.

Жалғастыру үшін 'Келесі' түймесін басыңыз.

Келесі әрекеттерді «Ниет схемасы» өрісіне көшіріңіз/қойыңыз:

{

«ниет»: [{«слоттар»: [{«аты»: «күй», «түрі»: «FAN_CONTROL»}], «ниет»: «FANControlIntent»}]}

Әрі қарай, «Ұяшық түрін қосу» түймесін басыңыз.

'Type Type' өрісіне «FAN_CONTROL» енгізіңіз.

'Мәндерді енгізу' өрісіне келесі мәндерді енгізіңіз:

қосулы

өшірулі

Әрі қарай, төмендегілерді «Үлгі сөздері» өрісіне көшіріңіз/қойыңыз:

FANControlIntent бұрылу {status}

Жалғастыру үшін 'Келесі' түймесін басыңыз. Қызметтің соңғы нүктесі түрі ретінде 'HTTPS' таңдаңыз және аймақты таңдаңыз. 2 -қадамдағы ngrok URL мекенжайын енгізіңіз және «Келесі» түймесін басыңыз. URL келесідей болуы керек:

ed6ea04d.ngrok.io

Жалғастыру үшін 'Келесі' түймесін басып, 'Сақтау' түймесін басыңыз.

11 -қадам: Цирутті жасаңыз

Цирутті жасаңыз
Цирутті жасаңыз

Схемада көрсетілгендей тізбекті қосыңыз. Мен өз үйіме AC 120v желісі мен жерге қосылу үшін JBtek 8 арналы DC 5V релелік модулін қолдандым.

12 -қадам: Alexa командалары

Енді Alexa -мен қонақ бөлмені басқару үшін келесі командаларды айтуға болады.

Ұсынылған: