Skip to main content

PyPI

Introduction

This is a python module for interacting with Hikvision IP cameras and NVRs. Most rebadged models work as well with full functionality. It provides two ways to talk to a device:

  • HikCamera - connects to a device's ISAPI event stream and tracks event/sensor state changes in real time (motion, line crossing, tamper, I/O, disk errors, etc.), with callbacks on updates. Also supports snapshots, RTSP stream URLs, motion detection toggling, and recording search/download.
  • ISAPIClient - a synchronous ISAPI client for querying and controlling a device: device info/capabilities, storage devices, streaming channels, cameras, I/O ports, event enable/disable, snapshots, RTSP URLs, holiday mode, and reboot.

Code is licensed under the MIT license.

Requirements

Optional:

  • xmltodict >= 0.13.0 - required for ISAPIClient (install with the isapi extra)
  • pyDispatcher 2.0.5 - only needed if you want HikCamera to also broadcast updates via pydispatch signals; the built-in callback mechanism (add_update_callback) works without it

Installation

pip install pyhik

To also use ISAPIClient:

pip install pyhik[isapi]

Usage - Event streaming (HikCamera)

import pyhik.hikvision as hikvision

camera = hikvision.HikCamera('http://X.X.X.X', port=80, usr='admin', pwd='1234')

# Register a callback, then start the event stream processing thread
camera.add_update_callback(lambda msg: print('Update:', msg), camera.get_id)
camera.start_stream()

print(camera.get_name, camera.current_event_states)

# ...when finished
camera.disconnect()

Callbacks

  • add_update_callback(callback, msg) - register a callback function, called with cam_id.event_type.channel whenever a tracked event changes state.

Properties

  • get_id - unique camera/NVR id
  • get_name - camera/NVR name
  • get_type - device type (CAM or NVR)
  • current_event_states - dictionary of all tracked events and their current state
  • current_motion_detection_state - current motion detection on/off state
  • stream_connected - whether the event stream is currently connected

Functions

  • start_stream() - start the event stream processing thread
  • disconnect() - close the event stream session and stop the processing thread
  • get_channels() - list available channels
  • get_motion_detection() / enable_motion_detection() / disable_motion_detection() - read/toggle motion detection
  • get_snapshot(channel=1) - fetch a JPEG snapshot for a channel
  • get_stream_url(channel=1, protocol='rtsp', stream_type=1) - build an RTSP stream URL
  • fetch_attributes(event, channel) - get the state list for a specific sensor/channel
  • get_recording_days(track_id, start_date, end_date) - list days that have recordings
  • search_recordings(track_id, start_time, end_time, max_results=100) - search for recordings in a time range
  • download_recording(playback_uri, output_stream=None, chunk_size=65536) - download a recording found via search_recordings

Usage - Device control (ISAPIClient)

from pyhik.isapi import ISAPIClient

with ISAPIClient('X.X.X.X', port=80, username='admin', password='1234') as client:
    print(client.get_device_name(), client.get_firmware_version())
    print(client.get_capabilities())

    snapshot = client.get_snapshot(channel=1)
    rtsp_url = client.get_rtsp_url(channel=1)

Functions

  • get_device_info() / get_device_serial() / get_device_name() / get_device_model() / get_device_type() / get_firmware_version() - device identity
  • get_capabilities() - returns a DeviceCapabilities summary of what the device supports
  • get_storage_devices() - list StorageDevice entries (HDD/SD status, capacity)
  • get_alarm_server_info() / configure via request() - alarm server settings
  • get_streaming_channels() - list StreamInfo for available streams
  • get_cameras() - list CameraInfo (useful on NVRs with multiple channels)
  • get_output_ports() / get_input_ports() - list I/O ports
  • get_output_state(output_id) / set_output_state(output_id, state) - read/set an output relay
  • get_holiday_mode_enabled() / set_holiday_mode_enabled(enabled) - read/set holiday mode
  • get_event_states() / set_event_enabled(...) - read/toggle event detection types
  • get_snapshot(channel=1, stream_type=1, width=None, height=None) - fetch a snapshot
  • get_rtsp_url(channel=1, stream_type=1, include_credentials=True) - build an RTSP stream URL
  • reboot() - reboot the device
  • custom_request(...) - issue an arbitrary ISAPI request for endpoints not otherwise wrapped

TODO

  • Support IR day/night status and ability to switch between day/night/auto

Metadata

Release files for pyHik 0.4.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyHik 0.4.6
File Size Uploaded
pyhik-0.4.6.tar.gz 36.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyHik 0.4.6
File Interpreter ABI Platform
pyhik-0.4.6-py3-none-any.whl Python 3 none any Details

Total release size: 62.9 kB

Release files / pyhik-0.4.6.tar.gz

Download URL pyhik-0.4.6.tar.gz
Size 36.1 kB
Tags Source
SHA-256 checksum
How to use checksums
50dbe20b3749e37495d76e2a582d4cfb63bf6061fec3747a52f3cb0269f0462f
BLAKE2b-256 checksum
How to use checksums
d916d13e7ef4de091b777d22adcf9027fe67685fca86b8bd34dc52e7d5e46b68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / pyhik-0.4.6-py3-none-any.whl

Download URL pyhik-0.4.6-py3-none-any.whl
Size 26.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3ca3cb3f86115584b6f561a222fbcddda2d88052a75824dd41f78109d0e9eb45
BLAKE2b-256 checksum
How to use checksums
9c0f3e5ef1bcce9054a07560bc2e22cc9def2d6f23d44b8cb987f018498d7eb4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.8

2 release files

0.4.7

2 release files

This release

0.4.6 This release

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.9

1 release file

0.2.8

1 release file

0.2.7

1 release file

0.2.5

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page