INHOUDSOPGAWE:

Seroma: bedienerkamerbestuurder: 20 stappe
Seroma: bedienerkamerbestuurder: 20 stappe

Video: Seroma: bedienerkamerbestuurder: 20 stappe

Video: Seroma: bedienerkamerbestuurder: 20 stappe
Video: Als Dit Niet Was Gefilmd Zou Niemand Het Geloven 2024, November
Anonim
Seroma: bedienerkamerbestuurder
Seroma: bedienerkamerbestuurder

Seroma is 'n alles-in-een bedienerkamerbestuurder waarmee gebruikers die status van die bedieners (temperatuur en humiditeit), die toegangslogboeke van die bedienerkamer kan nagaan, asook die bedienerkamer self kan monitor vir enige sekuriteitsbreuk.

Stap 1: Meld aan by u AWS -rekening

Meld aan by u AWS -rekening
Meld aan by u AWS -rekening
Meld aan by u AWS -rekening
Meld aan by u AWS -rekening
Meld aan by u AWS -rekening
Meld aan by u AWS -rekening
Meld aan by u AWS -rekening
Meld aan by u AWS -rekening
  1. Vir ons s'n het ons aangemeld via die AWS educate student gateway, aangesien ons 'n student aws -rekening het.
  2. Gaan na die oortjie "AWS-rekening" in die navigasiekieslys regs bo.
  3. Klik op “Gaan na u AWS Educate Starter -rekening”
  4. Maak die konsole oop om toegang tot u AWS -bestuurskonsole te verkry.

Stap 2: Aan die gang met AWS IOT "dinge"

Aan die gang met AWS IOT
Aan die gang met AWS IOT
Aan die gang met AWS IOT
Aan die gang met AWS IOT
  1. Soek "AWS IoT" in die soekbalk van AWS -dienste.
  2. Klik op "Begin" om na die AWS IoT Console -dashboard te gaan, waar u al die IoT -toestelle wat in u AWS -rekening geregistreer is, kan sien.

Stap 3: Registreer 'n AWS IOT "ding"

Registreer 'n AWS IOT
Registreer 'n AWS IOT
Registreer 'n AWS IOT
Registreer 'n AWS IOT
Registreer 'n AWS IOT
Registreer 'n AWS IOT
  1. Navigeer in die navigasiebalk om u IoT -“dinge” te bestuur.
  2. Klik op "Registreer 'n ding" as u nog niks het nie. (As u reeds iets het, klik dan op die knoppie "Skep" regs bo op die skerm langs die soekblad.)
  3. Klik op die eerste knoppie met die naam "Skep 'n enkele ding".
  4. Tik "RaspberryPi" as die naam van die ding. Vir hierdie stap word geen invoer anders as die 'Naam' benodig nie. Klik daarna op die volgende.

Stap 4: Aktiveer 'n sertifikaat

Aktivering van 'n sertifikaat
Aktivering van 'n sertifikaat
Aktivering van 'n sertifikaat
Aktivering van 'n sertifikaat
  1. Klik in die volgende stap op die knoppie "skep sertifikaat".
  2. Laai die 4 aflaaiskakels op die volgende bladsy af en stoor dit in 'n werkende gids of gids. Klik met die rechtermuisknop en stoor as om die wortel CA-lêer te stoor.
  3. Klik op "Aktiveer" en 'n suksesboodskap moet verskyn.
  4. Gebruik vriendelike name vir die lêers deur die getalle voor elke lêernaam te verwyder en die wortel CA -lêer te hernoem na "rootca.pem".
  5. Klik op 'Voeg 'n beleid by' om voort te gaan.

Stap 5: Voeg 'n beleid by u sertifikaat

Voeg 'n beleid by u sertifikaat
Voeg 'n beleid by u sertifikaat
Voeg 'n beleid by u sertifikaat
Voeg 'n beleid by u sertifikaat
Voeg 'n beleid by u sertifikaat
Voeg 'n beleid by u sertifikaat
  1. Op die volgende bladsy, as u nie 'n beleid het nie, sal hulle u versoek om een op die 'Skep 'n beleid' -knoppie te maak.
  2. As u reeds 'n bestaande beleid het, klik dan op die knoppie "Skep nuwe beleid" hieronder.
  3. Voeg die volgende inligting in die vorm vir die skep van 'n beleid in.

    Naam: RaspberryPiSecurityPolicy

    Aksie: iot:*

    Bron ARN: *

    Effek: Laat toe

  4. U polis moet dan verskyn op die oortjie "Beleid" onder "Beveiliging".
  5. Gaan dan na die oortjie "Sertifikate" wat ook onder "Beveiliging" is, en heg u polis aan die sertifikaat wat u voorheen geskep het.
  6. Klik op die volgende bladsy op u polis en klik dan op 'Heg'.
  7. Op die besonderhede -bladsy van die ding wat u geskep het, is daar 'n REST API -eindpunt onder die oortjie "Interaksie" wat gekopieer en gestoor moet word.
  8. AWS behoort nou 'n ding te hê wat aan 'n polis gekoppel is en 'n sertifikaat het.

Stap 6: Aanvanklike opstelling vir AWS SNS-onderwerp

Aanvanklike opstelling vir AWS SNS-onderwerp
Aanvanklike opstelling vir AWS SNS-onderwerp
Aanvanklike opstelling vir AWS SNS-onderwerp
Aanvanklike opstelling vir AWS SNS-onderwerp

SSH in Raspberry Pi en installeer AWS CLI met behulp van die volgende pip -opdrag:

sudo pip installeer awscli

AWS CLI bevat funksie vir die voltooiing van opdragte, maar dit is nie standaard geïnstalleer nie. Gebruik die volgende opdrag om die funksie vir die voltooiing van die opdrag op die CLI -koppelvlak van Raspberry Pi te installeer:

voltooi -C aws_completer aws

Stel AWS CLI op met toegangsleutel -ID, geheime toegangsleutel, AWS -streeknaam en opdraguitvoerformaat met behulp van die volgende opdrag:

aws opstel

Die konsole sal u dan vra om die volgende inligting in te vul:

pi@raspberrypi: ~ $ aws opstel

AWS-toegangsleutel-ID [Geen]: "Sit u gebruikers se toegangsleutel-ID hier" AWS geheime toegangsleutel [Geen]: "Plaas die geheime toegangsleutel van u gebruiker hier" Standaardstreeknaam [Geen]: eu-central-1 Standaarduitvoerformaat [Geen]: json pi@raspberrypi: ~ $

Stap 7: Skep Iot-role.trust.json-lêer

Skep Iot-role.trust.json-lêer
Skep Iot-role.trust.json-lêer
Skep Iot-role.trust.json-lêer
Skep Iot-role.trust.json-lêer
  1. Skep 'n JSON-lêer met die bogenoemde IAM-beleid met die lêernaam iot-role.trust.json.
  2. Skep die rol met behulp van die AWS CLI met behulp van die volgende opdrag

aws iam skep-rol-rol-naam my-iot-rol-lêer-rol-beleid-dokument lêer: //iot-role-trust.json

Stap 8: Skep Iot-policy.json-lêer

Skep Iot-policy.json-lêer
Skep Iot-policy.json-lêer
Skep Iot-policy.json-lêer
Skep Iot-policy.json-lêer
  1. Skep 'n JSON-lêer met die bogenoemde beleid met die lêernaam iot-policy.json.
  2. Skep die rolbeleid met behulp van die AWS CLI met behulp van die volgende opdrag:

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

Stap 9: Skep 'n AWS SNS -onderwerp (deel 1)

Skep 'n AWS SNS -onderwerp (deel 1)
Skep 'n AWS SNS -onderwerp (deel 1)
Skep 'n AWS SNS -onderwerp (deel 1)
Skep 'n AWS SNS -onderwerp (deel 1)
Skep 'n AWS SNS -onderwerp (deel 1)
Skep 'n AWS SNS -onderwerp (deel 1)
  1. Soek in die soekbalk van die AWS-dienste na “SNS” -diens of gaan na
  2. Aangesien u nou geen onderwerpe het nie, klik op "Skep nuwe onderwerp" om 'n onderwerp te skep.
  3. Tik u onderwerpnaam en vertoonnaam in en klik op 'Skep onderwerp', en 'n nuwe onderwerp verskyn wanneer al die stappe suksesvol is.
  4. Klik op die keuselys "Aksies" en "Onderwerpbeleid wysig".

Stap 10: Skep 'n AWS SNS -onderwerp (deel 2)

Skep 'n AWS SNS -onderwerp (deel 2)
Skep 'n AWS SNS -onderwerp (deel 2)
Skep 'n AWS SNS -onderwerp (deel 2)
Skep 'n AWS SNS -onderwerp (deel 2)
Skep 'n AWS SNS -onderwerp (deel 2)
Skep 'n AWS SNS -onderwerp (deel 2)
  1. Stel die beleid in sodat almal kan publiseer en inteken, aangesien dit beperkings is op 'n AWSEducate -rekening.
  2. Teken in op hierdie onderwerp om opdaterings van hierdie onderwerp te ontvang.
  3. Verander die protokol na "E -pos" en voer u e -posadres in by die eindpunt.

  4. Gaan na u e -posadres waar u u eindpunt ingetik het, klik op die bevestigingsskakel om u e -posintekening te bevestig om in te teken op die onderwerp.
  5. Gaan na "AWS IoT" -dienste, klik in die navigasiekieslys aan die linkerkant op "Wet". Op hierdie bladsy word u reëls vertoon en kan u dit bekyk en wysig. Tans is daar geen reëls vir u IoT -ding nie; klik op 'Skep 'n reël'.

Stap 11: Skep 'n AWS SNS -onderwerp (deel 3)

Skep 'n AWS SNS -onderwerp (deel 3)
Skep 'n AWS SNS -onderwerp (deel 3)
Skep 'n AWS SNS -onderwerp (deel 3)
Skep 'n AWS SNS -onderwerp (deel 3)
Skep 'n AWS SNS -onderwerp (deel 3)
Skep 'n AWS SNS -onderwerp (deel 3)
  1. Tik 'n naam in die veld Naam vir u reël. Tik 'n beskrywing vir u reël in die veld Beskrywing. Deur verder te gaan na die gedeelte Boodskapbron, kies ons die mees opgedateerde SQL -weergawe in die afdeling 'Gebruik SQL -weergawe'. Tik * in die kenmerk om die hele MQTT -boodskap uit die onderwerp te kies; in ons geval is ons onderwerp 'TempHumid'.
  2. Voeg dan 'n "SNS" kennisgewingaksie by vir u reël. Klik dan op "Configure action".
  3. Kies die SNS -onderwerp wat u so pas geskep het, en die boodskapformaat as RAW op die bladsy 'Konfigurasie van aksie'. Kies daarna die rol wat u pas met AWS CLI geskep het en klik op "Voeg aksie by".
  4. U aksie sal gekonfigureer word en terugkeer na 'Skep 'n reël'.
  5. Klik op wysig as u die reël wil wysig.

Stap 12: Skep 'n emmer op Amazon S3

Skep 'n emmer op Amazon S3
Skep 'n emmer op Amazon S3
Skep 'n emmer op Amazon S3
Skep 'n emmer op Amazon S3
Skep 'n emmer op Amazon S3
Skep 'n emmer op Amazon S3
  1. Soek S3 in die AWS -soekbalk.
  2. Klik op die Amazon S3 -bladsy op die 'Create Bucket' knoppie om aan die gang te kom.
  3. Vul die opspringvorm wat verskyn met die volgende inligting in:

    • Emmernaam: seroma-emmer (dit moet uniek wees vir alle bestaande Amazon S3-emmers)
    • Streek: US West (Oregon)
    • Kopieerinstellings: (Ignoreer)
  4. Vir stap 2 tot 3, slaan dit eenvoudig oor deur op "Volgende" te klik, aangesien daar niks te verander is nie. Klik op stap 4 op "Skep emmer".
  5. Na die skepping moet u u emmer op die tuisblad sien.

Stap 13: Skep 'n AWS -beleid (deel 1)

Skep 'n AWS -beleid (deel 1)
Skep 'n AWS -beleid (deel 1)
Skep 'n AWS -beleid (deel 1)
Skep 'n AWS -beleid (deel 1)
Skep 'n AWS -beleid (deel 1)
Skep 'n AWS -beleid (deel 1)
  1. Klik op die emmer wat u geskep het om die bladsy hierbo te betree, en gaan dan na 'Emmerbeleid' onder die oortjie 'Toestemmings'.
  2. Klik vervolgens op die skakel "Policy Generator" onderaan die bladsy om u AWS -beleid te genereer.
  3. Voer die volgende waardes in die vorm in:

    • Tipe polis: S3 emmerbeleid
    • Effek: Laat toe
    • Skoolhoof: *
    • AWS -diens: Amazon S3
    • Aksies: GetObject
    • Amazon-bronnaam (ARN): arn: aws: s3::: seroma-bucket
  4. Nadat u die inligting ingevul het, klik op Voeg verklaring by.
  5. Klik op die knoppie "Genereer beleid".

Stap 14: Skep 'n AWS -beleid (deel 2)

Skep 'n AWS -beleid (deel 2)
Skep 'n AWS -beleid (deel 2)
Skep 'n AWS -beleid (deel 2)
Skep 'n AWS -beleid (deel 2)
Skep 'n AWS -beleid (deel 2)
Skep 'n AWS -beleid (deel 2)
Skep 'n AWS -beleid (deel 2)
Skep 'n AWS -beleid (deel 2)
  1. Kopieer die gegenereerde kodes en klik naby.
  2. Keer terug na u Amazon S3 Bucket Policy -redakteur en plak die voorheen gekopieerde kodes.
  3. Voeg 'n "/*" by die kodes reg agter die hulpbronkodes, soos in die prent hierbo, en klik dan op stoor.
  4. Nadat u dit gedoen het, word u emmer suksesvol opgestel en gereed vir gebruik.

Stap 15: Skep tabelle vir DynamoDB

Skep tabelle vir DynamoDB
Skep tabelle vir DynamoDB
Skep tabelle vir DynamoDB
Skep tabelle vir DynamoDB
  1. Soek na DynamoDB in die soekbalk van AWS Services
  2. Klik op "Skep tabel" en skep 3 tabelle met die onderstaande inligting: (Slegs die "tabelnaam" en "primêre sleutel" word verander)

    • toegangslog, pk datetydwaarde
    • kamerstatus, pk datetydwaarde
    • staffdata, pk gebruikersnaam

Stap 16: Roomstatus.py

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

Hierdie afdeling bevat die kode vir roomstatus.py, wat elke minuut alle data rakende die bedienerkamer self skryf. Dit sluit die temperatuur, humiditeit, beweging (beelde en video's indien waar) en toegangsregisters in. Dit skryf ook data na 'n Google -sigblad, data na DynamoDB, beelde en video's (indien enige) na S3, vertoon inligting op die LCD -skerm, stuur 'n SMS en e -pos as daar 'n vermoedelike oortreding is, of as die temperatuur of humiditeit onreëlmatig is.

Om python -lêers uit te voer, verander die gids na waar die lêer geleë is en tik die konsole in: "sudo python"

Foto 2: funksies verklaar om SMS- en e -poswaarskuwings toe te laat en op te laai na S3

Foto 3: veranderlikes verklaar vir funksies en RPi om te werk

Foto 4: Begin van die lus wat die temperatuur- en humiditeitswaardes van die RPi kry. Dit skryf ook die data na 'n Google -sigblad

Foto 5: sekuriteitsdeel van die lus. Dit sal slegs van 19:00 tot 07:00 (af ure) geaktiveer word. Dit sal binne 'n minuut na bewegings kyk. As beweging opgespoor word, neem dit 'n prentjie en 'n video, laai dit op na S3, terwyl dit ook later inligting na DynamoDB skryf vir verwysing. Daarna sal dit 'n SMS en e -pos stuur as iets onreëlmatig is.

Foto 6: Die einde van die lus. Dit skryf ook data aan DynamoDB en stuur dienooreenkomstig waarskuwings. Die laaste reël van die lus laat die script slaap totdat die volgende minuut bereik is.

Stap 17: Rfid.py

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

Hierdie afdeling bevat die kode vir rfid.py, wat die funksie toevoeg om by te hou wanneer 'n personeellid toegang tot die bedienerkamer kry. Dit is ook deel van die veiligheidsaspek van Seroma, waar 'n personeellid nie na kantoorure toegang tot die bedienerkamer kan kry nie, om 'n dataskending te voorkom. Dit stuur ook 'n e -pos en sms alle personeel as 'n oortreding vermoed word.

Foto 2: Begin van die RFID -leserlogika. Elke keer as 'n kaart teen die leser geskandeer word, word die unieke ID (uid) van die kaart geneem. Daarna probeer ons die uid -waarde van die kaart in die personeeldatatabel vind om te sien of die kaart aan een van die personeel behoort. Pic 3: As die uid van die kaart in die databasis bestaan, sal dit kyk of dit tydens die kantoor is af-ure. As dit die geval is, sal dit die res van die werknemers in kennis stel deur middel van SMS en e -pos die e -posadresse wat ingeteken is. As dit nog gedurende kantoorure is, skryf dit 'n ry na die toegangslogtabel in die databasis met die relevante data. Dit sal ook 'n welkome boodskap op die LCD -skerm vertoon.

Stap 18: Server.py

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

Dit is die server.py -lêer. Ons sal die Flask -raamwerk vir die webportaal gebruik. Die HTML -lêers wat ingevoeg moet word /sjablone word ook aangeheg.

Foto 1: Eerste roete vir fles gedefinieer. Dit sal die gebruiker na die aanmeldbladsy herlei as hulle nie aangemeld is nie, en die paneelbordbladsy indien wel. Definieer ook 'n funksie wat gebruik moet word in die livestream -funksie

Foto 2, 3, 4: roetes vir fles. Dit kry data uit die DynamoDB -tabel en stuur dit dan terug na die HTML -lêers sodat dit daar gebruik kan word.

Foto 5: Laaste 2 roetes vir Flask. Dit hanteer die afmeldfunksie en die livestream -funksie. Dit spesifiseer ook die poort waarop die webwerf sal loop.

Stap 19: Telegram.py

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

Hierdie afdeling bevat die kode vir Seroma se telegram bot. Dit gebruik die telepot -biblioteek om op die Bot API van Telegram te tik. Dit werk deur die navrae wat dit ontvang, te aanvaar en die onderskeie inligting aan die gebruiker te vertoon. Die gebruiker kan 'hulp' tik vir 'n volledige lys opdragte.

Foto 1, 2: Om 'n telegram -bot op te stel, moet u BotFather gebruik. Voer die instruksies uit om die HTTP -API wat ons benodig in ons kode te kry.

Foto 4: Voorbeeld van 'n funksie wat 'n sekere aantal rye data uit die databasis neem, gebaseer op die versoek van die gebruiker

Foto 5: Hoe ons die insette van die gebruiker neem en besluit wat ons daarvolgens moet uitvoer.

Stap 20: Livestream (camera_pi.py)

Regstreekse stroom (camera_pi.py)
Regstreekse stroom (camera_pi.py)
Regstreekse stroom (camera_pi.py)
Regstreekse stroom (camera_pi.py)
Regstreekse stroom (camera_pi.py)
Regstreekse stroom (camera_pi.py)

Ons het 'n nuwe funksie vir ons moniteringstelsel vir bedienerkamers geïmplementeer, 'n lewendige stroom van wat in die bedienerkamer aangaan, dit kan op enige tydstip en oral bereik word. Hoe hierdie lewendige stroom werk: dit is 'n funksie wat saam met die Pi -kamera in Flask gedoen word. Videorame word afgelaai soos dit in die werklike lewe gebeur, sodat u kan sien dat daar 'n geringe vertraging is (1-2 sekondes) namate videorame afgelaai en saamgevoeg word. Dit kan nie gedoen word sonder om te ryg nie, aangesien die agtergronddraad rame van die kamera lees en die huidige raam stoor. Deur al hierdie rame saam te voeg, word dan 'n lewendige stroom uitgesaai.

Foto 2: Dit is 'n aparte lêer waar al die videorame gestoor word, en soos u kan sien, gebruik ons die picamera -module om toegang tot ons framboos -pi -kamera te kry, want dit is waarmee ons die bekendste is. Ons het 'n klas kamera, sodat ons die funksie kan invoer asof dit 'n lewendige stroom is en nie veelvuldige beelde wat saamgevoeg word nie, daarom sou dit in die hoofprogramlêer as 'n lewendige stroom beskou word sonder om bekommerd te wees oor wat agter die skerms gebeur.

Foto 3: Dit is deel van ons server.py -lêer waar die live stream -deel gekodeer is. Die hoofklas wat ons hiervoor ingevoer het, is die kamera uit ons camera_pi.py -lêer bo -aan ons server.py -lêer. Ons het 'n funksie gedefinieer by ons wortelgids, gen, maar dit word eers in gebruik wanneer ons na /video_feed gaan waar ons lewendige stroom is, waar dit deur hierdie funksie sal loop en die lewendige stroom op die webblad kan teruggee.

Aanbeveel: