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

מעקב אחר טמפרטורת החדר נשלט על ידי Raspberry Pi עם פלט תמונות Gnuplot ויכולת התראה בדוא"ל: 7 שלבים
מעקב אחר טמפרטורת החדר נשלט על ידי Raspberry Pi עם פלט תמונות Gnuplot ויכולת התראה בדוא"ל: 7 שלבים

וִידֵאוֹ: מעקב אחר טמפרטורת החדר נשלט על ידי Raspberry Pi עם פלט תמונות Gnuplot ויכולת התראה בדוא"ל: 7 שלבים

וִידֵאוֹ: מעקב אחר טמפרטורת החדר נשלט על ידי Raspberry Pi עם פלט תמונות Gnuplot ויכולת התראה בדוא
וִידֵאוֹ: Chasing Coral | FULL FEATURE | Netflix 2024, יוני
Anonim
מעקב אחר טמפרטורת החדר של פטל פיי עם פלט תמונות Gnuplot ויכולת התראה בדוא
מעקב אחר טמפרטורת החדר של פטל פיי עם פלט תמונות Gnuplot ויכולת התראה בדוא

במקום בו אני עובד, ישנו חדר חשוב מאוד הכולל הרבה מחשבים. טמפרטורת הסביבה של החדר הזה צריכה להיות קרירה מאוד כדי לייעל את הביצועים של מערכות אלה. התבקשתי לבוא עם מערכת ניטור בעלת יכולת לשלוח התראה כלשהי לכמה אנשים שיודיעו להם שמשהו לא בסדר במזגן בחדר זה. וחיישן טמפרטורה ולחות USB. לצורך ניטור, השתמשתי ב- Gnuplot כדי לשרטט שלושה תרשימי טמפרטורה וליצור תמונה של גרפים אלה. לאחר מכן יצרתי דף HTML ייעודי שיתארח ב- Raspberry pi כך שניתן יהיה לעקוב אחר התנאים הנוכחיים, אותן תמונות פלט gnuplot, מדף אינטרנט בתוך הרשת שלנו. להתראה בחרתי ללכת עם Gmail. מצאתי קוד לדוגמה במגזין Linux User. (כמובן שאתה יכול להשתמש בכל שרת דואר ברגע שאתה מכיר את משימות הנמל הדרושות.) לשם כך יצרתי חשבון דוא"ל ייעודי של Gmail להתראות אלה. כמו כן כתכונה נוספת, כאשר הופעלה התראה, אני מצרף גרף אחד לדוא"ל כך שמי שמקבל את הדוא"ל יוכל לקבל מושג עד כמה הייתה עלייה דרסטית שגרמה להתראה.

שלב 1: התקנת החומרה

התקנת החומרה
התקנת החומרה

אין הרבה בהגדרת החומרה. ה- Raspberry pi פועל עם Raspian וחיישן הטמפרטורה של ה- USB פשוט מתחבר ישירות לאחת מיציאות ה- USB. צריכת החשמל של חיישן זה היא מינימלית וכתוצאה מכך הפעלתי אותו ישירות מהפי פטל. עם זאת, עבור התקנים המופעלים באמצעות USB עם צריכת חשמל קצת יותר, הייתי ממליץ להפעיל אותם באמצעות רכזת USB המופעלת ולא ישירות מיציאת ה- USB של ה- Raspberry pi. ברגע שחיישן הטמפרטורה מופעל, הוא מספק מחרוזת סדרתית המכילה את הטמפרטורה וה קריאות לחות של התנאים הנוכחיים. טמפרטורה = 20.9 ° C לחות = 62.7% נקודת טל = 13.0 ° CA סקריפט python מנתח מחרוזת זו ושומר את ערכי הטמפרטורה והלחות לשלושה קבצי טקסט כל חמש דקות; קובצי טקסט יומיים, 24 שעות ו -48 שעות (ההבדלים יידונו בהמשך בחלק HTML). מתוך קבצים אלה, Gnuplot תייצר את הגרפים ובהמשך את תמונות מערך הנתונים בכל קובץ. לפני שאדון בתסריט הפיתון אדבר על הכנת פאי הפטל. מכיוון שהניטור צריך להתבצע באופן מקוון, יש להתקין שרת אינטרנט. ניסיתי כמה מהם בזמני ב- pi פטל אבל למרות שזה קצת גדול אני מעדיף אפאצ'י. כדי להתקין את Apache ב- Raspberry pi אתה פשוט מקליד: sudo apt-get install apache2 זה ייתן לך הודעה לפני ההתקנה, לחץ על "y" עבור כן ו- Apache יותקן מספר דקות בהתאם ל- pi פטל שלך. אם תעשה, עליך להתקין שני תוספי פייתון: פייתון סידורי ותקע פייתון-גנופלוט. (למרות שהבנתי שלבנייה האחרונה של Raspian יש את תקן התוספת הסידורי של פייתון אבל רק ליתר ביטחון.) כדי להתקין את אלה שאתה מקליד: sudo apt-get install python-serial python-gnuplot פעם נוספת לאחר אישור ההנחיות, תקע אותם -יותקנו כניסות. ועם זה התקנת החומרה הושלמה.

שלב 2: התקנת תוכנה - הגדרת דוא"ל ונמענים

צור כתובת דוא"ל לפני שנגיע רחוק מדי לתוכנה כעת יהיה זמן טוב ליצור חשבון Gmail ממנו תוכל לשלוח את התראות הדוא"ל שלך. (דוגמה זו משתמשת ב- Gmail, אך ניתן להשתמש בכל שרת דואר ברגע שאנו מכירים את הגדרות יציאת ה- smtp) קוד הפיתון די פשוט אבל היבוא הדרוש הוא קריטי. בלעדיהם שום דבר לא יעבוד. מזמן יבוא *זמן יבוא יבוא סדרתי יבוא smtplib יבוא Gnuplot יבוא מערכת יבוא sys לבסוף, רשימת התפוצה. כמובן שעלינו להוסיף את נמעני המייל. כל כתובת דוא"ל נשמרת ב- variable.from_address ='[email protected]'to_address1 = 'recipient1.mail.com' to_address2 = 'recipient2.mail.com'username =' [email protected] 'password =' custom_email_password '

שלב 3: התקנת תוכנה - התקנה וניתוח סדרתי

לאחר מכן נסתכל על ההתקנה הסדרתית. זה רק עניין של הגדרת פרמטרים התואמים את הפלט הטורי מהחיישן. החיישן מוציא מחרוזת סדרתית ב 9600 8 N 1 שהיא פורמט סטנדרטי. לאחר קבלת המחרוזת ישנן מספר דרכים לנתח מחרוזת זו בפייתון ואולי באופן אמין יותר. הדרך שבה אני עושה זאת היא לחפש את התווים "זמניים" במחרוזת הסדרתית. לאחר האיתור זה פשוט עניין של קריאת 46 התווים הסדרתיים הבאים למחרוזת. כעת ניתן לטפל במחרוזת שנאספה כמו אלמנטים במערך. הנתונים הרצויים מנותחים מהמחרוזת ונשמרים לשלושת הקבצים יחד עם חותמת הזמן המתאימה שלו. Timestamp = strftime ("%d%b%Y%H:%M:%S", localtime ())

שלב 4: התקנת תוכנה - Gnuplot

התקנת תוכנה - Gnuplot
התקנת תוכנה - Gnuplot
התקנת תוכנה - Gnuplot
התקנת תוכנה - Gnuplot
התקנת תוכנה - Gnuplot
התקנת תוכנה - Gnuplot

Gnuplot הוא כלי גרפי של שורת הפקודה. לאחר שהבנת את היסודות זה יכול להיות כלי די חזק לתצוגה גרפית של ערכות נתונים. Gnuplot יכול לשרטט ישירות מקובץ טקסט מעוצב ורק במקרה יש לנו אחד משלב הניתוח שלפני. לאחר שנציין ל- gnuplot היכן בקובץ הנתונים נמצאים נוכל לתוות את הערכים הרצויים. אני הולך להשתמש בזמן בציר X ובטמפרטורה שלנו בציר Y. תכנון הזמן מניסיוני הוא הקשה ביותר מכיוון שאתה צריך לקבל את פורמט הזמן ב- gnuplot כך שיתאים לפורמט של קובץ הטקסט. לאחר שכל אפשרויות הגרף הושלמו ולהעדפתך, לאחר מכן תוכל Gnuplot ליצור תמונה של גרף זה. זו תהיה התמונה שבה נשתמש בדף האינטרנט שלנו מאוחר יותר. בחרתי ללכת עם תמונת-p.webp

שלב 5: הגדרת תוכנה - הגדרת סף ודוא"ל

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

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

שלב 6: התקנת תוכנה - HTML

הניטור של המערכת כולה מתבצע באמצעות דף אינטרנט ויש צורך בתסריט HTML בסיסי מאוד לשם כך. התמונות ש- Gnuplot יצרה אני פשוט משתמש בחזרה באותן ממדים של התמונה. אני מאמין שעברתי בערך 3 גדלים לתמונות האלה שנתנו את ההתאמה הטובה ביותר על המסך שלי. לפני שנוצר את סקריפט ה- html בואו ניצור עבורו תיקיה. כברירת מחדל, תיקיית אירוח האתרים ממוקמת בכתובת/var/www/. למרות שהמטרה היחידה של פטל פטל זו היא לפקח על החדר הזה ולהוציא התראות בדוא"ל, אך לצורך שמירה על בית טוב יצרתי תיקיה נפרדת בתיקייה/var/www/. מכיוון שתיקיה זו שייכת למשתמש השורש עליך להשתמש ב- sudo כדי ליצור תיקיה הוא המיקום הזה. sudo mkdir/var/www/temperature בדוגמה זו השתמשתי בטמפרטורה כשם התיקיה אך תוכל להשתמש בכל שם כאן אך זכור כיוון שיהיה צורך להזין זאת בשורת הכתובת כדי לצפות בדף זה. נתיב זה מאוחסן במשתנה בתוך סקריפט הפיתון. אפילו אם יש לשנות את מיקום האירוח או לשנות את הסקריפט למערכת אחרת, ניתן פשוט לשנות אותו ממיקום אחד זה. כעת אנו יכולים ליצור סקריפט HTML שלנו בתיקיה זו וזכור להשתמש ב- sudo מול כל פקודה שאתה רוצה לבצע כאן. אני ממליץ לך לתת את שמם של סקריפט HTML "index.html" מכיוון שזה יפשט זאת כשאתה מנסה למצוא דף זה. הדבר הקריטי הוא לוודא שגודל התמונה זהה לגודל התמונה מ- Gnuplot. לצפייה בדף זה, אתה פשוט צריך להזין את כתובת ה- IP של ה- Raspberry Pi ואחריו /טמפרטורה (או מה שאי פעם קראת לתיקייה שלך) יש לי כמה מערכות בעבודה המפקחות על דברים שונים וכולן מייצרות פלט גרפי של התוצאות שלהן. אז יצרתי דף שיש בו קישורים לכל הדפים האלה כך שאני לא צריך לדאוג להזין את הכתובת בכל פעם שאני רוצה לגשת לדפים האלה.

שלב 7: אני חי…

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

שימוש ברישום cronjob כ:

מוּמלָץ: