Python SDK for Viewtron IP camera API. Parse inbound alarm events and control cameras programmatically.
Viewtron IP cameras run AI detection on-camera (license plate recognition, face detection, human/vehicle detection) and send HTTP POST events to your server. This SDK parses those events and provides an API client for camera control.
pip install viewtronViewtron cameras and NVRs send XML alarm events via HTTP POST. This SDK parses them into Python objects.
from viewtron import LPR, FaceDetection, IntrusionDetection
# In your HTTP server's POST handler:
lpr_event = LPR(request_body)
print(lpr_event.get_plate_number()) # "ABC1234"
print(lpr_event.is_plate_authorized()) # True (plate is on camera whitelist)
# Images are included as base64
if lpr_event.source_image_exists():
overview = lpr_event.get_source_image() # base64 JPEG — full scene
if lpr_event.target_image_exists():
plate_crop = lpr_event.get_target_image() # base64 JPEG — plate closeup| Source | Class | Detection |
|---|---|---|
| IPC v1.x | LPR |
License plate recognition with whitelist/blacklist |
| IPC v1.x | FaceDetection |
Face detection with crop image |
| IPC v1.x | IntrusionDetection |
Perimeter intrusion (person/vehicle) |
| IPC v1.x | IntrusionEntry |
Zone entry |
| IPC v1.x | IntrusionExit |
Zone exit |
| IPC v1.x | LoiteringDetection |
Loitering |
| IPC v1.x | VideoMetadata |
Continuous object detection |
| NVR v2.0 | VehicleLPR |
LPR with vehicle brand/color/type |
| NVR v2.0 | FaceDetectionV2 |
Face detection with age/sex/glasses/mask |
| NVR v2.0 | RegionIntrusion |
Perimeter intrusion |
| NVR v2.0 | LineCrossing |
Tripwire line crossing |
| NVR v2.0 | TargetCountingByLine |
People/vehicle counting by line |
| NVR v2.0 | TargetCountingByArea |
People/vehicle counting by area |
| NVR v2.0 | VideoMetadataV2 |
Continuous object detection |
Version detection is automatic — IPC v1.x and NVR v2.0 use different XML structures but the SDK handles both.
from viewtron import ViewtronCamera
camera = ViewtronCamera("192.168.0.20", "admin", "password")
# Device info
info = camera.get_device_info()
print(info["model"]) # "LPR-IP4"
# Manage the license plate database
plates = camera.get_plates()
camera.add_plate("ABC1234")
camera.modify_plate("ABC1234", owner="Mike", telephone="555-1234")
camera.delete_plate("ABC1234")
# Or use as context manager
with ViewtronCamera("192.168.0.20", "admin", "password") as cam:
plates = cam.get_plates()- Viewtron Home Assistant Integration — Camera events as HA sensors via MQTT auto-discovery
- IP Camera API Server — Alarm server with CSV logging and image saving
- API Developer Docs — Full Viewtron API documentation portal
- Python SDK Reference — Event classes, camera client, version routing
- Home Assistant Integration — Connect cameras to HA via MQTT
- XML Event Examples
- IP Camera Setup Guide
- NVR Setup Guide
Mike Haldas — CCTV Camera Pros mike@cctvcamerapros.net