Mục lục:

R-PiAlerts: Xây dựng hệ thống bảo mật dựa trên WiFi với Raspberry Pis: 8 bước (có hình ảnh)
R-PiAlerts: Xây dựng hệ thống bảo mật dựa trên WiFi với Raspberry Pis: 8 bước (có hình ảnh)

Video: R-PiAlerts: Xây dựng hệ thống bảo mật dựa trên WiFi với Raspberry Pis: 8 bước (có hình ảnh)

Video: R-PiAlerts: Xây dựng hệ thống bảo mật dựa trên WiFi với Raspberry Pis: 8 bước (có hình ảnh)
Video: R-PiAlerts 2024, Tháng mười một
Anonim
Image
Image
R-PiAlerts: Xây dựng hệ thống bảo mật dựa trên WiFi với Raspberry Pis
R-PiAlerts: Xây dựng hệ thống bảo mật dựa trên WiFi với Raspberry Pis
R-PiAlerts: Xây dựng hệ thống bảo mật dựa trên WiFi với Raspberry Pis
R-PiAlerts: Xây dựng hệ thống bảo mật dựa trên WiFi với Raspberry Pis

Khi đang làm việc tại bàn làm việc, đột nhiên bạn nghe thấy tiếng động từ xa. Có ai đó vừa mới về nhà? Xe của tôi đang đậu trước cửa nhà tôi, có ai đó đã đột nhập vào xe của tôi? Bạn không muốn nhận được thông báo trên điện thoại hoặc tại bàn làm việc để bạn có thể quyết định có nên điều tra hay không? Vâng câu hỏi không còn nữa! R-PiAlerts đang ở đây!

R-PiAlerts là gì? R-PiAlerts là hệ thống bảo mật dựa trên Raspberry Pi3 được xây dựng xung quanh Đám mây của Firebase. Nếu phát hiện chuyển động, hệ thống sẽ thông báo cho người dùng về khả năng đột nhập bằng tin nhắn văn bản và màn hình LED nhấp nháy (các loại cảnh báo hình ảnh im lặng). Sau khi người dùng nhận được thông báo, họ có thể điều tra. Tất cả chuyển động được phát hiện sẽ được ghi vào cơ sở dữ liệu Firebase. Bên cạnh việc xem nhật ký chuyển động trên trình duyệt web, người dùng cũng có thể truy cập nhật ký chuyển động thông qua ứng dụng iOS. Tôi quyết định xây dựng công trình này do sự gia tăng gần đây đối với cả xe cộ và nhà cửa xung quanh khu vực của tôi.

Tại sao lại sử dụng Pi3? Tôi cần một thứ nhỏ có thể phát hiện chuyển động và hết pin nếu cần. Sau đó, tôi có thể giấu thiết bị sau cánh cửa hoặc trong xe hơi. Ngoài ra, đơn vị cần có thể gửi cho tôi thông báo hoặc cảnh báo. Pi3 có thể làm tất cả những điều này với wifi tích hợp và khả năng hết pin USB. Các lý do khác về lý do tại sao tôi chọn Pi3:

  • Pi tương đối rẻ
  • Dễ dàng triển khai và mở rộng quy mô
  • Nó có thể cấu hình từ quan điểm phần mềm
  • Khả năng sử dụng màn hình và cảm biến. Dự án này sẽ sử dụng SenseHat
  • Hoạt động không cần đầu (không có màn hình, bàn phím hoặc chuột)

Làm thế nào nó hoạt động

  • Lý tưởng nhất là người dùng sẽ cần 2 Raspberry Pis được kết nối với cơ sở dữ liệu Firebase, nhưng một Pi duy nhất cũng sẽ hoạt động.
  • Sử dụng SenseHat, Pi đầu tiên (Pi1) sẽ phát hiện chuyển động bằng gia tốc kế trong khi Pi thứ hai (Pi2) sẽ hiển thị thông báo về chuyển động.
  • Khi Pi1 phát hiện chuyển động, nó thực hiện 3 việc

    • ghi nhật ký chuyển động vào cơ sở dữ liệu
    • tạo một mục thông báo trên cơ sở dữ liệu để Pi2 hiển thị
    • gửi cho người dùng một tin nhắn văn bản thông báo cho người dùng về chuyển động.
  • Khi Pi2 phát hiện thông báo hiển thị từ cơ sở dữ liệu, hai điều xảy ra
    • Màn hình LED của Pi2 sẽ hiển thị thông báo liên tục
    • Người dùng có thể xóa thông báo bằng cách nhấn xuống nút của Pi2 SenseHat. Thao tác này cũng sẽ xóa mục nhập thông báo trên cơ sở dữ liệu.
  • Với ứng dụng iOS, người dùng có thể

    • truy cập cơ sở dữ liệu; đọc và xóa nhật ký chuyển động
    • người dùng có thể gửi Pi1 để hiển thị thông báo trên màn hình LED của Pi1.

Ứng dụng thực tế

  1. Nếu bạn đậu xe trên phố trong phạm vi phủ sóng wifi. Gắn một bộ pin vào Pi1 (xem hình). Ẩn Pi1 trong ô tô của bạn. Đặt Pi2 ở nơi có thể xem dễ dàng chẳng hạn như cạnh bàn làm việc của bạn (xem ảnh).
  2. Một ứng dụng khác là đặt Pi1 trong nhà của bạn ở cạnh cửa. Pi rất nhỏ nên hầu hết mọi người sẽ không nhận ra nó, đặc biệt là nếu nó nằm sau mặt bản lề (xem ảnh). Sau đó, đặt Pi2 của bạn tại bàn làm việc của bạn.
  3. Con chó vào một chỗ trong nhà, nó không phải là giả? Đặt Pi1 trong khu vực đó. Đảm bảo rằng bạn đặt Pi trong một hộp chắc chắn để chó của bạn không nhai nó.

Miễn là Pis của bạn ở trong vùng phủ sóng wifi, chúng có thể cảnh báo hoặc thông báo cho bạn về chuyển động. Nếu bạn không có Pi thứ hai, bạn chỉ có thể sử dụng Pi1 để phát hiện chuyển động và nhận thông báo SMS qua điện thoại di động của mình.

Hóa đơn nguyên vật liệu

  • Hai (2) Raspberry Pi 3 chạy Raspbian (Raspberry Pi 2 cũng sẽ hoạt động với một khóa wifi)
  • Hai (2) SenseHats
  • Thiết bị Mac và iOS

Phần mềm cần thiết

  • Thư viện Pyrebase (kết nối với Firebase)
  • Thư viện SenseHat (để truy cập gia tốc kế và màn hình LED)
  • Thư viện Twilio (để gửi SMS)
  • Python 3, được tích hợp sẵn với Raspbian mới nhất
  • Raspbian với IDLE
  • Xcode8 và Cocoapods trên máy Mac của bạn
  • Sẵn sàng học hỏi và khám phá

Lưu ý bên lề Đây không phải là giải pháp bảo mật dựa trên Pi duy nhất. Nếu bạn có bất kỳ ý tưởng, đề xuất, hoặc chỉ muốn cấu trúc lại mã của tôi, vui lòng để lại bình luận bên dưới! =)

Bước 1: Thiết lập tài khoản Firebase và Twilio

Thiết lập tài khoản Firebase và Twilio
Thiết lập tài khoản Firebase và Twilio
Thiết lập tài khoản Firebase và Twilio
Thiết lập tài khoản Firebase và Twilio

Trước hết, trước khi bắt đầu tìm hiểu Pis, chúng ta cần thiết lập Firebase và Twilio. Firebase là dịch vụ phụ trợ của Google. Firebase bao gồm các tính năng như cơ sở dữ liệu, nhắn tin đám mây, xác thực, lưu trữ, v.v. Đối với dự án này, chúng tôi sẽ chỉ cần sử dụng cơ sở dữ liệu và xác thực thời gian thực của Firebase. Xác thực sẽ cần thiết để đọc và ghi vào cơ sở dữ liệu Firebase của bạn. Để thiết lập Firebase:

  1. Đăng ký tài khoản Firebase miễn phí
  2. Đi tới bảng điều khiển. Tạo một dự án mới và đặt tên cho nó.
  3. Dưới menu bên trái, nhấp vào "Tổng quan"
  4. Nhấp vào "Thêm Firebase vào ứng dụng web của bạn", sao chép APIKey và projectid của bạn (không phải url). ID dự án nằm trong các URL khác nhau, chẳng hạn như cơ sở dữ liệu:
  5. Dưới menu bên trái, nhấp vào "Xác thực". Đi tới "Phương pháp đăng nhập" và bật "Email / Mật khẩu"
  6. Trong "Người dùng", hãy tạo một tài khoản người dùng mới với email / mật khẩu mà bạn chọn. Bạn sẽ sử dụng thông tin đăng nhập này để đăng nhập vào cơ sở dữ liệu.
  7. Dưới menu bên trái, chuyển đến "Cơ sở dữ liệu"
  8. Đây là Cơ sở dữ liệu của bạn. Nó đang trống rỗng ngay bây giờ. Khi được điền, nó sẽ có định dạng JSON. URL phải giống với URL bạn đã thấy trước đó.

Twilio cho phép các nhà phát triển gửi tin nhắn cho khách hàng của họ. Chúng tôi sẽ sử dụng nó để gửi SMS đến điện thoại của bạn khi Pi phát hiện chuyển động. Twilio sẽ cung cấp cho bạn số điện thoại để gửi SMS. Để thiết lập Twilio:

  1. Đăng ký tài khoản miễn phí tại trang Twilio
  2. Sao chép accountSID và authToken của bạn
  3. Nhấp vào "Giới hạn dùng thử" và chọn "lấy số điện thoại Twilio đầu tiên của bạn"
  4. Sao chép số điện thoại mới của bạn

Bước 2: Thiết lập Pis của bạn

Thiết lập Pis của bạn
Thiết lập Pis của bạn
Thiết lập Pis của bạn
Thiết lập Pis của bạn

Trước khi có thể bắt đầu lập trình Pis, chúng ta cần thực hiện một số thiết lập. Đảm bảo bạn có mật khẩu đăng nhập cho Pis của mình. Đầu tiên, chúng tôi sẽ kết nối vật lý các bảng SenseHat với Pis. Tiếp theo, chúng ta sẽ cài đặt các thư viện SenseHat, Twilio và Pyrebase cần thiết. Cơ sở dữ liệu thời gian thực của Firebase được thiết kế cho các thiết bị di động hoặc trang web. Tuy nhiên, chúng tôi có thể đọc và ghi cơ sở dữ liệu đám mây thông qua API Rest với thư viện trợ giúp như Pyrebase.

Kết nối SenseHat Đảm bảo SenseHats được kết nối với Pis của bạn. Nếu gặp trường hợp bất thường, bạn có thể phải tháo Pi trước khi kết nối SenseHat.

Cài đặt thư viện Tất cả cài đặt thư viện sẽ được thực hiện trong Terminal

  • Khởi động Pis của bạn nếu bạn chưa có.
  • Khi khởi động, bạn sẽ có được cầu vồng LED đầy màu sắc này trên SenseHat của mình! (xem ảnh)
  • Đi đến thiết bị đầu cuối và cập nhật / dist-nâng cấp, nhập:

    • sudo apt-get cập nhật
    • sudo apt-get dist-upgrade
  • Sau khi nâng cấp xong, hãy nhập thông tin sau để cài đặt các thư viện SenseHat:

    sudo apt-get install sense-hat

  • Để cài đặt Pyrebase, hãy nhập:

    sudo pip cài đặt pyrebase

  • Cuối cùng, cài đặt Twilio

    sudo pip cài đặt twilio

Bước 3: Tập lệnh Python cho Pi1

Như chúng tôi đã đề cập trước đó, Pi1 sẽ là số Pi sẽ được sử dụng để phát hiện chuyển động. Giá trị gia tốc kế của SenseHat sẽ được sử dụng để xác định chuyển động. Do đó, mã cho Pi1 sẽ xoay quanh việc truy cập các giá trị lực g của gia tốc kế và ghi nhật ký các chuyển động được phát hiện vào Cơ sở dữ liệu Firebase. Dưới đây là tổng quan về quy trình:

  • Nếu Pi1 phát hiện chuyển động, nó sẽ thêm một mục vào con "cảnh báo" trong Firebase DB.
  • Pi1 cũng sẽ cập nhật con "Informpi2" bằng một tin nhắn thông báo liên quan đến chuyển động.
  • Pi2, sau đó đọc "Informpi2" và hiển thị thông báo trên màn hình ma trận LED của nó.

Tôi đã bao gồm tập lệnh Python Pi1 để bạn làm theo. Nhận xét trong tập lệnh giải thích mã đang làm gì.

Các ghi chú và thông tin chi tiết bổ sung cho tập lệnh Pi1

  • Để thiết lập Firebase và Twilio. Điền vào các khóa API, ID, mật khẩu, v.v. thích hợp mà bạn đã sao chép từ các bước trước.
  • Về xác thực Firebase, để tăng cường bảo mật, bạn có thể yêu cầu người dùng nhập thay vì mã hóa cứng các thông tin đăng nhập này. Mỗi lần chúng tôi viết hoặc đọc từ cơ sở dữ liệu, chúng tôi sẽ cần bao gồm

    người dùng ['idtoken'] với TH

    get (), push (), set () các phương pháp.

  • Nhiệt độ CPU là cần thiết để chúng tôi có thể can thiệp trong trường hợp Pi quá nóng trong ô tô hoặc môi trường đóng cửa.
  • Chúng ta cũng lấy giá trị tuyệt đối của lực G vì chúng ta không cần biết giá trị âm. Chúng ta chỉ cần biết có lực G hay không.
  • Câu lệnh if sẽ kiểm tra các giá trị của gia tốc kế. Nếu lực G lớn hơn 1 theo bất kỳ hướng nào, Pi1 sẽ ghi lại thời gian chuyển động và hiển thị dấu chấm than trên màn hình LED của chính nó. Nó cũng sẽ cập nhật con "Informpi2". Khi "tifypi2 "được cập nhật, Pi2 sẽ đọc nó và hiển thị" !!! " trên màn hình LED của nó để thông báo cho người dùng về khả năng di chuyển / đột nhập. Pi1 cũng sẽ gửi cho người dùng một tin nhắn SMS thông báo về chuyển động.
  • Khi sử dụng phương thức push (), Firebase sẽ tự động tạo một mục con với mục nhập mới. Điều này cần thiết để dữ liệu chuyển động đã ghi sẽ là duy nhất. Mặt khác, phương thức set () sẽ ghi đè lên dữ liệu trước đó.
  • Vòng lặp 10 giây để kiểm tra cơ sở dữ liệu là cần thiết để Pi của bạn không liên tục yêu cầu dữ liệu từ Firebase. Nếu bạn liên tục spam Firebase, Google sẽ đăng xuất bạn sau khoảng 10 phút.
  • Firebase cũng sẽ loại bỏ người dùng sau mỗi 60 phút nếu mã thông báo không được làm mới. Tôi đặt làm mới thành 1800 giây (30 phút).

Bước 4: Tập lệnh Python cho Pi2

Tập lệnh Python cho Pi2
Tập lệnh Python cho Pi2

Nếu bạn nhìn vào bức ảnh, đó là Pi2 hiển thị thông báo về chuyển động có thể xảy ra.

Tập lệnh của Pi2 hoàn toàn giống với Pi1 ngoại trừ tập lệnh không phát hiện chuyển động. Pi2 chỉ hiển thị hoặc thiết lập lại các thông báo thông báo từ con "allowpi2". Vì đó là sự khác biệt duy nhất, tôi sẽ giải thích điều đó dưới đây.

  • Cứ sau 10 giây, Pi2 sẽ kiểm tra "notificationpi2" để hiển thị. Nếu có tin nhắn thông báo cần hiển thị, Pi2 sẽ hiển thị liên tục để người dùng nhìn thấy.
  • Chỉ có sự can thiệp của người dùng khi nhấn nút cần điều khiển thì thông báo mới được xóa và đặt lại ở phía cơ sở dữ liệu.

Bước 5: Kiểm tra Pis

Image
Image
Kiểm tra Pis
Kiểm tra Pis

Đã đến lúc kiểm tra Pis.

  • Chạy các tập lệnh cho Pis tương ứng.
  • Đăng nhập vào Firebase và đi tới phần cơ sở dữ liệu dự án của bạn.
  • Lắc Pi1 của bạn, bạn sẽ thấy dấu chấm than màu đỏ trên màn hình LED Pi1. Bạn cũng sẽ nhận được một tin nhắn SMS.
  • Kiểm tra cơ sở dữ liệu, các mục cảnh báo sẽ bắt đầu hiển thị. "tifypi2 "cũng nên được cập nhật.
  • Hãy nhìn vào Pi2. Bạn cũng nên cuộn "!!!" Để xóa tin nhắn thông báo này, chỉ cần nhấn vào phím điều khiển. "tifypi2 "phải được đặt lại. Kiểm tra Firebase của bạn để xác nhận.
  • Nếu bạn thấy Pi1 quá nhạy cảm với chuyển động, hãy tăng ngưỡng lên lớn hơn 1G trong tập lệnh Pi1.

Nếu mọi việc suôn sẻ, các tập lệnh của bạn sẽ không bị lỗi. Bây giờ, bạn có một hệ thống thông báo hoạt động. Khi Pi1 phát hiện chuyển động hoặc rung động, bạn sẽ nhận được thông báo bằng tin nhắn SMS và thông báo bằng đèn LED trực quan trên Pi2.

Bước 6: Xây dựng ứng dụng iOS R-PiAlerts

Xây dựng ứng dụng iOS R-PiAlerts
Xây dựng ứng dụng iOS R-PiAlerts

Đã đến lúc xây dựng ứng dụng iOS! Ứng dụng sẽ khá đơn giản. Nó sẽ có một LoginViewController và một ItemsTableViewController. ItemsTableViewController sẽ hiển thị thông báo cảnh báo từ con "cảnh báo". Người ta cũng có thể xóa các mục nhập cơ sở dữ liệu khỏi ứng dụng. Để giúp bạn đỡ đau đầu, nếu bạn định xem các hướng dẫn trực tuyến cho Firebase, hãy đảm bảo bạn tìm các hướng dẫn có ngày sau tháng 3 năm 2016 vì đã có những thay đổi lớn vào năm ngoái vào khoảng thời gian đó. Bất cứ điều gì trước tháng 3 năm 2016 sẽ là di sản. Tôi bạn quan tâm đến các tệp nhanh, vui lòng xem lại các nhận xét trong mã. Nếu bạn muốn có hướng dẫn chi tiết về cách tạo ứng dụng Firebase đọc cơ sở dữ liệu, hãy xem hướng dẫn của Ray Wunderlich.

Thiết lập Tổng quan về dự án iOS của bạn

  • Tạo một dự án iOS xem một lần trong Xcode.
  • Sao chép số nhận dạng gói
  • Truy cập dự án Firebase của bạn trên trang web và tạo tệp info.plist với mã nhận dạng gói.
  • Thêm tệp GoogleService-info.plist vào dự án của bạn. Info.plist này chỉ hoạt động với Dự án Firebase cụ thể mà bạn đã tạo.
  • Đóng Xcode và cài đặt Firebase qua Cocoapods. Đảm bảo cài đặt Auth và Database.
  • Khởi động lại Xcode, sau đó định cấu hình AppDelegate.swift của bạn cho Firebase. Nó chỉ mất 2 dòng mã.

    Nhập Firebase một

    FIRApp.configure (). Tùy chọn, Firebase có tính năng bền bỉ chỉ mất 1 dòng mã

    FIRDatabase.database (). PersenceEnabled = true

  • Bạn có thể tìm thấy các bước cài đặt chi tiết trên Trang web của Firebase

Cách ứng dụng tương tác với Cơ sở dữ liệu Firebase:

  • Ứng dụng sẽ cần xác thực người dùng.
  • Sau khi được xác thực, ứng dụng sẽ chụp nhanh cơ sở dữ liệu Firebase và lưu trữ nó dưới dạng đối tượng "Item".
  • Đối tượng đã nói sẽ lấp đầy một mảng. Mảng đã nói sẽ được sử dụng để lấp đầy chế độ xem bảng.
  • Một người quan sát sẽ theo dõi các thay đổi đối với cơ sở dữ liệu Firebase và tạo ảnh chụp nhanh.
  • Khi các thay đổi được phát hiện, mảng sẽ được thêm vào từ ảnh chụp nhanh mới.
  • Tableview sau đó sẽ được tải lại để hiển thị các thay đổi.

Sơ lược chung về cách xây dựng ứng dụng

  • Hãy xem hình ảnh về cách ứng dụng được bố trí trong trình tạo giao diện của Xcode.
  • Tạo một ViewController trong trình tạo giao diện và trỏ lớp tùy chỉnh đến LoginViewController.swift.
  • Thêm các trường văn bản cho email và mật khẩu. Đừng quên bật "Nhập văn bản an toàn" cho trường mật khẩu. Thêm nút đăng nhập.
  • Liên kết các trường văn bản và nút với LoginViewController.swift. LoginViewController.swift sẽ xử lý xác thực.
  • Thêm Bộ điều khiển Điều hướng trong trình tạo giao diện. Tạo một segue từ LoginViewController đến Navigation Controller. Đảm bảo cung cấp cho segue một số nhận dạng.
  • Đặt lớp tùy chỉnh của chế độ xem bảng mới đi kèm với bộ điều khiển điều hướng để trỏ ItemsTableViewController.swift. Tôi cũng có 2 nút trên ItemsTableViewController: Đăng xuất và một nút Thêm. Liên kết các nút với ItemsTableViewController.swift.
  • Về mã LoginViewController.swift. Người dùng sẽ nhập thông tin đăng nhập và Firebase sẽ trả về một người dùng. Nếu người dùng có mặt, nó sẽ thực hiện phân biệt với số nhận dạng. (xem mã đính kèm)
  • Thêm lớp Item.swift (xem mã đính kèm)
  • Về mã ItemsTableViewController, nó là mã tableview khá chuẩn. Sẽ có một người quan sát để theo dõi các thay đổi đối với cơ sở dữ liệu của bạn được lưu dưới dạng ảnh chụp nhanh dưới dạng một đối tượng Item. Sau đó, đối tượng Item sẽ nối mảng để lấp đầy chế độ xem bảng. Nút Thêm đặt một mục nhập trong cơ sở dữ liệu Firebase để Pi1 đọc và hiển thị. Đối với những người cười khúc khích, tôi cũng đã thêm mã (xem mã đính kèm)

Bước 7: Kiểm tra ứng dụng

Kiểm tra ứng dụng
Kiểm tra ứng dụng
Kiểm tra ứng dụng
Kiểm tra ứng dụng
Kiểm tra ứng dụng
Kiểm tra ứng dụng

Chạy ứng dụng của bạn

  • Đăng nhập và lắc Pi1 của bạn. Bạn sẽ bắt đầu thấy các thông báo cảnh báo mới hiển thị.
  • Nhấn vào nút thêm và xem Pi1 hiển thị thông báo của bạn.
  • Vuốt sang trái, xem mục "Cảnh báo" bị xóa.
  • Nhận quá nhiều thông báo liên tiếp? điều chỉnh ngưỡng gia tốc kế hoặc tăng thời gian ngủ trong tập lệnh Pi1.

Bước 8: Kết luận

Phần kết luận
Phần kết luận
Phần kết luận
Phần kết luận

Đáng kinh ngạc! Bây giờ chúng tôi có Pis có thể phát hiện chuyển động và gửi cho bạn thông báo về chuyển động. Trên hết, bạn có thể quản lý nhật ký thông báo cảnh báo bằng thiết bị iOS của mình! Đã đến lúc triển khai Pis. Đặt Pi1 bên cạnh cửa của bạn và Pi2 xung quanh khu vực làm việc của bạn. Lần tới khi có người đến, bạn có thể kiểm tra tình hình! Hoặc tốt hơn, cố gắng ẩn Pi trong ô tô của bạn với một bộ pin. Đóng sầm cửa lại một vài lần, xem điều gì sẽ xảy ra!

Đây chỉ là bước khởi đầu cho những khả năng bạn có thể làm với Raspberry Pi và Firebase. SenseHat cũng bao gồm cảm biến môi trường, con quay hồi chuyển và la bàn. Bạn có thể thiết lập Pis của mình để ghi lại những thay đổi nhất định đối với môi trường. Muốn nâng cấp trò chơi của bạn? Khi số Pi của bạn phát hiện chuyển động, hãy sử dụng camera chụp ảnh và đặt chữ Pi vào ảnh. Cũng cố gắng sử dụng thuật toán thị giác máy tính để nhận dạng khuôn mặt. nếu đó là khuôn mặt của người bạn biết, bạn có thể nhận được thông báo! Chúc vui vẻ!

Đề xuất: