# Hikvision NVR webcam snapshot Jednoduchý skript stáhne aktuální obrázek z kanálu Hikvision NVR a atomicky jej publikuje do zadaného souboru na webu. Mimo společné časové okno publikuje připravený dummy obrázek. Podporuje jeden i více kanálů. ## Instalace Požadavek je Python 3.9 nebo novější, bez externích balíčků. 1. Zkopírujte `.env.example` jako `.env`. 2. Doplňte adresu NVR, samostatného uživatele pouze s potřebným oprávněním, heslo, kanál a cílovou cestu. 3. Vedle skriptu uložte vlastní `dummy.jpg` (nebo změňte `DUMMY_PATH`). 4. Jednou skript spusťte ručně: ```sh python3 snapshot.py ``` Heslo v `.env` může obsahovat mezery a `#`; uvozovky jsou volitelné. Soubor `.env` nepatří do verzovacího systému. ## Pravidelné spouštění Skript sám čekání ani plánování neprovádí. Na Linuxu jej lze volat každou minutu: ```cron * * * * * cd /cesta/k/hik2webcam && /usr/bin/python3 snapshot.py >> snapshot.log 2>&1 ``` Ve Windows použijte Plánovač úloh a jako program nastavte `python.exe`, argument `C:\cesta\snapshot.py` a pracovní adresář projektu. Shodné hodnoty `ACTIVE_FROM` a `ACTIVE_TO` znamenají nepřetržitý provoz. Interval může přecházet přes půlnoc. Při chybě NVR zůstane poslední platný obrázek zachován a proces skončí kódem `1`; mimo časové okno skončí po úspěšném zkopírování dummy obrázku kódem `0`. ## Hikvision endpoint Výchozí cesta je: ```text /ISAPI/Streaming/channels/{channel}{stream_id}/picture ``` Kanál `1` a stream `01` tedy používají ID `101`. Autentizace zobrazená v NVR jako `digest` je podporovaná; skript umí jako zálohu také Basic autentizaci. Pro HTTPS se self-signed certifikátem lze použít `NVR_VERIFY_TLS=false`. Požadované rozlišení se posílá NVR explicitně pomocí ISAPI parametrů `videoResolutionWidth` a `videoResolutionHeight`. Nastavuje se globálně přes `NVR_SNAPSHOT_WIDTH` a `NVR_SNAPSHOT_HEIGHT`; výchozí hodnota je 1920×1080. NVR musí dané rozlišení podporovat, jinak může vrátit nejbližší podporované rozlišení nebo chybovou XML odpověď. Pokud zařízení endpoint odmítne, ověřte, že uživatel smí sledovat daný kanál, že je povolené ISAPI a že `NVR_SNAPSHOT_PATH` odpovídá konkrétnímu firmwaru.