ዝርዝር ሁኔታ:

የመኖሪያ ክፍልን በአሌክሳ እና በ Raspberry Pi ይቆጣጠሩ 12 ደረጃዎች
የመኖሪያ ክፍልን በአሌክሳ እና በ Raspberry Pi ይቆጣጠሩ 12 ደረጃዎች

ቪዲዮ: የመኖሪያ ክፍልን በአሌክሳ እና በ Raspberry Pi ይቆጣጠሩ 12 ደረጃዎች

ቪዲዮ: የመኖሪያ ክፍልን በአሌክሳ እና በ Raspberry Pi ይቆጣጠሩ 12 ደረጃዎች
ቪዲዮ: MSC Meraviglia Full Ship Tour Tips Tricks & Review Award Winning Cruise Ship Vista Project 2024, ህዳር
Anonim
የመኖሪያ ክፍልን በአሌክሳ እና በ Raspberry Pi ይቆጣጠሩ
የመኖሪያ ክፍልን በአሌክሳ እና በ Raspberry Pi ይቆጣጠሩ

ሳሎንዎን ቴሌቪዥን ፣ መብራቶችን እና አድናቂን በአሌክሳ (አማዞን ኢኮ ወይም ነጥብ) እና Raspberry Pi GPIO ይቆጣጠሩ።

ደረጃ 1: የመጀመሪያ ማዋቀር

ከ https://www.raspberrypi.org/downloads/raspbian/ የወረደውን 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 Flask flask-ask sudo apt-get install lirc

ደረጃ 2 ንግሮክን ያዋቅሩ

Ngrok ን ያዋቅሩ
Ngrok ን ያዋቅሩ

Https://ngrok.com/download ን ይጎብኙ እና የቅርብ ጊዜውን የሊኑክስ አርኤም ልቀት እንደ ዚፕ ያግኙ እና በቤት ማውጫ ውስጥ ይቅለሉት

ዚፕ/ቤት/ፒ /ngrok-stable-linux-arm.zip

አዲስ ተርሚናል ይክፈቱ እና የሚከተለውን ትዕዛዝ ያስገቡ

sudo./ngrok http 4000

ሌላ አዲስ ተርሚናል ይክፈቱ እና የሚከተለውን ትዕዛዝ ያስገቡ

sudo./ngrok http 4500

ሦስተኛውን አዲስ ተርሚናል ይክፈቱ እና የሚከተለውን ትዕዛዝ ያስገቡ

sudo./ngrok http 5000

ደረጃ 3 - የ Python ስክሪፕት ለብርሃን መቀየሪያ መቆጣጠሪያ

አዲስ የተርሚናል ክፍለ ጊዜን ይክፈቱ እና light_control.py የተባለ አዲስ የፓይዘን ፋይል ይፍጠሩ

ናኖ light_control.py

የሚከተለውን ኮድ ይቅዱ/ይለጥፉ ወደ አዲሱ ፋይል

ከእቃ መጫኛ ማስመጣት Flaskfrom flask_ask ማስመጣት ይጠይቁ ፣ መግለጫ ፣ መለወጥ_አስተዋዮች RPi. GPIO ን እንደ GPIO ማስመጣት ማስመጣት os GPIO.setmode (GPIO. BCM) መተግበሪያ = ፍላሽ (_ ስም_) ይጠይቁ = ይጠይቁ (መተግበሪያ ፣ '/') logging.getLogger (" flask_ask "). 'የፒን ቁጥር ልክ አይደለም።') GPIO.setup (pinNum ፣ GPIO. OUT) ሁኔታ በ ['ላይ' ፣ 'ከፍተኛ'] ውስጥ ከሆነ - GPIO.output (pinNum ፣ GPIO. LOW) ሁኔታ በ ['ጠፍቷል' ፣ ' low ']: GPIO.output (pinNum, GPIO. HIGH) የመመለሻ መግለጫ (' ዘወር {} የሳሎን ክፍል መብራቶች'.format (ሁኔታ)) _name_ == '_main_': port = 4000 app.run (አስተናጋጅ = ') 0.0.0.0 '፣ ወደብ = ወደብ)

ፋይሉን ያስቀምጡ እና ይዝጉ።

የፍላሽ አገልጋዩን በ:

sudo python light_control.py

ሁለቱንም ngrok እና light_control.py ሩጫውን ይተው

ደረጃ 4 - ለአድናቂ ቁጥጥር የፓይዘን ስክሪፕት

አዲስ የተርሚናል ክፍለ ጊዜ ይክፈቱ እና fan_control.py የሚባል አዲስ የፓይዘን ፋይል ይፍጠሩ

nano fan_control.py

የሚከተለውን ኮድ ይቅዱ/ይለጥፉ ወደ አዲሱ ፋይል

ከ flask ማስመጣት Flask

ከ flask_ask ማስመጣት ይጠይቁ ፣ መግለጫ ፣ የመቀየር_እርምጃዎች RPi. GPIO ን እንደ GPIO ማስመጣት ማስመጣት os GPIO.setmode (GPIO. BCM) መተግበሪያ = ፍላሽ (_ ስም_) ይጠይቁ = ይጠይቁ (መተግበሪያ ፣ '/') logging.getLogger ("flask_ask").setLevel (logging. DEBUG) @ask.intent ('FanControlIntent', mapping = {'status': 'status'}) def fan_control (status): try: pinNum = 22 Exception from e: return statement ('Pin number') ልክ አይደለም። ') GPIO.setup (pinNum ፣ GPIO. OUT) ሁኔታ በ [' ላይ '፣' ከፍተኛ '] ውስጥ ከሆነ - GPIO.output (pinNum ፣ GPIO. LOW) ሁኔታ በ [' ጠፍቶ '፣' ዝቅተኛ '] ከሆነ ፦ GPIO.output (pinNum ፣ GPIO. HIGH) የመመለሻ መግለጫ ('_name_ ==' _main_ ') ወደብ = 4500 app.run (አስተናጋጅ =' 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 install lirc ን ይጫኑ

በመቀጠል የ lirc_rpi kernel ሞዱሉን ማንቃት እና ማዋቀር ያስፈልግዎታል። ይህንን ለማድረግ በናኖ አርታኢ ውስጥ ሞጁሎችን ይክፈቱ

sudo nano /etc /modules

ከዚህ በታች ያሉትን መስመሮች ወደ ፋይሉ ያክሉ (የ gpio_out_pin ልኬቱ የ IR LED ን የሚቆጣጠርበትን ፒን የሚያመለክት መሆኑን ያረጋግጡ)

lirc_devlirc_rpi gpio_out_pin = 17

በመቀጠል ልክ እንደበፊቱ በናኖ ውስጥ የሃርድዌር.ኮንፍ ፋይልን ከሱዶ ጋር ይክፈቱ-

sudo nano /etc/lirc/hardware.conf

የሚከተለውን ውቅር ወደ ፋይሉ ያክሉ

LIRCD_ARGS = "-uinput" LOAD_MODULES = እውነት

አሽከርካሪ = "ነባሪ"

መሣሪያ = "/dev/lirc0"

ሞዱሎች = "lirc_rpi"

LIRCD_CONF = ""

LIRCMD_CONF = ""

አሁን Raspberry Pi ን እንደገና ያስጀምሩ

sudo ዳግም አስነሳ

ደረጃ 6 - ለቴሌቪዥን ቁጥጥር የፓይዘን ስክሪፕት

አዲስ የተርሚናል ክፍለ -ጊዜን ይክፈቱ እና ir_control.py የተባለ አዲስ የፓይዘን ፋይል ይፍጠሩ-

nano ir_control.py

ወደ

ከእርስዎ ቴሌቪዥን ጋር ተኳሃኝ የሆነ የርቀት መቆጣጠሪያ ይፈልጉ። በእኔ ሁኔታ ከ sanyo-tv01 ውቅረት ፋይል ጋር የሚሰራ ሳንዮ ቴሌቪዥን አለኝ። አንዴ ቴሌቪዥንዎን የሚደግፍ ፋይል ካገኙ በኋላ ይክፈቱት እና በትእዛዝ አማራጮች ውስጥ ይመልከቱ።

የሚከተለውን ኮድ ወደ አዲሱ ፋይል ይቅዱ/ይለጥፉ እና sanyo-tv01 ን ከእርስዎ ቴሌቪዥን ጋር በሚሰራው የፋይል ስም ይተኩ። እንዲሁም የቲቪ ትዕዛዞቹ በእርስዎ ቲቪዎች ውቅር ፋይል የተደገፉ መሆናቸውን ያረጋግጡ። ከቴሌቪዥንዎ የውቅረት ፋይል ጋር በትክክል እንዲሰሩ የ KEY_POWER ፣ KEY_VIDEO ፣ KEY_VOLUMEUP ፣ KEY_VOLUMEDOWN እና KEY_MUTE ትዕዛዞችን ማሻሻል ሊኖርብዎት ይችላል

ከእቃ መጫኛ ማስመጣት Flaskfrom flask_ask ማስመጣት ይጠይቁ ፣ መግለጫ ፣ መለወጥ_አስተዋዮች RPi. GPIO ን እንደ GPIO ማስመጣት ማስመጣት os GPIO.setmode (GPIO. BCM) መተግበሪያ = ፍላሽ (_ ስም_) ይጠይቁ = ይጠይቁ (መተግበሪያ ፣ '/') logging.getLogger (" flask_ask "). setLevel (logging. DEBUG) @ask.intent ('GPIOControlIntent', map = {'status': 'status'}) #'pin': 'pin'}) def tv_function (status) ['አብራ']: 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 ") መመለስ መግለጫ ('በቴሌቪዥኑ ላይ ግቤትን በመቀየር ላይ') በ ['መጠን መጨመር'] ውስጥ የኤሊፍ ሁኔታ ፦ 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.system (" ") የመመለሻ መግለጫ ('ድምጹን በቴሌቪዥኑ ላይ መቀነስ') በ ['ድምጸ-ከል'] ውስጥ የኤሊፍ ሁኔታ: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") የመመለሻ መግለጫ ('ቲቪውን ማጉደል') በኤልፍ ሁኔታ ውስጥ ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") የመመለሻ መግለጫ (' ቴሌቪዥኑን መቀልበስ ') ሌላ-የመመለሻ መግለጫ (' የርቀት ተግባር አልተገኘም። ') _name_ ==' _main_ ': port = 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 ገንቢ መለያ ይፍጠሩ ወይም ይግቡ እና የአሌክሳ ክህሎቶች ዝርዝርዎን ይክፈቱ።

ደረጃ 8 የቴሌቪዥን አሌክሳ የክህሎት ቅንብር

የቲቪ አሌክሳ የክህሎት ማዋቀር
የቲቪ አሌክሳ የክህሎት ማዋቀር

“አዲስ ችሎታ አክል” ን ይምረጡ።

የችሎታውን ስም ወደ ‹ቀስቃሽ ቲቪ› እና የመጥሪያውን ስም ክህሎቱን ለማግበር ሊጠቀሙበት ወደሚፈልጉት ቃል (ዎች) ያዘጋጁ።

ለመቀጠል 'ቀጣይ' ን ጠቅ ያድርጉ።

የሚከተለውን ይቅዱ/ይለጥፉ ወደ ‹ዓላማ ዕቅድ› ሳጥን ውስጥ

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

በመቀጠልም 'የቁማር ዓይነት አክል' ን ጠቅ ያድርጉ

በ ‹ዓይነት ዓይነት› መስክ ውስጥ TV_Function ን ያስገቡ።

በ ‹እሴቶች አስገባ› መስክ ውስጥ የሚከተሉትን እሴቶች ያስገቡ

ማዞር

የለውጥ ግብዓት ጨምር የድምፅ ቅነሳ መጠን ድምጸ ከል ድምጸ -ከል አድርግ

በመቀጠል የሚከተለውን ይቅዱ/ይለጥፉ/ወደ ‹የናሙና ዕቃዎች› ሳጥን ውስጥ ይለጥፉ

GPIOControlIntent {status}

GPIOControlIntent {status} በ {መጠን}

ለመቀጠል 'ቀጣይ' ን ጠቅ ያድርጉ።

እንደ ‹የአገልግሎት መጨረሻ› ዓይነት ‹ኤችቲቲፒኤስ› ን ይምረጡ እና አንድ ክልል ይምረጡ። የ ngrok ዩአርኤልን ከደረጃ 2 ያስገቡ እና ‹ቀጣይ› ን ጠቅ ያድርጉ። ዩአርኤሉ እንደዚህ ያለ ነገር መሆን አለበት ፦

ed6ea04d.ngrok.io

ለመቀጠል ‹ቀጣይ› ን ጠቅ ያድርጉ እና ‹አስቀምጥ› ን ይጫኑ።

ደረጃ 9 መብራቶች አሌክሳ የክህሎት ማዋቀር

መብራቶች አሌክሳ የክህሎት ማዋቀር
መብራቶች አሌክሳ የክህሎት ማዋቀር

ክፍት ክህሎቱን ይዝጉ እና “አዲስ ችሎታ ያክሉ” ን ይምረጡ።

የችሎታውን ስም ወደ “መብራቶች ቁጥጥር” እና የመጥሪያውን ስም ክህሎቱን ለማግበር ሊጠቀሙበት ወደሚፈልጉት ቃል (ዎች) ያዘጋጁ።

ለመቀጠል 'ቀጣይ' ን ጠቅ ያድርጉ። የሚከተለውን ይቅዱ/ይለጥፉ ወደ ‹ዓላማ ዕቅድ› ሳጥን ውስጥ

{

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

በመቀጠልም ‹የቁማር ዓይነት አክል› ን ጠቅ ያድርጉ።

በ «ዓይነት አስገባ» መስክ ውስጥ «LIGHTS_CONTROL» ን ያስገቡ።

በ ‹እሴቶች አስገባ› መስክ ውስጥ የሚከተሉትን እሴቶች ያስገቡ

በርቷል

ጠፍቷል

በመቀጠል የሚከተለውን ወደ “የናሙና መግለጫዎች” ሳጥን ውስጥ ይቅዱ/ይለጥፉ

LightsControlIntent turn {status}

ለመቀጠል 'ቀጣይ' ን ጠቅ ያድርጉ። እንደ የአገልግሎት መጨረሻ ነጥብ ዓይነት ‹HTTPS› ን ይምረጡ እና አንድ ክልል ይምረጡ። ከደረጃ 2 የ ngrok ዩአርኤል ያስገቡ እና ‹ቀጣይ› ን ጠቅ ያድርጉ። ዩአርኤሉ እንደዚህ ያለ ነገር መሆን አለበት ፦

ed6ea04d.ngrok.io

ለመቀጠል ‹ቀጣይ› ን ጠቅ ያድርጉ እና ‹አስቀምጥ› ን ይጫኑ።

ደረጃ 10 የደጋፊ አሌክሳ የክህሎት ቅንብር

የደጋፊ አሌክሳ ክህሎት ቅንብር
የደጋፊ አሌክሳ ክህሎት ቅንብር

ክፍት ክህሎቱን ይዝጉ እና “አዲስ ችሎታ ያክሉ” ን ይምረጡ።

የችሎታውን ስም ወደ ‹የደጋፊ ቁጥጥር› እና የመጥሪያውን ስም ችሎታውን ለማግበር ሊጠቀሙበት ወደሚፈልጉት ቃል (ዎች) ያዘጋጁ።

ለመቀጠል 'ቀጣይ' ን ጠቅ ያድርጉ።

የሚከተለውን ይቅዱ/ይለጥፉ ወደ ‹ዓላማ ዕቅድ› ሳጥን ውስጥ

{

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

በመቀጠልም ‹የቁማር ዓይነት አክል› ን ጠቅ ያድርጉ።

በ «Enter Type» መስክ ውስጥ «FAN_CONTROL» ን ያስገቡ።

በ ‹እሴቶች አስገባ› መስክ ውስጥ የሚከተሉትን እሴቶች ያስገቡ

በርቷል

ጠፍቷል

በመቀጠል የሚከተለውን ይቅዱ/ይለጥፉ/ወደ ‹የናሙና ዕቃዎች› ሳጥን ውስጥ ይለጥፉ

FANControlIntent turn {status}

ለመቀጠል 'ቀጣይ' ን ጠቅ ያድርጉ። እንደ የአገልግሎት መጨረሻ ነጥብ ዓይነት ‹HTTPS› ን ይምረጡ እና አንድ ክልል ይምረጡ። ከደረጃ 2 የ ngrok ዩአርኤል ያስገቡ እና ‹ቀጣይ› ን ጠቅ ያድርጉ። ዩአርኤሉ እንደዚህ ያለ ነገር መሆን አለበት ፦

ed6ea04d.ngrok.io

ለመቀጠል ‹ቀጣይ› ን ጠቅ ያድርጉ እና ‹አስቀምጥ› ን ይጫኑ።

ደረጃ 11: Ciruit ይገንቡ

Ciruit ይገንቡ
Ciruit ይገንቡ

በስዕሉ ላይ እንደሚታየው ወረዳውን ያገናኙ። ከቤቶቼ AC 120v መስመር እና መሬት ጋር ለመገናኘት የ JBtek 8 Channel DC 5V Relay Module ን እጠቀም ነበር።

ደረጃ 12: የ Alexa ትዕዛዞች

አሁን እርስዎ ሳሎንዎን ለመቆጣጠር የሚከተሉት ትዕዛዞች ለአሌክሳ ሊነገሩ ይችላሉ።

የሚመከር: