İçindekiler:

Seroma: Sunucu Odası Yöneticisi: 20 Adım
Seroma: Sunucu Odası Yöneticisi: 20 Adım

Video: Seroma: Sunucu Odası Yöneticisi: 20 Adım

Video: Seroma: Sunucu Odası Yöneticisi: 20 Adım
Video: ཆོས་འབྱུང་བསྟན་པའི་པདྨ་རྒྱས་པའི་ཉིན་འབྱེད། ༼༤༽མི་ཕམ་པདྨ་དཀར་པོས་མཛད། 2024, Temmuz
Anonim
Seroma: Sunucu Odası Yöneticisi
Seroma: Sunucu Odası Yöneticisi

Seroma, kullanıcıların sunucuların durumunu (sıcaklık ve nem), sunucu odasının erişim günlüklerini kontrol etmesine ve ayrıca herhangi bir güvenlik ihlali için sunucu odasının kendisini izlemesine olanak tanıyan hepsi bir arada bir sunucu odası yöneticisidir.

Adım 1: AWS Hesabınıza Giriş Yapın

AWS Hesabınıza Giriş Yapın
AWS Hesabınıza Giriş Yapın
AWS Hesabınıza Giriş Yapın
AWS Hesabınıza Giriş Yapın
AWS Hesabınıza Giriş Yapın
AWS Hesabınıza Giriş Yapın
AWS Hesabınıza Giriş Yapın
AWS Hesabınıza Giriş Yapın
  1. Bizimki için, bir öğrenci aws hesabımız olduğu için AWS eğitmen öğrenci ağ geçidi üzerinden giriş yaptık.
  2. Sağ üstteki gezinme menüsündeki “AWS Hesabı” sekmesine gidin.
  3. “AWS Educate Başlangıç Hesabınıza gidin” seçeneğine tıklayın
  4. AWS Yönetim Konsolunuza erişmek için Konsolu açın.

2. Adım: AWS IOT "nesneleri"ne Başlarken

AWS IOT'ye Başlarken
AWS IOT'ye Başlarken
AWS IOT'ye Başlarken
AWS IOT'ye Başlarken
  1. AWS hizmetleri arama çubuğunda “AWS IoT” ifadesini arayın.
  2. AWS hesabınızda kayıtlı tüm IoT cihazlarını görüntüleyebileceğiniz AWS IoT Konsolu panosuna geçmek için "Başlayın"a tıklayın.

3. Adım: Bir AWS IOT "şeyini" kaydetme

AWS IOT'yi kaydetme
AWS IOT'yi kaydetme
AWS IOT'yi kaydetme
AWS IOT'yi kaydetme
AWS IOT'yi kaydetme
AWS IOT'yi kaydetme
  1. Gezinme çubuğunda, IoT “Things”inizi yönetmek için gezinin.
  2. Henüz bir şeyiniz yoksa “Bir şey kaydet”e tıklayın. (Zaten bir şeyiniz varsa, ekranın sağ üst köşesindeki arama sekmesinin yanındaki "Oluştur" düğmesine tıklayın.)
  3. “Tek bir şey oluştur” adlı ilk düğmeye tıklayın.
  4. Nesnenin adı olarak “RaspberryPi” yazın. Bu adım için “Ad” dışında bir giriş gerekli değildir. Bunu yaptıktan sonra ileri'ye tıklayın.

4. Adım: Bir Sertifikayı Etkinleştirme

Sertifikayı Etkinleştirme
Sertifikayı Etkinleştirme
Bir Sertifikayı Etkinleştirme
Bir Sertifikayı Etkinleştirme
  1. Bir sonraki adımda, “sertifika oluştur” düğmesine tıklayın.
  2. Bir sonraki sayfada bulunan 4 indirme bağlantısını indirin ve bir çalışma dizini veya klasörüne kaydedin. Kök CA dosyasını kaydetmek için sağ tıklayın ve farklı kaydet.
  3. “Etkinleştir”e tıklayın ve bir başarı mesajı görünmelidir.
  4. Her dosya adının önündeki sayıları kaldırarak ve kök CA dosyasını "rootca.pem" olarak yeniden adlandırarak dosyalar için kolay adlar kullanın.
  5. Devam etmek için "Bir ilke ekle"yi tıklayın.

Adım 5: Sertifikanıza İlke Ekleme

Sertifikanıza İlke Ekleme
Sertifikanıza İlke Ekleme
Sertifikanıza İlke Ekleme
Sertifikanıza İlke Ekleme
Sertifikanıza İlke Ekleme
Sertifikanıza İlke Ekleme
  1. Bir sonraki sayfada poliçeniz yoksa “Politika Oluştur” butonundan poliçe yapmanızı isteyeceklerdir.
  2. Halihazırda mevcut bir poliçeniz varsa, aşağıdaki "Yeni poliçe oluştur" butonuna tıklayın.
  3. Aşağıdaki bilgileri politika oluşturma formuna ekleyin.

    İsim: RaspberryPiSecurityPolicy

    Eylem: iot:*

    Kaynak ARN: *

    Etkisi: İzin ver

  4. Politikanız daha sonra “Güvenlik” altındaki “Politika” sekmesinde görünmelidir.
  5. Ardından, yine “Güvenlik” altında bulunan “Sertifikalar” sekmesine gidin ve politikanızı daha önce oluşturduğunuz sertifikaya ekleyin.
  6. Bir sonraki sayfada, politikanıza tıklayın ve ardından “Ekle”ye tıklayın.
  7. Oluşturduğunuz şeyin Ayrıntılar sayfasında, “Etkileşim” sekmesi altında, kopyalanması ve kaydedilmesi gereken bir REST API bitiş noktası vardır.
  8. AWS'nin artık bir ilkeye eklenmiş ve sertifikası olan bir Şey'i olmalıdır.

6. Adım: AWS SNS Konusu için İlk Kurulum

AWS SNS Konusu için İlk Kurulum
AWS SNS Konusu için İlk Kurulum
AWS SNS Konusu için İlk Kurulum
AWS SNS Konusu için İlk Kurulum

Raspberry Pi'ye SSH ve aşağıdaki pip komutunu kullanarak AWS CLI'yi kurun:

sudo pip kurulum awscli

AWS CLI, komut tamamlama özelliği içerir ancak varsayılan olarak yüklenmez. Raspberry Pi'nin CLI arayüzüne komut tamamlama özelliğini kurmak için aşağıdaki komutu kullanın:

tam -C aws_completer aws

Aşağıdaki komutu kullanarak AWS CLI'yi Erişim Anahtarı Kimliği, Gizli Erişim Anahtarı, AWS Bölge Adı ve Komut Çıkışı biçimiyle yapılandırın:

aws yapılandırmak

Ardından konsol sizden aşağıdaki bilgileri doldurmanızı isteyecektir:

pi@raspberrypi:~ $ aws yapılandır

AWS Erişim Anahtarı Kimliği [Yok]: "Kullanıcınızın Erişim Anahtarı Kimliğini buraya yazın" AWS Gizli Erişim Anahtarı [Yok]: "Kullanıcınızın Gizli Erişim Anahtarını buraya koyun" Varsayılan bölge adı [Yok]: eu-central-1 Varsayılan çıktı biçimi [Yok]: json pi@raspberrypi:~ $

7. Adım: Iot-role.trust.json Dosyası Oluşturma

Iot-role.trust.json Dosyası Oluşturma
Iot-role.trust.json Dosyası Oluşturma
Iot-role.trust.json Dosyası Oluşturma
Iot-role.trust.json Dosyası Oluşturma
  1. iot-role.trust.json dosya adıyla yukarıdaki IAM politikasına sahip bir JSON dosyası oluşturun.
  2. Aşağıdaki komutu kullanarak AWS CLI'yi kullanarak rolü oluşturun

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

Adım 8: Iot-policy.json Dosyası Oluşturma

Iot-policy.json Dosyası Oluşturma
Iot-policy.json Dosyası Oluşturma
Iot-policy.json Dosyası Oluşturma
Iot-policy.json Dosyası Oluşturma
  1. iot-policy.json dosya adına sahip yukarıdaki politikaya sahip bir JSON dosyası oluşturun.
  2. Aşağıdaki komutu kullanarak AWS CLI'yi kullanarak rol ilkesini oluşturun:

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

9. Adım: Bir AWS SNS Konusu Oluşturun (Bölüm 1)

Bir AWS SNS Konusu Oluşturun (Bölüm 1)
Bir AWS SNS Konusu Oluşturun (Bölüm 1)
Bir AWS SNS Konusu Oluşturun (Bölüm 1)
Bir AWS SNS Konusu Oluşturun (Bölüm 1)
Bir AWS SNS Konusu Oluşturun (Bölüm 1)
Bir AWS SNS Konusu Oluşturun (Bölüm 1)
  1. AWS hizmetleri arama çubuğunda “SNS” hizmetini arayın veya https://us-west-2.console.aws.amazon.com/sns/home… adresine gidin.
  2. Şu anda konunuz olmadığı için konu oluşturmak için “Yeni konu oluştur”a tıklayın.
  3. Konu adınızı ve görünen adınızı yazın ve “Konu oluştur”a tıklayın, tüm adımlar başarılı olduğunda yeni bir konu görünecektir.
  4. "İşlemler" açılır düğmesine ve "Konu politikasını düzenle"ye tıklayın.

Adım 10: Bir AWS SNS Konusu Oluşturun (Bölüm 2)

Bir AWS SNS Konusu Oluşturun (Bölüm 2)
Bir AWS SNS Konusu Oluşturun (Bölüm 2)
Bir AWS SNS Konusu Oluşturun (Bölüm 2)
Bir AWS SNS Konusu Oluşturun (Bölüm 2)
Bir AWS SNS Konusu Oluşturun (Bölüm 2)
Bir AWS SNS Konusu Oluşturun (Bölüm 2)
  1. Bu, bir AWSEducate hesabının sınırlamaları olduğundan, herkesin yayınlamasına ve abone olmasına izin verecek şekilde politikayı ayarlayın.
  2. Bu konuyla ilgili yayınlanan güncellemeleri almak için bu konuya abone olun.
  3. Protokolü “E-posta” olarak değiştirin ve son noktada e-postanızı girin.

  4. Uç noktanızı yazdığınız e-postanıza gidin, konuya abone olmak için e-posta aboneliğinizi onaylamak için onay bağlantısını tıklayın.
  5. “AWS IoT” hizmetlerine gidin, soldaki gezinme menüsünde “Hareket Et”e tıklayın. Bu sayfa, kurallarınızın görüntülendiği ve görüntüleyebileceğiniz ve düzenleyebileceğiniz yerdir. Şu anda IoT şeyiniz için herhangi bir kural yok, “Kural oluştur”a tıklayın.

11. Adım: Bir AWS SNS Konusu Oluşturun (Bölüm 3)

Bir AWS SNS Konusu Oluşturun (Bölüm 3)
Bir AWS SNS Konusu Oluşturun (Bölüm 3)
Bir AWS SNS Konusu Oluşturun (Bölüm 3)
Bir AWS SNS Konusu Oluşturun (Bölüm 3)
Bir AWS SNS Konusu Oluşturun (Bölüm 3)
Bir AWS SNS Konusu Oluşturun (Bölüm 3)
  1. Kuralınız için Ad alanına bir ad yazın. Açıklama alanına kuralınız için bir açıklama yazın. İleti kaynağı bölümünden devam ederken, “SQL sürümünü kullanma” bölümünde en güncel SQL sürümünü seçerdik. Konudan MQTT mesajının tamamını seçmek için özniteliğe * yazın, bizim durumumuzda konumuz “TempNem”.
  2. Ardından, kuralınız için bir "SNS" bildirim eylemi ekleyin. Ardından, "Eylemi yapılandır" ı tıklayın.
  3. “Yapılandır eylemi” sayfasında, az önce oluşturduğunuz SNS konusunu ve mesaj formatını RAW olarak seçin. Bundan sonra, AWS CLI kullanarak az önce oluşturduğunuz rolü seçin ve “Eylem ekle”ye tıklayın.
  4. İşleminiz yapılandırılacak ve "Kural oluştur" a geri dönecektir.
  5. Kuralı düzenlemek istiyorsanız düzenle'yi tıklayın.

Adım 12: Amazon S3'te Bir Paket Oluşturun

Amazon S3'te Bir Paket Oluşturun
Amazon S3'te Bir Paket Oluşturun
Amazon S3'te Bir Paket Oluşturun
Amazon S3'te Bir Paket Oluşturun
Amazon S3'te Bir Paket Oluşturun
Amazon S3'te Bir Paket Oluşturun
  1. AWS arama çubuğunda S3'ü arayın.
  2. Başlamak için Amazon S3 sayfasında "Kova Oluştur" düğmesini tıklayın.
  3. Aşağıdaki bilgilerle görüntülenen açılır formu doldurun:

    • Paket Adı: seroma-bucket (bu, mevcut tüm Amazon S3 klasörlerinde benzersiz olmalıdır)
    • Bölge: ABD Batı (Oregon)
    • Ayarları Kopyala: (Yoksay)
  4. 2'den 3'e kadar olan adımlar için, değiştirilecek bir şey olmadığından "İleri"ye tıklayarak atlayın. 4. adımda, "Kepçe oluştur"u tıklayın.
  5. Oluşturduktan sonra kovanızı ana sayfada görmelisiniz.

Adım 13: Bir AWS Politikası Oluşturun (Bölüm 1)

Bir AWS Politikası Oluşturun (Bölüm 1)
Bir AWS Politikası Oluşturun (Bölüm 1)
Bir AWS Politikası Oluşturun (Bölüm 1)
Bir AWS Politikası Oluşturun (Bölüm 1)
Bir AWS Politikası Oluşturun (Bölüm 1)
Bir AWS Politikası Oluşturun (Bölüm 1)
  1. Yukarıdaki sayfaya girmek için oluşturduğunuz kovaya tıklayın, ardından “İzinler” sekmesi altındaki “Kepçe Politikası”na ilerleyin.
  2. Ardından, AWS politikanızı oluşturmak için sayfanın altındaki “Politika Oluşturucu” bağlantısını tıklayın.
  3. Formda aşağıdaki değerleri girin:

    • Politika Türü: S3 Bucket Politikası
    • Etkisi: İzin Ver
    • Müdür: *
    • AWS Hizmeti: Amazon S3
    • Eylemler: GetObject
    • Amazon Kaynak Adı (ARN): arn:aws:s3:::seroma-bucket
  4. Bilgileri doldurduktan sonra İfade Ekle'ye tıklayın.
  5. “Politika Oluştur” düğmesine tıklayın.

Adım 14: Bir AWS Politikası Oluşturun (Bölüm 2)

Bir AWS Politikası Oluşturun (Bölüm 2)
Bir AWS Politikası Oluşturun (Bölüm 2)
Bir AWS Politikası Oluşturun (Bölüm 2)
Bir AWS Politikası Oluşturun (Bölüm 2)
Bir AWS Politikası Oluşturun (Bölüm 2)
Bir AWS Politikası Oluşturun (Bölüm 2)
Bir AWS Politikası Oluşturun (Bölüm 2)
Bir AWS Politikası Oluşturun (Bölüm 2)
  1. Oluşturulan kodları kopyalayın ve kapat'a tıklayın.
  2. Amazon S3 Bucket Policy düzenleyicinize dönün ve önceden kopyalanan kodları yapıştırın.
  3. Kaynak kodlarının hemen arkasındaki kodlara yukarıdaki resimde olduğu gibi “/*” ekleyin ve ardından kaydet'e tıklayın.
  4. Bunu yaptıktan sonra kepçeniz başarıyla kurulacak ve kullanıma hazır olacaktır.

Adım 15: DynamoDB için Tablolar Oluşturma

DynamoDB için Tablolar Oluşturma
DynamoDB için Tablolar Oluşturma
DynamoDB için Tablolar Oluşturma
DynamoDB için Tablolar Oluşturma
  1. AWS Hizmetleri arama çubuğunda DynamoDB'yi arayın
  2. "Tablo oluştur"a tıklayın ve aşağıdaki bilgilerle 3 tablo oluşturun: (Yalnızca "tablo adı" ve "birincil anahtar" değiştirilir)

    • erişim günlüğü, pk tarihsaat değeri
    • oda durumu, pk tarihzaman değeri
    • personel verileri, pk kullanıcı adı

Adım 16: Roomstatus.py

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

Bu bölüm, her dakika sunucu odasının kendisiyle ilgili tüm verileri yazan roomstatus.py kodunu içerir. Buna sıcaklık, nem, hareket (doğruysa görüntüler ve videolar) ve erişim günlükleri dahildir. Ayrıca verileri bir Google E-Tablosuna, verileri DynamoDB'ye, görüntüleri ve videoları (varsa) S3'e yazar, bilgileri LCD ekranda görüntüler, şüpheli bir ihlal olduğunda veya sıcaklık veya nem düzensiz olduğunda SMS ve E-posta gönderir.

Python dosyalarını çalıştırmak için, dosyanın bulunduğu dizini değiştirin ve konsola şunu yazın: "sudo python"

Resim 2: SMS ve E-posta uyarılarına izin vermek ve S3'e yüklemek için açıklanan işlevler

Resim 3: İşlevler ve RPi'nin çalışması için bildirilen değişkenler

Resim 4: RPi'den sıcaklık ve nem değerlerini alan döngünün başlangıcı. Ayrıca verileri bir Google elektronik tablosuna yazar

Resim 5: Döngünün güvenlik kısmı. Yalnızca akşam 7'den sabah 7'ye (kapalı saatlerde) etkinleştirilecektir. Bir dakikalık bir sürede hareketi kontrol edecektir. Hareket algılanırsa, bir resim ve video çeker, S3'e yükler ve daha sonra başvurmak üzere DynamoDB'ye bilgi yazar. Daha sonra, herhangi bir düzensizlik varsa bir SMS ve E-posta gönderecektir.

Resim 6: Döngünün sonu. Ayrıca DynamoDB'ye veri yazar ve buna göre uyarılar gönderir. Döngünün son satırı, bir sonraki dakikaya ulaşılana kadar komut dosyasını uyku durumuna getirecektir.

Adım 17: RFID.py

rfid.py
rfid.py
rfid.py
rfid.py
rfid.py
rfid.py
rfid.py
rfid.py

Bu bölüm, bir personel üyesi sunucu odasına eriştiğinde izleme işlevini ekleyen rfid.py kodunu içerir. Ayrıca, bir veri ihlalini önlemek için bir personelin mesai saatlerinden sonra sunucu odasına erişmesine izin verilmeyen Seroma'nın güvenlik yönünün bir parçasıdır. Ayrıca, bir ihlalden şüpheleniliyorsa tüm personele bir E-posta ve SMS gönderir.

Resim 2: RFID okuyucu mantığının başlangıcı. Bir kart okuyucuya karşı tarandığında, kartın benzersiz kimliği (uid) alınır. Daha sonra personel verileri tablosundan kartın herhangi bir personele ait olup olmadığını bulmaya çalışırız. mesai dışı. Varsa, kalan çalışanları SMS ile uyaracak ve abone olunan e-posta adreslerini E-posta ile gönderecektir. Hala mesai saatleri içinde ise veritabanındaki accesslog tablosuna ilgili verilerle bir satır yazacaktır. Ayrıca LCD ekranda bir karşılama mesajı görüntüleyecektir.

Adım 18: Server.py

sunucu.py
sunucu.py
sunucu.py
sunucu.py
sunucu.py
sunucu.py

Bu server.py dosyasıdır. Web portalı için Flask çerçevesini kullanacağız. /templates içine yerleştirilecek HTML dosyaları da ektedir.

Resim 1: Flask için ilk rota tanımlandı. Kullanıcıyı, oturum açmamışlarsa oturum açma sayfasına ve oturum açmışlarsa gösterge tablosu sayfasına yönlendirecektir. Ayrıca canlı akış özelliğinde kullanılacak bir işlevi tanımlar

Resim 2, 3, 4: Flask için Rotalar. DynamoDB tablosundan veri alır ve sonra onları orada kullanılabilecekleri şekilde HTML dosyalarına döndürür.

Resim 5: Flask için son 2 rota. Oturum kapatma işlevini ve canlı akış işlevini yönetir. Ayrıca web sitesinin çalışacağı bağlantı noktasını da belirtir.

Adım 19: Telegram.py

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

Bu bölüm, Seroma'nın telgraf botunun kodunu içerir. Telegram'ın Bot API'sine dokunmak için telepot kitaplığını kullanır. Aldığı sorguları kabul ederek ve ilgili bilgileri kullanıcıya göstererek çalışır. Kullanıcı, komutların tam listesi için 'yardım' yazabilir.

Resim 1, 2: Telegram botu kurmak için BotFather kullanmanız gerekir. Kodumuzda ihtiyaç duyduğumuz HTTP API'sini almak için talimatları gözden geçirmeniz yeterlidir.

Resim 4: Kullanıcının isteğine göre veritabanından belirli sayıda veri satırı alan bir fonksiyon örneği

Resim 5: Kullanıcının girdisini nasıl alıyoruz ve buna göre neyin çalıştırılacağına karar veriyoruz.

20. Adım: Canlı yayın (camera_pi.py)

Canlı yayın (camera_pi.py)
Canlı yayın (camera_pi.py)
Canlı yayın (camera_pi.py)
Canlı yayın (camera_pi.py)
Canlı yayın (camera_pi.py)
Canlı yayın (camera_pi.py)

Sunucu odası izleme sistemimiz için yeni bir özellik uyguladık, Sunucu Odasında neler olup bittiğinin canlı akışı, buna her an, her yerden erişilebilir. Bu canlı yayın nasıl çalışır: Pi Kamera ile birlikte Flask'ta yapılan bir özelliktir. Video kareleri gerçek hayatta olduğu gibi indirilir, böylece video kareleri indirilip bir araya getirilirken hafif bir gecikme (1-2 saniye) olduğunu görebilirsiniz. Arka plan iş parçacığı kameradan kareleri okuduğu ve mevcut kareyi depoladığı için, bu iş parçacığı oluşturmadan yapılamaz. Tüm bu kareleri bir araya getirmek, daha sonra canlı bir akış verir.

Resim 2: Bu, tüm video karelerinin saklandığı ayrı bir dosya ve gördüğünüz gibi, ahududu pi kameramıza erişmek için picamera modülünü kullanıyoruz, çünkü en aşina olduğumuz şey bu. Bir kamera sınıfına sahibiz, böylece bir canlı yayın gibi ve birden fazla görüntüyü bir araya getirmemiş gibi içe aktarabiliriz, bu nedenle ana uygulama dosyasında, sahne arkasında neler olduğu konusunda endişelenmenize gerek kalmadan canlı bir akış olarak alacaktı.

Resim 3: Bu, canlı akış bölümünün kodlandığı server.py dosyamızın bir parçasıdır. Bunun için içe aktardığımız ana sınıf, server.py dosyamızın en üstündeki camera_pi.py dosyamızdan Camera'dır. Kök dizinimizde bir işlev tanımladık, gen, ancak bu yalnızca canlı akışımızın bulunduğu /video_feed'e gittiğimizde, bu işlevde dolaşıp web sayfasındaki canlı akışı döndüreceği yerde kullanıma giriyor.

Önerilen: