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

השקת מצגת תמונות החג שלך בנגיעה קסומה!: 9 שלבים (עם תמונות)
השקת מצגת תמונות החג שלך בנגיעה קסומה!: 9 שלבים (עם תמונות)

וִידֵאוֹ: השקת מצגת תמונות החג שלך בנגיעה קסומה!: 9 שלבים (עם תמונות)

וִידֵאוֹ: השקת מצגת תמונות החג שלך בנגיעה קסומה!: 9 שלבים (עם תמונות)
וִידֵאוֹ: 052-3358218 אייסקיס אטרקציה לכל אירוע בר מתוקים 2024, נוֹבֶמבֶּר
Anonim
השקת מצגת תמונות החג שלך בנגיעה קסומה!
השקת מצגת תמונות החג שלך בנגיעה קסומה!
השקת מצגת תמונות החג שלך בנגיעה קסומה!
השקת מצגת תמונות החג שלך בנגיעה קסומה!

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

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

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

מדריך זה יסביר כיצד עשיתי זאת באמצעות NFC, פטל פאי, nodejs ו- osmc

שלב 1: סקירה כללית של הפתרון

סקירה כללית של הפתרון
סקירה כללית של הפתרון
סקירה כללית של הפתרון
סקירה כללית של הפתרון

מכיוון שההתקנה כולה כוללת כמה דברים, להלן סקירה כללית של מה שמעורב בכדי לעזור לך להבין את כל הדברים הבאים:

חוּמרָה

- הפסלון תוצרת בית: מכיוון שאני כותב את ההוראות האלה ממש באמצע טיול בן שבוע בקופנהגן/אוסלו/שטוקהולם/הלסינקי, אכלול כמה צילומים של הפסלון שנעשה לטיול זה

- מתחת לכל צלמית יש שבב NFC: אני משתמש במדבקות עגולות שאני יכול להכניס מתחת לכל צלמית אבל אתה יכול להשתמש בכל גורם צורה אחר - רק וודא שהשבב שבו אתה משתמש תואם את הקורא שלך

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

- על מנת שפאי הפטל יקרא תגי NFC, הוספתי קורא NFC - זה שהשתמשתי בו הוא ה- Explore -NFC מ- NXP, הזמין באתרים רבים: הוא מתחבר ל- Pi ופועל כמגן

תוֹכנָה

ב- Raspberry Pi, סקריפט NodeJS ממתין לקריאת תג NFC: ברגע שזה נעשה, התסריט בודק את המזהה שלו מול רשימת ערך/זוג עם כל תיקיה ממקור התמונות ב- OSMC ומזהה NFC המתאים כפי שהוגדר על ידי המשתמש.

כאשר קוראים את התג, אם המזהה נמצא ברשימה, סקריפט הצומת אומר ל- OSMC להפעיל את מצגת השקופיות עבור תיקיה ספציפית זו. על מנת לבנות/להגדיר את הרשימה, אותו סקריפט NodeJS מפעיל פונקציית סריקה כל 5 דקות: זה סורק כל ספריה בתוך המקור "תמונות" ב- OSMC (באמצעות ה- JSON-RPC API שקודי מציע) ומוסיף אותו לרשימה שנשמרת אז בדיסק. על ידי עריכת קובץ טקסט זה ישירות, המשתמש יוכל להוסיף את מזהה NFC המתאים לכל אלבום.

שלב 2: יצירת הפסלון

יצירת הפסלון
יצירת הפסלון
יצירת הפסלון
יצירת הפסלון
יצירת הפסלון
יצירת הפסלון
יצירת הפסלון
יצירת הפסלון

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

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

שלב 3: התקן את OSMC

התקן את OSMC
התקן את OSMC

הדבר הראשון שעשיתי היה להתקין OSMC על כרטיס מיקרו SD עבור ה- Raspberry Pi: בהתקנה שלנו הוא ישמש נגן המדיה לצפייה בתמונות שלך. לא אפרט על היבט זה מכיוון שהוא מתועד די טוב (יש כמה הוראות זמינות אם אתה צריך עזרה). פשוט הורד את תוכנית ההתקנה במחשב שלך ופעל לפי ההוראות. לאחר שסיימתי, פשוט חיברתי מקלדת ועכבר וחיברתי את ה- HDMI לטלוויזיה ועקבתי אחר אשף ההתקנה כדי להגדיר את אזור הזמן וכו '.

לבסוף הוספתי את הספרייה שבה אני מאחסן את התמונות שלי למקורות: במקרה שלי הן מאוחסנות ב- NAS עם IP קבוע באותה רשת, אך ניתן גם לאחסן אותן בכונן USB או בתיקיית הבית עצמה, בתנאי שהמיקרו SD שלך מספיק גדול.

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

כעת אתה אמור לראות את תוכן הספרייה שהוספת ולעיין בתמונות שלך: במקרה שלי, יש לי ספריית משנה לכל נסיעה.

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

שלב 4: הגדר את הקורא

לשאר ההוראות, נתחבר ל- Pi באמצעות שורת הפקודה מעל SSH. לשם כך, פשוט חבר את ה- Pi לרשת שלך באמצעות כבל אתרנט והשתמש במסוף או בכלי ייעודי לחיבור ל- Pi. ב- Mac OS ו- Linux, הפקודה היא

ssh [email protected]

תתבקש להזין סיסמה, היא שוב osmc

כדי שהקורא יוכל לפעול, SPI חייב להיות מופעל: ברוב ההפצות כגון Raspbian ניתן לעשות זאת באמצעות raspi-config, כלי תצורה המאפשר לך לשנות כמה ערכי תצורה.

OSMC, עם זאת, אינו כולל raspi-config, למען בטיחותך בעת השימוש בו. במקום זאת, כבה את הפטל, הוצא את כרטיס המיקרו SD ופשוט הרכיב אותו למחשב שלך: מחיצת "האתחול" אמורה להיות גלויה כעת. שם, בשורש הווליום, תראה קובץ בשם "config.txt" - פשוט פתח אותו והוסף את השורה הזו בסוף:

"dtparam = spi = on"

כעת תוכל לשמור את הקובץ, יש לאפשר אתחול מחדש ו- SPI.

לאחר מכן, יהיה עליך להוריד את קובץ ה- ZIP המצורף ולפרוק אותו על הפטל - אני ממליץ ליצור תיקיית פרוייקטים ולפרוק אותו שם. לשם כך, תוכל להתחבר ל- Raspberry באמצעות FTP באמצעות SSH (אני משתמש ב- CyberDuck לשם כך) או לשים את הקובץ בכונן USB ולהשתמש במנהל הקבצים של Kodi כדי להעתיק אותו ב- Raspberry Pi.

כך או כך, לאחר שהעתקת את קובץ ה- zip ל- Pi, תוכל לנווט אל התיקייה שאליה העתקת אותה ולפרוק אותה, לעבור לתיקיה שהתקבלה ולהתקין את החבילה:

לפתוח SW2827.zipcd SW2827sudo dpkg -i libneardal0_0.14.3-1_armhf.deb neard-explorenfc_1.2-1_armhf.deb

אם הכל ילך כשורה אתה אמור להיות מסוגל לחבר את הקורא, לאתחל ואז להיכנס

explorenfc-basic

אם אתה ניגש לשבב NFC לקורא הוא אמור להציג כעת צרור מידע מהשבב (בין היתר מזהה שלו)

שלב 5: התקן את הצומת וצור את הפרויקט

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

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

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

לאחר מכן תוכל להקליד

sudo apt להתקין nodejs

כדי להתקין את הגירסה העדכנית ביותר של nodejs ו- npm הזמינה.

על מנת לשלוט ב- KODI מתוך nodejs, אנו הולכים להשתמש בחבילת npm הנקראת kodi-ws.

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

npm init

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

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

כעת תוכל להיכנס

sudo npm להתקין kodi-ws sudo npm להתקין jsonfilesudo npm להתקין cronsudo npm להתקין child_process

אם תפתח את package.json לאחר מכן, תוכל לציין שכל החבילות הללו נוספו לתלות.

שלב 6: הקוד, מוסבר

הקוד, מוסבר
הקוד, מוסבר

לשלב זה מצורף הקוד לאפליקציה.

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

תוכלו להבחין כי למרות כל הפונקציות המוצהרות, הקוד עושה רק כמה דברים בהתחלה:

kodi ('localhost', 9090).then (function (חיבור) {

התסריט מנסה להתחבר ל- API OSMC JSON-RPC. ברגע שהוא מצליח (ורק אז), הוא ממשיך עם שאר הקובץ.

אם מסיבה כלשהי אינך מפעיל זאת מ- Raspberry Pi שלך, שנה את localhost לכתובת ה- IP שלך. ודא גם כי בהגדרות השירות בתוך OSMC (הגדרות/שירותים) תיבת הסימון "אפשר שליטה מרחוק מיישומים במערכות אחרות" (ראה תמונה)

שאר הקובץ הוא בעיקר הצהרות על פונקציות בהן נשתמש מאוחר יותר: שתי הפונקציות שהופעלות בפועל מכאן הן (שורות 172/173)

scanAndSetCron (); listenForTag ();

ב- scanAndSetCron:

- הפונקציה scanPictures מופעלת. בתוכו, אנו בודקים אם המשתנה "mypicturedirectory", שיחזיק את הדרך לתמונות שלנו, ריק. אם כן, אנו מבקשים מ- OSMC לתת לנו את כל המקורות שיש לה לתוכן תמונה (בתוך הפונקציה getPictureDirectory, שורה 11):

var piclist = ממתין לחיבור. Files. GetSources ("תמונות");

OSMC נותן לנו מערך בתמורה: עבור כל פריט, אנו בודקים אם שם המקור כולל את "שלי": אם זה המקרה, אנו מאחסנים אותו כמקור התמונה שלנו (שורה 16 ובהמשך). כאן תרצה לשנות את המחרוזת מ- "שלי" לכל מה שהזנת בעבר כשם למקור התמונות שלך

if (piclist.sources .label.includes ("שלי")) {console.log (">>> מצא את הספרייה" + piclist.sources .file); mypicturedirectory = piclist.sources .file; }

כעת, כאשר יש לנו את הנתיב למקור (בעצם תיקיית השורש לאלבומים שלנו), אנו מבקשים מ- OSMC לסרוק אותו ולהוסיף את הנתיב של כל תיקיה למערך שנקרא album_directories (אם הוא כבר לא קיים). מכיוון שפונקציה זו תופעל כל X שניות, אנו בודקים שהספרייה לא נמצאת ברשימה לפני הוספתה, כאשר מזהה NFC מוגדר למחרוזת ריקה - כך שכל תיקיה חדשה שתוסיף לתמונות שלך תהיה אוטומטית נוסף - שורה 46

עבור (var j = 0; j <directories.length; j ++) {if (מדריכים [j].filetype.includes ("מדריך")) {if (searchDirectory (ספריות [j].file, album_directories)) {קונסולה. log (ספריות [j]. קובץ +"כבר שם"); } אחר {console.log (">> הוספת dir" + ספריות [j]. קובץ); album_directories.push ({directory: directories [j].file, nfc: ""}); }}}

בסיום, אנו שומרים את מערך album_directories לקובץ json ב- Pi, אותו אנו מנסים לטעון בכל פעם שהפונקציה מבוצעת: זה קורה בסוף הפונקציה scanAndSetCron שבה אנו משתמשים בחבילה דמויית cron כדי להבטיח שהפונקציה שלנו פועלת כל 15 שניות.

ניתן לפתוח את קובץ ה- JSON שאנו יוצרים, album_directories.json באמצעות כל אפליקציית פנקס רשימות. לאחר שתעשה זאת, תוצג בפניך רשימת אלבומי התמונות שלך, שלכל אחד מהם שדה ריק "nfc":

[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": ""}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": "" }, {"directory": "/home/osmc/Pictures/Test/", "nfc": ""}]

בשדה זה, כעת עליך להדביק את מזהה התג שאתה רוצה לשייך לאלבום זה. כדי לקבל מזהה זה, פשוט נווט אל תיקיית SW2827, הפעל explorenfc-basic וסרוק את התג שבו ברצונך להשתמש. בפלט שאתה מקבל, חפש את הערך ליד ISO14443A UID. העתק אותו לאלבום שברצונך להגדיר. במקרה שלי, למשל,

[{"directory": "/home/osmc/Pictures/Mada 2016/", "nfc": "040A12EAFC3881"}, {"directory": "/home/osmc/Pictures/NewFolder/", "nfc": " "}, {" directory ":"/home/osmc/Pictures/Test/"," nfc ":" "}]

שמור את הקובץ והתוכן שלו ייטען בעת הפעלת האפליקציה בפעם הבאה.

בפונקציה listenForTag, אנו עושים בדיוק את זה: מכיוון שלא נראה שיש פורט ייעודי של ספריית הקוראים עבור NodeJS, אנו מסתמכים על תהליכי ילדים כדי להשיק את הבינארי עבור הקורא:

var spawn = require ('child_process'). spawn, child = spawn ('/usr/bin/explorenfc-basic', );

אנו מסתמכים על אירוע אירוע כדי לקבל את הפלט מהביצוע הזה: בתוך החזרה ל- child.stdout.on ('data', function (data), אנו מנתחים את הפלט של פקודה זו באמצעות הפונקציה analysOutput: אנו מחפשים את קו שראינו קודם לכן, החל מ- "ISO14443A UID:", מכיוון שכאן מאוחסן המזהה של התג שסרקנו. ברגע שאנו מוצאים את השורה הזו, אנו חותכים אותה ומאחסנים את המזהה לאובייקט (נקרא מזהה, כיצד מְקוֹרִי).

לבסוף, אנו מנסים להתאים את המזהה הזה למזהים שהזנו במערך האובייקטים של album_directories (נטענו באמצעות הקובץ album_directories.json). אם נמצאה התאמה, אנו מנחים את OSMC להשיק מצגת עבור התיקיה הספציפית הזו:

var nfcid = analyseOutput (נתונים); console.log ("nfcid הוא" + nfcid.id); var samsvarende אלבום = searchTag (nfcid.id, album_directories); if (התאם אלבום) {console.log ("אלבום נמצא" + JSON.stringify (מקביל אלבום) + "לתג זה"); var args = [{'path': correspondalbum.directory}]; connection.run ('Player. Open', args); } listenForTag ();

אתה מבחין כיצד בסוף הפונקציה אנו משיקים את listenForTag שוב? זו הדרך לעקיפת הבעיה היחידה שמצאתי לגרום לאפליקציה לפעול: explorenfc-basic יחכה כברירת מחדל לתג, תקרא אותו ואז צא. לאפליקציה יש מצב רציף שאנו יכולים לקרוא לו באמצעות explorenfc -basic -k אך במצב זה מעבד הילד_אף פעם לא פולט את תוכן התג מכיוון שהוא אף פעם לא מסתיים (במילים אחרות child.stdout.on ('נתונים') לעולם לא מופעל). מכיוון שלא מצאתי דרך אחרת להשתמש בקורא זה, מה שאנחנו עושים כאן הוא בעצם השקת explorenfc-basic במצב תג יחיד, וכאשר קוראים תג, אנו מפעילים listenForTag ולכן מפעילים מחדש explorenfc-basic.

אם הייתי צריך לחזור אחורה (ואני חושב שכן), הייתי בוחר בקורא NFC המציע אפשרויות נוספות: למשל, ל- Adafruit (אולי שמתם לב שאני מאוד אוהב אותם) יש את הקורא הזה https:// www.adafruit.com/product/789 התואם libnfc, שלדעתי אומר שהקורא יהיה הרבה יותר נקי לממשק מאשר להתקשר לתהליך ילדים מתוך הצומת ולנתח את ה- stdout!

שלב 7: נסה זאת

כדי להפעיל את האפליקציה, פשוט נווט אל אותה תיקיה והקלד "node index.js" (או התחל npm מאז הגדרנו אותה קודם לכן ב- package.json). ביומנים אתה אמור לראות את האפליקציה שמתחברת ל- OSMC/Kodi וסורקת בפעם הראשונה. לאחר מספר שניות הקובץ album_directories.json ייווצר בתוך ספריית הפרויקטים; לאחר מכן תוכל להזין את מזהי תג NFC כפי שהוסבר קודם לכן ולשייך אותם לאלבומים שאתה רוצה.

שלב 8: הפעל אוטומטית

לסיכום, יצרנו את אפליקציית הצומת אשר (1) סורקת אחר ספריית התמונות של KODI שלך ומנסה למצוא את התיקיה שבה אתה מאחסן את תמונות החג שלך, (2) מקשיבה לתגי NCF על ידי הסתמכות על explorenfc-basic ולאחר מכן (3) משיק את האלבום המשויך לזיהוי NFC זה.

על מנת לגרום לכל התהליך לרוץ ברקע, נשתמש ב- PM2, מנהל תהליכים עבור צומת.

בשורת הפקודה, נווט אל תיקיית הפרויקטים שלך (שבה נמצא קובץ index.js שלך) והקלד את השורות הבאות:

sudo npm התקן pm2 -gpm2 התחל index.js

האפליקציה שלך מנוטרת כעת על ידי PM2 ותופעל מחדש באופן אוטומטי! כדי לוודא שהוא הושק בפועל, הקלד pm2 list וכדאי שתראה אותו ברשימה. אם אתה רוצה לראות את היומנים, פשוט הקלד יומני pm2.

מוּמלָץ: