תוכן עניינים:
- שלב 1: הגדר את החומרה
- שלב 2: הגדר את Dropbox
- שלב 3: הכנת תיקיית האפליקציות של Dropbox שלך
- שלב 4: תחילת העבודה עם הקוד
- שלב 5: לחפור עמוק יותר לתוך הקוד
- שלב 6: שימוש בקבצי הפרמטרים של Dropbox
- שלב 7: סיכום
וִידֵאוֹ: ניטור ביתי של Raspberry Pi עם Dropbox: 7 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
מדריך זה יראה לך כיצד ליצור מערכת ניטור ביתית פשוטה וניתנת להרחבה באמצעות פטל פטל, מצלמת אינטרנט, כמה רכיבים חשמליים וחשבון Dropbox שלך. המערכת המוגמרת תאפשר לך לבקש ולהציג מרחוק תמונות ממצלמת האינטרנט שלך תוך שימוש בחיישן טמפרטורה דיגיטלי מדף לניטור הטמפרטורה של הבית שלך באינטרנט, והכל באמצעות Dropbox.
זה היה הפרויקט הראשון שחשבתי לאחר שקיבלתי פטל פי 2 מדגם B. המטרה שלי הייתה ליצור מערכת ניטור מבוססת פייתון שאוכל לשלוט ולקבל ממנה נתונים דרך האינטרנט. למרות שיש הרבה דרכים שונות לעשות זאת, החלטתי להשתמש ב- Dropbox כממשק בין ה- Pi לאינטרנט מכיוון שיש להם ממשק API פשוט לפייתון המאפשר לך להעלות, לשנות ולחפש קבצים בתיקיות ספציפיות באמצעות כמה שורות של קוד.
רציתי גם שהפתרון שלי יהיה קל ופשוט, וכדי להימנע מעמוס בפי עם ספריות ותוכניות מיותרות. רכיב התוכנה בפרויקט זה מורכב מסקריפט פייתון יחיד, כלומר אתה יכול להמשיך להשתמש ב- Pi שלך כרגיל, גם כאשר מערכת הניטור פועלת.
לפרויקט זה תזדקק ל:
פי פטל. כל דגם אמור לעבוד, השתמשתי בערכת התחלה הכוללת, אך אולי אתה צריך את היחידה המרכזית בלבד
מצלמת רשת USB. קניתי ADVENT AWC72015 זול, שעבד במקרה מצוין. זה עשוי להיות רעיון טוב להתייעץ ברשימה זו של מצלמות אינטרנט שאושרו כי הן עובדות עם ה- Pi. שים לב שחלקם דורשים רכזת USB מופעלת (שלי עובד מצוין בלי)
חשבון דרופבוקס. אני משתמש בחשבון החינמי הסטנדרטי שלי מכיוון שפרויקט זה אינו דורש שטח אחסון רב
חיישן טמפרטורה דיגיטלי DS18B20 ונגד 4.7k. אתה יכול לקנות את החיישן כאן, ואולי כדאי לתפוס גם חבילה של נגדים שונים
כמה אביזרים לבניית מעגלים. אני ממליץ להשתמש בלוח לחם וכמה מגשרים כדי להפוך את תהליך בניית המעגלים לקל ככל האפשר
[אם תחליט לרכוש כל אחד מהמוצרים האלה, אעריך מאוד אם תיכנס לרישומים באמצעות הקישורים שלמעלה - כך, אני מקבל נתח זעיר מהרווחים ללא עלות נוספת לך!]
שלב 1: הגדר את החומרה
השלב הראשון הוא לוודא שהפי שלך והציוד ההיקפי המשויך מוגדרים.
ראשית, חבר את ה- Pi שלך לאינטרנט. זה הכרחי כדי להבטיח שתוכנית הניטור תוכל לקבל את הבקשות שלך ולהעלות נתונים ל- Dropbox. אני משתמש בחיבור ethernet כדי להבטיח אמינות, אבל גם חיבור Wi-Fi אמור לעבוד מצוין, ויש לו גם את היתרון בשיפור הניידות. אם תבחר Wi-Fi, הייתי ממליץ על הפונגל USB הזה עבור ה- Pi.
לאחר מכן, חבר את מצלמת האינטרנט שלך ל- Pi על ידי חיבורו לאחת מיציאות ה- USB. למרות שההוראות של מצלמת הרשת שלי לא כתבו במפורש שזה יעבוד עם לינוקס, כל מה שאני צריך לעשות זה לחבר אותו לאתחול ה- Pi. לא היה צורך בהתקנה נוספת. מצלמות רשת אחרות עשויות להשתנות. תוכל לבדוק אם מצלמת האינטרנט שלך זוהתה על ידי לינוקס באמצעות הפקודה הבאה:
lsusb
בתמונה למעלה מצלמת הרשת שלי מופיעה כ- '0c45: 6340 Microdia'
לבסוף, תוכל לחבר את חיישן הטמפרטורה DS18B20 שלך לכותרת ה- GPIO של ה- Pi. אני משתמש בלוח הלחם שלי כדי להקל על תהליך יצירת המעגלים, והייתי ממליץ לך לעשות את אותו הדבר, במיוחד מכיוון ש- DS18B20 דורש להציב נגד 4.7k בין שניים משלושת הפינים שלו. קישור זה מספק תרשים חיווט טוב המראה כיצד ניתן להשתמש בלוח לחם לחיבור לחיישן טמפרטורה זה.
הדף הבא של ההדרכה לעיל מכסה גם את השלבים הדרושים לקריאת נתונים מה- DS18B20, ומראה לך כיצד לבדוק אם הוא פועל. חשוב לבצע את שלבי ההתקנה האלה לפני שתוכל להשתמש ב- DS18B20 לפרויקט זה. אנו נשלב גם את סקריפט ה- Python לדוגמא מתוך ההדרכה בתוכנית הניטור שלנו, כך שתרצה לרצות מעט על הקוד הזה.
אנא שימו לב גם למספר הייחודי של DS18B20 שלכם. זהו המספר שמתחיל ב- '28-'שאתה נתקל בו במהלך הדרכת ההתקנה. יהיה עליך להזין אותו בתוכנית Python הקרובה כדי לאפשר לו לקרוא בטמפרטורה.
שלב 2: הגדר את Dropbox
על מנת שה- Pi שלך יתממשק עם Dropbox, עליך להגדיר אפליקציית Dropbox חדשה. זה יספק לך את הפרטים הדרושים עבור ה- Pi שלך לביצוע ניהול קבצים מקוון באמצעות Python. בהנחה שיצרת חשבון Dropbox והתחברת, תוכל ליצור אפליקציה חדשה באמצעות אפשרות התפריט 'מפתחים'. עיין בתמונה לעיל לסיכום השלבים החשובים.
בתפריט 'מפתחים', בחר 'האפליקציות שלי' ולאחר מכן לחץ על הלחצן 'צור אפליקציה'. כדי למלא את הטופס שהתקבל, בחר 'Dropbox API' ואחריו 'תיקיית אפליקציות'. לבסוף, אתה יכול לבחור שם ייחודי לאפליקציה שלך בתוך Dropbox. לחץ על 'צור אפליקציה'.
לאחר מכן תועבר לדף ההגדרות של האפליקציה שלך בתוך Dropbox. יש רק דבר אחד נוסף שאתה צריך לעשות כאן - צור לעצמך אסימון גישה. לשם כך, גלול מטה אל הקטע 'OAuth 2' ותחת 'אסימון גישה שנוצר', לחץ על הלחצן 'צור'.
זה יציג בפניך שורה ארוכה של תווים הדרושים כדי לגשת לחשבון Dropbox שלך באמצעות Python. רשום את אסימון הגישה הזה מכיוון שתצטרך לציין אותו מאוחר יותר בקוד שלך. אם תאבד את האסימון, תוכל לנווט חזרה להגדרות האפליקציה שלך על ידי לחיצה על 'האפליקציות שלי' בקטע 'מפתחים' של Dropbox וליצור אסימון חדש.
אתה יכול להשאיר את ההגדרות האחרות כפי שהן. כדי לאשר שהאפליקציה שלך יצרה את התיקיות הדרושות בחשבון Dropbox שלך, נווט אל דף הבית של האחסון שלך וחפש את התיקיה 'אפליקציות'. בתוך תיקיה זו אמורה להיות תיקיית משנה עם השם שבחרת לאפליקציה החדשה שלך. כאן יוצבו כל הקבצים למערכת הניטור שלך.
שלב 3: הכנת תיקיית האפליקציות של Dropbox שלך
לאחר שהגדרת את אפליקציית Dropbox שלך, הגיע הזמן לחשוב כיצד תשתמש בתיקייה שנוצרה בחשבון Dropbox שלך כדי ליצור אינטראקציה עם ה- Pi שלך. זה מושג בפשטות. סקריפט Python שיופעל ב- Pi ישתמש בתת-פקודות מממשק ה- Dropbox כדי לחפש ולשנות את שמותיהם של כמה קבצים ריקים וללא הרחבה בתיקיית האפליקציה שלך. אנו נקרא לקבצים אלה 'קבצי פרמטרים' מכיוון שכל אחד מהם יאפשר לך לשלוט בהיבט אחר של התנהגות מערכת הניטור. התמונה למעלה מציגה את ארבעת קבצי הפרמטרים שצריכים להימצא בתיקיית האפליקציה שלך ב- Dropbox לפרויקט זה. יצירתם פשוטה:
החל מתיקיית האפליקציה ריקה לחלוטין, פתח תוכנת עורך טקסט במחשב שלך. למרות שניתן היה לעשות זאת באמצעות ה- Pi, היה לי קל יותר להשתמש במחשב הנייד של Windows לשלב ההתקנה הזה. לאחר שעורך הטקסט פתוח (השתמשתי בפנקס רשימות ב- Windows 7), כל שעליך לעשות הוא לשמור קובץ טקסט ריק לחלוטין בכל מקום במחשב שלך. כדוגמה הראשונה שלנו, ניצור את הפרמטר הראשון בתמונת הכותרת. תן שם לקובץ 'עיכוב = 10' כשאתה שומר אותו.
לסיכום, כעת אמור להיות מאוחסן קובץ טקסט ריק במחשב שלך בשם 'עיכוב = 10'. לקובץ תהיה גם סיומת '.txt' שאולי תהיה גלויה ואולי לא.
השלב הבא הוא להעלות קובץ זה לתיקיית האפליקציות של Dropbox שלך. זה בדיוק כמו כל העלאה אחרת של Dropbox. פשוט נווט לתיקיית האפליקציה שלך ולחץ על 'העלה' ובחר את קובץ 'עיכוב = 10' שלך.
כאשר קובץ זה הועלה, עליך להסיר את הסיומת '.txt' שאמורה להיות גלויה כעת בשם הקובץ. לשם כך, לחץ לחיצה ימנית על הקובץ ובחר 'שנה שם'. הסר את החלק '.txt' של שם הקובץ. כעת עליך להשאיר קובץ בשם 'עיכוב = 10' ללא סיומת קובץ, כפי שמוצג בתמונת הכותרת.
קובץ הפרמטרים 'עיכוב' הוא אחד מארבעה אשר ישמש את תוכנית הניטור. כדי ליצור את האחרים, אתה יכול פשוט להעתיק ולשנות את שם קובץ ה'השהיה 'שלך על ידי לחיצה ימנית עליו. לאחר שיצרת שלושה עותקים, שמם אותם כפי שמוצג בתמונת הכותרת כך שתיקיית האפליקציה שלכם זהה לזו המוצגת בתחילת שלב זה.
שלב 4: תחילת העבודה עם הקוד
כפי שנדון, ליבת מערכת הניטור שלנו תורכב מתסריט פייתון יחיד שיתממשק עם Dropbox. על מנת שתוכנית הניטור תהיה פעילה, סקריפט זה יצטרך לפעול ברקע בפי שלך. אני מניח שזה מתואר בצורה המדויקת ביותר כתסריט 'שד', כלומר אתה יכול פשוט להפעיל אותו ולשכוח ממנו. התסריט מצורף לשלב זה, כך שאין טעם לחזור על הקוד כאן. עכשיו יכול להיות זמן טוב להוריד אותו ולהכיר אותו.
לפני שתוכל להריץ את הסקריפט, חשוב לוודא שהתקנת את ספריות ה- Python הרלוונטיות. אלה שאתה צריך מופיעים בראש התסריט המצורף. הם:
יבוא דרופבוקס
יבוא זמן ייבוא pygame.camera
התקנת ה- Python ב- Pi שלי כללה כבר pygame, מערכת הפעלה וזמן ולכן היחיד שהייתי צריך להתקין היה Dropbox. עשיתי זאת בעזרת הוראות ההתקנה הפשוטות מאוד שלהן עם פיפ.
לאחר הגדרת הספריות, יהיה עליך לערוך את שתי השורות העליונות של הסקריפט המצורף כך שיתאים לאסימון ה- Dropbox Access שלך ולמזהה הייחודי של חיישן הטמפרטורה DS18B20 שלך. אלה שתי השורות שצריך לערוך:
APP_ACCESS_TOKEN = '**********'
THERMOMETER_FILE = '/sys/bus/w1/devices/28-**********/w1_slave'
פשוט החלף את ה- **** עם הערכים הנכונים. בשלב זה, אתה למעשה מוכן להתחיל להשתמש בתוכנית הניטור! במקום פשוט לקפוץ פנימה, הייתי ממליץ לך להמשיך לשלב הבא לקבלת סקירה כללית של הקוד.
חשוב: כאשר אתה מפעיל את הסקריפט הזה, אתה רוצה שהוא יפעל ברקע כך שא) תוכל להמשיך להשתמש ב- Pi, וב) כאשר תסגור את הפעלת SSH שלך, הסקריפט ימשיך לפעול. זו הפקודה שבה אני משתמש בעת הפעלת התסריט:
nohup python DropCamTherm.py &
זה משיג שלושה דברים: הוא יפעיל את הסקריפט ('python DropCamTherm.py'), הוא יחזיר את השליטה לשורת הפקודה באופן מיידי, כך שתוכל להמשיך להשתמש ב- Pi ('&'), והוא ישלח פלט פיתון שישלח בדרך כלל יוצג בשורת הפקודה לקובץ בשם 'nohup.out'. ניתן לקרוא זאת באמצעות עורך טקסט של לינוקס (המועדף עלי הוא ננו), והוא ייווצר באופן אוטומטי בספרייה שממנה מריץ התסריט.
שלב 5: לחפור עמוק יותר לתוך הקוד
כאשר אתה פותח את הסקריפט, תבחין שהוא מורכב משלוש פונקציות יחד עם גוש קוד המיישם פונקציות אלה בעת הפעלת התסריט. הפונקציות משתמשות ב- Dropbox API ונגשות לקובץ יומן הטמפרטורה של DS18B20 על מנת להאזין לפקודות מ- Dropbox ולהעלות את קריאת הטמפרטורה העדכנית ביותר. להלן סקירה כללית של מה שהפונקציות עושות וכיצד הן משמשות כדי לגרום למערכת הניטור לפעול:
- poll_parameter ():
פונקציה זו מציגה את מטרת קבצי הפרמטרים של Dropbox שיצרנו בשלב 3. היא מחפשת בתיקיית האפליקציה של Dropbox קובץ המכיל את הטקסט 'param ='. לאחר מכן הוא מחלץ את הטקסט לאחר ה- '=' ומנסה להפוך אותו למספר שלם. אתה יכול לראות שזה מאפשר לנו לשלוט על התוכנית על ידי הוספת מספרים רלוונטיים לסוף קבצי הפרמטרים באופן ידני. השלב הבא יכיל מדריך הדרכה קצר המראה לך כיצד להשתמש בכל אחד מקבצי הפרמטרים לשליטה בהיבט של התוכנית.
- set_parameter ():
פונקציה זו מאפשרת לתוכנית לשנות את שם קובץ הפרמטרים מתוך Python. הוא עושה זאת בכמה הזדמנויות, בעיקר כדי להפחית את הצורך בשינוי ידני מוגזם של הקבצים.
- set_latest_temp ():
פונקציה זו משתמשת ב- set_parameter () כדי להעלות את הטמפרטורה העדכנית ביותר לתיקיית האפליקציות של Dropbox על ידי הוספתה לקובץ הפרמטרים 'טמפרטורה'. הפונקציה קוראת את הטמפרטורה העדכנית ביותר מתוך קובץ היומן של DS18B20 (הזמין ב- Linux בנתיב שהמשתנה THERMOMETER_FILE מצביע עליו).
החלק האחרון של התוכנית מכיל את הקוד שיופעל בעת הפעלת התסריט. לאחר כמה שלבי התקנה הנדרשים עבור חיישן DS18B20, הוא פותח הפעלה של Dropbox באמצעות אסימון הגישה שלך ומשתמש במשחק pyg לחיפוש מצלמת האינטרנט שלך. אם תימצא מצלמת רשת, היא תיכנס ללולאה שבה היא משתמשת ב- poll_parameter () כדי לחלץ מידע מ- Dropbox ולפעול על פיו.
חשוב: תבחין בשורת הקוד הבאה:
cam = pygame.camera. Camera (cam_list [0], (864, 480))
… זה מנסה ליצור ממשק מצלמה שמיש ממצלמת הרשת הראשונה שמזהה pygame. ייתכן שיהיה צורך לשנות את הרזולוציה כך שתתאים למצלמת הרשת שלך. התנסו במספר ערכים כדי למצוא מה עובד הכי טוב.
שלב 6: שימוש בקבצי הפרמטרים של Dropbox
אז עכשיו אמור להיות לך סקריפט עובד שכאשר תריץ אותו לפי ההוראות משלב 4, יאפשר ל- Pi שלך לפקח על תיקיית האפליקציה עבור הכניסות שלך. בהפעלה הראשונה שלך, תיקיית האפליקציה צריכה להכיל את קבצי הפרמטרים הבאים:
עיכוב = 10
יציאת תוכנית = 0 imagerequest = 0 טמפרטורה = 0
אינטראקציה עם התוכנית מושגת על ידי שינוי שם ידני של קבצי הפרמטרים באמצעות Dropbox. לשם כך, לחץ באמצעות לחצן העכבר הימני על אחד מהקבצים ובחר 'שנה שם'. לכל קובץ פרמטרים יש פונקציה אחרת:
- עיכוב:
קובץ זה מספר לתוכנית הניטור כמה שניות יש לחכות בין כל איטרציה של לולאת הניטור. כשאני יודע שאני לא אעשה אינטראקציה רבה עם התוכנית, אני מגדיר אותה ל -60 או 120. כשאני יודע שאני רוצה לבקש נתונים מהפי לעתים קרובות, אני מגדיר אותה ל -10.
- תוכנית יציאה:
זה צריך להיות מוגדר ל -1 או 0. אם התוכנית מזהה שהיא מוגדרת ל- 1, היא תסיים את התסריט. אם תגדיר אותו ל- 1 והסקריפט ייצא, יהיה עליך להיכנס שוב ל- Pi כדי להפעיל אותו מחדש. פרמטר זה קיים כך שתוכל לסיים בחינניות את תוכנית הניטור כשאינך זקוק לה עוד לפעול (לדוגמה, אם חזרת הביתה ואינך מעוניין יותר לעקוב אחר מצלמת הרשת מרחוק).
- בקשה מדומה:
זהו אולי הפרמטר החשוב ביותר. זה צריך להיות מוגדר ל -1 או 0. אם התוכנית מזהה שהיא מוגדרת ל -1, היא תבקש תמונה ממצלמת האינטרנט ותעלה אותה לתיקיית האפליקציה (עם הכותרת 'image.jpg'). אם קיים עוד 'image.jpg', הוא יחליף אותו.
- טמפרטורה:
זוהי קריאת הטמפרטורה DS18B20 שנקבעה על ידי הפונקציה set_latest_temp (). לעולם לא תצטרך לערוך קובץ פרמטר זה - הוא נקבע אוטומטית על ידי התוכנית.
שים לב שאם אתה מגדיר 'יציאה מתוכנית' או 'דמיון בקשה' ל -1, התוכנית תחזיר אותם אוטומטית ל -0 לפני ביצוע הקוד הרלוונטי. זה מטעמי נוחות. ייתכן שתבחין גם שהקוד מכיל הרבה בלוקים של 'נסה' ו'לבד 'המקיפים הרבה מהפונקציות הקריטיות. זאת כדי להבטיח שהתסריט לא יזרק יוצאים מן הכלל (ומכאן שיפסיק לפעול) אם משהו משתבש (כגון בעיית קישוריות לאינטרנט שמונעת גישה מ- Dropbox).
שלב 7: סיכום
פרויקט זה הציג דרך לשלוט ב- Raspberry Pi באמצעות Python ו- Dropbox. למרות שהחומרה המשמשת בפרויקט זה היא חיישן טמפרטורה ומצלמת אינטרנט USB, ישנם יישומים רבים אחרים לשיטת השליטה ב- Pi. למעשה, ניתן לשלוט על כל רכיב חומרה הנגיש באמצעות GPIO באמצעות מבנה תוכניות דומה, מה שהופך את המערכת להרבה יותר קלה להרחבה.
כשלב הבא, תוכל גם להשתמש בספריית GUI כגון Tkinter יחד עם ה- API של Dropbox ליצירת תוכנית לקוח שתאפשר לך לשנות את קבצי הפרמטרים מבלי אפילו להיכנס ל- Dropbox.
אני מקווה שהמדריך הזה היה ברור, ואם יש לך שאלות או שאתה רוצה שאבהיר משהו, אנא פרסם הערה!
מוּמלָץ:
PIR מעשי לשימוש ביתי: 7 שלבים (עם תמונות)
PIR מעשי לשימוש ביתי: כמו רבים מכם בחוץ שעובדים עם פרויקטים של אוטומציה ביתית, חיפשתי לבנות חיישן PIR פונקציונלי לאוטומציה של כמה סיבובי פינות בבית שלי. למרות שחיישני PIR של מתג האור היו אופטימליים, לא ניתן לכופף פינה. זאת
הוסף צג שימוש לטרמוסטט ביתי: 4 שלבים
הוסף צג שימוש לטרמוסטט ביתי: מזמן, מזמן, הרבה לפני שהיה דבר כזה " חכם " תרמוסטט, היה לי תרמוסטט ביתי שנתן סכום יומי (אני חושב - אולי שבועי) של " בזמן " עבור מערכת החימום והמיזוג שלי. דברים השתנו … לאס
צג חשמל מבוסס פטל ביתי של מכשיר ביתי: 14 שלבים
מכשיר ביתי צג חשמל מבוסס פטל PI: זה היה פרויקט קטן שעשיתי כדי לעקוב אחר צריכת החשמל של מכשירים בודדים ברחבי הבית ולהציג גרפים של צריכת החשמל שלהם לאורך זמן. זהו למעשה אחד הפרויקטים הקלים יותר מבוססי פטל PI שעשיתי, ללא הלחמה או פריצה
מצלמת IP באמצעות ה- Raspberry Pi Zero (מעקב ביתי חלק 1): 5 שלבים
מצלמת IP באמצעות ה- Raspberry Pi Zero (מעקב ביתי חלק 1): זהו הפוסט הראשון בסדרת מיני חדשה, בה אנו בונים מערכת מעקב ביתית, בעיקר באמצעות פטל פיס. בפוסט זה אנו משתמשים באפס פטל PI ויוצרים מצלמת IP שמזרימה וידיאו באמצעות RTSP. סרטון הפלט הוא ברמה גבוהה בהרבה
מסנן המקרו MacroGyver - או ביתי לבישול ביתי: 6 שלבים
מסנן המאקרו -מאגר - או מסנן המאקרו לחלוט הבית: תמיד רצית לצלם תמונות מקרוב של באגים ודברים קטנים? זוהי דרך מהירה, קלה וזולה להשיג כמה תוצאות טובות עבור מעט מאוד מאמץ וכסף, ועדיין לשמור על כל הגדרות המצלמה כמו פעולה. תצטרך: עדשת SLR אחת כדי