פרסומת

החלום של כל חובב בית חכם הוא בית שאפשר לדבר איתו, אבל המציאות נמצאת רחוק מזה.

Amazon Echo, למשל, מאפשר לך להשתמש בכל מספר של תכונות מבוקרות קוליות, אך על ידיך להיות יוזמת דו-שיח עם שאלה - אינך יכול פשוט לגרום לה להודיע ​​על הודעה חשובה.

אתה פחית עשה זאת עם מערכת Sonos וקצת קסם פטל פי DIY. היום אני אראה לך כיצד להגדיר התראות קוליות במערכת Sonos שלך, אציג מספר מתכוני IFTTT שימושיים, שילובי OpenHAB ועוד, כדי להשתמש בתכונת ההודעות.

שים לב שיש כריכת Sonos מקורית ל- OpenHAB זמינה, אך ידוע שהיא גורמת לבעיות זיכרון בגלל ספריית uPnP לקויה. הייתי מציע לדלג על זה לעת עתה, ולהשתמש בשיטה במדריך זה במקום זאת.

Raspberry Pi שמריץ לינוקס Raspian הוא אידיאלי עבור הדרכה זו, אך עליו לעבוד גם על כל שרת בית מבוסס לינוקס שברשותך. במקרה זה, אני משתמש באותו Raspberry Pi שרץ OpenHAB, מערכת האוטומציה הביתית של קוד פתוח תחילת העבודה עם אוטומציה ביתית של OpenHAB ב- Raspberry PiOpenHAB היא פלטפורמת אוטומציה ביתית לבוגרת עם קוד פתוח הפועלת על מגוון חומרה והיא פרוטוקול אגנוסטי, כלומר זה יכול להתחבר כמעט לכל חומרת אוטומציה ביתית בשוק היום. קרא עוד

instagram viewer
. שאר מערך ההדרכה הזה מניח שאתה מפעיל זאת גם ב- Raspberry Pi, או שיש חלון מסוף מקומי פתוח בשולחן העבודה, או שהם מחובר מרחוק באמצעות SSH הגדרת Pi פטל שלך לשימוש ללא ראש עם SSHה- Raspberry Pi יכול לקבל פקודות SSH כאשר הוא מחובר לרשת מקומית (באמצעות Ethernet או Wi-Fi), מה שמאפשר לך להגדיר אותה בקלות. היתרונות של SSH חורגים מהפרת המסך היומי ... קרא עוד .

אתה תצטרך

  • פטל פי 2 (דגמים ישנים צריכים לעבוד, אך בדוק אם יש שינויים ספציפיים בהוראות)
  • לפחות אחד דובר סונוס (מערכות שמע אחרות אינן נתמכות, זהו הדרכה לסונוס בלבד)
  • חשבון חינם ב VoiceRSS.org [אין עוד זמן זמין]. הירשם אז מצא את מפתח ה- API שלךשנצטרך מאוחר יותר כדי להפיק את ההודעות הקוליות.

התקן את הצומת אחרון

בדוק איזו גרסה של הצומת יש לך על ידי הקלדה:

צומת -v. 

שים לב כי גרסה 6 אינה נתמכת. אם יש לך את צומת 6, תחילה עליך להסיר אותו ואז עקוב אחר ההוראות שלהלן כדי להתקין את v5.5.

אם אין לך v5 או אם אתה שגיאה לא נמצאה, עקוב אחר ההוראות הבאות להתקנת הצומת. הפקודה הבאה מניחה פטל Pi 2; עבור דגמים ישנים, השתמש armv6l במקום armv7l.

ווגט https://nodejs.org/download/release/latest-v5.x/node-v5.12.0-linux-armv7l.tar.gz. tar -xvf node-v5.12.0-linux-armv7l.tar.gz. צומת CD-v5.12.0-linux-armv7l. sudo cp -R * / usr / local. 

אשר שוב על ידי הקלדת:

צומת -v

ואתה אמור לראות את v5.12 (או מה שהיה האחרון שהורדת).

בשלב הבא, יש לנו כמה מודולי צומת להתקנה. אנו רוצים גם את מנהל החבילות של הצומת.

sudo apt - קבל התקנה npm. התקן sudo npm - g npm. sudo npm התקן -g צומת Gyp. 

זה הדרישות המוקדמות מהדרך, עכשיו על הדברים המהנים.

ממשק API של Sonos HTTP

ה ממשק API של Sonos HTTP יוצר שרת אינטרנט ברשת המקומית, המאפשר לנו לחייג כתובת URL עם הודעה להכרזה ב- Sonos (וכדי לשלוט בו מרחוק אם תרצו, אם כי מדריך זה מתמקד רק בהתראה הקולית אספקט).

שיבוט גיט https://github.com/jishi/node-sonos-http-api.git סונוס. CD סונוס. npm התקנה - ייצור. התחל בערב. 

אם אתה רואה הודעה על מודול כזה ואולם לא נמצא, פשוט עשה זאת npm התקנה ושם המודול, ואז נסה התחל בערב שוב. אם אתה נתקל בשגיאות הקשורות ל- "דורש מהדר C ++ 11", תקן עם הפקודות הבאות:

sudo apt-get להתקין gcc-4.8 g ++ - 4.8. חלופות עדכון sudo - התקן / usr / bin / gccgcc / usr / bin / gcc-4.6 20. חלופי עדכון sudo - התקן / usr / bin / gcc gcc /usr/bin/gcc-4.8 50. חלופות עדכון sudo - התקן / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20. חלופות עדכון sudo - התקן / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50. 

בסופו של דבר כדאי לראות משהו כזה:

sonos-http-api עובד

השרת פועל כעת ומתממשק לסונוס. הפורמט של ממשק API זה קל:

http://[SERVER IP]: 5005 / [ROOM NAME] / [ACTION]

או כדוגמה ספציפית:

http://192.168.1.99:5005/kitchen/playlist/chillout

הפעולה שאנו מעוניינים היא הפקודה "אמור", המשמשת כדלקמן:

http://192.168.1.99:5005/kitchen/say/make%20use%20of%20is%20awesome/en-gb

תשמע הודעת שגיאה על הצורך להירשם למפתח API ב- VoiceRSS.org. היית צריך כבר לעשות זאת, אז הקלד את הדברים הבאים והדבק במפתח ה- API שלך כפרופיראט:

ננו הגדרות

{

"voicerss": "YOURAPIKEY" }

(לחץ על CTRL-X, Y, כדי לשמור את הקובץ)

הפעל מחדש את השרת והצבץ שוב על כתובת האתר. לאחר מספר שניות, כדאי לשמוע קול אנגלי מענג (אם כי תשנה את סוף כתובת האתר ל en-us אם אתה מעדיף). כדי לגרום לשרת ה- Sonos HTTP API להתחיל שוב לאחר הפעלת ה- Pi מחדש:

sudo nano /etc/rc.local

הוסף שורה לפני ה- יציאה 0:

צומת הצמד /home/pi/sonos/server.js  dev / null &

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

הודעות OpenHAB על אירועים

ניקח קודם דוגמה פשוטה: איתור תנועה. זהו מקרה נפוץ להפעלת אורות, אך ייתכן שתרצה גם הודעה קולית אם זו א חיישן תנועה באזור עם תנועה נמוכה, או אולי כאזהרה קדימה שמישהו עולה לגן שביל.

כלל "זוהה תנועת גן" כאשר הפריט Garden_Motion השתנה אז var string string = "יש לך מבקר" sendHttpGetRequest (" http://localhost: 5005 / מטבח / say / "+ הודעה. קוד (" UTF-8 ") +" / en-gb ") סוף.

עליכם לראות כיצד תוכלו לשלב את ההודעות הקוליות הפשוטות הללו בכל אחד מהכללים שלכם, אך בואו לנסות משהו קצת יותר מורכב.

דוח מזג אוויר יומי מ- IFTTT ל- OpenHAB לסונוס

במתכון זה, אנו נודיע ש- Sonos יודיע על דו"ח מזג אוויר יומי בזמן המועדף עליך.

תצטרך את ה- My. כריכת OpenHAB מופעלת, מכיוון שהדבר יוצר חיבור מאובטח בין שרת OpenHAB הפנימי שלך לשירות IFTTT החיצוני. הגדר את זה אם עדיין לא עשית זאת - תוכל להתייחס אליו חלק 1 במדריך OpenHAB שלנו תחילת העבודה עם אוטומציה ביתית של OpenHAB ב- Raspberry PiOpenHAB היא פלטפורמת אוטומציה ביתית לבוגרת עם קוד פתוח הפועלת על מגוון חומרה והיא פרוטוקול אגנוסטי, כלומר זה יכול להתחבר כמעט לכל חומרת אוטומציה ביתית בשוק היום. קרא עוד לקבלת הוראות מלאות, אחרת אני מניח שכבר הגדרת את ההגדרה עם התמדה מופעלת עבור כל הפריטים.

בשלב הבא, צור פריט מחרוזת חדש בהתקנת OpenHAB שלך, אשר יאחסן את דוח מזג האוויר היומי. לפני זה נראה ב- My. ערוץ OpenHAB, עלינו לאתחל אותו עם משתנה כלשהו המוגדר כברירת מחדל. Ping את כתובת האתר הבאה (שינוי raspberrypi.local לשרת OpenHAB שלך, או פשוט השתמש בכתובת ה- IP שלו, ו מזג האוויר של היום לכל מה שקראת למיתר):

http://raspberrypi.local: 8080 / CMD? Todays_Weather = סאני 

התחבר אל My. OpenHAB [URL שבור הוסר] ובדוק את פריטים רשימה כדי להבטיח שהמשתנה מיוצא כעת.

בדיקת הייצוא שלי של פריט בשטח פתוח

חזור ל- IFTTT, צור מתכון חדש והשתמש ב- ערוץ מזג האוויר כטריגר בשעה המועדפת עליך ביום. יהיה עליך להגדיר את המיקום שלך תחילה אם מעולם לא השתמשת בו בעבר.

בחר שלי. OpenHAB כפעולה ובחר ב- Todays_Weather כמשתנה לעדכון.

דוח מזג אוויר ifttt

לעת עתה, פשוט בחר את משבצת המחצית השנייה הבאה לבדיקה - תוכלו לעדכן את המתכון מאוחר יותר ברגע שתדעו שהוא עובד.

בטח, בזמן הבדיקה (למעשה, קצת לפני), קיבלתי את התחזית של היום מעודכנת בהצלחה.

2016-02-27 10: 28: 01.689 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - קיבלה פקודה מעונן בעיקר היום! עם שיא של 7C ונמוך של 1C. חזור. התנאים יהיו מעוננים כיום, עם גובה של 7C ונמוך של 1C. לפריט Todays_Weather. 2016-02-27 10: 28: 01.697 [DEBUG] [o.o.i.m.i. MyOpenHABServiceImpl] - חנות (Todays_Weather), מצב = מעונן בעיקר היום! עם שיא של 7C ונמוך של 1C. חזור. התנאים יהיו מעוננים כיום, עם גובה של 7C ונמוך של 1C. 

בשלב הבא, אנו זקוקים לכלל OpenHAB בכדי לשלוח משתנה זה לכתובת ה- "say" של Sonos. על הפעולות הבאות לעשות זאת:

כלל "הודיע ​​על דוח מזג אוויר יומי" כאשר הפריט Todays_Weather קיבל עדכון. ואז שלחHttpGetRequest (" http://localhost: 5005 / מטבח / say / "+ Todays_Weather.state.toString.encode (" UTF-8 ") +" / en-gb ") סוף.

זה די פשוט: בכל פעם שמשתנה Todays_Weather מתעדכן (שיהיה, באופן אוטומטי, בשעה 8:00 בכל יום), ping את ה- URL. אנו משתמשים קידוד ("UTF-8") פונקציית מחרוזת כדי להפוך את המשפט מ- IFTTT מתאים לשימוש בכתובת URL. כדי לבדוק באופן ידני חלק זה של המערכת, פשוט השתמש שוב ב- API של OpenHAB HTTP:

http://raspberrypi.local: 8080 / CMD? Todays_Weather = מעונן, עם סיכוי לקציצות. 

התחבר ל- IFTTT ללא OpenHAB, באמצעות הצומת אם-זה-אז-אז

לבסוף, נסתכל כיצד להתחבר מכל מתכון IFTTT ללא מתווך OpenHAB. במקום זאת, נתקין שרת אינטרנט אחר ונחשוף את זה לאינטרנט הפתוח. זה לא ללא סיכון: כל סוג של שרת פתוח הוא סיכון אבטחה, אך אנו מקלים על זה לא להפעיל ערימת שרת שלמה, רק קטנה שירות ספציפי שמקבל רק פקודות מסוימות בתבנית מנות נתונים בטוחה של JSON (כך שלא יתקבלו הזרקת SQL או אימות אימות) אפשרי). לאחר שנסיים, תהיה לך כתובת אתר ציבורית שאליה תוכל לשלוח הודעות מערוץ IFTTT Maker.

התחל בהגדרת אחד מהרבים שירותי DNS דינמיים בחינם - - חמש ספקי ה- DNS הדינמיים הטובים ביותרשירות DDNS יכול לעזור לך להתחבר למחשב הביתי שלך תוך כדי תנועה. להלן ספקי ה- DNS הדינמיים הטובים ביותר שיש לקחת בחשבון. קרא עוד בחוץ - אני ממליץ על DuckDNS, במיוחד מכיוון שהוא נותן סט פשוט של הוראות לפטל Pi, מה שמאפשר לו לעדכן את הוספת ה- IP שלך באופן אוטומטי. עקוב אחר הצעות אלה, וזכור את כתובת האתר שלך לשלבים הבאים. ייתכן שהנתב שלך כולל פונקצית DNS דינמית מובנית, אז בדוק קודם. במקרה שלי, אני יכול להשיג * .mynetgear.com URL בחינם, אז השתמשתי בזה.

בשלב הבא, מצא את הנתב שלך שילוח נמל מהי העברת נמל וכיצד זה יכול לעזור לי? [MakeUseOf מסביר]האם אתה בוכה קצת בפנים כשמישהו אומר לך שיש בעיה להעביר יציאה וזו הסיבה שהאפליקציה החדשה והמבריקה שלך לא תעבוד? ה- Xbox שלך לא יאפשר לך לשחק משחקים, הורדות הטורנט שלך מסרבות ... קרא עוד דף תצורה; זה המקום בו נגיד לו מה לעשות עם בקשות נכנסות. העבר את כל בקשות HTTP (יציאה 80) ליציאה 1337 בשרת Raspberry Pi שלך. אני מניח שיש לך כבר כתובת IP שמורה לפטל Pi שלך - אם לא, בדוק את תצורת הנתב שלך דף עבור כתובות IP שמורות כשאתה שם, מכיוון שאינך משתנה בשבוע הבא וכדי ששרת יפסיק פתאום עובד.

העברת תצורת נתב

עכשיו להתקין את החלק האחרון של תוכנת השרת.

https://github.com/sebauer/if-this-then-node.git. CD אם-זה-אז-הצומת / npm התקנה. הצומת server.js.

אתה אמור לראות את הדברים הבאים.

אם זו שגיאה בערכי ברירת המחדל של הצומת

זה בסדר, זה רק אומר שאנחנו צריכים לעדכן את הפרטים שלנו. להיפתח config.js בננו וערוך את הפרטים האלה לכל דבר אחר שאינו ברירת המחדל, ואז שמור. כשאתה מפעיל שוב את השרת, אתה אמור לראות זאת:

אם זה שרת הצמתים פועל

גדול. בדוק שהמחשב שלך נגיש מהעולם החיצון על ידי הקלדת שם מארח ה- DNS הדינמי שלך והוספת /ifttn / לסוף כתובת האתר. אם הכל עובד, ההודעה "IFTTN - אם-זה-אז-צומת גירסה 2.0.1 פועל!" יוצג בדפדפן שלך. שוב, כדי לגרום לתסריט זה לפעול בהפעלה, ערוך את ה- /etc/rc.local הגש והוסף:

צומת sudo /home/pi/if-this-then-node/server.js  dev / null &

אם-זה-אז-הצומת פועל באמצעות תוספים - יש כמה תוספי ברירת מחדל המסופקים, אך לא מעניינים אותנו. במקום זאת, הורד את התוסף המותאם אישית הזה שכתבתי עבורך עם הפקודות הבאות.

תוספי CD. ווגט https://gist.githubusercontent.com/jamesabruce/4af8db24ba3452b94877/raw/d11c1cff3aa44dbb6a738eeb15202f3db461de75/sonos.js 

תצטרך גם להתקין את ה- בקשה מודול.

בקשת התקנת npm. 

ואז הפעל מחדש את השרת. התוסף פשוט למדי, אך מעט שונה מכתובת האתר בה השתמשנו עד כה. במקרה זה השתמשתי בפעולה המיוחדת "תגיד", המעבירה את ההודעה לכל מכשיר של Sonos.

בקשה (' http://localhost: 5005 / sayall / '+ params.message +' / en-gb ', פונקציה (שגיאה, תגובה, גוף)

אם אתה מעדיף להיות מסוגל למקד למכשירים ספציפיים, החלף שורה זו ב:

בקשה (' http://localhost: 5005 / '+ params.device +' / say / '+ params.message +' / en-gb ', פונקציה (שגיאה, תגובה, גוף)

הוסף פרמטר שורה נוסף בשם התקן לבקשת JSON להלן בה ניתן לציין את שם מכשיר ה- Sonos.

כדי לבדוק זאת, אני משתמש באפליקציית הכפתור IFTTT "עשה". צור מתכון חדש, דפדף לערוצים ובחר את יצרנית ערוץ.

לעשות כפתור

צרו מתכון חדש. הזן את כתובת האתר שקבעת להגדיר קודם לכן מספק DNS דינמי בחינם (כולל /ifttn/ בסוף כתובת האתר. אל תשכח את החתכים האלה). בחר הודעה בקשה, יישום / ג'סון תוכן וגוף ההודעה כדלקמן, ומחליפים את כל המשתנים לפי הצורך באלה שהגדרת בעבר:

{"action": "sonos", "user": "YOURUSER", "pw": "YOURPASSWORD", "message": "הודעה נכנסת לכולם: ארוחת הערב מוכנה! חזור. ארוחת הערב מוכנה. תעלה עכשיו את התחת למעלה. "}

עכשיו יש לי כפתור נגיש שיצליח להכריז על ההודעה בכל מכשיר Sonos בבית. אתה יכול כמובן להתאים את זה לכל ערוץ IFTTT שתרצה להעביר הודעה בהתאמה אישית באמצעות משתנים מאותו ערוץ. אתה אמור אפילו להיות מסוגל לשכפל את דוח מזג האוויר מלמעלה מבלי להשתמש ב- OpenHAB כעת, אם כי זה נדרש מאמץ נוסף להתקנת שרת אחר.

הערה: האקרים יסרקו אותך אוטומטית. זה קורה כל הזמן, אבל אם אתה צופה ביומני, זה יכול להראות מדאיג. להלן תוכלו לראות מישהו שניסה באופן שיטתי לברר אם בכלל אחד מממשקי PHPMyAdmin הסטנדרטיים היו נגישים. מה שהם לא היו. אל תיבהל אם אתה רואה משהו דומה. זה המקבילה האינטרנטית למספרי טלפון אקראיים המתקשרים כדי לראות אם מישהו שם.

ניסיונות גרזן של שרת אינטרנט - -

על מה תכריזו?

כעת צריך שיהיו לך הכלים והמודעות הרעות כדי לרחוץ כל העת את כל הבית שלך בהודעות קוליות על כל מה שאתה יכול לחשוב עליו. מי צריך מוזיקה? המגבלה היחידה שלך היא 350 בקשות יומיות מ- VoiceRSS.org - אבל זה בערך אחת ל -4 דקות, אז אתה צריך להיות בסדר.

אז מה תעשה עם זה? שתף את הרעיונות שלך או מתכון IFTTT בתגובות!

זיכויים לתמונה:קפה ואישה מאת S_Photo דרך Shutterstock

ג'יימס הוא בעל תואר ראשון בבינה מלאכותית, והוא מוסמך CompTIA A + ו- Network +. הוא המפתח הראשי של MakeUseOf, ומבלה את זמנו הפנוי במשחקי פיינטבול VR ומשחקי לוח. הוא בנה מחשבים אישיים מאז שהיה ילד.