v0.0.9 — 2025-10-16
·
200 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Overview
This release introduces robust service discovery with intelligent fallback mechanisms and critical bug fixes. Key highlights include:
- Enhanced Service Discovery: Revolutionary 3-tier service discovery approach with GetServices → GetCapabilities → Default URLs fallback
- Legacy Device Support: Full compatibility with older ONVIF devices that don't support GetServices
- Critical Bug Fix: Fixed incorrect method call in Uplink service that was causing operation failures
- Project Configuration: Cleaned up unnecessary PyPI URLs after repository verification
Changelog Summary
PyPI
https://pypi.org/project/onvif-python/0.0.9 (18537728680)
New Features
- Enhanced Service Discovery with GetCapabilities Fallback (4e643cf)
- Implemented comprehensive 3-tier service discovery approach:
- GetServices (Preferred): Tries GetServices first for detailed service information
- GetCapabilities (Fallback): Falls back to GetCapabilities if GetServices not supported
- Default URLs (Final Fallback): Uses standard ONVIF URLs as last resort
- Enhanced
_get_xaddr()method with intelligent XAddr resolution - Added comprehensive nested Extension service lookup (
Extension.Extension) - Improved compatibility with legacy ONVIF devices
- Added detailed service discovery documentation with practical examples
- Updated both English and Indonesian README with new discovery mechanism
- Implemented comprehensive 3-tier service discovery approach:
Fixed
- Fixed Incorrect Method Call in Uplink Service (b4c876d)
- Fixed
DeleteUplinkmethod call that was incorrectly implemented - Resolved operation failures in Uplink service management
- Improved service method consistency across ONVIF services
- Fixed
Build & Configuration
- Project Configuration Cleanup (65de793)
- Removed unnecessary URLs from
pyproject.toml - Cleaned up configuration after PyPI repository verification
- Streamlined project metadata for better maintainability
- Removed unnecessary URLs from
Documentation
-
Comprehensive Service Discovery Documentation (4e643cf)
- Updated README.md with detailed 3-tier discovery approach explanation
- Added practical code examples showing discovery method detection
- Enhanced "Service Discovery: Understanding Device Capabilities" section
- Updated Indonesian documentation (
README_ID.md) with same improvements - Added comprehensive examples for both GetServices and GetCapabilities usage
-
Enhanced ONVIFClient Documentation (4e643cf)
- Improved
_get_xaddr()method documentation with comprehensive docstring - Added detailed explanation of service discovery fallback mechanism
- Enhanced code comments for better developer understanding
- Improved
Technical Improvements
Service Discovery Architecture
The new service discovery system provides maximum device compatibility:
from onvif import ONVIFClient
client = ONVIFClient("192.168.1.17", 8000, "admin", "admin123")
# Check what discovery method was used
if client.services:
print("Service discovery: GetServices (preferred)")
print("Discovered services:", len(client.services))
elif client.capabilities:
print("Service discovery: GetCapabilities (fallback)")
print("Available capabilities:", client.capabilities)
else:
print("Service discovery: Using default URLs")Enhanced Device Compatibility
- Modern Devices: Benefit from detailed GetServices information
- Legacy Devices: Automatically fall back to GetCapabilities
- Non-compliant Devices: Still work with default URL generation
- Extension Services: Proper support for nested Extension services like DeviceIO, Recording, Search, Replay
Breaking Changes
None — This release maintains full backward compatibility:
- Existing code will continue to function without modifications
- Enhanced service discovery is completely transparent to existing applications
- All existing service methods and parameters remain unchanged
- Fallback mechanism activates automatically when needed
Migration Guide
No migration required. The enhanced service discovery works automatically:
- Existing Applications: Continue working without any code changes
- New Applications: Benefit from improved device compatibility automatically
- Legacy Device Support: Now works out-of-the-box with older ONVIF devices
Full Changelog: v0.0.8...v0.0.9