Სარჩევი:

გააკონტროლეთ მისაღები ოთახი Alexa და Raspberry Pi– ით: 12 ნაბიჯი
გააკონტროლეთ მისაღები ოთახი Alexa და Raspberry Pi– ით: 12 ნაბიჯი

ვიდეო: გააკონტროლეთ მისაღები ოთახი Alexa და Raspberry Pi– ით: 12 ნაბიჯი

ვიდეო: გააკონტროლეთ მისაღები ოთახი Alexa და Raspberry Pi– ით: 12 ნაბიჯი
ვიდეო: როგორ მოვაწყოთ მისაღები ოთახი ლამაზად და კომფორტულად? 2024, ნოემბერი
Anonim
აკონტროლეთ მისაღები ოთახი Alexa და Raspberry Pi– ით
აკონტროლეთ მისაღები ოთახი Alexa და Raspberry Pi– ით

აკონტროლეთ თქვენი საცხოვრებელი ოთახის ტელევიზია, განათება და გულშემატკივარი Alexa (Amazon Echo ან Dot) და Raspberry Pi GPIO– ით.

ნაბიჯი 1: საწყისი დაყენება

მე გამოვიყენე Raspberry Pi 2 და Raspbian Jessie სურათი გადმოწერილი

შესვლისთანავე შეიყვანეთ შემდეგი ბრძანებები საჭირო პაკეტებისა და პითონის ბიბლიოთეკების დასაყენებლად:

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install 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: პითონის სკრიპტი სინათლის გადამრთველის კონტროლისთვის

გახსენით ახალი ტერმინალის სესია და შექმენით პითონის ახალი ფაილი სახელად light_control.py:

nano light_control.py

დააკოპირეთ/ჩასვით შემდეგი კოდი ახალ ფაილში:

ბოთლის იმპორტიდან flask_ask იმპორტი ითხოვეთ, განაცხადი, convert_errors იმპორტი RPi. GPIO როგორც GPIO იმპორტი ჟურნალი იმპორტი 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: დაბრუნების განაცხადის ('პინის ნომერი არასწორია.') GPIO.setup (pinNum, GPIO. OUT) თუ სტატუსი ['on', 'high']: GPIO.output (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

დატოვე გათბობა და light_control.py გაშვებული

ნაბიჯი 4: პითონის სკრიპტი გულშემატკივართა კონტროლისთვის

გახსენით ახალი ტერმინალის სესია და შექმენით პითონის ახალი ფაილი სახელად fan_control.py:

nano fan_control.py

დააკოპირეთ/ჩასვით შემდეგი კოდი ახალ ფაილში:

კოლბის იმპორტიდან ბოთლი

flask_ask იმპორტი ითხოვეთ, განაცხადი, convert_errors შემოიტანეთ RPi. GPIO როგორც GPIO იმპორტი ჟურნალი იმპორტი GPIO.setmode (GPIO. BCM) აპლიკაცია = ბოთლი (_ სახელი_) ვთხოვთ = ითხოვენ (აპლიკაცია, '/') logging.getLogger ("flask_ask").setLevel (logging. DEBUG) @ask.intent ('FanControlIntent', mapping = {'status': 'status'}) def fan_control (status): try: pinNum = 22 გამონაკლისის გარდა e: დაბრუნების განაცხადი ('pin ნომერი არასწორია.: GPIO.output (pinNum, GPIO. HIGH) დაბრუნების განაცხადი ('ჩართეთ {} მისაღები ოთახის შუქები'. ფორმატი (სტატუსი)) თუ _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', პორტი = პორტი)

შეინახეთ და დახურეთ ფაილი.

დაიწყეთ კოლბის სერვერი შემდეგით:

sudo python fan_control.py

ორივე გაუშვით გათბობა, light_control.py და fan_control.py

ნაბიჯი 5: LIRC პაკეტის ინსტალაცია და კონფიგურაცია

ტელევიზორის გასაკონტროლებლად თქვენ უნდა დააკონფიგურიროთ Raspberry Pi- ს პინი, რომ შექმნას ინფრაწითელი (IR) სიგნალები თქვენი კონკრეტული ტელევიზიისათვის. გახსენით ტერმინალი და შეიყვანეთ შემდეგი ბრძანება LIRC პაკეტის დასაყენებლად, რომელიც ემსგავსება მრავალი დისტანციური მართვის ინფრაწითელ სიგნალებს.

sudo apt-get დააინსტალირეთ lirc

შემდეგი, თქვენ უნდა ჩართოთ და დააკონფიგურიროთ lirc_rpi ბირთვის მოდული. ამისათვის გახსენით მოდულები ნანო რედაქტორში

sudo nano /etc /modules

დაამატეთ ქვემოთ მოცემული ხაზები ფაილს (დარწმუნდით, რომ gpio_out_pin პარამეტრი მიუთითებს პინზე, რომელიც აკონტროლებს IR LED- ს):

lirc_devlirc_rpi gpio_out_pin = 17

შემდეგი, გახსენით hardware.conf ფაილი ნანოში, როგორც ადრე sudo– ით:

sudo nano /etc/lirc/hardware.conf

დაამატეთ ფაილს შემდეგი კონფიგურაცია:

LIRCD_ARGS = "-uinput" LOAD_MODULES = ჭეშმარიტი

DRIVER = "ნაგულისხმევი"

მოწყობილობა = "/dev/lirc0"

MODULES = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

ახლა გადატვირთეთ Raspberry Pi:

sudo გადატვირთვა

ნაბიჯი 6: პითონის სკრიპტი ტელევიზიის კონტროლისთვის

გახსენით ახალი ტერმინალის სესია და შექმენით პითონის ახალი ფაილი სახელად ir_control.py:

nano ir_control.py

გადადით

იპოვეთ დისტანციური მართვა, რომელიც თავსებადია თქვენს ტელევიზორთან. ჩემს შემთხვევაში მაქვს Sanyo TV, რომელიც მუშაობს sanyo-tv01 კონფიგურაციის ფაილთან. მას შემდეგ რაც იპოვით ფაილს, რომელიც მხარს უჭერს თქვენს ტელევიზორს გახსენით იგი და გადახედეთ ბრძანების ვარიანტებს.

დააკოპირეთ/ჩასვით შემდეგი კოდი ახალ ფაილში და შეცვალეთ sanyo-tv01 ფაილის სახელით, რომელიც მუშაობს თქვენს ტელევიზორთან. ასევე დარწმუნდით, რომ სატელევიზიო ბრძანებებს აქვს თქვენი ტელევიზორების კონფიგურაციის ფაილი; შეიძლება დაგჭირდეთ KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN და KEY_MUTE ბრძანებების შეცვლა თქვენი ტელევიზიის კონფიგურაციის ფაილთან სწორად მუშაობისთვის:

flask იმპორტიდან flask_ask იმპორტი ითხოვეთ, განაცხადი, convert_errors შემოიტანეთ RPi. GPIO როგორც GPIO იმპორტი ჟურნალი იმპორტი GPIO.setmode (GPIO. BCM) app = Flask (_ name_) ask = Ask (app, '/') logging.getLogger (" flask_ask "). setLevel (loging. 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 ") return განცხადება ('ტელევიზორში შეყვანის შეცვლა') 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_VOLUMEDOWNOYEDOYOYONDOYNYSTOWNOYSTOWNOYSTOWNOYSTOWNYSTOWNYSTOWNY (SONY) ") დაბრუნების განცხადება (" ტელევიზორის მოცულობის შემცირება ") elif სტატუსი ['მუნჯი']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") დაბრუნების განაცხადი (" ტელევიზორის დადუმება ") elif სტატუსი ['მუნჯი ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") დაბრუნების განცხადება ("ტელევიზორის დადუმება") სხვა: დაბრუნების განცხადება ("დისტანციური ფუნქცია ვერ მოიძებნა.") თუ _name_ ==' _main_ ': პორტი = 5000 აპი. გაშვება (მასპინძელი = '0.0.0.0', პორტი = პორტი)

შეინახეთ და დახურეთ ფაილი.

დაიწყეთ კოლბის სერვერი შემდეგით:

sudo python ir_control.py

დატოვეთ გათბობის სამივე ფანჯარა, light_control.py, fan_control.py და ir_control.py გაშვებული

ნაბიჯი 7: შედით AWS ანგარიშზე

შედით AWS ანგარიშზე
შედით AWS ანგარიშზე

ჯერ შექმენით ან შედით თქვენს AWS დეველოპერის ანგარიშზე და გახსენით თქვენი Alexa უნარების სია.

ნაბიჯი 8: TV Alexa Skill Setup

ტელევიზიის Alexa უნარის დაყენება
ტელევიზიის Alexa უნარის დაყენება

აირჩიეთ "დაამატეთ ახალი უნარი".

დააყენეთ უნარის სახელი 'Trigger TV' და გამოძახების სახელი იმ სიტყვებზე, რომელთა გამოყენება გსურთ უნარის გასააქტიურებლად.

გასაგრძელებლად დააწკაპუნეთ 'შემდეგი'.

დააკოპირეთ/ჩასვით შემდეგი 'განზრახ სქემის' ყუთში:

"სლოტები": [{"სახელი": "სტატუსი", "ტიპი": "TV_Function"}, {"name": "თანხა", "ტიპი": "AMAZON. NUMBER"}], "განზრახვა": "GPIOControlIntent "}]}

შემდეგ დააჭირეთ ღილაკს "დაამატეთ სლოტის ტიპი"

შეიყვანეთ TV_Function ველში "შეიყვანეთ ტიპი".

შეიყვანეთ შემდეგი მნიშვნელობები "შეიყვანეთ ღირებულებები" ველში:

ჩართვა

გამორთვა შეყვანის შეცვლა მოცულობის შემცირება მოცულობა მუნჯი დადუმება

შემდეგი, დააკოპირეთ/ჩასვით შემდეგი "Sample Utterrances" ყუთში:

GPIOControlIntent {სტატუსი}

GPIOControlIntent {სტატუსი} {თანხის ოდენობით

გასაგრძელებლად დააწკაპუნეთ 'შემდეგი'.

აირჩიეთ "HTTPS", როგორც სერვისის საბოლოო წერტილის ტიპი და აირჩიეთ რეგიონი. შეიყვანეთ გათბობის URL ნაბიჯი 2 -დან და დააწკაპუნეთ "შემდეგი". URL უნდა იყოს მსგავსი:

ed6ea04d.ngrok.io

დააჭირეთ ღილაკს "შემდეგი" გასაგრძელებლად და დააჭირეთ ღილაკს "შენახვა".

ნაბიჯი 9: Lights Alexa Skill Setup

Lights Alexa Skill Setup
Lights Alexa Skill Setup

დახურეთ გახსნილი უნარი და აირჩიეთ "დაამატე ახალი უნარი".

დააყენეთ უნარის სახელი "Lights Control" და "Invocation Name" იმ სიტყვებზე, რომელთა გამოყენება გსურთ უნარის გასააქტიურებლად.

გასაგრძელებლად დააწკაპუნეთ 'შემდეგი'. დააკოპირეთ/ჩასვით შემდეგი 'განზრახ სქემის' ყუთში:

{

"განზრახვები": [{"slots": [{"name": "სტატუსი", "ტიპი": "LIGHTS_CONTROL"}], "განზრახვა": "LightsControlIntent"}]}

შემდეგი, დააჭირეთ ღილაკს "დაამატეთ სლოტის ტიპი".

შეიყვანეთ "LIGHTS_CONTROL" ველში "შეიყვანეთ ტიპი".

შეიყვანეთ შემდეგი მნიშვნელობები "შეიყვანეთ ღირებულებები" ველში:

ჩართული

გამორთული

შემდეგი, დააკოპირეთ/ჩასვით შემდეგი "Sample Utterrances" ყუთში:

LightsControlIntent turn {status}

გასაგრძელებლად დააწკაპუნეთ 'შემდეგი'. აირჩიეთ "HTTPS", როგორც სერვისის საბოლოო წერტილის ტიპი და აირჩიეთ რეგიონი. შეიყვანეთ გათბობის URL ნაბიჯი 2 -დან და დააწკაპუნეთ "შემდეგი". URL უნდა იყოს მსგავსი:

ed6ea04d.ngrok.io

დააჭირეთ ღილაკს "შემდეგი" გასაგრძელებლად და დააჭირეთ ღილაკს "შენახვა".

ნაბიჯი 10: გულშემატკივართა Alexa უნარების დაყენება

გულშემატკივართა Alexa უნარის დაყენება
გულშემატკივართა Alexa უნარის დაყენება

დახურეთ გახსნილი უნარი და აირჩიეთ "დაამატეთ ახალი უნარი".

დააყენეთ უნარის სახელი "გულშემატკივართა კონტროლი" და "ინვოკაციის სახელი" იმ სიტყვებზე, რომელთა გამოყენება გსურთ უნარის გასააქტიურებლად.

გასაგრძელებლად დააწკაპუნეთ 'შემდეგი'.

დააკოპირეთ/ჩასვით შემდეგი "განზრახ სქემის" ყუთში:

{

"განზრახვები": [{"slots": [{"name": "სტატუსი", "ტიპი": "FAN_CONTROL"}], "განზრახვა": "FANControlIntent"}]}

შემდეგი, დააჭირეთ ღილაკს "დაამატეთ სლოტის ტიპი".

შეიყვანეთ "FAN_CONTROL" ველში "შეიყვანეთ ტიპი".

შეიყვანეთ შემდეგი მნიშვნელობები "შეიყვანეთ ღირებულებები" ველში:

ჩართული

გამორთული

შემდეგი, დააკოპირეთ/ჩასვით შემდეგი "Sample Utterrances" ყუთში:

FANControlIntent turn {status}

გასაგრძელებლად დააწკაპუნეთ 'შემდეგი'. აირჩიეთ "HTTPS", როგორც სერვისის საბოლოო წერტილის ტიპი და აირჩიეთ რეგიონი. შეიყვანეთ გათბობის URL მე –2 საფეხურიდან და დააწკაპუნეთ „შემდეგი“. URL უნდა იყოს მსგავსი:

ed6ea04d.ngrok.io

დააჭირეთ ღილაკს "შემდეგი" გასაგრძელებლად და დააჭირეთ ღილაკს "შენახვა".

ნაბიჯი 11: ააშენეთ კირუტი

ააშენეთ Ciruit
ააშენეთ Ciruit

შეაერთეთ სქემა, როგორც ნაჩვენებია დიაგრამაში. მე გამოვიყენე JBtek 8 არხი DC 5V სარელეო მოდული ჩემს სახლებში AC 120v ხაზთან და მიწასთან დასაკავშირებლად.

ნაბიჯი 12: Alexa ბრძანებები

ახლა Alexa– სთან შეიძლება გაეცნოთ შემდეგ ბრძანებებს თქვენი საცხოვრებელი ოთახის გასაკონტროლებლად.

გირჩევთ: