Proyek ini menyediakan pustaka Python yang komprehensif dan ramah pengembang untuk bekerja dengan perangkat yang sesuai dengan ONVIF. Pustaka ini dirancang agar andal, mudah diintegrasikan, dan cukup fleksibel untuk mendukung berbagai profil dan layanan ONVIF.
ONVIF (Open Network Video Interface Forum) adalah standar global untuk antarmuka produk keamanan fisik berbasis IP, termasuk kamera jaringan, perekam video, dan sistem terkait.
Di balik layar, komunikasi ONVIF bergantung pada SOAP (Simple Object Access Protocol) — protokol pesan berbasis XML dengan definisi skema yang ketat (WSDL/XSD). SOAP memastikan interoperabilitas, tetapi jika digunakan secara langsung dapat menjadi verbose, kompleks, dan rentan terhadap kesalahan.
Pustaka ini menyederhanakan proses tersebut dengan membungkus komunikasi SOAP ke dalam API Python yang bersih. Anda tidak perlu lagi menangani parsing XML tingkat rendah, namespace, atau token keamanan secara manual — pustaka ini menangani semuanya, memungkinkan Anda untuk fokus pada pembangunan fungsionalitas.
- Implementasi penuh layanan inti dan profil ONVIF
- Dukungan untuk penemuan perangkat, streaming media, kontrol PTZ, manajemen event, dan lainnya
- Abstraksi Pythonic atas permintaan dan respons SOAP (tidak perlu membuat XML secara manual)
- Arsitektur yang dapat diperluas untuk ekstensi ONVIF khusus
- Kompatibel dengan beberapa versi spesifikasi ONVIF
- Skrip contoh dan pengujian disertakan
- Pengembang individu yang menjelajahi ONVIF atau membangun proyek hobi
- Perusahaan yang membangun platform intelijen video, analitik, atau VMS
- Integrator keamanan yang membutuhkan interoperabilitas ONVIF yang andal di berbagai perangkat
Dari PyPI resmi:
pip install onvif-pythonAtau klon repositori ini dan instal secara lokal:
git clone https://github.com/nirsimetri/onvif-python
cd onvif-python
pip install .Tip
Anda dapat melihat dokumentasi lengkap yang dihasilkan secara otomatis oleh DeepWiki melalui tautan onvif-python AI Wiki. Saat ini kami belum memiliki situs dokumentasi resmi. Bantu kami membuat lebih banyak contoh dan dokumentasi yang bermanfaat dengan berkontribusi.
Berikut adalah contoh sederhana untuk membantu Anda memulai dengan pustaka ONVIF Python. Contoh ini menunjukkan cara menghubungkan ke perangkat yang sesuai dengan ONVIF dan mengambil informasi dasar perangkat.
1. Inisialisasi ONVIFClient
Buat instance ONVIFClient dengan memberikan alamat IP perangkat Anda, port, nama pengguna, dan kata sandi:
from onvif import ONVIFClient
# Koneksi dasar
client = ONVIFClient("192.168.1.17", 8000, "admin", "admin123")
# Dengan direktori WSDL kustom (opsional)
client = ONVIFClient(
"192.168.1.17", 8000, "admin", "admin123",
wsdl_dir="/path/to/custom/wsdl" # Gunakan direktori WSDL kustom
)2. Buat Instance Layanan
ONVIFClient menyediakan beberapa layanan utama yang dapat diakses melalui metode berikut:
client.devicemgmt()— Manajemen Perangkatclient.events()— Eventsclient.imaging()— Imagingclient.media()— Mediaclient.ptz()— PTZ (Pan-Tilt-Zoom)client.analytics()— Analytics
...dan seterusnya, periksa Layanan ONVIF yang Diimplementasikan untuk detail lebih lanjut
Contoh penggunaan:
device = client.devicemgmt() # Manajemen Perangkat (Inti)
media = client.media() # Media3. Dapatkan Informasi Perangkat
Ambil informasi dasar tentang perangkat, seperti produsen, model, versi firmware, dan nomor seri menggunakan layanan devicemgmt():
info = device.GetDeviceInformation()
print(info)
# Contoh: {'Manufacturer': '..', 'Model': '..', 'FirmwareVersion': '..', 'SerialNumber': '..'}4. Dapatkan URL RTSP
Ambil URL aliran RTSP untuk streaming video langsung dari perangkat menggunakan layanan media():
profile = media.GetProfiles()[0] # gunakan profil pertama
stream = media.GetStreamUri(
ProfileToken=profile.token,
StreamSetup={"Stream": "RTP-Unicast", "Transport": {"Protocol": "RTSP"}}
)
print(stream)
# Contoh: {'Uri': 'rtsp://192.168.1.17:8554/Streaming/Channels/101', ...}Jelajahi penggunaan lanjutan dan operasi spesifik layanan di folder examples/.
Important
Jika Anda baru mengenal ONVIF dan ingin mempelajari lebih lanjut, kami sangat menyarankan untuk mengikuti kursus online gratis resmi yang disediakan oleh ONVIF di Kursus Pengantar ONVIF. Harap dicatat bahwa kami tidak didukung atau disponsori oleh ONVIF, lihat Pemberitahuan Hukum untuk detailnya.
Kelas ONVIFClient menyediakan berbagai opsi konfigurasi untuk menyesuaikan perilaku koneksi, strategi caching, pengaturan keamanan, dan kemampuan debugging. Berikut adalah deskripsi detail dari semua parameter yang tersedia:
Parameter Dasar
| Parameter | Tipe | Wajib | Default | Deskripsi |
|---|---|---|---|---|
host |
str |
✅ Ya | - | Alamat IP atau hostname perangkat ONVIF (mis., "192.168.1.17") |
port |
int |
✅ Ya | - | Nomor port untuk layanan ONVIF (port umum: 80, 8000, 8080) |
username |
str |
✅ Ya | - | Nama pengguna untuk autentikasi perangkat (menggunakan digest authentication) |
password |
str |
✅ Ya | - | Kata sandi untuk autentikasi perangkat |
Parameter Koneksi
| Parameter | Tipe | Wajib | Default | Deskripsi |
|---|---|---|---|---|
timeout |
int |
❌ Tidak | 10 |
Timeout koneksi dalam detik untuk permintaan SOAP |
use_https |
bool |
❌ Tidak | False |
Gunakan HTTPS sebagai pengganti HTTP untuk komunikasi aman |
verify_ssl |
bool |
❌ Tidak | True |
Verifikasi sertifikat SSL saat menggunakan HTTPS (set ke False untuk sertifikat self-signed) |
Parameter Caching
| Parameter | Tipe | Wajib | Default | Deskripsi |
|---|---|---|---|---|
cache |
CacheMode |
❌ Tidak | CacheMode.ALL |
Strategi caching WSDL (lihat Mode Cache di bawah) |
Parameter Fitur
| Parameter | Tipe | Wajib | Default | Deskripsi |
|---|---|---|---|---|
apply_patch |
bool |
❌ Tidak | True |
Aktifkan patching zeep untuk parsing field xsd:any yang lebih baik dan flattening otomatis, diterapkan pada (>= v0.0.4) |
capture_xml |
bool |
❌ Tidak | False |
Aktifkan plugin XML capture untuk debugging permintaan/respons SOAP, diterapkan pada (>= v0.0.6) |
wsdl_dir |
str |
❌ Tidak | None |
Path direktori WSDL kustom untuk menggunakan file WSDL eksternal sebagai pengganti yang built-in (mis., /path/to/custom/wsdl), diterapkan pada (>= v0.1.0) |
Mode Cache
Pustaka menyediakan empat strategi caching melalui enum CacheMode:
| Mode | Deskripsi | Cocok Untuk | Kecepatan Startup | Penggunaan Disk | Penggunaan Memori |
|---|---|---|---|---|---|
CacheMode.ALL |
Cache in-memory + disk (SQLite) | Server produksi, aplikasi multi-device | Cepat | Tinggi | Tinggi |
CacheMode.DB |
Cache disk saja (SQLite) | Batch jobs, CLI tools | Sedang | Sedang | Rendah |
CacheMode.MEM |
Cache in-memory saja | Script singkat, demo | Sedang | Tidak ada | Sedang |
CacheMode.NONE |
Tanpa caching | Testing, debugging | Lambat | Tidak ada | Rendah |
Rekomendasi: Gunakan CacheMode.ALL (default) untuk aplikasi produksi guna memaksimalkan performa.
Contoh Penggunaan
Koneksi Dasar:
from onvif import ONVIFClient
# Konfigurasi minimal
client = ONVIFClient("192.168.1.17", 80, "admin", "password")Koneksi Aman (HTTPS):
from onvif import ONVIFClient
# Koneksi via HTTPS dengan timeout kustom
client = ONVIFClient(
"your-cctv-node.viewplexus.com",
443, # Port HTTPS
"admin",
"password",
timeout=30,
use_https=True
)Optimasi Performa (Cache Memori):
from onvif import ONVIFClient, CacheMode
# Gunakan cache memory-only untuk script cepat
client = ONVIFClient(
"192.168.1.17",
80,
"admin",
"password",
cache=CacheMode.MEM
)Tanpa Caching dan Zeep Patching (Testing):
from onvif import ONVIFClient, CacheMode
# Nonaktifkan semua caching untuk testing
client = ONVIFClient(
"192.168.1.17",
80,
"admin",
"password",
cache=CacheMode.NONE,
apply_patch=False # Gunakan perilaku zeep original
)Mode Debugging (XML Capture):
from onvif import ONVIFClient
# Aktifkan XML capture untuk debugging
client = ONVIFClient(
"192.168.1.17",
80,
"admin",
"password",
capture_xml=True # Menangkap semua permintaan/respons SOAP
)
# Lakukan beberapa pemanggilan ONVIF
device = client.devicemgmt()
info = device.GetDeviceInformation()
services = device.GetCapabilities()
# Akses plugin XML capture
if client.xml_plugin:
# Dapatkan request/response terakhir yang ditangkap
print("XML Permintaan Terakhir:")
print(client.xml_plugin.last_sent_xml)
print("\nXML Respons Terakhir:")
print(client.xml_plugin.last_received_xml)
print(f"\nOperasi Terakhir: {client.xml_plugin.last_operation}")
# Dapatkan riwayat lengkap semua permintaan/respons
print(f"\nTotal operasi yang ditangkap: {len(client.xml_plugin.history)}")
for item in client.xml_plugin.history:
print(f" - {item['operation']} ({item['type']})")
# Simpan captured XML ke file
client.xml_plugin.save_to_file(
request_file="last_request.xml",
response_file="last_response.xml"
)
# Bersihkan riwayat setelah selesai
client.xml_plugin.clear_history()Metode XML Capture Plugin:
last_sent_xml- Dapatkan XML permintaan SOAP terakhirlast_received_xml- Dapatkan XML respons SOAP terakhirlast_operation- Dapatkan nama operasi terakhirhistory- Daftar semua permintaan/respons yang ditangkap dengan metadataget_last_request()- Metode untuk mendapatkan permintaan terakhirget_last_response()- Metode untuk mendapatkan respons terakhirget_history()- Metode untuk mendapatkan semua riwayatsave_to_file(request_file, response_file)- Simpan XML ke fileclear_history()- Bersihkan riwayat yang ditangkap
Direktori WSDL Kustom:
from onvif import ONVIFClient
# Gunakan file WSDL kustom sebagai pengganti yang built-in
client = ONVIFClient(
"192.168.1.17",
80,
"admin",
"password",
wsdl_dir="/path/to/custom/wsdl" # Direktori WSDL kustom
)
# Semua layanan akan otomatis menggunakan file WSDL kustom
device = client.devicemgmt()
media = client.media()
ptz = client.ptz()
# Direktori WSDL kustom harus memiliki struktur flat:
# /path/to/custom/wsdl/
# ├── devicemgmt.wsdl
# ├── media.wsdl
# ├── ptz.wsdl
# ├── imaging.wsdl
# └── ... (file WSDL lainnya)Konfigurasi Produksi
from onvif import ONVIFClient, CacheMode
# Pengaturan produksi yang direkomendasikan
client = ONVIFClient(
host="192.168.1.17",
port=80,
username="admin",
password="secure_password",
timeout=15,
cache=CacheMode.ALL, # Performa maksimal (default)
use_https=True, # Komunikasi aman
verify_ssl=True, # Verifikasi sertifikat (default)
apply_patch=True, # Enhanced parsing (default)
capture_xml=False, # Nonaktifkan mode debug (default)
wsdl_dir=None # Gunakan WSDL files bawaan (default)
)- Autentikasi: Pustaka ini menggunakan autentikasi WS-UsernameToken with Digest secara default, yang merupakan standar untuk perangkat ONVIF.
- Patching:
apply_patch=True(default) mengaktifkan custom zeep patching yang meningkatkan parsing fieldxsd:any. Ini direkomendasikan untuk kompatibilitas yang lebih baik dengan respons ONVIF. - XML Capture: Hanya gunakan
capture_xml=Trueselama development/debugging karena meningkatkan penggunaan memori dan dapat mengekspos data sensitif di log. - WSDL Kustom: Gunakan parameter
wsdl_diruntuk menentukan direktori kustom yang berisi file WSDL. Direktori harus memiliki struktur flat dengan file WSDL langsung di root (mis.,/path/to/custom/wsdl/devicemgmt.wsdl,/path/to/custom/wsdl/media.wsdl, dll.). - Lokasi Cache: Cache disk (saat menggunakan
CacheMode.DBatauCacheMode.ALL) disimpan di~/.onvif-python/onvif_zeep_cache.sqlite.
Warning
Sebelum melakukan operasi apa pun pada perangkat ONVIF, sangat disarankan untuk menemukan layanan mana yang tersedia dan didukung oleh perangkat. Pustaka ini secara otomatis melakukan penemuan layanan yang komprehensif selama inisialisasi menggunakan mekanisme fallback yang kuat.
Mengapa menemukan layanan perangkat?
- Keanekaragaman Perangkat: Tidak semua perangkat ONVIF mendukung setiap layanan. Layanan yang tersedia dapat bervariasi berdasarkan produsen, model, firmware, atau konfigurasi.
- Pencegahan Kesalahan: Mencoba menggunakan layanan yang tidak didukung dapat mengakibatkan permintaan gagal, pengecualian, atau perilaku yang tidak terdefinisi.
- Deteksi Fitur Dinamis: Perangkat dapat mengaktifkan atau menonaktifkan layanan dari waktu ke waktu (misalnya, setelah pembaruan firmware atau perubahan konfigurasi).
- Integrasi yang Dioptimalkan: Dengan memeriksa layanan yang tersedia, aplikasi Anda dapat menyesuaikan alur kerja dan UI untuk mencocokkan fitur perangkat yang sebenarnya.
Cara kerja penemuan layanan di pustaka ini:
ONVIFClient menggunakan pendekatan penemuan 3-tingkat untuk memaksimalkan kompatibilitas perangkat:
- GetServices (Preferensi) - Mencoba
GetServicesterlebih dahulu untuk informasi layanan yang detail - GetCapabilities (Fallback) - Menggunakan
GetCapabilitiesjikaGetServicestidak didukung - URL Default (Fallback Akhir) - Menggunakan URL ONVIF standar sebagai pilihan terakhir
from onvif import ONVIFClient
client = ONVIFClient("192.168.1.17", 8000, "admin", "admin123")
# Periksa metode penemuan mana yang digunakan
if client.services:
print("Penemuan layanan: GetServices (preferensi)")
print("Layanan yang ditemukan:", len(client.services))
print("Peta layanan:", client._service_map)
elif client.capabilities:
print("Penemuan layanan: GetCapabilities (fallback)")
print("Kapabilitas yang tersedia:", client.capabilities)
else:
print("Penemuan layanan: Menggunakan URL default")Mengapa pendekatan ini?
- GetServices memberikan informasi layanan yang paling akurat dan detail, tetapi bersifat opsional dalam spesifikasi ONVIF
- GetCapabilities bersifat wajib untuk semua perangkat yang sesuai dengan ONVIF, memastikan kompatibilitas yang lebih luas
- URL Default menjamin konektivitas dasar bahkan dengan perangkat yang tidak sesuai
Dapatkan informasi layanan detail:
Jika Anda memerlukan detail layanan yang komprehensif, Anda dapat memanggil GetServices secara manual dengan kapabilitas:
device = client.devicemgmt()
try:
# Coba dapatkan informasi layanan detail
services = device.GetServices(IncludeCapability=True)
for service in services:
print(f"Layanan: {service.Namespace}")
print(f"XAddr: {service.XAddr}")
if hasattr(service, 'Capabilities'):
print(f"Kapabilitas: {service.Capabilities}")
except Exception:
# Fallback ke GetCapabilities untuk perangkat legacy
capabilities = device.GetCapabilities()
print("Kapabilitas:", capabilities)Akses informasi kapabilitas:
Saat menggunakan fallback GetCapabilities, Anda dapat mengakses informasi kapabilitas:
device = client.devicemgmt()
try:
# Dapatkan informasi kapabilitas dari perangkat
capabilities = device.GetCapabilities()
# Layanan utama (selalu tersedia)
print("Media XAddr:", getattr(capabilities.Media, 'XAddr', 'Tidak tersedia'))
print("PTZ XAddr:", getattr(capabilities.PTZ, 'XAddr', 'Tidak tersedia'))
# Layanan Extension (tergantung perangkat)
ext = getattr(capabilities, 'Extension', None)
if ext:
print("DeviceIO XAddr:", getattr(ext.DeviceIO, 'XAddr', 'Tidak tersedia'))
print("Recording XAddr:", getattr(ext.Recording, 'XAddr', 'Tidak tersedia'))
print("Search XAddr:", getattr(ext.Search, 'XAddr', 'Tidak tersedia'))
print("Replay XAddr:", getattr(ext.Replay, 'XAddr', 'Tidak tersedia'))
except Exception as e:
print(f"Error mendapatkan kapabilitas: {e}")Tip
Pustaka menangani penemuan layanan secara otomatis dengan fallback yang cerdas. Anda biasanya tidak perlu memanggil metode penemuan secara manual kecuali Anda memerlukan informasi kapabilitas detail atau ingin menyegarkan daftar layanan setelah perubahan konfigurasi perangkat.
Pustaka ini telah diuji dengan berbagai perangkat yang sesuai dengan ONVIF. Untuk daftar terbaru dan paling lengkap dari perangkat yang telah diverifikasi bekerja dengan pustaka ini, silakan merujuk ke:
Jika perangkat Anda belum terdaftar saat ini, jangan ragu untuk menyumbangkan hasil pengujian atau umpan balik Anda melalui Issues atau Discussions di onvif-products-directory. Kontribusi Anda akan sangat berharga bagi komunitas dan publik.
Important
Kontribusi pengujian perangkat harus dilakukan dengan perangkat nyata dan menggunakan skrip yang disediakan di repositori onvif-products-directory. Pastikan untuk berkontribusi menggunakan model perangkat yang belum terdaftar.
Pustaka ini sepenuhnya mendukung semua Profil ONVIF utama yang tercantum di bawah ini. Setiap profil mewakili serangkaian fitur dan kasus penggunaan standar, memastikan interoperabilitas antara perangkat dan klien yang sesuai dengan ONVIF. Anda dapat menggunakan pustaka ini untuk berintegrasi dengan perangkat dan sistem yang mengimplementasikan salah satu profil ini.
| Nama | Spesifikasi | Fitur Utama | Kasus Penggunaan Umum | Dukungan |
|---|---|---|---|---|
| Profile_S | Dokumen | Streaming video, PTZ, audio, multicasting | Pemancar video jaringan (kamera) dan penerima (perekam, VMS) | ✅ Ya |
| Profile_G | Dokumen | Perekaman, pencarian, pemutaran ulang, penyimpanan video | Perekam video, perangkat penyimpanan | ✅ Ya |
| Profile_T | Dokumen | Streaming video lanjutan (H.265, metadata analitik, deteksi gerakan) | Kamera modern dan klien | ✅ Ya |
| Profile_C | Dokumen | Kontrol akses, pemantauan pintu | Pengontrol pintu, sistem akses | ✅ Ya |
| Profile_A | Dokumen | Konfigurasi kontrol akses lanjutan, manajemen kredensial | Klien dan perangkat kontrol akses | ✅ Ya |
| Profile_D | Dokumen | Periferal kontrol akses (kunci, sensor, relai) | Perangkat periferal untuk kontrol akses | ✅ Ya |
| Profile_M | Dokumen | Metadata, analitik event, deteksi objek | Perangkat analitik, klien metadata | ✅ Ya |
Untuk deskripsi lengkap setiap profil dan fiturnya, kunjungi Profil ONVIF.
Note
Untuk detail tentang fungsi dan metode layanan yang tersedia yang telah diimplementasikan dalam pustaka ini, lihat kode sumber di onvif/services/. Atau jika Anda ingin membaca dalam format yang lebih baik, kunjungi onvif-python AI Wiki.
Berikut adalah daftar layanan ONVIF yang diimplementasikan dan didukung oleh pustaka ini, bersama dengan tautan ke spesifikasi resmi, definisi layanan, dan berkas skema seperti yang dirujuk dari Spesifikasi Pengembang ONVIF. Tabel ini memberikan gambaran cepat tentang fitur ONVIF yang tersedia dan dokumentasi teknisnya untuk tujuan integrasi dan pengembangan.
| Layanan | Spesifikasi | Definisi Layanan | Skema | Status |
|---|---|---|---|---|
| Device Management | Dokumen | devicemgmt.wsdl | onvif.xsd common.xsd |
✅ Lengkap |
| Events | Dokumen | event.wsdl | onvif.xsd common.xsd |
|
| Access Control | Dokumen | accesscontrol.wsdl | types.xsd | ✅ Lengkap |
| Access Rules | Dokumen | accessrules.wsdl | - | ✅ Lengkap |
| Action Engine | Dokumen | actionengine.wsdl | - | ✅ Lengkap |
| Analytics | Dokumen | analytics.wsdl | rules.xsd humanbody.xsd humanface.xsd |
✅ Lengkap |
| Application Management | Dokumen | appmgmt.wsdl | - | ✅ Lengkap |
| Authentication Behavior | Dokumen | authenticationbehavior.wsdl | - | ✅ Lengkap |
| Cloud Integration | Dokumen | cloudintegration.yaml | - | ❌ Belum |
| Credential | Dokumen | credential.wsdl | - | ✅ Lengkap |
| Device IO | Dokumen | deviceio.wsdl | - | ✅ Lengkap |
| Display | Dokumen | display.wsdl | - | ✅ Lengkap |
| Door Control | Dokumen | doorcontrol.wsdl | - | ✅ Lengkap |
| Imaging | Dokumen | imaging.wsdl | - | ✅ Lengkap |
| Media | Dokumen | media.wsdl | - | ✅ Lengkap |
| Media 2 | Dokumen | media2.wsdl | - | ✅ Lengkap |
| Provisioning | Dokumen | provisioning.wsdl | - | ✅ Lengkap |
| PTZ | Dokumen | ptz.wsdl | - | ✅ Lengkap |
| Receiver | Dokumen | receiver.wsdl | - | ✅ Lengkap |
| Recording Control | Dokumen | recording.wsdl | - | ✅ Lengkap |
| Recording Search | Dokumen | search.wsdl | - | ✅ Lengkap |
| Replay Control | Dokumen | replay.wsdl | - | ✅ Lengkap |
| Resource Query | Dokumen | - | - | ❌ Ada ide? |
| Schedule | Dokumen | schedule.wsdl | - | ✅ Lengkap |
| Security | Dokumen | advancedsecurity.wsdl | - | ✅ Lengkap |
| Thermal | Dokumen | thermal.wsdl | radiometry.xsd | ✅ Lengkap |
| Uplink | Dokumen | uplink.wsdl | - | ✅ Lengkap |
| WebRTC | Dokumen | - | - | ❌ Ada ide? |
Layanan ONVIF didefinisikan oleh binding WSDL. Di pustaka ini, ada dua pola utama:
Sebagian besar layanan ONVIF menggunakan satu binding, dipetakan langsung ke satu endpoint. Layanan ini diakses melalui metode klien yang sederhana, dan binding/xAddr selalu diketahui dari kapabilitas perangkat.
Contoh:
client.devicemgmt() # DeviceBinding
client.media() # MediaBinding
client.ptz() # PTZBinding
...✅ Layanan ini dianggap tetap (fixed) dan selalu diakses langsung.
Beberapa layanan ONVIF memiliki banyak binding dalam WSDL yang sama. Biasanya mencakup:
- Binding root (titik masuk utama)
- Satu atau lebih sub-binding, yang ditemukan atau dibuat secara dinamis (misalnya setelah pembuatan subscription/konfigurasi)
Contoh:
-
Events
- Root:
EventBinding - Sub-binding:
PullPointSubscriptionBinding(dibuat viaCreatePullPointSubscription)SubscriptionManagerBinding(mengelola subscription yang ada)NotificationProducerBinding
Penggunaan di pustaka:
client.events() # root binding client.pullpoint(subscription) # sub-binding (dinamis, via SubscriptionReference.Address) client.subscription(subscription) # sub-binding (dinamis, via SubscriptionReference.Address) client.notification() # sub-binding accessor
- Root:
-
Security (Advanced Security)
- Root:
AdvancedSecurityServiceBinding - Sub-binding:
AuthorizationServerBindingKeystoreBindingJWTBindingDot1XBindingTLSServerBindingMediaSigningBinding
Penggunaan di pustaka:
client.security() # root binding client.authorizationserver(xaddr) # sub-binding accessor (memerlukan xAddr) client.keystore(xaddr) # .. client.jwt(xaddr) client.dot1x(xaddr) client.tlsserver(xaddr) client.mediasigning(xaddr)
- Root:
-
Analytics (Analitik)
- Root:
AnalyticsEngineBinding - Sub-binding:
RuleEngineBinding
Penggunaan di pustaka:
client.analytics() # root binding client.ruleengine() # sub-binding accessor
- Root:
- Layanan single binding: Selalu diakses langsung (mis.
client.media()). - Layanan multi-binding: Memiliki root + sub-binding. Root bersifat tetap; sub-binding mungkin memerlukan pembuatan dinamis atau xAddr eksplisit (mis.
client.pullpoint(subscription),client.authorizationserver(xaddr)).
-
Menambahkan mode debugging dengan raw XML pada permintaan dan respons SOAP.(c258162) -
Menambahkan fungsionalitas agar(65f2570)ONVIFClientdapat menerima layananwsdl_dirkustom. - Menambahkan program
ONVIF CLIuntuk berinteraksi langsung dengan perangkat ONVIF melalui terminal. - Menambahkan dukungan asynchronous (async/await) untuk operasi ONVIF non-blocking dan komunikasi perangkat secara bersamaan.
- Mengimplementasikan model data terstruktur untuk Skema ONVIF menggunakan xsdata.
- Mengintegrasikan xmltodict untuk parsing dan konversi XML yang lebih sederhana.
- Meningkatkan dokumentasi dengan referensi API dan diagram (bukan dari AI Wiki).
- Menambahkan lebih banyak contoh penggunaan untuk fitur lanjutan.
- Menambahkan benchmarking dan metrik performa.
- Menambahkan template konfigurasi perangkat yang dikontribusikan oleh komunitas.
- Mengimplementasikan layanan ONVIF yang hilang atau masih parsial.
- Menambahkan fungsi untuk mengekspos perangkat ONVIF (untuk tujuan debugging oleh komunitas).
-
onvif-products-directory: Proyek ini adalah suite agregasi dan manajemen data ONVIF yang komprehensif, dirancang untuk membantu pengembang menelusuri, menganalisis, dan memproses informasi produk yang sesuai ONVIF dari ratusan produsen di seluruh dunia. Menyediakan struktur terpadu untuk data perangkat, klien, dan perusahaan, sehingga mempermudah riset, membangun integrasi, dan menghasilkan statistik untuk analisis ekosistem ONVIF.
-
(segera) onvif-rest-server: Server API RESTful untuk perangkat ONVIF, memungkinkan integrasi mudah manajemen perangkat ONVIF, streaming media, dan kemampuan lainnya ke aplikasi dan layanan web.
-
(segera) onvif-mcp: Server Model Context Protocol (MCP) untuk ONVIF, menyediakan API terpadu dan integrasi berbasis konteks untuk perangkat, klien, dan layanan ONVIF. Memungkinkan otomatisasi tingkat lanjut, orkestrasi, dan interoperabilitas di seluruh perangkat dan klien yang sesuai ONVIF.
Jika Anda mencari pustaka Python ONVIF lainnya, berikut beberapa alternatif:
-
python-onvif-zeep: Pustaka klien ONVIF sinkron untuk Python, menggunakan Zeep untuk komunikasi SOAP. Berfokus pada kompatibilitas dan kemudahan penggunaan untuk operasi perangkat ONVIF standar. Cocok untuk skrip dan aplikasi yang tidak memerlukan async.
-
python-onvif-zeep-async: Pustaka klien ONVIF asinkron untuk Python, berbasis Zeep dan asyncio. Cocok untuk aplikasi yang memerlukan operasi non-blok dan komunikasi perangkat secara konkuren. Mendukung banyak layanan ONVIF dan aktif dipelihara.
- Spesifikasi Resmi ONVIF
- Repositori Resmi ONVIF Specs
- Indeks Operasi Layanan ONVIF 2.0
- Contoh Penggunaan
Proyek ini adalah implementasi open-source independen dari spesifikasi ONVIF. Proyek ini tidak berafiliasi, tidak didukung, dan tidak disponsori oleh ONVIF atau perusahaan anggotanya.
- Nama “ONVIF” dan logo ONVIF adalah merek dagang terdaftar milik organisasi ONVIF.
- Setiap referensi ke ONVIF dalam proyek ini dibuat semata-mata untuk tujuan menjelaskan interoperabilitas dengan perangkat dan layanan yang sesuai ONVIF.
- Penggunaan merek ONVIF di repositori ini murni nominatif dan tidak menyiratkan kemitraan, sertifikasi, atau status resmi apa pun.
- Proyek ini menyertakan berkas WSDL/XSD/HTML dari spesifikasi resmi ONVIF.
- Berkas-berkas tersebut adalah © ONVIF dan didistribusikan ulang di sini untuk tujuan interoperabilitas.
- Semua hak atas spesifikasi ONVIF adalah milik ONVIF.
Jika Anda memerlukan perangkat atau klien yang tersertifikasi sesuai ONVIF, silakan merujuk ke daftar produk konforman ONVIF. Untuk referensi otoritatif dan spesifikasi ONVIF resmi terbaru, silakan lihat Spesifikasi Resmi ONVIF.
Proyek ini dilisensikan di bawah Lisensi MIT. Lihat LICENSE untuk detailnya.