Cuprins:

Seroma: Manager cameră server: 20 de pași
Seroma: Manager cameră server: 20 de pași

Video: Seroma: Manager cameră server: 20 de pași

Video: Seroma: Manager cameră server: 20 de pași
Video: Лесли Морган Штайнер: Почему жертвы домашнего насилия не уходят от своих мучителей 2024, Noiembrie
Anonim
Seroma: Server Room Manager
Seroma: Server Room Manager

Seroma este un manager de cameră server all-in-one care permite utilizatorilor să verifice starea serverelor (temperatura și umiditatea), jurnalele de acces ale camerei serverului, precum și să monitorizeze camera serverului în sine pentru orice încălcare a securității.

Pasul 1: conectați-vă la contul dvs. AWS

Conectați-vă la contul dvs. AWS
Conectați-vă la contul dvs. AWS
Conectați-vă la contul dvs. AWS
Conectați-vă la contul dvs. AWS
Conectați-vă la contul dvs. AWS
Conectați-vă la contul dvs. AWS
Conectați-vă la contul dvs. AWS
Conectați-vă la contul dvs. AWS
  1. Pentru al nostru, ne-am conectat prin intermediul portalului AWS educate student, deoarece avem un cont de student aws.
  2. Mergeți la fila „Cont AWS” din meniul de navigare din partea dreaptă sus.
  3. Faceți clic pe „Accesați contul dvs. AWS Educate Starter”
  4. Deschideți Consola pentru a accesa AWS Management Console.

Pasul 2: Noțiuni introductive despre „lucrurile” AWS IOT

Noțiuni introductive despre AWS IOT
Noțiuni introductive despre AWS IOT
Noțiuni introductive despre AWS IOT
Noțiuni introductive despre AWS IOT
  1. Căutați „AWS IoT” în bara de căutare a serviciilor AWS.
  2. Faceți clic pe „Începeți” pentru a trece la tabloul de bord AWS IoT Console, unde puteți vizualiza toate dispozitivele IoT înregistrate în contul dvs. AWS.

Pasul 3: Înregistrarea unui „lucru” AWS IOT

Înregistrarea unui AWS IOT
Înregistrarea unui AWS IOT
Înregistrarea unui AWS IOT
Înregistrarea unui AWS IOT
Înregistrarea unui AWS IOT
Înregistrarea unui AWS IOT
  1. În bara de navigare, navigați pentru a vă gestiona „Lucrurile” IoT.
  2. Faceți clic pe „Înregistrați un lucru” dacă nu aveți încă un lucru. (Dacă aveți deja un lucru, dați clic pe butonul „Creați” din partea dreaptă sus a ecranului de lângă fila de căutare.)
  3. Faceți clic pe primul buton numit „Creați un singur lucru”.
  4. Tastați „RaspberryPi” ca nume al lucrului. Pentru acest pas, nu este necesară nicio intrare în afară de „Nume”. După ce faceți acest lucru, faceți clic pe Următorul.

Pasul 4: Activarea unui certificat

Activarea unui certificat
Activarea unui certificat
Activarea unui certificat
Activarea unui certificat
  1. La pasul următor, faceți clic pe butonul „creați certificatul”.
  2. Descărcați și stocați cele 4 linkuri de descărcare din pagina următoare într-un director sau folder de lucru. Pentru a salva fișierul CA rădăcină, faceți clic dreapta și salvați ca.
  3. Faceți clic pe „Activare” și va apărea un mesaj de succes.
  4. Utilizați nume prietenoase pentru fișiere, eliminând numerele din fața fiecărui nume de fișier și redenumind fișierul CA rădăcină în „rootca.pem”.
  5. Faceți clic pe „Atașați o politică” pentru a continua.

Pasul 5: Adăugarea unei politici la certificatul dvs

Adăugarea unei politici la certificatul dvs
Adăugarea unei politici la certificatul dvs
Adăugarea unei politici la certificatul dvs
Adăugarea unei politici la certificatul dvs
Adăugarea unei politici la certificatul dvs
Adăugarea unei politici la certificatul dvs
  1. În pagina următoare, dacă nu aveți o politică, acestea vă vor solicita să faceți una pe butonul „Creați o politică”.
  2. Dacă aveți deja o politică existentă, faceți clic pe butonul „Creați o politică nouă” de mai jos.
  3. Introduceți următoarele informații în formularul de creare a politicii.

    Nume: RaspberryPiSecurityPolicy

    Acțiune: iot: *

    Resursă ARN: *

    Efect: Permiteți

  4. Politica dvs. ar trebui să apară apoi în fila „Politică” sub „Securitate”.
  5. Apoi, accesați fila „Certificate” aflată și sub „Securitate” și atașați politica dvs. la certificatul pe care l-ați creat anterior.
  6. În pagina următoare, faceți clic pe politica dvs., apoi faceți clic pe „Atașați”.
  7. În pagina Detalii a lucrului pe care l-ați creat, sub fila „Interacționați”, există un punct final REST API care ar trebui copiat și salvat.
  8. AWS ar trebui să aibă acum un lucru atașat unei politici și care are un certificat.

Pasul 6: Configurare inițială pentru subiectul AWS SNS

Configurare inițială pentru subiectul AWS SNS
Configurare inițială pentru subiectul AWS SNS
Configurare inițială pentru subiectul AWS SNS
Configurare inițială pentru subiectul AWS SNS

SSH în Raspberry Pi și instalați AWS CLI utilizând următoarea comandă pip:

sudo pip instalează awscli

AWS CLI include funcția de finalizare a comenzilor, dar nu este instalată implicit. Utilizați următoarea comandă pentru a instala funcția de finalizare a comenzii pe interfața CLI a Raspberry Pi:

complet -C aws_completer aws

Configurați AWS CLI cu ID-ul cheii de acces, cheia de acces secret, numele regiunii AWS și formatul de ieșire comandă utilizând următoarea comandă:

aws configure

Consola vă va solicita apoi să completați următoarele informații:

pi @ raspberrypi: configurare ~ $ aws

ID cheie de acces AWS [Niciuna]: „Puneți aici ID-ul cheii de acces a utilizatorului” Cheie de acces secret AWS [Niciuna]: „Puneți aici cheia de acces secretă a utilizatorului” Nume regiune implicit [Nici unul]: eu-central-1 Format de ieșire implicit [Niciuna]: json pi @ raspberrypi: ~ $

Pasul 7: Crearea fișierului Iot-role.trust.json

Crearea fișierului Iot-role.trust.json
Crearea fișierului Iot-role.trust.json
Crearea fișierului Iot-role.trust.json
Crearea fișierului Iot-role.trust.json
  1. Creați un fișier JSON cu politica IAM de mai sus cu numele de fișier iot-role.trust.json.
  2. Creați rolul utilizând AWS CLI utilizând următoarea comandă

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

Pasul 8: Crearea fișierului Iot-policy.json

Crearea fișierului Iot-policy.json
Crearea fișierului Iot-policy.json
Crearea fișierului Iot-policy.json
Crearea fișierului Iot-policy.json
  1. Creați un fișier JSON cu politica de mai sus cu numele de fișier iot-policy.json.
  2. Creați politica de roluri utilizând AWS CLI utilizând următoarea comandă:

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

Pasul 9: Creați un subiect AWS SNS (partea 1)

Creați un subiect AWS SNS (partea 1)
Creați un subiect AWS SNS (partea 1)
Creați un subiect AWS SNS (partea 1)
Creați un subiect AWS SNS (partea 1)
Creați un subiect AWS SNS (partea 1)
Creați un subiect AWS SNS (partea 1)
  1. În bara de căutare a serviciilor AWS, căutați serviciul „SNS” sau accesați
  2. Deoarece nu aveți subiecte acum, faceți clic pe „Creați subiect nou” pentru a crea un subiect.
  3. Tastați numele subiectului și numele afișat și faceți clic pe „Creați subiect” și va apărea un subiect nou când toți pașii vor avea succes.
  4. Faceți clic pe butonul drop-down „Acțiuni” și „Editați politica subiectului”.

Pasul 10: Creați un subiect AWS SNS (partea 2)

Creați un subiect AWS SNS (partea 2)
Creați un subiect AWS SNS (partea 2)
Creați un subiect AWS SNS (partea 2)
Creați un subiect AWS SNS (partea 2)
Creați un subiect AWS SNS (partea 2)
Creați un subiect AWS SNS (partea 2)
  1. Setați politica pentru a permite tuturor să publice și să se aboneze, deoarece acestea sunt limitele unui cont AWSEducate.
  2. Abonați-vă la acest subiect pentru a primi actualizări publicate la acest subiect.
  3. Schimbați protocolul în „E-mail” și introduceți e-mailul dvs. la punctul final.

  4. Accesați adresa de e-mail unde ați introdus punctul final, faceți clic pe linkul de confirmare pentru a vă confirma abonamentul la e-mail pentru a vă abona la subiect.
  5. Navigați la serviciile „AWS IoT”, în meniul de navigare din stânga, faceți clic pe „Act”. Această pagină este unde regulile dvs. sunt afișate și disponibile pentru a fi vizualizate și editate. În prezent, nu există reguli pentru chestiunea dvs. IoT, faceți clic pe „Creați o regulă”.

Pasul 11: Creați un subiect AWS SNS (partea 3)

Creați un subiect AWS SNS (partea 3)
Creați un subiect AWS SNS (partea 3)
Creați un subiect AWS SNS (partea 3)
Creați un subiect AWS SNS (partea 3)
Creați un subiect AWS SNS (partea 3)
Creați un subiect AWS SNS (partea 3)
  1. Tastați un nume în câmpul Nume pentru regula dvs. În câmpul Descriere, tastați o descriere pentru regula dvs. Continuând cu secțiunea Sursă mesaj, am alege cea mai actualizată versiune SQL din secțiunea „Utilizarea versiunii SQL”. Tastați * în atribut pentru a selecta întregul mesaj MQTT din subiect, în cazul nostru subiectul nostru este „TempHumid”.
  2. Apoi adăugați o acțiune de notificare „SNS” pentru regula dvs. Apoi, faceți clic pe „Configurare acțiune”.
  3. În pagina „Configurare acțiune”, alegeți subiectul SNS pe care tocmai l-ați creat și formatul mesajului ca RAW. După aceea, alegeți rolul pe care tocmai l-ați creat folosind AWS CLI și faceți clic pe „Adăugați acțiune”.
  4. Acțiunea dvs. va fi configurată și va reveni la „Creați o regulă”.
  5. Faceți clic pe editați dacă doriți să editați regula.

Pasul 12: Creați o bucket pe Amazon S3

Creați o bucket pe Amazon S3
Creați o bucket pe Amazon S3
Creați o bucket pe Amazon S3
Creați o bucket pe Amazon S3
Creați o bucket pe Amazon S3
Creați o bucket pe Amazon S3
  1. Căutați S3 în bara de căutare AWS.
  2. În pagina Amazon S3, faceți clic pe butonul „Create Bucket” pentru a începe.
  3. Completați formularul pop-up care apare cu următoarele informații:

    • Numele cupei: seroma-cup (acesta trebuie să fie unic pentru toate cupele Amazon S3 existente)
    • Regiune: Vestul SUA (Oregon)
    • Copiați setările: (Ignorați)
  4. Pentru pașii de la 2 la 3, pur și simplu săriți-l făcând clic pe „Următorul”, deoarece nu este nimic de modificat. La pasul 4, faceți clic pe „Creați cupă”.
  5. După creație, ar trebui să vă vedeți cupa pe pagina principală.

Pasul 13: Generați o politică AWS (partea 1)

Generați o politică AWS (partea 1)
Generați o politică AWS (partea 1)
Generați o politică AWS (partea 1)
Generați o politică AWS (partea 1)
Generați o politică AWS (partea 1)
Generați o politică AWS (partea 1)
  1. Faceți clic pe bucket-ul pe care l-ați creat pentru a intra în pagina de mai sus, apoi treceți la „Policy Bucket” sub fila „Permissions”.
  2. Apoi, faceți clic pe linkul „Generator de politici” din partea de jos a paginii pentru a genera politica dvs. AWS.
  3. În formular, introduceți următoarele valori:

    • Tipul politicii: Politica S3 Bucket
    • Efect: Permiteți
    • Director: *
    • Serviciu AWS: Amazon S3
    • Acțiuni: GetObject
    • Numele resursei Amazon (ARN): arn: aws: s3::: seroma-bucket
  4. După completarea informațiilor, faceți clic pe Adăugați o declarație.
  5. Faceți clic pe butonul „Generați politica”.

Pasul 14: Generați o politică AWS (partea 2)

Generați o politică AWS (partea 2)
Generați o politică AWS (partea 2)
Generați o politică AWS (partea 2)
Generați o politică AWS (partea 2)
Generați o politică AWS (partea 2)
Generați o politică AWS (partea 2)
Generați o politică AWS (partea 2)
Generați o politică AWS (partea 2)
  1. Copiați codurile generate și faceți clic pe închidere.
  2. Reveniți la editorul dvs. Amazon S3 Bucket Policy și lipiți codurile copiate anterior.
  3. Adăugați un „/ *” în coduri chiar în spatele codurilor Resurse, ca în imaginea de mai sus, apoi faceți clic pe Salvați.
  4. După ce faceți acest lucru, cupa dvs. va fi configurată cu succes și gata de utilizare.

Pasul 15: Crearea tabelelor pentru DynamoDB

Crearea tabelelor pentru DynamoDB
Crearea tabelelor pentru DynamoDB
Crearea tabelelor pentru DynamoDB
Crearea tabelelor pentru DynamoDB
  1. Căutați DynamoDB în bara de căutare AWS Services
  2. Faceți clic pe „Creați tabelul” și creați 3 tabele cu informațiile de mai jos: (Doar „numele tabelului” și „cheia principală” sunt modificate)

    • accesslog, pk datetimevalue
    • roomstatus, pk datetimevalue
    • staffdata, nume de utilizator pk

Pasul 16: Roomstatus.py

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

Această secțiune conține codul pentru roomstatus.py, care scrie toate datele referitoare la camera serverului în fiecare minut. Aceasta include temperatura, umiditatea, mișcarea (imagini și videoclipuri dacă sunt adevărate) și jurnalele de acces. De asemenea, scrie date pe o foaie de calcul Google, date pe DynamoDB, imagini și videoclipuri (dacă există) pe S3, afișează informații pe ecranul LCD, trimite un SMS și un e-mail atunci când există o încălcare suspectată sau când temperatura sau umiditatea sunt neregulate..

Pentru a rula fișiere python, schimbați directorul în care este situat fișierul și tastați în consolă: "sudo python"

Pic 2: Funcții declarate pentru a permite alerte SMS și e-mail și încărcarea în S3

Pic 3: Variabile declarate pentru a funcționa funcțiile și RPi

Pic 4: Începutul buclei care obține valorile de temperatură și umiditate din RPi. De asemenea, scrie datele pe o foaie de calcul Google

Pic 5: Securitate parte a buclei. Se va activa numai între orele 19:00 și 07:00 (ore libere). Acesta va verifica mișcarea într-un interval de un minut. Dacă este detectată mișcare, va lua o imagine și un videoclip, le va încărca în S3, în timp ce va scrie informații în DynamoDB pentru referință ulterior. Ulterior, va trimite un SMS și un e-mail dacă ceva este neregulat.

Pic 6: sfârșitul buclei. De asemenea, scrie date pe DynamoDB și trimite alerte în consecință. Ultima linie a buclei va face ca scriptul să rămână în repaus până la atingerea minutului următor.

Pasul 17: Rfid.py

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

Această secțiune conține codul pentru rfid.py, care adaugă funcționalitatea de urmărit atunci când un membru al personalului accesează camera serverului. De asemenea, face parte din aspectul de securitate al Seroma, în cazul în care un membru al personalului nu are voie să acceseze camera serverului după orele de birou, pentru a preveni o încălcare a datelor. De asemenea, trimite un e-mail și SMS-uri tuturor personalului în cazul în care se suspectează o încălcare.

Pic 2: Începutul logicii cititorului RFID. Ori de câte ori un card este scanat împotriva cititorului, este luat ID-ul unic (uid) al cardului. Ulterior, încercăm să găsim valoarea uid a cardului în tabelul de date al personalului pentru a vedea dacă cardul aparține vreunui membru al personalului. Figura 3: Dacă uidul cardului există în baza de date, acesta va verifica dacă este în timpul biroului în afara orelor. Dacă este, va alerta restul angajaților prin SMS și e-mail adresele de e-mail abonate. Dacă este încă în timpul orelor de birou, va scrie un rând în tabelul de jurnal de acces din baza de date cu datele relevante. De asemenea, va afișa un mesaj de bun venit pe ecranul LCD.

Pasul 18: Server.py

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

Acesta este fișierul server.py. Vom folosi cadrul Flask pentru portalul web. Fișierele HTML care urmează să fie introduse / șabloane sunt atașate, de asemenea.

Pic 1: Primul traseu pentru Flask definit. Acesta va redirecționa utilizatorul către pagina de autentificare dacă nu este conectat și pagina de tablou de bord dacă este autentificat. De asemenea, definește o funcție care trebuie utilizată în funcția de transmisie în direct

Pic 2, 3, 4: Rute pentru Flask. Obține date din tabelul DynamoDB și apoi le returnează în fișierele HTML, astfel încât să poată fi utilizate acolo.

Pic 5: Ultimele 2 trasee pentru Flask. Se ocupă de funcția de deconectare și funcția de transmisie în direct. De asemenea, specifică portul pe care va rula site-ul web.

Pasul 19: Telegram.py

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

Această secțiune include codul pentru botul telegramei Seroma. Utilizează biblioteca telepot pentru a atinge API-ul Bot al Telegram. Funcționează acceptând întrebările pe care le primește și afișând informațiile respective utilizatorului. Utilizatorul poate tasta „help” pentru o listă completă de comenzi.

Pic 1, 2: Pentru a configura un bot de telegramă, trebuie să utilizați BotFather. Pur și simplu parcurgeți instrucțiunile pentru a obține API-ul HTTP de care avem nevoie în cod.

Pic 4: Exemplu de funcție care preia un anumit număr de rânduri de date din baza de date pe baza cererii utilizatorului

Imaginea 5: Cum luăm informațiile utilizatorului și decidem ce să rulăm în consecință.

Pasul 20: Livestream (camera_pi.py)

Livestream (camera_pi.py)
Livestream (camera_pi.py)
Livestream (camera_pi.py)
Livestream (camera_pi.py)
Livestream (camera_pi.py)
Livestream (camera_pi.py)

Am implementat o nouă caracteristică pentru sistemul nostru de monitorizare a camerei server, un flux live a ceea ce se întâmplă în camera server, care poate fi accesat în orice moment, oriunde. Cum funcționează acest flux live: este o caracteristică care se realizează în Flask, împreună cu camera Pi. Cadrele video sunt descărcate așa cum se întâmplă în viața reală, astfel încât puteți vedea de fapt că există o ușoară întârziere (1-2 secunde), deoarece cadrele video sunt descărcate și împărțite împreună. Acest lucru nu se poate face fără filetare, deoarece firul de fundal citește cadrele de pe cameră și stochează cadrul curent. Punerea în comun a tuturor acestor cadre va genera apoi un flux live.

Pic 2: Acesta este un fișier separat în care sunt stocate toate cadrele video și, după cum puteți vedea, folosim modulul picamera pentru a accesa camera noastră raspberry pi, deoarece asta ne cunoaște cel mai mult. Avem un aparat foto de clasă, astfel încât să putem importa funcția ca și cum ar fi un flux live și nu mai multe imagini care se unesc, prin urmare, în fișierul principal al aplicației ar fi luat ca un flux live, fără a fi nevoie să vă faceți griji cu privire la ceea ce se întâmplă în culise.

Pic 3: Aceasta face parte din fișierul nostru server.py în care este codată partea fluxului live. Clasa principală pe care am importat-o pentru aceasta este Camera din fișierul nostru camera_pi.py din partea de sus a fișierului server.py. Am definit o funcție în directorul nostru rădăcină, gen, cu toate acestea, aceasta intră în funcțiune doar când ne îndreptăm către / video_feed unde se află fluxul nostru live, unde va trece prin această funcție și va returna fluxul live de pe pagina web.

Recomandat: