Jak do nas trafić?
Znajdziesz nas na Youtube
Login
Hasło

Integracja API (CGI) kamery Dahua

Data dodania: 2023-09-22

Konfiguracja serwera webowego, który będzie obsługiwał API (CGI) kamery Dahua.


W dzisiejszym cyfrowym świecie wiele urządzeń, w tym kamery IP, oferuje zaawansowane funkcje i dostęp do swoich interfejsów programistycznych, co otwiera drzwi do tworzenia spersonalizowanych rozwiązań i usprawniania monitoringu. W artykule tym omówimy proces tworzenia aplikacji webowej umożliwiającej zdalne zarządzanie kamerą IP firmy Dahua poprzez jej API. Naszym celem jest stworzenie przyjaznego interfejsu użytkownika, który umożliwi wygodne sterowanie kamerą, w tym zmianę nazwy kanału oraz treści wyświetlanej na obrazie. W dalszej części artykułu przeanalizujemy kroki niezbędne do uruchomienia serwera webowego, który pośredniczyć będzie w komunikacji między naszą aplikacją a kamerą Dahua. Oprócz tego omówimy, jakie założenia przyświecają naszej aplikacji oraz przedstawimy kod źródłowy, który pozwoli na wygodne korzystanie z funkcji kamery Dahua. Przejdźmy więc przez kolejne etapy tworzenia tego przydatnego narzędzia.
 
Serwer webowy: 
 
Pierwszym krokiem jest stworzenie serwera webowego, który będzie działał niezależnie od serwera kamery. Pozwoli nam to na stworzenie strony internetowej dzięki, której z łatwiej będzie nam obsługiwać API kamery Dahua
 
Nasz serwer postawimy na maszynie Qnap wystarczy mała wersja urządzenia. Plusem Qnapa jest to, że ma wbudowany serwer webowy dzięki czemu wykonanie tego kroku będzie bardzo proste.  W tym artykule pominę wstępną konfigurację Qnapa, jednak musimy podłączyć go do naszej lokalnej sieci, do tej sieci, do której podłączona jest kamera, tak aby komunikacja między tymi urządzeniami była prosta do zrealizowania.
 
Z menu Qnapa przechodzimy do zakładki Control Panel -> Applications -> Web server. Następnie konfigurujemy ustawienia według poniższego zrzutu ekranu.      
 
 
 
 
To tyle nic więcej z serwerem webowym nie będziemy musieli robić. 

Założenia aplikacji:
 
Założeniem aplikacji jest stworzenie przyjaznego interfejsu dla użytkownika, który chciałby wyświetlać jakiś tekst na obrazie swojej kamery, lub zmieniać nazwę kanału. Można to robić z poziomu aplikacji kamery, jednak jest to bardzo uciążliwe, ponieważ, za każdym razem trzeba się logować oraz szukać odpowiedniej zakładki w ustawieniach. 
 
Z pomocą przychodzi API kamery. API, czyli Application Programming Interface (Interfejs Programowania Aplikacji), to zestaw definicji i protokołów, które umożliwiają komunikację między różnymi oprogramowaniami. API określa, jakie operacje i funkcje są dostępne w danym programie lub serwisie, a także w jaki sposób programy mogą współpracować ze sobą poprzez przekazywanie żądań i otrzymywanie odpowiedzi.
W przypadku API kamery Dahua nieco skomplikowanym jest znalezienie najnowszej dokumentacji w języku angielskim. W moim przypadku  korzystałem z wersji DAHUA_HTTP_API_V2.76, która nie jest najnowszą wersją dokumentacji, jednak w tej dokumentacji znajdowały się niezbędne zapytania, które pozwoliły na skonstruowanie tej aplikacji.   
Tworzenie strony internetowej:
 
 
Przydatnym w tej części może być chociaż podstawowa znajomość webowych języków programowania takich jak HTML, JS czy CSS,  jednak nie jest to niezbędne,  jeżeli założeniem jest uzyskanie dokładnie takiego efektu jaki zostanie stworzony. 
 
Konstrukcja strony:
 
Tutaj napotykamy pierwszy problem, ponieważ samo wysyłanie requestów do strony serwera kamery nie jest taką prostą sprawą, ponieważ ogranicza nas polityka bezpieczeństwa. Blokuje nas mechanizm CORS. CORS, czyli Cross-Origin Resource Sharing (Udostępnianie Zasobów Między Domenami), to mechanizm bezpieczeństwa używany w przeglądarkach internetowych, który kontroluje, czy strona internetowa na jednej domenie (origin) ma prawo żądać zasobów (np. dane JSON, obrazy lub skrypty) z innej domeny. CORS jest szczególnie istotny w kontekście bezpieczeństwa przeglądania internetowego, ponieważ zapobiega nieautoryzowanemu dostępowi do zasobów na różnych domenach. 
 
Jak to ominąć ?
 
Najbardziej optymalnym sposobem jest stworzenie serwera proxy. Serwer proxy (lub po prostu "proxy") to pośrednik, który działa jako pośrednik pomiędzy klientem a docelowym serwerem lub usługą. Jest to serwer, który przekazuje żądania klienta do serwera docelowego oraz przesyła odpowiedzi od serwera docelowego z powrotem do klienta. Serwery proxy są używane z różnych celów, w tym dla poprawy wydajności, zabezpieczeń i kontroli dostępu do zasobów internetowych. 
 
Najprostszym sposobem jeśli chodzi o requesty setujące (zmieniające wartość), jest bardzo prosty, ale kreatywny sposób. Warto zauważyć, że jeżeli wyślemy request w najprostszy możliwy sposób czyli wpisując go do przeglądarki, kamera odbierze go po zalogowaniu bez żadnego problemu.  Z tego względu nasz program będzie opierał się na otwieranie nowych okien w przeglądarce, ale tak aby nie przeszkadzało to użytkownikowi. 
 
 Kod strony :

 

HTML:

JS:
 

 
 
 
CSS:
 
 
Gdzie umieścić te pliki ?

Pliki te musimy umieścić w folderze webowym na naszym Qnapie. Musimy przejść do zakładki File Station a następnie do folderu web.





 
W tym folderze musimy umieścić nasze skrypty.


Skrótowy opis działania:
 
Do wyboru mamy dwie opcje: zmianę treści nazwy kanału oraz zmiany treści na kamerze. Dodatkowo możemy włączyć ustawienie Pierwsze połączenie, które pomaga w autoryzacji danych w kamerze, tak aby nikt nie powołany nie zmieniał wartości wyżej wymienionych atrybutów. W przypadku kolejnych zmian nie  jest konieczne włączanie tej opcji. Opcja ta działa w następujący sposób, jeżeli jest włączona to po wysłaniu requesta pozwala na zalogowanie się do kamery przez 5 sekund w przypadku błędu wyłącza tą stronę, bez włączonej tej opcji strona wyłącza się po 50 ms tak aby nie utrudniać użytkownikowi korzystania z tej aplikacji. 
 
Widok naszej strony:

 



Obraz kamery przed zmianą treści:
 
 
 
 
Zmiana treści: 

 
 
Jak możemy zauważyć aplikacja działa prawidłowo

 
Czemu może to służyć ? 
 
Błahym może zdawać się sama funkcja naszej aplikacji, ponieważ nie wydaje się użyteczna. Po co komuś możliwość wstrzykiwania tekstu na obraz ? Jednak może to bardzo usprawnić wyszukiwanie dokładnych wydarzeń, na przykład gdy na obrazie występuje specyficzny tekst dla jakiegoś momentu. 
 
Rozbudowanie aplikacji:
 
Aplikacja ta pokazuje tylko wybrane i bardzo okrojone możliwości API kamery  Dahua. Jednak daje dobre podstawy na proste rozbudowanie. Należy zwrócić uwagę, że jeśli chcielibyśmy korzystać z tej aplikacji w celu pozyskiwania pewnych danych z kamery, trzeba byłoby ją nieco zmodyfikować, a jeżeli chcielibyśmy na tych danych pracować w programie byłoby to jeszcze trudniejsze. Potrzebny byłby już serwer proxy lub osobny program do scrapowania strony, jednak ta druga opcja mogłaby naruszać pewne licencje bezpieczeństwa dlatego należy z tym uważać.  
        




Więcej filmów dotyczących powyższego artykułu »

Strona wykorzystuje pliki cookies zgodnie z Polityką Plików Cookies.
W przeglądarce interenetowej można zmienić ustawienia dotyczące cookies.
Klauzula informacyjna RODO - pobierz.

Ok, rozumiem
Live Chat