prvni commit

This commit is contained in:
2026-07-31 21:37:47 +02:00
commit 93a94fc177
5 changed files with 414 additions and 0 deletions

59
README.md Normal file
View File

@@ -0,0 +1,59 @@
# 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.