|
2 | 2 |
|
3 | 3 | [](https://github.com/nirsimetri/onvif-python?tab=MIT-1-ov-file) |
4 | 4 | [](https://deepwiki.com/nirsimetri/onvif-python) |
5 | | -[](https://github.com/nirsimetri/onvif-python/releases) |
| 5 | +[](https://github.com/nirsimetri/onvif-python/releases) |
6 | 6 | <br> |
7 | | -[](https://pypi.org/project/onvif-python/) |
| 7 | +[](https://pypi.org/project/onvif-python/) |
8 | 8 | [](https://clickpy.clickhouse.com/dashboard/onvif-python) |
9 | 9 |
|
10 | 10 | Apakah Anda kesulitan menemukan pustaka Python ONVIF yang mendukung perangkat Anda? |
@@ -109,32 +109,64 @@ Jelajahi penggunaan lanjutan dan operasi spesifik layanan di folder [`examples/` |
109 | 109 | > [!IMPORTANT] |
110 | 110 | > 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](https://www.onvif.org/about/introduction-to-onvif-course). Harap dicatat bahwa kami tidak didukung atau disponsori oleh ONVIF, lihat [Pemberitahuan Hukum](#legal-notice) untuk detailnya. |
111 | 111 |
|
112 | | -## Verifikasi Perangkat: Mengapa Menggunakan GetCapabilities Terlebih Dahulu? |
| 112 | +## Penemuan Layanan: Memahami Kapabilitas Perangkat |
113 | 113 |
|
114 | 114 | > [!WARNING] |
115 | | -> Sebelum melakukan operasi apa pun pada perangkat ONVIF, sangat disarankan untuk memverifikasi kemampuan dan layanan apa yang tersedia dan didukung oleh perangkat menggunakan metode `GetCapabilities` dari instance layanan `devicemgmt()`. Langkah ini memastikan bahwa aplikasi Anda hanya berinteraksi dengan fitur yang benar-benar diimplementasikan oleh perangkat, mencegah kesalahan, dan meningkatkan kompatibilitas. |
| 115 | +> Sebelum melakukan operasi apa pun pada perangkat ONVIF, sangat disarankan untuk menemukan layanan mana yang tersedia dan didukung oleh perangkat. Pustaka ini secara otomatis menggunakan `GetServices` selama inisialisasi untuk menemukan endpoint layanan, tetapi Anda juga dapat melakukan query layanan secara manual untuk informasi detail termasuk kapabilitas. |
116 | 116 |
|
117 | | -**Mengapa memverifikasi kemampuan perangkat dengan GetCapabilities?** |
| 117 | +**Mengapa menemukan layanan perangkat?** |
118 | 118 |
|
119 | | -- **Keanekaragaman Perangkat:** Tidak semua perangkat ONVIF mendukung setiap kemampuan atau layanan. Kemampuan dapat bervariasi berdasarkan produsen, model, firmware, atau konfigurasi. |
120 | | -- **Pencegahan Kesalahan:** Mencoba menggunakan fitur yang tidak didukung dapat mengakibatkan permintaan gagal, pengecualian, atau perilaku yang tidak terdefinisi. |
121 | | -- **Deteksi Fitur Dinamis:** Perangkat dapat mengaktifkan atau menonaktifkan kemampuan dari waktu ke waktu (misalnya, setelah pembaruan firmware atau perubahan konfigurasi). |
122 | | -- **Integrasi yang Dioptimalkan:** Dengan memeriksa kemampuan yang tersedia, aplikasi Anda dapat menyesuaikan alur kerja dan UI untuk mencocokkan fitur perangkat yang sebenarnya. |
| 119 | +- **Keanekaragaman Perangkat:** Tidak semua perangkat ONVIF mendukung setiap layanan. Layanan yang tersedia dapat bervariasi berdasarkan produsen, model, firmware, atau konfigurasi. |
| 120 | +- **Pencegahan Kesalahan:** Mencoba menggunakan layanan yang tidak didukung dapat mengakibatkan permintaan gagal, pengecualian, atau perilaku yang tidak terdefinisi. |
| 121 | +- **Deteksi Fitur Dinamis:** Perangkat dapat mengaktifkan atau menonaktifkan layanan dari waktu ke waktu (misalnya, setelah pembaruan firmware atau perubahan konfigurasi). |
| 122 | +- **Integrasi yang Dioptimalkan:** Dengan memeriksa layanan yang tersedia, aplikasi Anda dapat menyesuaikan alur kerja dan UI untuk mencocokkan fitur perangkat yang sebenarnya. |
123 | 123 |
|
124 | | -**Cara memverifikasi kemampuan perangkat:** |
| 124 | +**Cara kerja penemuan layanan di pustaka ini:** |
125 | 125 |
|
126 | | -Panggil `GetCapabilities` pada instance `devicemgmt()` Anda: |
| 126 | +`ONVIFClient` secara otomatis memanggil `GetServices` selama inisialisasi untuk membangun peta layanan. Peta ini digunakan secara internal untuk menyelesaikan endpoint layanan: |
127 | 127 |
|
128 | 128 | ```python |
129 | 129 | from onvif import ONVIFClient |
130 | 130 |
|
131 | 131 | client = ONVIFClient("192.168.1.17", 8000, "admin", "admin123") |
| 132 | + |
| 133 | +# Akses layanan yang ditemukan |
| 134 | +print(client.services) |
| 135 | +# Contoh: [{'Namespace': 'http://www.onvif.org/ver10/device/wsdl', 'XAddr': '...', 'Version': {...}}, ...] |
| 136 | + |
| 137 | +# Periksa peta layanan (namespace -> pemetaan XAddr) |
| 138 | +print(client._service_map) |
| 139 | +# Contoh: {'http://www.onvif.org/ver10/media/wsdl': 'http://192.168.1.17:8000/onvif/Media', ...} |
| 140 | +``` |
| 141 | + |
| 142 | +**Dapatkan informasi layanan detail dengan kapabilitas:** |
| 143 | + |
| 144 | +Jika Anda memerlukan informasi kapabilitas detail untuk setiap layanan, panggil `GetServices` dengan `IncludeCapability=True`: |
| 145 | + |
| 146 | +```python |
| 147 | +device = client.devicemgmt() |
| 148 | +services = device.GetServices(IncludeCapability=True) |
| 149 | + |
| 150 | +for service in services: |
| 151 | + print(f"Layanan: {service.Namespace}") |
| 152 | + print(f"Endpoint: {service.XAddr}") |
| 153 | + print(f"Versi: {service.Version.Major}.{service.Version.Minor}") |
| 154 | + if hasattr(service, 'Capabilities') and service.Capabilities: |
| 155 | + print(f"Kapabilitas: {service.Capabilities}") |
| 156 | +``` |
| 157 | + |
| 158 | +**Alternatif: Gunakan GetCapabilities untuk kompatibilitas legacy:** |
| 159 | + |
| 160 | +Untuk kompatibilitas mundur atau ketika Anda memerlukan gambaran cepat tentang kategori layanan utama, Anda masih dapat menggunakan `GetCapabilities`: |
| 161 | + |
| 162 | +```python |
132 | 163 | capabilities = client.devicemgmt().GetCapabilities() |
133 | 164 | print(capabilities) |
134 | | -# Contoh: {'Media': {'XAddr': 'http://192.168.1.17:8000/onvif/media_service', ...}, 'PTZ': {...}, ...} |
| 165 | +# Contoh: {'Media': {'XAddr': '...', ...}, 'PTZ': {...}, 'Events': {...}, ...} |
135 | 166 | ``` |
136 | 167 |
|
137 | | -Tinjau kamus yang dikembalikan untuk menentukan kemampuan dan layanan (misalnya, Media, PTZ, Analitik) yang tersedia sebelum melakukan operasi lebih lanjut. |
| 168 | +> [!TIP] |
| 169 | +> Pustaka menangani penemuan layanan secara otomatis, jadi Anda biasanya tidak perlu memanggil `GetServices` secara manual kecuali Anda memerlukan informasi kapabilitas detail atau ingin menyegarkan daftar layanan setelah perubahan konfigurasi perangkat. |
138 | 170 |
|
139 | 171 | ## Perangkat yang Diuji |
140 | 172 |
|
|
0 commit comments