فهرست مطالب:

اتاق نشیمن را با الکسا و تمشک پای کنترل کنید: 12 مرحله
اتاق نشیمن را با الکسا و تمشک پای کنترل کنید: 12 مرحله

تصویری: اتاق نشیمن را با الکسا و تمشک پای کنترل کنید: 12 مرحله

تصویری: اتاق نشیمن را با الکسا و تمشک پای کنترل کنید: 12 مرحله
تصویری: باز کردن چشم سوم:با خوردن آلو،کشمش،تمشک،،زعفران،ومحصولات دیگه چشم سومت رو باز کن 2024, سپتامبر
Anonim
اتاق نشیمن را با الکسا و تمشک پای کنترل کنید
اتاق نشیمن را با الکسا و تمشک پای کنترل کنید

تلویزیون ، چراغ ها و فن اتاق نشیمن خود را با Alexa (Amazon Echo یا Dot) و Raspberry Pi GPIO کنترل کنید.

مرحله 1: راه اندازی اولیه

من از یک Raspberry Pi 2 و یک Raspbian Jessie تصویر بارگیری شده از https://www.raspberrypi.org/downloads/raspbian/ استفاده کردم

پس از ورود به سیستم ، دستورات زیر را برای نصب بسته های مورد نیاز و کتابخانه های پایتون وارد کنید:

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get 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 را به صورت فشرده دریافت کرده و داخل فهرست اصلی فشرده کنید:

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

یک ترمینال جدید باز کنید و دستور زیر را وارد کنید:

sudo./ngrok http 4000

یک ترمینال جدید دیگر باز کنید و دستور زیر را وارد کنید:

sudo./ngrok http 4500

سومین ترمینال جدید را باز کرده و دستور زیر را وارد کنید:

sudo./ngrok http 5000

مرحله 3: Python Script for Light Switch Control

یک جلسه ترمینال جدید باز کنید و یک فایل پایتون جدید با نام light_control.py ایجاد کنید:

nano light_control.py

کد زیر را در فایل جدید کپی/جایگذاری کنید:

from import flask Flaskfrom flask_ask import Ask، statement، convert_errors import RPi. GPIO as import GPIO logging log 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 به استثنای e: عبارت بازگشت ("شماره پین معتبر نیست" low ']: GPIO.output (pinNum، GPIO. HIGH) عبارت بازگشت (' Turning {} the Living Room Lights'.format (status)) if _name_ == '_main_': port = 4000 app.run (host = ' 0.0.0.0 '، بندر = بندر)

ذخیره کنید و فایل را ببندید.

سرور فلاسک را با موارد زیر راه اندازی کنید:

sudo python light_control.py

هم گرمک و هم light_control.py را در حال اجرا بگذارید

مرحله 4: اسکریپت پایتون برای کنترل طرفداران

یک جلسه ترمینال جدید باز کنید و یک فایل پایتون جدید با نام fan_control.py ایجاد کنید:

nano fan_control.py

کد زیر را در فایل جدید کپی/جایگذاری کنید:

از واردات فلاسک فلاسک

از flask_ask import درخواست ، بیانیه ، convert_errors وارد کردن RPi. GPIO به عنوان وارد کردن GPIO ورود به سیستم GPIO.setmode (GPIO. BCM) برنامه = 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 به استثنای e: عبارت بازگشت ('شماره پین معتبر نیست.: GPIO.output (pinNum، GPIO. HIGH) عبارت بازگشت ('روشن کردن {} چراغهای اتاق نشیمن'.format (status)) if _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 '، بندر = بندر)

ذخیره کنید و فایل را ببندید.

سرور فلاسک را با موارد زیر راه اندازی کنید:

sudo python fan_control.py

هر دو گرمک ، light_control.py و fan_control.py را در حال اجرا رها کنید

مرحله 5: نصب و پیکربندی بسته LIRC

برای کنترل تلویزیون باید یک پین روی رزبری پای پیکربندی کنید تا سیگنال های مادون قرمز (IR) برای تلویزیون خاص شما ایجاد شود. ترمینال را باز کرده و دستور زیر را برای نصب یک بسته LIRC که از سیگنال های مادون قرمز بسیاری از کنترل های از راه دور تقلید می کند ، وارد کنید.

sudo apt-get lirc را نصب کنید

در مرحله بعد ، باید ماژول هسته lirc_rpi را فعال و پیکربندی کنید. برای انجام این کار ، ماژول ها را در ویرایشگر نانو باز کنید

sudo nano /etc /modules

خطوط زیر را به فایل اضافه کنید (مطمئن شوید که پارامتر gpio_out_pin به پین کنترل کننده LED IR اشاره می کند):

lirc_devlirc_rpi gpio_out_pin = 17

در مرحله بعد ، فایل hardware.conf را در Nano با sudo باز کنید:

sudo nano /etc/lirc/hardware.conf

پیکربندی زیر را به فایل اضافه کنید:

LIRCD_ARGS = "-uinput" LOAD_MODULES = درست است

DRIVER = "پیش فرض"

DEVICE = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

حالا ، Raspberry Pi را راه اندازی مجدد کنید:

راه اندازی مجدد sudo

مرحله 6: Python Script برای کنترل تلویزیون

یک جلسه ترمینال جدید باز کنید و یک فایل پایتون جدید با نام ir_control.py ایجاد کنید:

nano ir_control.py

به

ریموت سازگار با تلویزیون خود را پیدا کنید. در مورد من ، من یک تلویزیون Sanyo دارم که با فایل پیکربندی sanyo-tv01 کار می کند. هنگامی که فایلی را پیدا کردید که تلویزیون شما را پشتیبانی می کند ، آن را باز کرده و گزینه های فرمان را بررسی کنید.

کد زیر را در فایل جدید کپی/جایگذاری کرده و نام فایلی را که با تلویزیون شما کار می کند جایگزین sanyo-tv01 کنید. همچنین اطمینان حاصل کنید که دستورات تلویزیون توسط فایل پیکربندی تلویزیون شما پشتیبانی می شود. ممکن است مجبور شوید دستورات KEY_POWER ، KEY_VIDEO ، KEY_VOLUMEUP ، KEY_VOLUMEDOWN و KEY_MUTE را برای کارکرد صحیح با فایل پیکربندی تلویزیون تغییر دهید:

from import flask Flaskfrom flask_ask import Ask، statement، convert_errors import RPi. GPIO as import GPIO logging log 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_VOLUMED 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_VOLUMEDOWNOYEDYONYOYONDOYNOWSTOWNOY) ") دستور بازگشت (" کاهش میزان صدا در تلویزیون ") وضعیت elif در ['بی صدا']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") بیانیه بازگشت ('بی صدا کردن تلویزیون') elif وضعیت در ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") بیانیه بازگشت (' بی صدا کردن تلویزیون ') دیگر: دستور بازگشت (' عملکرد از راه دور پیدا نشد. ') اگر _name_ ==' _main_ ': port = 5000 برنامه.run (host = '0.0.0.0' ، port = port)

ذخیره کنید و فایل را ببندید.

سرور فلاسک را با موارد زیر راه اندازی کنید:

sudo python ir_control.py

هر سه پنجره ترمینال گرمk ، light_control.py ، fan_control.py و ir_control.py را در حال اجرا بگذارید

مرحله 7: وارد حساب AWS شوید

وارد حساب AWS شوید
وارد حساب AWS شوید

ابتدا حساب توسعه دهنده AWS خود را ایجاد یا وارد شوید و لیست مهارت های Alexa خود را باز کنید.

مرحله 8: تنظیم مهارت Alexa TV

تنظیم مهارت تلویزیون الکسا
تنظیم مهارت تلویزیون الکسا

"افزودن مهارت جدید" را انتخاب کنید.

نام مهارت را روی "Trigger TV" و نام فراخوانی را روی کلمه (های) مورد نظر برای فعال کردن مهارت تنظیم کنید.

برای ادامه بر روی بعدی کلیک کنید.

موارد زیر را در کادر "Intent Schema" کپی/جایگذاری کنید:

"slots": [{"name": "status"، "type": "TV_Function"}، {"name": "مقدار"، "type": "AMAZON. NUMBER"}]، "قصد": "GPIOControlIntent "}]}

بعد ، روی "افزودن نوع شکاف" کلیک کنید

TV_Function را در قسمت "Enter Type" وارد کنید.

مقادیر زیر را در قسمت "وارد کردن مقادیر" وارد کنید:

روشن کن

خاموش کردن تغییر ورودی افزایش حجم کاهش صدا بی صدا

بعد ، موارد زیر را در کادر "Sample Utterances" کپی/جایگذاری کنید:

GPIOControlIntent {status}

GPIOControlIntent {status} بر اساس {amount}

برای ادامه بر روی بعدی کلیک کنید.

"HTTPS" را به عنوان نوع نقطه پایانی سرویس انتخاب کرده و منطقه ای را انتخاب کنید. آدرس گرمک را از مرحله 2 وارد کرده و روی "بعدی" کلیک کنید. URL باید چیزی شبیه به این باشد:

ed6ea04d.ngrok.io

برای ادامه روی "بعدی" کلیک کنید و "ذخیره" را فشار دهید.

مرحله 9: تنظیم مهارت Lights Alexa

Lights Alexa Skill Setup
Lights Alexa Skill Setup

مهارت باز شده را ببندید و "Add a New Skill" را انتخاب کنید.

نام مهارت را روی "Lights Control" و نام فراخوانی را روی کلمه (های) مورد نظر برای فعال کردن مهارت تنظیم کنید.

برای ادامه بر روی بعدی کلیک کنید. موارد زیر را در کادر "Intent Schema" کپی/جایگذاری کنید:

{

"intents": [{"slots": [{"name": "status"، "type": "LIGHTS_CONTROL"}]، "قصد": "LightsControlIntent"}]}

بعد ، روی "افزودن نوع شکاف" کلیک کنید.

"LIGHTS_CONTROL" را در قسمت "Enter Type" وارد کنید.

مقادیر زیر را در قسمت "وارد کردن مقادیر" وارد کنید:

بر

خاموش

بعد ، موارد زیر را در کادر "Sample Utterances" کپی/جایگذاری کنید:

نوبت LightsControlIntent {status}

برای ادامه بر روی بعدی کلیک کنید. 'HTTPS' را به عنوان نوع نقطه پایانی سرویس انتخاب کرده و منطقه ای را انتخاب کنید. URL گرمک را از مرحله 2 وارد کرده و روی "بعدی" کلیک کنید. URL باید چیزی شبیه به این باشد:

ed6ea04d.ngrok.io

برای ادامه روی "بعدی" کلیک کنید و "ذخیره" را فشار دهید.

مرحله 10: تنظیم مهارت فن الکسا

راه اندازی مهارت فن الکسا
راه اندازی مهارت فن الکسا

مهارت باز شده را ببندید و "Add a New Skill" را انتخاب کنید.

نام مهارت را روی "Fan Control" و نام فراخوانی را روی کلمه (های) مورد نظر برای فعال کردن مهارت تنظیم کنید.

برای ادامه بر روی بعدی کلیک کنید.

موارد زیر را در کادر "Intent Schema" کپی/جایگذاری کنید:

{

"intents": [{"slots": [{"name": "status"، "type": "FAN_CONTROL"}]، "قصد": "FANControlIntent"}]}

بعد ، روی "افزودن نوع شکاف" کلیک کنید.

"FAN_CONTROL" را در قسمت "Enter Type" وارد کنید.

مقادیر زیر را در قسمت "وارد کردن مقادیر" وارد کنید:

بر

خاموش

بعد ، موارد زیر را در کادر "Sample Utterances" کپی/جایگذاری کنید:

نوبت FANControlIntent {status}

برای ادامه بر روی بعدی کلیک کنید. 'HTTPS' را به عنوان نوع نقطه پایانی سرویس انتخاب کرده و منطقه ای را انتخاب کنید. URL گرمک را از مرحله 2 وارد کرده و روی "بعدی" کلیک کنید. URL باید چیزی شبیه به این باشد:

ed6ea04d.ngrok.io

برای ادامه روی "بعدی" کلیک کنید و "ذخیره" را فشار دهید.

مرحله 11: Ciruit را بسازید

Ciruit را بسازید
Ciruit را بسازید

مدار را همانطور که در نمودار نشان داده شده است وصل کنید. من از یک ماژول رله JBtek 8 Channel DC 5V برای اتصال به خط و زمین خانه 120V AC استفاده کردم.

مرحله 12: دستورات Alexa

در حال حاضر دستورات زیر را می توان با Alexa برای کنترل اتاق نشیمن شما صحبت کرد.

توصیه شده: