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

Seroma: מנהל חדר שרת: 20 שלבים
Seroma: מנהל חדר שרת: 20 שלבים
Anonim
Seroma: מנהל חדר שרתים
Seroma: מנהל חדר שרתים

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

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

היכנס לחשבון AWS שלך
היכנס לחשבון AWS שלך
היכנס לחשבון AWS שלך
היכנס לחשבון AWS שלך
היכנס לחשבון AWS שלך
היכנס לחשבון AWS שלך
היכנס לחשבון AWS שלך
היכנס לחשבון AWS שלך
  1. עבורנו, התחברנו דרך שער הסטודנטים של AWS educate, כיוון שיש לנו חשבון AWS.
  2. עבור לכרטיסייה "חשבון AWS" בתפריט הניווט בפינה השמאלית העליונה.
  3. לחץ על "עבור אל חשבון AWS Educate Starter שלך"
  4. פתח את מסוף כדי לגשת למסוף ניהול AWS שלך.

שלב 2: תחילת העבודה עם "דברים" של AWS IOT

תחילת העבודה עם AWS IOT
תחילת העבודה עם AWS IOT
תחילת העבודה עם AWS IOT
תחילת העבודה עם AWS IOT
  1. חפש את "AWS IoT" בשורת החיפוש של שירותי AWS.
  2. לחץ על "התחל" כדי להמשיך ללוח המחוונים של AWS IoT Console, שם תוכל לצפות בכל מכשירי IoT הרשומים בחשבון AWS שלך.

שלב 3: רישום "דבר" של AWS IOT

רישום IOT של AWS
רישום IOT של AWS
רישום IOT של AWS
רישום IOT של AWS
רישום IOT של AWS
רישום IOT של AWS
  1. בסרגל הניווט, נווט כדי לנהל את "הדברים" שלך ב- IoT.
  2. לחץ על "רשום דבר" אם עדיין אין לך דבר. (אם כבר יש לך משהו לחץ על כפתור "צור" בפינה השמאלית העליונה של המסך לצד כרטיסיית החיפוש.)
  3. לחץ על הכפתור הראשון בשם "צור דבר אחד".
  4. הקלד "RaspberryPi" כשם הדבר. עבור שלב זה, אין צורך בקלט מלבד "שם". לאחר שתעשה זאת, לחץ על הבא.

שלב 4: הפעלת תעודה

הפעלת תעודה
הפעלת תעודה
הפעלת תעודה
הפעלת תעודה
  1. בשלב הבא, לחץ על כפתור "צור אישור".
  2. הורד ושמור את 4 קישורי ההורדה בעמוד הבא לספרייה או לתיקייה עובדת. כדי לשמור את קובץ ה- root של CA, לחץ לחיצה ימנית ושמור בשם.
  3. לחץ על "הפעל" ותופיע הודעת הצלחה.
  4. השתמש בשמות ידידותיים לקבצים על ידי הסרת המספרים שלפני כל שם קובץ, ושינוי שם קובץ ה- root של CA ל- "rootca.pem".
  5. לחץ על "צרף מדיניות" כדי להמשיך.

שלב 5: הוספת מדיניות לתעודה שלך

הוספת מדיניות לתעודה שלך
הוספת מדיניות לתעודה שלך
הוספת מדיניות לתעודה שלך
הוספת מדיניות לתעודה שלך
הוספת מדיניות לתעודה שלך
הוספת מדיניות לתעודה שלך
  1. בדף הבא, אם אין לך מדיניות, הם יבקשו ממך לבצע כפתור בכפתור "צור מדיניות".
  2. אם כבר יש לך מדיניות קיימת, לחץ על הלחצן "צור מדיניות חדשה" למטה.
  3. הכנס את המידע הבא לטופס יצירת המדיניות.

    שם: RaspberryPiSecurityPolicy

    פעולה: iot:*

    משאב ARN: *

    אפקט: אפשר

  4. לאחר מכן המדיניות שלך אמורה להופיע בכרטיסייה "מדיניות" תחת "אבטחה".
  5. לאחר מכן, עבור לכרטיסייה "אישורים" הנמצאת גם תחת "אבטחה" וצירף את המדיניות שלך לאישור שיצרת בעבר.
  6. בדף הבא, לחץ על המדיניות שלך ולאחר מכן לחץ על "צרף".
  7. בדף הפרטים של הדבר שיצרת, בכרטיסייה "אינטראקציה", יש נקודת קצה של REST API אותה יש להעתיק ולשמור.
  8. כעת ל- AWS צריך להיות דבר המצורף למדיניות ויש לו אישור.

שלב 6: הגדרה ראשונית עבור נושא AWS SNS

הגדרה ראשונית עבור AWS SNS Topic
הגדרה ראשונית עבור AWS SNS Topic
הגדרה ראשונית עבור AWS SNS Topic
הגדרה ראשונית עבור AWS SNS Topic

SSH לתוך Raspberry Pi והתקן AWS CLI באמצעות פקודת pip הבאה:

sudo pip התקן awscli

AWS CLI כולל תכונת השלמת פקודה אך היא אינה מותקנת כברירת מחדל. השתמש בפקודה הבאה כדי להתקין את תכונת השלמת הפקודה בממשק CLI של Raspberry Pi:

להשלים -C aws_completer aws

הגדר את AWS CLI עם מזהה מפתח גישה, מפתח גישה סודית, שם אזור AWS ותבנית פלט פקודה באמצעות הפקודה הבאה:

aws להגדיר

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

pi@raspberrypi: ~ $ aws להגדיר

מזהה מפתח גישה של AWS [ללא]: "שים כאן את מזהה מפתח הגישה של המשתמש שלך" מפתח גישה סודי של AWS [ללא]: "הכנס את מפתח הגישה הסודי של המשתמש שלך כאן" שם אזור ברירת מחדל [ללא]: פורמט פלט ברירת מחדל של eu-central-1 [אין]: json pi@raspberrypi: ~ $

שלב 7: יצירת קובץ Iot-role.trust.json

יצירת קובץ Iot-role.trust.json
יצירת קובץ Iot-role.trust.json
יצירת קובץ Iot-role.trust.json
יצירת קובץ Iot-role.trust.json
  1. צור קובץ JSON עם מדיניות IAM לעיל עם שם הקובץ iot-role.trust.json.
  2. צור את התפקיד באמצעות ה- AWS CLI באמצעות הפקודה הבאה

aws iam create-role --role-name my-iot-role-assume-role-policy-document file: //iot-role-trust.json

שלב 8: יצירת קובץ Iot-policy.json

יצירת קובץ Iot-policy.json
יצירת קובץ Iot-policy.json
יצירת קובץ Iot-policy.json
יצירת קובץ Iot-policy.json
  1. צור קובץ JSON עם המדיניות לעיל עם שם הקובץ iot-policy.json.
  2. צור את מדיניות התפקידים באמצעות AWS CLI באמצעות הפקודה הבאה:

aws iam put-role-policy --role-name IoTRole --policy-name iot-policy --policy-document file: //iot-policy.json

שלב 9: צור נושא AWS SNS (חלק 1)

צור נושא AWS SNS (חלק 1)
צור נושא AWS SNS (חלק 1)
צור נושא AWS SNS (חלק 1)
צור נושא AWS SNS (חלק 1)
צור נושא AWS SNS (חלק 1)
צור נושא AWS SNS (חלק 1)
  1. בסרגל החיפוש של שירותי AWS, חפש שירות "SNS" או עבור אל
  2. מכיוון שאין לך נושאים כעת, לחץ על "צור נושא חדש" כדי ליצור נושא.
  3. הקלד את שם הנושא ואת שם התצוגה ולחץ על "צור נושא" ונושא חדש יופיע כאשר כל השלבים יצליחו.
  4. לחץ על הלחצן הנפתח "פעולות" ועל "ערוך מדיניות נושאים".

שלב 10: צור נושא AWS SNS (חלק 2)

צור נושא AWS SNS (חלק 2)
צור נושא AWS SNS (חלק 2)
צור נושא AWS SNS (חלק 2)
צור נושא AWS SNS (חלק 2)
צור נושא AWS SNS (חלק 2)
צור נושא AWS SNS (חלק 2)
  1. הגדר את המדיניות כדי לאפשר לכולם לפרסם ולהירשם כמנוי, מכיוון שמדובר במגבלות של חשבון AWSEducate.
  2. הירשם לנושא זה כדי לקבל עדכונים המתפרסמים בנושא זה.
  3. שנה את הפרוטוקול ל"דוא"ל "והזן את הדוא"ל שלך בנקודת הסיום.

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

שלב 11: צור נושא AWS SNS (חלק 3)

צור נושא AWS SNS (חלק 3)
צור נושא AWS SNS (חלק 3)
צור נושא AWS SNS (חלק 3)
צור נושא AWS SNS (חלק 3)
צור נושא AWS SNS (חלק 3)
צור נושא AWS SNS (חלק 3)
  1. הקלד שם בשדה שם עבור הכלל שלך. בשדה תיאור, הקלד תיאור עבור הכלל שלך. בהמשך לסעיף מקור ההודעה, היינו בוחרים את גרסת ה- SQL המעודכנת ביותר בקטע "שימוש בגרסת SQL". הקלד * במאפיין כדי לבחור את כל הודעת MQTT מהנושא, במקרה שלנו הנושא שלנו הוא "TempHumid".
  2. לאחר מכן הוסף פעולת התראה של "SNS" לכלל שלך. לאחר מכן, לחץ על "הגדר פעולה".
  3. בדף "הגדר פעולה", בחר את נושא ה- SNS שיצרת זה עתה ואת פורמט ההודעה כ- RAW. לאחר מכן, בחר את התפקיד שיצרת זה עתה באמצעות AWS CLI ולחץ על "הוסף פעולה".
  4. הפעולה שלך תוגדר ותחזור אל "צור כלל".
  5. לחץ על ערוך אם ברצונך לערוך את הכלל.

שלב 12: צור דלי ב- Amazon S3

צור דלי ב- Amazon S3
צור דלי ב- Amazon S3
צור דלי ב- Amazon S3
צור דלי ב- Amazon S3
צור דלי ב- Amazon S3
צור דלי ב- Amazon S3
  1. חפש את S3 בשורת החיפוש של AWS.
  2. בדף Amazon S3, לחץ על כפתור "צור דלי" כדי להתחיל.
  3. מלא את טופס הקופץ המופיע עם המידע הבא:

    • שם דלי: seroma-bucket (זה חייב להיות ייחודי בכל הדליים הקיימים של אמזון S3)
    • אזור: מערב ארה"ב (אורגון)
    • הגדרות העתקה: (התעלם)
  4. בשלבים 2 עד 3, פשוט דלג עליו על ידי לחיצה על "הבא" מכיוון שאין מה לשנות. בשלב 4, לחץ על "צור דלי".
  5. לאחר היצירה, אתה אמור לראות את הדלי שלך בדף הבית.

שלב 13: צור מדיניות AWS (חלק 1)

צור מדיניות AWS (חלק 1)
צור מדיניות AWS (חלק 1)
צור מדיניות AWS (חלק 1)
צור מדיניות AWS (חלק 1)
צור מדיניות AWS (חלק 1)
צור מדיניות AWS (חלק 1)
  1. לחץ על הדלי שיצרת כדי להיכנס לדף לעיל, ולאחר מכן המשך אל "מדיניות דלי" בכרטיסייה "הרשאות".
  2. לאחר מכן, לחץ על הקישור "מחולל מדיניות" בתחתית הדף כדי ליצור את מדיניות AWS שלך.
  3. בטופס, הזן את הערכים הבאים:

    • סוג המדיניות: מדיניות דלי S3
    • אפקט: אפשר
    • מנהל: *
    • שירות AWS: אמזון S3
    • פעולות: GetObject
    • שם משאבי אמזון (ARN): arn: aws: s3::: seroma-bucket
  4. לאחר מילוי המידע לחץ על הוסף הצהרה.
  5. לחץ על כפתור "צור מדיניות".

שלב 14: צור מדיניות AWS (חלק 2)

צור מדיניות AWS (חלק 2)
צור מדיניות AWS (חלק 2)
צור מדיניות AWS (חלק 2)
צור מדיניות AWS (חלק 2)
צור מדיניות AWS (חלק 2)
צור מדיניות AWS (חלק 2)
צור מדיניות AWS (חלק 2)
צור מדיניות AWS (חלק 2)
  1. העתק את הקודים שנוצרו ולחץ על סגור.
  2. חזור לעורך מדיניות הדלי של Amazon S3 Bucket והדבק את הקודים שהועתקו בעבר.
  3. הוסף "/*" לקודים ממש מאחורי קודי המשאבים, כמו בתמונה למעלה, ולאחר מכן לחץ על שמור.
  4. לאחר שתעשה זאת, הדלי שלך יוגדר בהצלחה ומוכן לשימוש.

שלב 15: יצירת טבלאות עבור DynamoDB

יצירת טבלאות עבור DynamoDB
יצירת טבלאות עבור DynamoDB
יצירת טבלאות עבור DynamoDB
יצירת טבלאות עבור DynamoDB
  1. חפש את DynamoDB בשורת החיפוש של AWS Services
  2. לחץ על "צור טבלה" וצור 3 טבלאות עם המידע שלהלן: (רק "שם הטבלה" ו"מפתח הראשי "משתנים)

    • accesslog, pk datetimevalue
    • roomstatus, pk datetimevalue
    • staffdata, שם משתמש pk

שלב 16: Roomstatus.py

Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py

חלק זה מכיל את הקוד עבור roomstatus.py, אשר כותב את כל הנתונים בנוגע לחדר השרת עצמו בכל דקה. זה כולל את הטמפרטורה, הלחות, התנועה (תמונות וסרטונים אם הם נכונים) ויומני גישה. הוא גם כותב נתונים לגיליון אלקטרוני של Google, נתונים ל- DynamoDB, תמונות וסרטונים (אם קיימים) ל- S3, מציג מידע על מסך ה- LCD, שולח הודעות SMS ודוא ל כאשר יש חשד להפרה, או כאשר הטמפרטורה או הלחות אינם סדירים..

כדי להפעיל קבצי פייתון, שנה את הספרייה למקום שבו הקובץ נמצא והקלד במסוף: "sudo python"

תמונה 2: פונקציות שהוכרזו לאפשר התראות SMS ודוא ל והעלאה ל- S3

תמונה 3: משתנים שהוכרזו עבור פונקציות ו- RPi לעבודה

תמונה 4: התחלת הלולאה שמקבלת את ערכי הטמפרטורה והלחות מה- RPi. הוא גם כותב את הנתונים לגיליון אלקטרוני של Google

תמונה 5: חלק האבטחה בלולאה. הוא יופעל רק משעה 19:00 עד 7 בבוקר (שעות פעילות). הוא יבדוק את התנועה בטווח של דקה אחת. אם תתגלה תנועה, היא תצלם תמונה ווידאו, תעלה אותה ל- S3, ותכתוב מידע ל- DynamoDB לעיון מאוחר יותר. לאחר מכן, הוא ישלח SMS ודוא ל אם משהו אינו סדיר.

תמונה 6: סוף הלולאה. הוא גם כותב נתונים ל- DynamoDB ושולח התראות בהתאם. השורה האחרונה של הלולאה תגרום לתסריט לישון עד שתגיע הדקה הבאה.

שלב 17: Rfid.py

Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py

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

תמונה 2: התחלת ההיגיון של קורא RFID. בכל פעם שנסרק כרטיס נגד הקורא, המזהה הייחודי (uid) של הכרטיס נלקח. לאחר מכן, אנו מנסים למצוא את ערך ה- uid של הכרטיס בטבלת נתוני הצוות כדי לראות אם הכרטיס שייך לאחד מהצוותים. תמונה 3: אם ה- uid של הכרטיס קיים במאגר הנתונים, הוא יבדוק אם הוא במהלך המשרד. מחוץ לשעות. אם כן, היא תתריע בפני שאר העובדים באמצעות הודעות SMS ודוא"ל על כתובות הדוא"ל הרשומות. אם הוא עדיין בשעות המשרד, הוא יכתוב שורה לטבלת Accesslog במאגר הנתונים עם הנתונים הרלוונטיים. הוא יציג גם הודעת קבלת פנים על צג ה- LCD.

שלב 18: Server.py

Server.py
Server.py
Server.py
Server.py
Server.py
Server.py

זהו הקובץ server.py. אנו נשתמש במסגרת הבקבוק לפורטל האינטרנט. קובצי HTML שיש להכניס /תבניות מצורפים גם כן.

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

תמונה 2, 3, 4: מסלולי בקבוק. הוא מקבל נתונים מטבלת DynamoDB ולאחר מכן מחזיר אותם לקבצי HTML כך שניתן יהיה להשתמש בהם שם.

תמונה 5: 2 המסלולים האחרונים של Flask. הוא מטפל בפונקציית היציאה ובפונקציית השידור החי. הוא גם מציין את היציאה שבה האתר יפעל.

שלב 19: Telegram.py

Telegram.py
Telegram.py
Telegram.py
Telegram.py
Telegram.py
Telegram.py

חלק זה כולל את הקוד לבוט המברקים של Seroma. הוא משתמש בספריית הטלפוט כדי להקיש על ה- API של Bot של טלגרם. זה עובד על ידי קבלת השאילתות שהוא מקבל והצגת המידע המתאים למשתמש. המשתמש יכול להקליד 'עזרה' לרשימה מלאה של פקודות.

תמונה 1, 2: כדי להגדיר בוט מברקים, עליך להשתמש ב- BotFather. פשוט בצע את ההוראות כדי לקבל את ה- API HTTP הדרוש לנו בקוד שלנו.

תמונה 4: דוגמא לפונקציה שלוקחת מספר מסוים של שורות נתונים ממסד הנתונים בהתבסס על בקשת המשתמש

תמונה 5: כיצד אנו לוקחים את קלט המשתמש ומחליטים מה להריץ בהתאם.

שלב 20: שידור חי (camera_pi.py)

שידור חי (camera_pi.py)
שידור חי (camera_pi.py)
שידור חי (camera_pi.py)
שידור חי (camera_pi.py)
שידור חי (camera_pi.py)
שידור חי (camera_pi.py)

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

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

תמונה 3: זהו חלק מקובץ ה- server.py שלנו שבו מקודד חלק הזרם החי. המחלקה העיקרית שייבאנו לשם כך היא המצלמה מהקובץ camera_pi.py שלנו בחלק העליון של קובץ ה- server.py שלנו. הגדרנו פונקציה בספריית השורש שלנו, gen, אולם היא נכנסת לשימוש רק כאשר אנו ניגשים אל /video_feed היכן שהזרם החי שלנו נמצא, שם הוא יעבור דרך הפונקציה הזו ויחזיר את הזרם החי בדף האינטרנט.

מוּמלָץ: