VideoWind – monitoring i pomiar temperatury
Program VideoWind jest aplikacją serwerową działającą w systemie operacyjnym Debian. Umożliwia zdalny dostęp do obrazu z kamery (USB) i odczyt z czujników temperatury (DS18B20) za pośrednictwem przeglądarki internetowej. Dane z czujników odczytywane są automatycznie i zostają archiwizowane w bazie danych, co umożliwia ich późniejszą analizę.
Aplikacja przechodziła ewolucję przez wiele lat w ramach projektu “Stacja monitorująca na bazie Raspberry Pi” i została zaprojektowana z myślą o tym jednopłytkowym komputerze.
Raspberry Pi – Uruchomienie magistrali 1Wire
System operacyjny Linux daje możliwość podłączenia magistrali 1Wire bezpośrednio do wyprowadzeń procesora, te natomiast w komputerze Raspberry Pi są dostępne na złączach szpilkowych – GPIO.
Abstrakcja warstwy sprzętowej w Linux jest bardzo wygodna, urządzenia są plikami. Również i urządzenia podłączone do magistrali 1Wire będą widziane w systemie jako pliki. By włączyć obsługę 1Wire w Raspberry Pi wystarczy uruchomić konfigurator poleceniem sudo raspi-config a potem wybrać z menu “Interfacing Options” i w następnej kolejności “I2C – Enable/Disable automatic loading of I2C kernel module” wybierając “Enable“. Po skonfigurowaniu i ponownym uruchomieniu każdy dołączony do magistrali czujnik reprezentowany jest poprzez katalog w lokalizacji /sys/bus/w1/devices o nazwie będącej połączeniem kodu rodziny układu i jego numeru identyfikacyjnego.
Instalacja VideoWind
Program dostępny jest w Repository.NoweEnergie.org w postaci archiwum ZIP, jednak jego instalacja powinna zostać przeprowadzona za pomocą skryptu instalacyjnego (również do pobrania z repozytorium).
W konsoli z poziomu root należy wejść do katalogu w którym ma zostać zainstalowany program a następnie wykonać:
wget http://repository.noweenergie.org/Repo/python/videowind/install.sh
sudo chmod +x install.sh
sudo sh install.sh
Po pobraniu skryptu instalacyjnego i nadaniu mu praw do wykonywania nastąpi uruchomienie instalacji.
Pierwszym krokiem będzie pobranie potrzebnych pakietów, między innymi python, python-serial i innych. W tym celu na pytanie:
“Dokonac sprawdzenia czy system posiada potrzebne biblioteki i programy? [y]es / [n]o”
należy kliknąć “y” i potwierdzić enterem.
Następnie instalator pobierze archiwum ZIP zawierające program VideoWind i rozpakuje pliki.
Kolejnym krokiem jest konfiguracja programu. Na pytanie:
“Czy konfigurowac teraz program? [y]es / [n]o”
należy odpowiedzieć “y” i kliknąć enter.
Parametry które należy zdefiniować zostały opisane w punkcie “Konfiguracja VideoWind”.
Zapisanie odbywa się po kliknięciu CTRL+o a wyjście z edytora po kliknięciu CTRL+x.
Końcowym etapem instalacji jest pytanie:
“Czy program ma automatycznie startowac z systemem? [y]es / [n]o”
należy podać odpowiedź zgodnie z potrzebami.
Odpowiedź twierdząca powoduje dodanie do pliku /etc/crontab linijki:
@reboot root python server.py start
Konfiguracja VideoWind
Plik konfiguracyjny “config.ini” znajduje się w folderze “config”.
Sekcja “SERVER” konfiguruje ogólne ustawienia programu:
- SCRIPT_PATH – ścieżka w której znajduje się skrypt “server.py”, jest ona automatycznie ustawiana w trakcie instalacji,
- PORT – port na którym zostanie uruchomiony serwer (domyślnie 81), po podaniu adresu IP w przeglądarce internetowej należy podać numer portu np. 10.0.0.1:81,
- DEBUG – włączenie (true) lub wyłączenie (false) raportowania błędów (wyświetlane w konsoli),
- PASSWORD – hasło podawane by uzyskać dostęp w przeglądarce internetowej.
Sekcja “CAMERA” konfiguruje parametry obrazu z kamery:
- CAMID – kamera widoczna jest jako plik przykładowo /dev/video0 w pliku konfiguracyjnym zapisywana jako 0,
- FPS – klatek na sekundę np. 30,
- FRAME_WIDTH – szerokość obrazu (zgodnie z możliwościami kamery) np. 480,
- FRAME_HEIGHT – wysokość obrazu (zgodnie z możliwościami kamery) np. 640,
- PACKET_DELAY – definicja przerwy (w sekundach) między klatkami obrazu MJPEG np. 1,
- JPEG_QUALITY – kompresja JPG (w procentach) np. 90.
Sekcja “TEMPERATURE”:
- READ_INTERVAL – definiuje co ile minut nastąpi odczyt temperatury z czujnika np. 30,
- NRSENSOR – numer czujnika podłączonego do magistrali 1Wire z którego odczytywana jest temperatura zewnętrzna np. 0.
Sekcja “UART” obsługa np. modułu TTMSB:
- PORT – definiuje port na którym dostępny jest moduł np. ACM0.
Uruchomienie VideoWind
Jeśli w trakcie instalacji wybrano automatyczny start, po włączeniu urządzenia i załadowaniu systemu również zostanie uruchomiony program.
Dzieje się to za sprawą skryptu:
@reboot root python server.py start
dołączonego do pliku /etc/crontab.
By uruchomić program z konsoli należy wejść jako root do folderu w którym znajduje się skrypt server.py i wydać polecenie:
sudo python server.py start
Natomiast zatrzymanie programu odbywa się po instrukcji:
sudo python server.py stop
W przypadku błędnego zakończenia działania programu przydatnym może okazać się uruchomienie skryptu:
sudo sh run.sh
Kasuje on tymczasowe pliki i uruchamia serwer.
Baza danych
Z poziomu przeglądarki internetowej istnieje możliwość zapisania obrazu, jest on dostępny w folderze “archive”.
Miejsce to zawiera również pliki bazy danych:
- dbase.db – ogólne ustawienia programu,
- temperature.db – archiwum pomiarów temperatury.
Praca w programie
Po wpisaniu w przeglądarce adresu który przypisany jest do urządzenia na którym został uruchomiony program należy podać numer portu (w przypadku innego niż 80) np. 10.0.0.1:81. W trakcie pierwszego uruchomienia pojawia się okno logowania.
Główne okno programu wyświetla zdjęcie z kamery oraz menu główne i ostatni odczyt temperatury.
Główne okno programu VideoWind.
Po kliknięciu “wykres temperatury” wyświetlana jest historia odczytów temperatury. Wymagane jest połączenie z siecią Internet, gdyż wykres tworzony jest przez jsapi google.
Wykres odczytów temperatury.