Mục lục:

Giám sát nhiệt độ phòng có điều khiển Raspberry Pi với đầu ra hình ảnh Gnuplot và khả năng cảnh báo qua email: 7 bước
Giám sát nhiệt độ phòng có điều khiển Raspberry Pi với đầu ra hình ảnh Gnuplot và khả năng cảnh báo qua email: 7 bước

Video: Giám sát nhiệt độ phòng có điều khiển Raspberry Pi với đầu ra hình ảnh Gnuplot và khả năng cảnh báo qua email: 7 bước

Video: Giám sát nhiệt độ phòng có điều khiển Raspberry Pi với đầu ra hình ảnh Gnuplot và khả năng cảnh báo qua email: 7 bước
Video: Triển khai hệ thống nhận diện khuôn mặt và đo thân nhiệt trên Raspberry Pi4 - Mì AI 2024, Tháng sáu
Anonim
Giám sát nhiệt độ phòng có điều khiển Raspberry Pi với đầu ra hình ảnh Gnuplot và khả năng cảnh báo qua email
Giám sát nhiệt độ phòng có điều khiển Raspberry Pi với đầu ra hình ảnh Gnuplot và khả năng cảnh báo qua email

Nơi tôi làm việc, có một căn phòng rất quan trọng chứa rất nhiều máy tính. Nhiệt độ môi trường của căn phòng này phải rất mát để tối ưu hóa hiệu suất của các hệ thống này. Tôi đã được yêu cầu đưa ra một hệ thống giám sát có khả năng gửi một số hình thức cảnh báo đến một số người để thông báo cho họ rằng có điều gì đó không ổn với điều hòa không khí trong phòng đó. và một cảm biến nhiệt độ và độ ẩm USB. Để theo dõi, tôi đã sử dụng Gnuplot để vẽ ba biểu đồ nhiệt độ và tạo hình ảnh của các biểu đồ đó. Sau đó, tôi đã tạo một trang HTML chuyên dụng sẽ được lưu trữ trên Raspberry pi để các điều kiện hiện tại, những hình ảnh đầu ra gnuplot đó, có thể được theo dõi từ một trang web trong mạng của chúng tôi. Tôi đã tìm thấy một số mã ví dụ trong tạp chí Người dùng Linux. (Tất nhiên bạn có thể sử dụng bất kỳ máy chủ thư nào sau khi bạn biết các chỉ định cổng cần thiết.) Vì vậy, tôi đã tạo một tài khoản email Gmail dành riêng cho các cảnh báo này. Cũng như một tính năng được bổ sung, khi một cảnh báo đã được kích hoạt, tôi đính kèm một biểu đồ vào email để người nhận email có thể biết được mức độ gia tăng mạnh mẽ mà nó đã gây ra cảnh báo.

Bước 1: Thiết lập phần cứng

Thiết lập phần cứng
Thiết lập phần cứng

Không có nhiều thứ để thiết lập phần cứng. Raspberry pi đang chạy Raspian và cảm biến nhiệt độ USB chỉ cần cắm trực tiếp vào một trong các cổng USB. Mức tiêu thụ điện năng của cảm biến này là tối thiểu và kết quả là tôi đã cấp nguồn trực tiếp cho nó từ Raspberry pi. Tuy nhiên, đối với các thiết bị được cấp nguồn qua USB có mức tiêu thụ điện nhiều hơn một chút, tôi khuyên bạn nên cấp nguồn cho chúng thông qua bộ chia USB được cấp nguồn chứ không phải trực tiếp từ cổng USB của Raspberry pi. độ ẩm của các điều kiện hiện tại. nhiệt độ = 20,9 ° C độ ẩm = 62,7% điểm sương = 13,0 ° CA python script phân tích chuỗi này và lưu trữ các giá trị nhiệt độ và độ ẩm thành ba tệp văn bản cứ sau năm phút; một tệp văn bản hàng ngày, 24 giờ và 48 giờ (Sự khác biệt sẽ được thảo luận sau trong phần HTML). Từ các tệp này, Gnuplot sẽ tạo ra các biểu đồ và sau đó là hình ảnh của tập dữ liệu trong mỗi tệp. Trước khi thảo luận về script python, tôi sẽ nói về việc chuẩn bị Raspberry pi. Vì việc giám sát phải được thực hiện trực tuyến, một máy chủ web cần phải được cài đặt. Tôi đã thử một vài trong số chúng trong thời gian sử dụng Raspberry pi nhưng mặc dù nó hơi lớn nhưng tôi thích Apache hơn. Để cài đặt Apache trên Raspberry pi, bạn chỉ cần gõ: sudo apt-get install apache2 Nó sẽ đưa ra lời nhắc trước khi cài đặt, nhấn "y" để có và Apache sẽ được cài đặt trong vài phút tùy thuộc vào Raspberry pi của bạn. xong, bạn phải cài đặt hai trình cắm thêm python: python-serial và trình cắm python-gnuplot. (Mặc dù tôi đã nhận ra rằng các bản dựng Raspian gần đây có tiêu chuẩn trình cắm nối tiếp python nhưng chỉ để an toàn.) Để cài đặt những người đó, bạn hãy nhập: sudo apt-get install python-serial python-gnuplot -ins sẽ được cài đặt. Và cùng với đó, quá trình thiết lập phần cứng đã hoàn tất.

Bước 2: Thiết lập Phần mềm - Thiết lập và Người nhận Email

Tạo địa chỉ email Trước khi chúng ta đi quá sâu vào phần mềm, bây giờ sẽ là thời điểm tốt để tạo một tài khoản Gmail để gửi thông báo qua email của bạn. (Ví dụ này sử dụng GMail nhưng bất kỳ máy chủ thư nào cũng có thể được sử dụng khi chúng ta biết cài đặt cổng smtp) Mã python khá đơn giản nhưng việc nhập cần thiết là rất quan trọng. Nếu không có chúng sẽ không có gì. Tất nhiên chúng ta phải thêm người nhận email. Mỗi địa chỉ email được lưu trong một biến.

Bước 3: Thiết lập phần mềm - Thiết lập nối tiếp và phân tích cú pháp

Tiếp theo, chúng ta xem xét thiết lập nối tiếp, vấn đề chỉ là thiết lập các thông số phù hợp với đầu ra nối tiếp từ cảm biến. Cảm biến xuất ra một chuỗi nối tiếp ở 9600 8 N 1, đây là định dạng tiêu chuẩn. Sau khi chuỗi được nhận, có một số cách phân tích cú pháp chuỗi này trong python và có thể đáng tin cậy hơn. Cách tôi làm là tìm kiếm các ký tự "tạm thời" trong chuỗi nối tiếp. Sau khi xác định vị trí, bạn chỉ cần đọc 46 ký tự nối tiếp tiếp theo thành một chuỗi. Chuỗi được thu thập bây giờ có thể được giải quyết giống như các phần tử trong một mảng. Dữ liệu mong muốn được phân tích cú pháp từ chuỗi và được lưu vào ba tệp cùng với tem thời gian tương ứng của nó.timestamp = strftime ("% d% b% Y% H:% M:% S", localtime ())

Bước 4: Thiết lập phần mềm - Gnuplot

Thiết lập phần mềm - Gnuplot
Thiết lập phần mềm - Gnuplot
Thiết lập phần mềm - Gnuplot
Thiết lập phần mềm - Gnuplot
Thiết lập phần mềm - Gnuplot
Thiết lập phần mềm - Gnuplot

Gnuplot là một công cụ đồ họa dòng lệnh. Khi bạn đã tìm ra những điều cơ bản, nó có thể là một công cụ khá mạnh để hiển thị đồ họa các tập dữ liệu. Khi chúng tôi chỉ ra cho gnuplot biết vị trí của dữ liệu trong tệp, chúng tôi có thể vẽ biểu đồ các giá trị mong muốn. Tôi sẽ sử dụng thời gian trên trục X và nhiệt độ của chúng ta trên trục Y. Theo kinh nghiệm của tôi, việc vẽ đồ thị theo kinh nghiệm của tôi là khó nhất vì bạn phải lấy định dạng thời gian trong gnuplot để khớp với định dạng của tệp văn bản. Đây sẽ là hình ảnh mà chúng tôi sẽ sử dụng trên trang Web của chúng tôi sau này. Tôi đã chọn sử dụng hình ảnh-p.webp

Bước 5: Thiết lập phần mềm - Cài đặt ngưỡng và gửi email

Ngưỡng cảnh báo phải được thực hiện bằng cách thử và sai cho thiết lập của bạn. Căn phòng chứa hệ thống không có cửa sổ nên một khi máy lạnh ngừng, nó có thể rất nóng rất nhanh. Ban đầu, tôi xem xét tập dữ liệu trong vài ngày và theo dõi các biến thể về nhiệt độ trước khi quyết định giá trị cảnh báo là 30 độ C. Giá trị này được đặt làm biến trong python scipt. Điều này có vẻ không cao nhưng một khi cảnh báo đã được kích hoạt, bạn vẫn muốn cho mình thời gian để khắc phục vấn đề trước khi nó trở nên nghiêm trọng.

Để đơn giản, tôi đang gửi từng email đến danh sách gửi thư. Vì danh sách gửi thư ngắn nên tôi không bao giờ bận tâm đến việc gửi một email cho nhiều người nhận. Một điều cần lưu ý ở đây, Vì tôi đang chạy tập lệnh này như một công việc cron cứ 5 phút một lần, bạn không muốn gửi email 5 phút một lần khi ngưỡng đã được kích hoạt. Để giải quyết vấn đề này, tôi ghi ngày và giờ của cảnh báo vào một tệp và kiểm tra tệp này trước khi gửi bất kỳ email nào để xem hệ thống đã ở trạng thái cảnh báo chưa. Khi ở trạng thái cảnh báo, nó sẽ chỉ gửi lại email mỗi giờ sau lần kích hoạt đầu tiên miễn là hệ thống ở trạng thái cảnh báo. Bằng cách đó, Gmail không chặn email của bạn gửi quá nhiều email trong một khoảng thời gian ngắn.

Bước 6: Thiết lập phần mềm - HTML

Việc giám sát toàn bộ hệ thống được thực hiện thông qua một trang web và một tập lệnh html rất cơ bản là cần thiết cho việc này. Những hình ảnh mà Gnuplot tạo ra, tôi chỉ đơn giản là sử dụng lại cùng kích thước của hình ảnh. Tôi tin rằng tôi đã xem qua 3 kích thước cho những hình ảnh này để phù hợp nhất trên màn hình của tôi. Trước khi tạo tập lệnh html, hãy tạo một thư mục cho nó. Theo mặc định, thư mục lưu trữ web được đặt tại / var / www /. Mặc dù mục đích duy nhất của Raspberry pi 'này là giám sát căn phòng này và đưa ra cảnh báo qua email, để giữ nhà tốt, tôi đã tạo một thư mục riêng trong thư mục / var / www /. Vì thư mục này thuộc về người dùng root nên bạn phải sử dụng sudo để tạo một thư mục nằm ở vị trí này. sudo mkdir / var / www / heatTrong ví dụ này, tôi đã sử dụng nhiệt độ làm tên của thư mục nhưng bạn có thể sử dụng bất kỳ tên nào ở đây nhưng hãy nhớ vì tên này sẽ phải được nhập vào thanh địa chỉ để xem trang này. Đường dẫn này được lưu trữ trong một biến trong tập lệnh python. Ngay cả khi vị trí lưu trữ phải được thay đổi hoặc tập lệnh phải được sửa đổi cho hệ thống khác, nó có thể được thay đổi từ một vị trí này. muốn thực hiện ở đây. Tôi khuyên bạn nên đặt tên tập lệnh html là "index.html" vì điều này sẽ đơn giản hóa việc này khi cố gắng tìm trang này. Điều quan trọng là đảm bảo rằng kích thước hình ảnh giống với kích thước hình ảnh từ Gnuplot., bạn chỉ cần nhập địa chỉ IP của Raspberry Pi, sau đó là / nhiệt độ (hoặc bạn đã đặt tên thư mục của mình là gì). Vì vậy, tôi đã tạo một trang có liên kết đến tất cả các trang này để tôi không phải lo lắng về việc nhập địa chỉ mỗi khi muốn truy cập vào các trang này.

Bước 7: Tôi còn sống…

Tôi đã sử dụng cái này để theo dõi nhiệt độ trong phòng máy tính nhưng đây có thể là khá nhiều dữ liệu từ bất kỳ nguồn nào. Một khi nó có thể được lưu trữ trong một tệp văn bản và bạn biết đó là định dạng Gnuplot có thể làm phần còn lại. Một điều tôi đã thêm gần đây vào dự án này là gửi một loại email "nhịp tim". Đó là vào ngày đầu tiên của tháng lúc 9 giờ sáng, tôi có một tập lệnh chạy email danh sách gửi thư để cho họ biết rằng hệ thống đang chạy như bình thường và tất cả đều ổn trong phòng.

Sử dụng danh sách cronjob như:

Đề xuất: