Mục lục:

Giám sát đường: 15 bước
Giám sát đường: 15 bước

Video: Giám sát đường: 15 bước

Video: Giám sát đường: 15 bước
Video: CENTRAL || MM24 _ KỸ SƯ GIÁM SÁT HIỆN TRƯỜNG 2024, Tháng bảy
Anonim
Giám sát đường bộ
Giám sát đường bộ

Hôm nay, chúng tôi sẽ chỉ cho bạn cách chúng tôi thiết lập hệ thống giám sát sự bất thường của đường dựa trên gia tốc kế, LoRaWAN, Amazon Web Services và Google Cloud API.

Bước 1: Yêu cầu

  • Bo mạch DISCO-L072CZ-LRWAN1
  • Mô-đun mở rộng X-NUCLEO-IKS01A2 (dành cho máy đo nhiệt độ)
  • X-NUCLEO-GNSS1A1 (để bản địa hóa)
  • Tài khoản AWS
  • Tài khoản Google Cloud Platform

Bước 2: Xây dựng và nhấp nháy phần mềm cơ sở của cảm biến

Kết nối IKS01A2 và GNSS1A1 trên đầu bảng thông qua các chân GPIO. Tải xuống mã của chương trình cơ sở từ GitHub. Tạo (nếu bạn chưa có) tài khoản trên ARM Mbed và nhập mã vào kho lưu trên trình biên dịch trực tuyến. Đặt nền tảng mục tiêu thành DISCO-L072CZ-LRWAN1 và lưu dự án. Bây giờ, hãy truy cập Mạng lưới vạn vật và tạo một tài khoản nếu bạn chưa có. Tạo ứng dụng, tạo thiết bị mới bên trong ứng dụng và đặt chế độ kết nối thành OTAA. Lấy các tham số thích hợp để điền vào các trường sau trong tệp mbed_app.json: "lora.appskey", "lora.nwkskey", "lora.device-address".

Cảm biến sẽ ghi lại định kỳ dữ liệu gia tốc kế và GNSS và gửi chúng thông qua kết nối LoRa đến cổng gần nhất, cổng này sẽ chuyển tiếp chúng đến ứng dụng của chúng tôi trên The Things Network. Bước tiếp theo là thiết lập máy chủ đám mây và tích hợp HTTP trên TTN.

Bước 3: Thiết lập đám mây

Thiết lập đám mây
Thiết lập đám mây

Bây giờ chúng tôi đã sẵn sàng thiết lập cơ sở hạ tầng đám mây sẽ thu thập và tổng hợp dữ liệu từ tất cả các bảng đã triển khai. Cơ sở hạ tầng này được thể hiện trong hình bên dưới và nó được cấu tạo bởi:

  • Kinesis, để xử lý luồng dữ liệu đến;
  • Lambda, để lọc và xử lý trước dữ liệu trước khi lưu trữ;
  • S3, để lưu trữ tất cả dữ liệu;
  • EC2, để phân tích dữ liệu và lưu trữ giao diện người dùng của chúng tôi.

Bước 4: Thiết lập AWS Lambda

Thiết lập AWS Lambda
Thiết lập AWS Lambda

Chúng tôi sẽ minh họa các bước cần thiết để thiết lập cơ sở hạ tầng này, bắt đầu với Lambda.

  1. Đăng nhập bằng tài khoản AWS của bạn và từ trang chính của bảng điều khiển và truy cập Lambda
  2. Nhấp vào Tạo chức năng
  3. Ở phần trên của trang, nó nên được chọn Tác giả từ Scratch. Sau đó điền đầy đủ các trường khác như trong hình rồi nhấp vào Tạo chức năng
  4. Bây giờ bạn đã tạo một hàm AWS Lambda, hãy truy cập https://github.com/roadteam/data-server và sao chép nội dung của tệp aws_lambda.py vào trình chỉnh sửa mà bạn tìm thấy ở nửa sau của trang. Hàm Lambda của bạn hiện đã sẵn sàng:)

Bước 5: Thiết lập Luồng dữ liệu AWS Kinesis Firehose

Thiết lập luồng dữ liệu AWS Kinesis Firehose
Thiết lập luồng dữ liệu AWS Kinesis Firehose
  1. Bây giờ trở lại trang chính của bảng điều khiển AWS và vào Dịch vụ, hãy truy cập Kinesis
  2. Bây giờ bạn đang ở trang chính của Kinesis. Ở bên phải của trang, trong 'Luồng phân phối Kinesis Firehose', hãy chọn 'Tạo luồng phân phối mới'
  3. Trong "Tên luồng phân phối", hãy viết "luồng giám sát đường". Để mặc định các trường khác và nhấp vào tiếp theo
  4. Bây giờ trong ‘Chuyển đổi bản ghi nguồn với AWS Lambda’, hãy chọn Đã bật và khi hàm Lambda nhấp vào ‘đường-giám sát-lambda’ mới được tạo. Đừng lo lắng nếu một cảnh báo về thời gian chờ của chức năng bật lên, vì thao tác mà chúng ta đang thực hiện không tốn kém về mặt tính toán. Để mặc định các trường khác và nhấp vào tiếp theo
  5. Khi đích chọn Amazon S3 và khi đích S3 chọn Tạo mới. Với tên nhóm, hãy nhập ‘đường-nhóm giám sát’ và sau đó đi. Bây giờ hãy để các trường khác ở chế độ mặc định và nhấp vào Tiếp theo
  6. Bạn có thể muốn đặt kích thước Bộ đệm thành 1MB và Khoảng thời gian đệm thành 60 giây. Bộ đệm sẽ được chuyển sang S3 bất cứ khi nào một trong hai điều kiện được thỏa mãn. Đừng rời khỏi trang, hãy xem bước tiếp theo

Bước 6: Thiết lập vai trò IAM cho Kinesis

Thiết lập vai trò IAM cho Kinesis
Thiết lập vai trò IAM cho Kinesis

Bây giờ chúng ta thiết lập quyền bảo mật cho Kinesis, vì nó phải gọi hàm Lambda để xử lý trước và sau đó nó sẽ ghi trên S3

  1. Ở cuối trang mà bạn đang ở "Vai trò IAM", hãy chọn "Tạo mới trong số lựa chọn", tạo vai trò IAM mới như trong hình và nhấp vào Cho phép
  2. Bây giờ bạn quay lại trang trước, nhấp vào tiếp theo. Bây giờ bạn có thể muốn kiểm tra lại tất cả các thông số. Khi hoàn tất, hãy nhấp vào 'Tạo luồng phân phối'

Đường ống Kinesis-Lambda-S3 đang hoạt động!

Bước 7: Thiết lập AWS EC2

Thiết lập AWS EC2
Thiết lập AWS EC2

Bây giờ chúng tôi sẽ thiết lập một phiên bản EC2 với một số API cho phép chúng tôi đẩy và kéo dữ liệu từ đám mây AWS và cũng là máy chủ lưu trữ giao diện ứng dụng của chúng tôi. Trong môi trường sản xuất, bạn có thể muốn xuất bản API bằng cách sử dụng Cổng API AWS có thể mở rộng hơn.

  1. Từ trang chính của bảng điều khiển AWS, hãy chuyển đến dịch vụ EC2
  2. Nhấp vào Khởi chạy phiên bản
  3. Trong thanh tìm kiếm phía trên, hãy dán mã này: ‘ami-08935252a36e25f85’, đó là mã nhận dạng của máy ảo được định cấu hình trước để sử dụng. Nhấp vào Chọn ở bên phải
  4. Chọn t2.micro từ cột "Loại" và nhấp vào "Xem lại và khởi chạy". Chưa khởi chạy phiên bản, hãy chuyển sang bước tiếp theo

Bước 8: Thiết lập vai trò bảo mật IAM cho EC2

Thiết lập vai trò bảo mật IAM cho EC2
Thiết lập vai trò bảo mật IAM cho EC2
  1. Trước khi khởi chạy, chúng tôi muốn sửa đổi nhóm bảo mật của phiên bản của chúng tôi. Để thực hiện việc này, ở ngoài cùng bên phải của phần ‘Nhóm bảo mật’, hãy nhấp vào ‘Chỉnh sửa nhóm bảo mật’Thiết lập nhóm bảo mật mới như sau. Điều này về cơ bản định cấu hình tường lửa của phiên bản của bạn để lộ cổng 22 cho kết nối SSH và cổng 80 cho các dịch vụ
  2. Nhấp lại vào "Xem lại và khởi chạy". Bây giờ hãy kiểm tra xem tất cả các tham số đã được thiết lập chưa. Khi hoàn thành, hãy nhấp vào Khởi chạy
  3. Khi nhấp vào, một cửa sổ mới sẽ bật lên để thiết lập một cặp khóa cho kết nối ssh với phiên bản. Chọn 'Tạo cặp khóa mới' và nhập 'ec2-road-monitor' như tên. Nhấp vào Tải xuống cặp khóa. Điều cực kỳ quan trọng là tệp này bị mất hoặc (tệ hơn) được lưu trữ không an toàn: bạn sẽ không thể tải lại khóa xuống. Sau khi tải xuống khóa.pem, phiên bản đã sẵn sàng để khởi chạy

Bước 9: Truy cập phiên bản EC2 của bạn

Truy cập phiên bản EC2 của bạn
Truy cập phiên bản EC2 của bạn

Phiên bản EC2 mới của bạn đã có trong đám mây AWS. Bạn có thể kết nối với nó bằng tệp khóa đã tải xuống trước đó (đối với hướng dẫn này, chúng tôi giả định rằng bạn biết những điều cơ bản về ssh). Bạn có thể truy xuất IP của phiên bản bằng cách chọn nó trong trang tổng quan trong phần 'Mô tả' như sau: Bạn có thể sử dụng cả IP công cộng hoặc DNS công cộng của mình, nó giống nhau. Với ứng dụng ssh bây giờ hãy nhập lệnh:

ssh -i ec2-road-monitor.pem ec2-user @ YOUR-IP-ADDR-OR-DNS

trong đó ec2-road-monitor.pem là khóa của bạn được tạo trước đó.

Bây giờ, hãy tiến hành kéo mã phía máy chủ qua

git clone --recursive

Bước 10: Truy xuất API Google Maps

Truy xuất API Google Maps
Truy xuất API Google Maps

Chúng tôi sắp hoàn thành. Bây giờ chúng tôi phải thiết lập API google maps trong trang html của chúng tôi để hiển thị bản đồ với các điểm tham chiếu cho người dùng:

  1. Đăng nhập vào tài khoản Google của bạn và truy cập
  2. Nhấp để 'Bắt đầu' ở bên trái của trang
  3. Chọn 'Bản đồ' trong menu và sau đó nhấp vào tiếp tục
  4. Như tên dự án, hãy nhập 'giám sát đường' và nhấp vào Tiếp theo
  5. Nhập chi tiết thanh toán của bạn và nhấp vào Tiếp tục
  6. Bây giờ dự án của bạn đã sẵn sàng và chúng tôi sẽ lấy khóa API bằng cách nhấp vào API & dịch vụ -> Thông tin đăng nhập

Bước 11: Khởi chạy máy chủ

Khởi chạy máy chủ
Khởi chạy máy chủ

Và đây là khóa API của bạn. Điều cuối cùng bạn phải làm là truy cập data_visualization / anomalies_map.html và sao chép khóa của bạn vào cuối tệp giống như vậy, thay thế ‘PHÍM CỦA BẠN-ĐÂY’

Bây giờ tất cả đã được thiết lập và sẵn sàng để bắt đầu! Để làm cho nó bắt đầu thực thi trong phiên bản EC2: ‘cd data-server’ ‘python flask_app.py’

Nhập vào trình duyệt của bạn địa chỉ ip hoặc dns của phiên bản EC2 của bạn, bạn sẽ thấy bản đồ dị thường với một số dữ liệu giả

Bước 12: Thực hiện Tích hợp HTTP trên Mạng Vạn vật

Thực hiện Tích hợp HTTP trên Mạng Vạn vật
Thực hiện Tích hợp HTTP trên Mạng Vạn vật

Bây giờ chúng ta có tất cả cơ sở hạ tầng phụ trợ đang hoạt động và chúng ta có thể xử lý để thực hiện tích hợp

  1. Tạo một ứng dụng mới và đăng ký thiết bị của bạn. Chúng tôi giả định kiến thức cơ bản về TTN, nếu không tham khảo hướng dẫn bắt đầu nhanh
  2. Trong menu ứng dụng của bạn, hãy chọn 'Tích hợp' và sau đó 'thêm tích hợp'
  3. Chọn tích hợp
  4. Nhập các trường theo sau hình ảnh và thay thế bằng ip EC2 hoặc DNS công cộng của bạn

Bước 13: Xử lý dữ liệu

Đối với mỗi bộ dữ liệu T thu thập được từ cảm biến, bạn phải thực hiện các bước sau:

  1. Lấy tập hợp các bộ giá trị có tọa độ GPS rơi vào vùng địa phương của T. Vùng cục bộ là tất cả các bộ giá trị cách T. 100 mét.
  2. Đối với mỗi bộ N gần nhất, tính giá trị trung bình bình phương của trục Z gia tốc kế theo N. Trong mã giả: mean = sum ([x. Z_accel ** 2 for x in near]) / near.size
  3. Tính độ lệch chuẩn bình phương. Trong mã giả: std = sum ([(x. Z_accel ** 2 - mean) ** 2 for x in near])
  4. Đầu ra ở định dạng này: vĩ độ, dài, Z_accel ** 2, trung bình, std

Để tính toán khu vực địa phương, hãy sử dụng khoảng cách GPS tính bằng mét. Trong C ++:

#define D2R (M_PI / 180.0)

#define EARTH_RAY 6371 khoảng cách đôi (vĩ độ gấp đôi, độ dài kép1, độ dài kép2, độ dài kép2) {double dlong = (long2 - long1) * D2R; đôi dlat = (lat2 - lat1) * D2R; double a = pow (sin (dlat / 2.0), 2) + cos (lat1 * D2R) * cos (lat2 * D2R) * pow (sin (dlong / 2.0), 2); double c = 2 * atan2 (sqrt (a), sqrt (1-a));

Bây giờ, bằng cách sử dụng dữ liệu trung gian được tạo ở bước trước, phát hiện các điểm bất thường và thực hiện phân loại đơn giản bằng cách sử dụng đoạn trích này được áp dụng cho mỗi dòng:

line = map (float, line.split (","))

v = line [2] mean = line [3] std = line [4] if v (mean + std * 3): if v (mean + std * 2): if v (mean + std): o.append ([1, line [0], line [1]) else: o.append ([2, line [0], line [1]) else: o.append ([3, line [0], line [1])

Các điểm bất thường được phân loại theo quy tắc 68–95–99.7

Bây giờ bạn có một bộ sưu tập với định dạng này [loại, vĩ độ, dài].

Ý nghĩa kiểu như sau:

  1. Hơi bất thường, có thể không liên quan
  2. Dị thường vừa
  3. Sự bất thường nghiêm trọng

Bước 14: Hình dung

Hình dung
Hình dung

Để hiểu và có thể thay đổi phần hình ảnh hóa, chúng ta phải học cách sử dụng các điểm đánh dấu tùy chỉnh, một tính năng của API Google Maps

Đầu tiên, bản đồ phải được khởi tạo trong một lệnh gọi lại:

function initMap () {

data = queryData (); map = new google.maps. Map (document.getElementById ('map'), {zoom: 15, center: {lat: data [0] [1], lng: data [0] [2]}}); nhận xét(); }

Chỉ định tên của lệnh gọi lại này trong url (chúng tôi đã chèn vào đây trước khóa API của chúng tôi) trong thẻ HTML:

script async defer src = "https://maps.googleapis.com/maps/api/js?key=[KEY]&callback=initMap"

Một điểm đánh dấu có thể được chèn vào bản đồ khi đối tượng được tạo:

mới google.maps. Marker ({position: {lat: LATITUDE, lng: LONGITUDE}, map: map, icon: “/path/to/icon.png”})

Bạn có thể thấy trong đoạn mã rằng đối với mỗi dữ liệu trong tập dữ liệu về sự bất thường, một điểm đánh dấu được chèn (xem hàm nhận xét ()) và biểu tượng dựa trên lớp của sự bất thường. Khi chạy nó vào trình duyệt, chúng ta có thể khám phá một bản đồ trong đó các điểm bất thường có thể được lọc bằng cách sử dụng các hộp kiểm, như trong hình.

Bước 15: Tín dụng và liên kết bên ngoài

Dự án này được thực hiện bởi Giovanni De Luca, Andrea Fioraldi và Pietro Spadaccino, sinh viên năm nhất Thạc sĩ Kỹ thuật Khoa học Máy tính tại Đại học Sapienza của Rome.

  • Trang trình bày mà các tác giả đã sử dụng để trình bày bằng chứng về khái niệm này:

    www.slideshare.net/PietroSpadaccino/road-m…

  • GitHub repos với tất cả mã:

    github.com/roadteam

Đề xuất: