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.

 

Odnośniki