תוכן עניינים:

שליטה בסלון עם אלקסה ופטל פי: 12 שלבים
שליטה בסלון עם אלקסה ופטל פי: 12 שלבים

וִידֵאוֹ: שליטה בסלון עם אלקסה ופטל פי: 12 שלבים

וִידֵאוֹ: שליטה בסלון עם אלקסה ופטל פי: 12 שלבים
וִידֵאוֹ: איך משתמשים בעוזרות קוליות?! הדרכה וטיפים מעולים 2024, סֶפּטֶמבֶּר
Anonim
שליטה בסלון עם אלקסה ופטל פי
שליטה בסלון עם אלקסה ופטל פי

שלוט בטלוויזיה, באורות ובמאוורר בסלון שלך עם Alexa (אמזון הד או נקודה) ו- Raspberry Pi GPIO.

שלב 1: התקנה ראשונית

השתמשתי ב- Raspberry Pi 2 ובתמונת Jessie של Raspbian שהורדו מ

לאחר הכניסה, הזן את הפקודות הבאות להתקנת החבילות הנדרשות וספריות הפייתון:

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip להתקין בקבוק הבקבוק-שאל sudo apt-get להתקין lirc

שלב 2: הגדר את Ngrok

הגדר Ngrok
הגדר Ngrok

בקר בכתובת https://ngrok.com/download וקבל את המהדורה העדכנית ביותר של Linux ARM כקובץ zip ופריצה בתוך ספריית הבית:

לפתוח /home/pi/ngrok-stable-linux-arm.zip

פתח מסוף חדש והזן את הפקודה הבאה:

sudo./ngrok http 4000

פתח מסוף חדש נוסף והזן את הפקודה הבאה:

sudo./ngrok http 4500

פתח את הטרמינל החדש השלישי והזן את הפקודה הבאה:

sudo./ngrok http 5000

שלב 3: סקריפט פייתון לבקרת מתג אור

פתח הפעלת מסוף חדשה וצור קובץ פייתון חדש בשם light_control.py:

ננו light_control.py

העתק/הדבק את הקוד הבא בקובץ החדש:

מתוך ייבוא בקבוקי בקבוק מיבוא_בקבוק_בקש, הצהרה, שגיאות המרה ייבוא 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 (סטטוס): נסה: pinNum = 27 למעט חריגה כהצהרת החזרה ('מספר סיכה לא תקף.') GPIO.setup (pinNum, GPIO. OUT) אם הסטטוס ב- ['מופעל', 'גבוה']: פלט GPIO.out (pinNum, GPIO. LOW) אם הסטטוס ב- '' כבוי ',' low ']: 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: סקריפט פייתון לבקרת מעריצים

פתח הפעלת מסוף חדשה וצור קובץ פייתון חדש בשם fan_control.py:

nano fan_control.py

העתק/הדבק את הקוד הבא בקובץ החדש:

מבקבוק יבוא בקבוק

מיבוא flask_ask import שאל, הצהרה, 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 (סטטוס): נסה: pinNum = 22 למעט חריגה בתור e: משפט החזרה ('מספר סיכה' לא תקף. ') GPIO.setup (pinNum, GPIO. OUT) אם הסטטוס ב- [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) אם הסטטוס ב- [' כבוי ',' נמוך ']: הצהרת החזרה של GPIO.output (pinNum, GPIO. HIGH) ('הפעלת {} פורמט האורות בסלון' (סטטוס)) אם _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', port = port)

שמור וסגור את הקובץ.

הפעל את שרת הבקבוקונים עם:

sudo python fan_control.py

השאר את ngrok, 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):

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: סקריפט פייתון לבקרת טלוויזיה

פתח הפעלת מסוף חדשה וצור קובץ פייתון חדש בשם ir_control.py:

ננו ir_control.py

עבור אל

מצא שלט תואם לטלוויזיה שלך. במקרה שלי יש לי טלוויזיה Sanyo שעובדת עם קובץ התצורה sanyo-tv01. לאחר שתמצא קובץ התומך בטלוויזיה שלך פתח אותו ועיין באפשרויות הפקודה.

העתק/הדבק את הקוד הבא לתוך הקובץ החדש והחלף את sanyo-tv01 בשם הקובץ שעובד עם הטלוויזיה שלך. וודא גם כי פקודות הטלוויזיה נתמכות על ידי קובץ התצורה של הטלוויזיות שלך; ייתכן שיהיה עליך לשנות את הפקודות KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN ו- KEY_MUTE כדי לפעול כראוי עם קובץ התצורה של הטלוויזיה שלך:

מתוך ייבוא בקבוקי בקבוק מיבוא_בקבוק_בקש, הצהרה, שגיאות המרה ייבוא 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 ") החזרה statement ('שינוי קלט בטלוויזיה') סטטוס 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.system " ") הצהרת החזרה ('הפחתת עוצמת הקול בטלוויזיה') סטטוס elif ב ['השתק']: מערכת os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") הצהרת החזרה ('השתקת הטלוויזיה') סטטוס elif ב ['בטל השתקה' ']: 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

השאר את כל שלוש חלונות המסוף של ngrok, light_control.py, fan_control.py ו- ir_control.py

שלב 7: היכנס לחשבון AWS

התחבר לחשבון AWS
התחבר לחשבון AWS

ראשית צור או התחבר לחשבון המפתח שלך ב- AWS ופתח את רשימת כישורי Alexa.

שלב 8: התקנת מיומנויות טלוויזיה Alexa

התקנת מיומנויות טלוויזיה Alexa
התקנת מיומנויות טלוויזיה Alexa

בחר "הוסף מיומנות חדשה".

הגדר את שם המיומנות ל- 'Trigger TV' ואת שם ההזמנה למילים שבהן ברצונך להשתמש כדי להפעיל את המיומנות.

לחץ על 'הבא' כדי להמשיך.

העתק/הדבק את הדברים הבאים בתיבה 'סכמת הכוונה':

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

לאחר מכן לחץ על 'הוסף סוג חריץ'

הזן TV_Function בשדה 'הזן סוג'.

הזן את הערכים הבאים בשדה 'הזן ערכים':

להדליק

כבה שינוי קלט הגברת עוצמת הקול הפחת את עוצמת הקול השתקה

לאחר מכן, העתק/הדבק את הדברים הבאים בתיבה 'אמירות לדוגמה':

GPIOControlIntent {status}

GPIOControlIntent {status} לפי {amount}

לחץ על 'הבא' כדי להמשיך.

בחר 'HTTPS' כסוג נקודת הקצה של השירות ובחר אזור. הזן את כתובת ה- ngrok משלב 2 ולחץ על 'הבא'. כתובת האתר צריכה להיות בערך כמו:

ed6ea04d.ngrok.io

לחץ על 'הבא' כדי להמשיך ולחץ על 'שמור'.

שלב 9: מדליק הגדרת מיומנות Alexa

מדליק הגדרת מיומנות Alexa
מדליק הגדרת מיומנות Alexa

סגור את המיומנות הפתוחה ובחר "הוסף מיומנות חדשה".

הגדר את שם המיומנות ל'בקרת אורות 'ושם ההזמנה למילים בהן ברצונך להשתמש כדי להפעיל את המיומנות.

לחץ על 'הבא' כדי להמשיך. העתק/הדבק את הדברים הבאים בתיבה 'סכמת הכוונה':

{

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

לאחר מכן לחץ על 'הוסף סוג חריץ'.

הזן "LIGHTS_CONTROL" בשדה 'הזן סוג'.

הזן את הערכים הבאים בשדה 'הזן ערכים':

עַל

כבוי

לאחר מכן, העתק/הדבק את הדברים הבאים בתיבה 'אמירות לדוגמה':

LightsControlIntent turn {status}

לחץ על 'הבא' כדי להמשיך. בחר 'HTTPS' כסוג נקודת קצה השירות ובחר אזור. הזן את כתובת ה- ngrok משלב 2 ולחץ על 'הבא'. כתובת האתר צריכה להיות בערך כמו:

ed6ea04d.ngrok.io

לחץ על 'הבא' כדי להמשיך ולחץ על 'שמור'.

שלב 10: מעריץ הגדרות מיומנות Alexa

מערך כישורי מניעת Alexa
מערך כישורי מניעת Alexa

סגור את המיומנות הפתוחה ובחר "הוסף מיומנות חדשה".

הגדר את שם המיומנות ל'בקרת מעריצים 'ואת שם ההזמנה למילים שבהן ברצונך להשתמש כדי להפעיל את המיומנות.

לחץ על 'הבא' כדי להמשיך.

העתק/הדבק את הדברים הבאים בתיבה 'סכמת הכוונה':

{

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

לאחר מכן לחץ על 'הוסף סוג חריץ'.

הזן "FAN_CONTROL" בשדה 'הזן סוג'.

הזן את הערכים הבאים בשדה 'הזן ערכים':

עַל

כבוי

לאחר מכן, העתק/הדבק את הדברים הבאים בתיבה 'אמירות לדוגמה':

פניית FANControlIntent {status}

לחץ על 'הבא' כדי להמשיך. בחר 'HTTPS' כסוג נקודת הקצה של השירות ובחר אזור. הזן את כתובת ה- ngrok משלב 2 ולחץ על 'הבא'. כתובת האתר צריכה להיות בערך כמו:

ed6ea04d.ngrok.io

לחץ על 'הבא' כדי להמשיך ולחץ על 'שמור'.

שלב 11: בנה את הסירויט

בנה את הסירויט
בנה את הסירויט

חבר את המעגל כפי שמוצג בתרשים. השתמשתי במודול ממסר ממסר JBtek 8 ערוצים DC 5V כדי להתחבר לבתי AC 120v AC וקרקע.

שלב 12: פקודות Alexa

כעת ניתן לדבר עם Alexa על הפקודות הבאות כדי לשלוט בסלון שלך.

מוּמלָץ: