Files
hik2webcam/README.md
2026-07-31 21:37:47 +02:00

60 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.