https://github.com/dev-sunghwan/onvif_explorer
A web application for testing ONVIF SOAP commands via a browser GUI.
https://github.com/dev-sunghwan/onvif_explorer
camera flask ip-camera onvif onvif-client python soap testing-tool wsdl
Last synced: 1 day ago
JSON representation
A web application for testing ONVIF SOAP commands via a browser GUI.
- Host: GitHub
- URL: https://github.com/dev-sunghwan/onvif_explorer
- Owner: dev-sunghwan
- License: mit
- Created: 2026-02-20T23:30:00.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-05-16T22:49:25.000Z (27 days ago)
- Last Synced: 2026-05-17T00:45:23.761Z (27 days ago)
- Topics: camera, flask, ip-camera, onvif, onvif-client, python, soap, testing-tool, wsdl
- Language: JavaScript
- Homepage:
- Size: 197 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# ONVIF Explorer
ONVIF Explorer is a Flask-based web application for testing ONVIF SOAP commands through a browser GUI.
Enter camera connection details, load a WSDL URL, choose an operation, fill in the dynamically generated parameter form, and inspect both the parsed JSON result and the raw SOAP XML exchange. I built it as a practical developer and QA tool for quickly checking ONVIF behavior without needing a full certification workflow.

> [Korean documentation (README_ko.md)](README_ko.md)
## Why this tool?
Existing ONVIF tools solve adjacent problems, but they are not ideal for quick interactive command testing:
- **ODM (ONVIF Device Manager)** is useful for browsing devices and streams, but not for invoking arbitrary operations and inspecting raw responses.
- **ODTT (ONVIF Device Test Tool)** is aimed at conformance testing rather than day-to-day debugging.
ONVIF Explorer fills that gap by making arbitrary ONVIF operations directly testable from a lightweight browser interface.
| | ODM | ODTT | ONVIF Explorer |
|---|---|---|---|
| Interactive SOAP command test | no | no | yes |
| Raw SOAP XML visible | no | no | yes |
| Any ONVIF operation on demand | no | no | yes |
| ONVIF profile detection | no | yes | yes |
| Complexity | low | high | low |
| Target user | general users | certification engineers | developers / QA engineers |
## Quick start
### Option 1: `run.bat` on Windows
```text
Double-click run.bat
```
### Option 2: Manual setup
```bash
git clone https://github.com/dev-sunghwan/onvif_explorer.git
cd onvif_explorer
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python app.py
```
Open `http://127.0.0.1:5000` in your browser.
## Core features
- connection test through `GetDeviceInformation`
- ONVIF profile detection through `GetServices`
- preset support for common ONVIF services plus custom WSDL URLs
- dynamic operation forms generated from XSD metadata
- raw request and response XML inspection
- command history and last-response-value reuse for faster follow-up operations
## Supported service areas
- device management
- media and media2
- PTZ
- imaging
- events and analytics
- device I/O
- recording, search, and replay
- provisioning and thermal services
- access control, door control, and credential services
## Project structure
```text
onvif_explorer/
├── app.py
├── config.py
├── onvif_client/
│ ├── wsdl_loader.py
│ ├── type_introspector.py
│ ├── command_executor.py
│ ├── serializer.py
│ └── profile_checker.py
├── templates/
└── static/
```
## Tech stack
- Python 3
- Flask
- zeep
- lxml
- Bootstrap 5
- Vanilla JavaScript
## Roadmap
- command execution history with save and replay
- raw SOAP XML direct-send mode
- richer auto-fill flows for `Set*` operations from previous responses