Spisu treści:
- Krok 1: Konfiguracja sprzętu
- Krok 2: Konfiguracja oprogramowania - konfiguracja poczty e-mail i odbiorcy
- Krok 3: Konfiguracja oprogramowania - konfiguracja portu szeregowego i parsowanie
- Krok 4: Konfiguracja oprogramowania - Gnuplot
- Krok 5: Konfiguracja oprogramowania - ustawienie progów i wysyłanie e-maili
- Krok 6: Konfiguracja oprogramowania - HTML
- Krok 7: Żyję…
Wideo: Monitorowanie temperatury pomieszczenia kontrolowane przez Raspberry Pi z wyjściem obrazu Gnuplot i możliwością ostrzegania e-mailem: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Tam, gdzie pracuję, jest bardzo ważne pomieszczenie, w którym jest mnóstwo komputerów. Temperatura otoczenia w tym pomieszczeniu musi być bardzo niska, aby zoptymalizować wydajność tych systemów. Zostałem poproszony o wymyślenie systemu monitoringu, który ma możliwość wysyłania jakiejś formy alertu do kilku osób, które powiadomi ich, że coś jest nie tak z klimatyzacją w tym pomieszczeniu. oraz czujnik temperatury i wilgotności USB. Do monitorowania użyłem Gnuplot do wykreślenia trzech wykresów temperatury i stworzenia obrazu tych wykresów. Następnie utworzyłem dedykowaną stronę HTML, która będzie hostowana na Raspberry pi, więc obecne warunki, te wyjściowe obrazy gnuplot, mogą być monitorowane ze strony internetowej w naszej sieci. Aby uzyskać alerty, zdecydowałem się na Gmaila. Znalazłem przykładowy kod w magazynie Linux User. (Oczywiście możesz użyć dowolnego serwera pocztowego, gdy znasz niezbędne przypisania portów.) W tym celu utworzyłem dedykowane konto e-mail Gmail dla tych alertów. Dodatkową funkcją, gdy alarm został wyzwolony, jest dołączanie jednego wykresu do wiadomości e-mail, aby osoba otrzymująca wiadomość e-mail mogła zorientować się, jak drastyczny był wzrost, który spowodował alert.
Krok 1: Konfiguracja sprzętu
Nie ma zbyt wiele do skonfigurowania sprzętu. Raspberry pi działa pod kontrolą Raspiana, a czujnik temperatury USB po prostu podłącza się bezpośrednio do jednego z portów USB. Pobór mocy tego czujnika jest minimalny i w efekcie zasilałem go bezpośrednio z Raspberry pi. Jednak w przypadku urządzeń zasilanych przez USB o nieco większym poborze mocy zalecałbym zasilanie ich przez zasilany koncentrator USB, a nie bezpośrednio z portu USB Raspberry pi. Gdy czujnik temperatury jest zasilany, dostarcza szeregowy ciąg, który zawiera temperaturę i odczyty wilgotności aktualnych warunków. temperatura=20,9°C wilgotność=62,7% punkt rosy=13,0°CA skrypt Pythona analizuje ten ciąg i przechowuje wartości temperatury i wilgotności w trzech plikach tekstowych co pięć minut; pliki tekstowe dobowe, 24-godzinne i 48-godzinne (Różnice zostaną omówione później w sekcji HTML). Z tych plików Gnuplot wygeneruje wykresy, a następnie obrazy zestawu danych w każdym pliku. Zanim omówię skrypt w pythonie, opowiem o przygotowaniu Raspberry pi. Ponieważ monitorowanie ma odbywać się online, należy zainstalować serwer WWW. Próbowałem kilku z nich w swoim czasie na Raspberry pi, ale chociaż jest trochę duży, wolę Apache. Aby zainstalować Apache na swoim Raspberry pi, po prostu wpisz: sudo apt-get install apache2 Zostanie wyświetlony monit przed instalacją, naciśnij „y” na tak, a Apache zostanie zainstalowany kilka minut w zależności od twojego Raspberry pi. jest gotowe, musisz zainstalować dwie wtyczki Pythona: python-serial i wtyczkę python-gnuplot. (Chociaż zdałem sobie sprawę, że ostatnie kompilacje Raspiana mają standard wtyczki python-serial, ale dla bezpieczeństwa.) Aby zainstalować te, które wpisujesz: sudo apt-get install python-serial python-gnuplotPo raz kolejny po potwierdzeniu monitów te wtyczki -ins zostaną zainstalowane. I na tym konfiguracja sprzętu jest zakończona.
Krok 2: Konfiguracja oprogramowania - konfiguracja poczty e-mail i odbiorcy
Utwórz adres e-mailZanim zagłębimy się w oprogramowanie, teraz jest dobry moment, aby utworzyć konto Gmail, z którego będziesz wysyłać powiadomienia e-mail. (Ten przykład używa Gmaila, ale każdy serwer pocztowy może być używany, gdy znamy ustawienia portu SMTP) Kod Pythona jest dość prosty, ale potrzebne importy są krytyczne. Bez nich nic by nie działało.from time import *import time import serial import smtplib import Gnuplot import os import sysWreszcie lista mailingowa. Oczywiście musimy dodać odbiorców e-maila. Każdy adres e-mail jest zapisywany w zmiennej.from_address = '[email protected]'to_address1 = 'recipient1.mail.com' to_address2 = 'recipient2.mail.com'username = '[email protected]' password = 'custom_email_password'
Krok 3: Konfiguracja oprogramowania - konfiguracja portu szeregowego i parsowanie
Następnie przyjrzymy się konfiguracji szeregowej. To tylko kwestia ustawienia parametrów, które pasują do wyjścia szeregowego z czujnika. Czujnik wyprowadza ciąg szeregowy przy 9600 8 N 1, co jest standardowym formatem. Po odebraniu ciągu istnieje kilka sposobów na jego analizę w Pythonie i prawdopodobnie bardziej niezawodnie. Sposób, w jaki to robię, to szukanie znaków „temp” w ciągu szeregowym. Po zlokalizowaniu jest to po prostu kwestia wczytania kolejnych 46 znaków szeregowych do ciągu. Zebrany ciąg można teraz adresować jak elementy w tablicy. Żądane dane są analizowane z ciągu i zapisywane w trzech plikach wraz z odpowiadającym im znacznikiem czasu.timestamp = strftime("%d%b%Y %H:%M:%S ", localtime())
Krok 4: Konfiguracja oprogramowania - Gnuplot
Gnuplot to narzędzie graficzne wiersza poleceń. Po zapoznaniu się z podstawami może być dość potężnym narzędziem do graficznego wyświetlania zestawów danych. Gnuplot może wykreślać bezpośrednio z sformatowanego pliku tekstowego, a my tak się składa, że mamy taki z poprzedniego kroku parsowania. Po wskazaniu gnuplot, gdzie w pliku znajdują się dane, możemy wykreślić żądane wartości. Użyję czasu na osi X, a temperatury na osi Y. Wykreślanie czasu z mojego doświadczenia jest najtrudniejsze, ponieważ musisz ustawić format czasu w gnuplot, aby pasował do formatu pliku tekstowego. Gdy wszystkie opcje wykresu są kompletne i zgodnie z twoimi preferencjami, Gnuplot może następnie utworzyć obraz tego wykresu. Będzie to obraz, którego użyjemy później na naszej stronie internetowej. Zdecydowałem się na obraz.png, a ponieważ chcę zastąpić stary obraz na stronie internetowej, każdy obraz ma tę samą nazwę, więc ten wiersz kodu nie musi się zmieniać. Ustawienie rozmiaru obrazu jest powiązane z optymalizacją strony html. Najpierw bawiłem się standardowymi rozmiarami, a następnie eksperymentowałem, aby dopasować obraz do mojego ekranu. W przypadku tego projektu nie przechowuję starych obrazów, więc fizyczny rozmiar pliku w pamięci nie jest głównym czynnikiem cennej pamięci masowej Raspberry pi. Oto fragment kodu do tworzenia i przechowywania wykresu daily-p.webp
Krok 5: Konfiguracja oprogramowania - ustawienie progów i wysyłanie e-maili
Próg alertu musi być ustalony metodą prób i błędów w konfiguracji. pomieszczenie, w którym znajdują się systemy, nie ma okien, więc po wyłączeniu klimatyzacji może bardzo szybko się nagrzać. Początkowo patrzyłem na zestaw danych przez kilka dni i obserwowałem zmiany temperatury, zanim zdecydowałem się na wartość alertu 30 stopni C. Jest to ustawiona jako zmienna w scipcie Pythona. To może nie wydawać się zbyt wysokie, ale po uruchomieniu alertu nadal chcesz dać sobie czas na naprawienie problemu, zanim stanie się on krytyczny.
Dla uproszczenia wysyłam indywidualne e-maile na listę mailingową. Ponieważ lista mailingowa jest krótka, nigdy nie zawracałem sobie głowy wysyłaniem jednego e-maila do kilku odbiorców. Jedna rzecz, na którą należy zwrócić uwagę, ponieważ uruchamiam ten skrypt jako zadanie cron co 5 minut, nie chcesz wysyłać e-maili co 5 minut po uruchomieniu progu. Aby obejść ten problem, zapisuję datę i godzinę alertu w pliku i sprawdzam ten plik przed wysłaniem jakichkolwiek wiadomości e-mail, aby sprawdzić, czy system jest już w stanie alertu. Po przejściu w stan alertu będzie ponownie wysyłać wiadomość e-mail co godzinę po pierwszym wyzwoleniu, tak długo, jak system jest w stanie alertu. Dzięki temu Gmail nie blokuje wysyłania zbyt wielu e-maili w krótkim czasie.
Krok 6: Konfiguracja oprogramowania - HTML
Monitorowanie całego systemu odbywa się za pośrednictwem strony internetowej i potrzebny jest do tego bardzo prosty skrypt html. Obrazy, które stworzył Gnuplot, po prostu używam z powrotem w tych samych wymiarach obrazu. Uważam, że dla tych obrazów przeszedłem przez około 3 rozmiary, które najlepiej pasowały do mojego ekranu. Zanim stworzymy skrypt html, stwórzmy dla niego folder. Domyślnie folder hostingu WWW znajduje się w /var/www/. Chociaż jedynym celem Raspberry pi jest monitorowanie tego pokoju i wysyłanie powiadomień e-mail, dla dobrego utrzymania domu utworzyłem osobny folder w folderze /var/www/. Ponieważ ten folder należy do użytkownika root, musisz użyć sudo, aby utworzyć folder w tej lokalizacji. sudo mkdir /var/www/temperatureW tym przykładzie użyłem temperatury jako nazwy folderu, ale możesz użyć tutaj dowolnej nazwy, ale pamiętaj, że będzie ona musiała zostać wprowadzona w pasku adresu, aby wyświetlić tę stronę. Ta ścieżka jest przechowywana w zmiennej w skrypcie Pythona. Nawet jeśli lokalizacja hostingu musi zostać zmieniona lub skrypt musi zostać zmodyfikowany dla innego systemu, można go po prostu zmienić z tej jednej lokalizacji. Teraz możemy utworzyć nasz skrypt html w tym folderze, pamiętając o użyciu sudo przed dowolnymi poleceniami chcesz wykonać tutaj. Zalecam nazwanie skryptu HTML „index.html”, ponieważ uprościłoby to przy próbie znalezienia tej strony. Najważniejsze jest upewnienie się, że rozmiar obrazu jest taki sam, jak rozmiar obrazu z Gnuplot. Aby wyświetlić tę stronę, wystarczy wpisać adres IP Raspberry Pi, a następnie /temperature (lub jakkolwiek nazwałeś swój folder) Mam kilka systemów w pracy monitorujących różne rzeczy i wszystkie generują graficzne wyniki swoich wyników. Stworzyłem więc stronę, która zawiera linki do wszystkich tych stron, więc nie muszę się martwić wpisywaniem adresu za każdym razem, gdy chcę uzyskać dostęp do tych stron.
Krok 7: Żyję…
Użyłem tego do monitorowania temperatury w pomieszczeniu komputerowym, ale mogły to być dane z dowolnego źródła. Kiedy już można go zapisać w pliku tekstowym i znasz jego format, Gnuplot może zrobić resztę. Jedną z rzeczy, które ostatnio dodałem do tego projektu, jest wysyłanie pewnego rodzaju wiadomości e-mail typu „bicie serca”. To jest pierwszego dnia miesiąca o 9 rano. Mam skrypt, który uruchamia e-maile na listę mailingową, aby poinformować ich, że system działa tak, jak powinien i wszystko jest w porządku.
Korzystanie z listy cronjob jako:
Zalecana:
Zrób to sam - Klosze RGB LED kontrolowane przez Arduino: 5 kroków (ze zdjęciami)
Zrób to sam | Klosze LED RGB sterowane przez Arduino: Dzisiaj nauczę Cię, jak łatwo i tanio zbudować własne okulary LED RGB To zawsze było jedno z moich największych marzeń i wreszcie się spełniło! Ogromne podziękowania dla NextPCB za sponsoring ten projekt. Są producentem PCB
Przetwarzanie obrazu za pomocą Raspberry Pi: Instalacja OpenCV i separacja kolorów obrazu: 4 kroki
Przetwarzanie obrazu za pomocą Raspberry Pi: Instalowanie OpenCV i separacji kolorów obrazu: Ten post jest pierwszym z kilku samouczków dotyczących przetwarzania obrazu, które mają zostać wykonane. Przyglądamy się bliżej pikselom, które składają się na obraz, dowiadujemy się, jak zainstalować OpenCV na Raspberry Pi, a także piszemy skrypty testowe do przechwytywania obrazu, a także c
Zrób to sam -- Kontrolowane oświetlenie pomieszczenia: 3 kroki
Zrób to sam || Clap Controlled Room Light: Czy kiedykolwiek zastanawiałeś się, jak sterować urządzeniami gospodarstwa domowego za pomocą CLAP? W takim razie jesteś we właściwym miejscu! Tutaj pokażę Ci, jak możesz sterować dowolnym sprzętem AGD - oświetleniem pokojowym, wentylatorem, telewizorem lub systemem audio za pomocą tylko klaśnięcia. Ten projekt jest oparty na
Oddychające światło kontrolowane przez Raspberry Pi: 5 kroków
Oddychające światło sterowane przez Raspberry Pi: „Światło do ćwiczeń oddechowych” opisane tutaj jest proste i stosunkowo niedrogie pulsujące światło, które może wspierać Cię w wykonywaniu oddychania i pomagać w utrzymaniu stałego rytmu oddychania. Może być również używany m.in. jako kojący n
Cienki klient Compaq EVO T20 jako odtwarzacz MP3 (z możliwością sterowania przez sieć): 9 kroków
Cienki klient Compaq EVO T20 jako odtwarzacz MP3 (sterowany przez sieć): W pracy potrzebujemy podkładu muzycznego w poczekalni, a po chwili 5 płyt CD na odtwarzaczu CD staje się trochę przewidywalne, a jedyna lokalna stacja radiowa, którą możemy odbierać, jest po prostu irytująca. Więc co stworzyłem przy użyciu niskiej specyfikacji (najniższy NTe Evo T20 Th