Kelas PHP yang menyediakan akses ke API Aplikasi Jaringan UniFi Ubiquiti.
Kelas ini digunakan oleh alat API Browser kami, yang dapat ditemukan di sini.
Paket ini dapat diinstal secara manual atau dengan menggunakan composer/packagist agar mudah disertakan dalam proyek Anda. Lihat petunjuk instalasi di bawah untuk lebih jelasnya.
Perangkat lunak | Versi |
---|---|
Aplikasi/pengontrol Jaringan UniFi | 5.XX, 6.XX, 7.XX, 8.XX ( 8.5.6 dikonfirmasi ) |
OS UniFi | 3.X, 4.X ( 4.1.15 dikonfirmasi ) |
server dengan:
PHP 7.4.0 atau lebih tinggi (gunakan versi 1.1.83 untuk PHP 7.3.x dan lebih rendah)
Modul PHP json dan PHP cURL
diuji pada Apache 2.4 dengan PHP 7.4.27 dan cURL 7.60.0 dan dengan PHP 8.3.11 dan cURL 7.81.0
konektivitas jaringan langsung antara server ini dan host dan port (biasanya port TCP 8443 atau port 443 untuk UniFi OS) tempat Pengontrol UniFi berjalan
Anda harus menggunakan akun dengan izin akses lokal untuk mengakses UniFi Controller API melalui kelas ini
jangan gunakan akun UniFi Cloud dan jangan aktifkan 2FA untuk akun yang Anda gunakan dengan kelas ini
Dukungan untuk pengontrol berbasis UniFi OS telah ditambahkan pada versi 1.1.47. Perangkat/layanan ini telah diverifikasi berfungsi:
Router Impian UniFi (UDR)
Mesin Impian UniFi (UDM)
Mesin Impian UniFi Pro (UDM PRO)
UniFi Cloud Key Gen2 (UCK G2), firmware versi 2.0.24 atau lebih tinggi
UniFi Cloud Key Gen2 Plus (UCK G2 Plus), firmware versi 2.0.24 atau lebih tinggi
UniFi Ekspres (UX)
Tembok Impian UniFi (UDW)
UniFi Cloud Gateway Ultra (UCG-Ultra)
UniFi CloudKey Enterprise (CK-Perusahaan)
Gerbang Benteng Perusahaan UniFi (EFG)
Hosting UniFi Resmi, detailnya di sini
Kelas secara otomatis mendeteksi konsol UniFi OS dan menyesuaikan URL serta beberapa fungsi/metode yang sesuai.
Pengontrol berbasis OS UniFi mengharuskan Anda terhubung menggunakan port 443, bukan 8443 yang digunakan untuk pengontrol "berbasis perangkat lunak". Jika kode Anda menerapkan validasi ketat terhadap URL yang diteruskan ke konstruktor, harap sesuaikan logika Anda untuk mengizinkan URL tanpa akhiran port atau dengan port 443 saat bekerja dengan pengontrol berbasis OS UniFi.
Saat menghubungkan ke gateway berbasis OS UniFi melalui antarmuka WAN, Anda perlu membuat aturan firewall khusus untuk mengizinkan hal ini. Lihat postingan blog ini di situs web Art of WiFi untuk detail selengkapnya: https://artofwifi.net/blog/how-to-access-the-unifi-controller-by-wan-ip-or-hostname-on-a- udm-pro
Pendekatan "aturan firewall khusus" yang dijelaskan di sana adalah metode yang disarankan.
Saat meningkatkan dari versi sebelum 1.1.84 , harap:
pastikan Anda menggunakan PHP 7.4 atau lebih tinggi
uji klien dengan kode Anda untuk melihat perubahan apa pun yang dapat menyebabkan gangguan; metode kelas sekarang memiliki petunjuk tipe parameter ketat dan tipe respons yang dapat merusak kode Anda dalam kasus tertentu di mana tipe yang salah diteruskan atau tipe respons yang berbeda diharapkan kembali
Gunakan Komposer, Git atau cukup Unduh Rilis untuk menginstal kelas klien API.
Metode instalasi yang disukai adalah melalui composer. Ikuti petunjuk instalasi ini jika Anda belum menginstal composer.
Setelah composer terinstal, cukup jalankan perintah ini dari shell di direktori proyek Anda:
komposer memerlukan art-of-wifi/unifi-api-client
Atau tambahkan paket secara manual ke file composer.json Anda:
{"membutuhkan": {"art-of-wifi/unifi-api-client": "^1.1"}}
Terakhir, pastikan untuk menyertakan composer autoloader dalam kode Anda jika framework Anda belum melakukan hal ini untuk Anda:
/** * memuat kelas menggunakan composer autoloader */require_once 'vendor/autoload.php';
Jalankan perintah git
berikut dari shell di direktori proyek Anda:
git klon https://github.com/Art-of-WiFi/UniFi-API-client.git
Ketika git selesai mengkloning, sertakan file yang berisi kelas seperti itu dalam kode Anda:
/** * memuat kelas secara langsung alih-alih menggunakan pemuat otomatis komposer */require_once 'path/to/src/Client.php';
Jika Anda memilih untuk tidak menggunakan composer atau git, cukup unduh paketnya, ekstrak file zipnya, lalu sertakan file yang berisi kelas tersebut dalam kode Anda seperti:
/** * memuat kelas secara langsung alih-alih menggunakan pemuat otomatis komposer */require_once 'path/to/src/Client.php';
Contoh dasar cara menggunakan kelas:
/** * memuat kelas menggunakan composer autoloader */require_once 'vendor/autoload.php';/** * inisialisasi kelas koneksi UniFi API, masuk ke pengontrol dan meminta pengumpulan alarm * (contoh ini mengasumsikan Anda memiliki sudah menetapkan nilai yang benar ke variabel yang digunakan) */$unifi_connection = new UniFi_APIClient($controller_user, $controller_password, $controller_url, $site_id, $controller_version, true);$login = $unifi_connection->login();$results = $unifi_connection->list_alarms(); // mengembalikan array PHP yang berisi objek alarm
Silakan merujuk ke direktori examples/
untuk beberapa contoh lebih rinci yang dapat digunakan sebagai titik awal untuk kode PHP Anda sendiri.
Dalam contoh di atas, $site_id
adalah "nama" situs pendek (biasanya sepanjang 8 karakter) yang terlihat di URL saat mengelola situs di Pengontrol Jaringan UniFi. Misalnya dengan URL ini:
https://<controller IP address or FQDN>:8443/manage/site/jl3z2shm/dashboard
jl3z2shm
adalah "nama" situs pendek dan nilai yang akan ditetapkan ke $site_id.
Parameter opsional ke-6 yang diteruskan ke konstruktor dalam contoh di atas ( true
), mengaktifkan validasi sertifikat SSL pengontrol yang dinonaktifkan secara default. Sangat disarankan untuk mengaktifkan fitur ini di lingkungan produksi di mana Anda memiliki sertifikat SSL valid yang diinstal pada Pengontrol UniFi yang dikaitkan dengan FQDN di parameter controller_url
. Opsi ini ditambahkan dengan klien API versi 1.1.16.
Menggunakan akun administrator ( $controller_user
dalam contoh di atas) dengan izin baca-saja dapat membatasi visibilitas pada properti koleksi/objek tertentu. Lihat masalah ini dan masalah ini untuk contoh ketika kata sandi WPA2 tidak terlihat untuk akun administrator hanya-baca .
Kelas saat ini mendukung fungsi/metode berikut untuk mengakses API Pengontrol UniFi. Daftar ini diurutkan berdasarkan abjad. Silakan merujuk ke komentar di kode sumber untuk rincian lebih lanjut tentang masing-masing fungsi/metode, tujuannya, dan parameternya masing-masing.
adopsi_perangkat()
perangkat_adopsi_lanjutan()
arsip_alarm()
tugaskan_admin_yang ada()
otorisasi_tamu()
blok_sta()
batal_bergulir_peningkatan()
check_controller_update()
periksa_firmware_update()
cmd_stat()
hitungan_alarm()
buat_apgroup()
buat_dynamicdns()
buat_firewallgroup()
buat_hotspotop()
buat_jaringan()
buat_radius_akun()
buat_pengguna()
buat_grup pengguna()
buat_voucher()
buat_wlan()
permintaan_api_kustom()
hapus_apgroup()
hapus_perangkat()
hapus_firewallgroup()
hapus_jaringan()
hapus_radius_akun()
hapus_situs()
hapus_grup pengguna()
hapus_wlan()
nonaktifkan_ap()
nonaktifkan_wlan()
edit_apgroup()
edit_klien_fixedip()
edit_nama_klien()
edit_firewallgroup()
edit_grup pengguna()
perpanjang_guest_validity()
lupa_sta()
hasilkan_cadangan()
menghasilkan_situs_cadangan()
dapatkan_kelas_versi()
dapatkan_cookie()
dapatkan_cookie()
dapatkan_curl_koneksi_waktu habis()
get_curl_http_version()
dapatkan_curl_method()
dapatkan_curl_request_timeout()
dapatkan_curl_request_timeout()
get_curl_ssl_verify_host()
get_curl_ssl_verify_peer()
dapatkan_debug()
get_is_unifi_os()
dapatkan_pesan_kesalahan_terakhir()
dapatkan_hasil_terakhir_mentah()
dapatkan_situs()
undangan_admin()
led_override()
daftar_admin()
daftar_semua_admin()
daftar_alarm()
daftar_aps()
daftar_cadangan()
daftar_klien()
daftar_kode_negara()
daftar_saluran_saat ini()
daftar_dasbor()
daftar_nama_perangkat_pemetaan()
daftar_status_perangkat()
daftar_perangkat()
daftar_perangkat_basic()
daftar_dinamis()
daftar_acara()
daftar_ekstensi()
daftar_firewallgroups()
daftar_firmware()
daftar_tamu()
daftar_kesehatan()
daftar_hotspotop()
daftar_diketahui_rogueaps()
daftar_networkconf()
daftar_portconf()
daftar_portforward_stats()
daftar_portforwarding()
daftar_radius_akun()
daftar_radius_profil()
daftar_diri()
daftar_pengaturan()
daftar_situs()
daftar_tag()
daftar_pengguna()
daftar_wlan_groups()
daftar_wlanconf()
temukan_ap()
login()
keluar()
pindahkan_perangkat()
power_cycle_switch_port()
reboot_cloudkey()
ganti nama_ap()
cabut_admin()
pencabutan_voucher()
set_ap_pengaturan radio()
set_ap_wlangroup()
set_koneksi_waktu habis()
set_cookie()
set_curl_http_version()
set_curl_request_timeout()
set_curl_ssl_verifikasi_host()
set_curl_ssl_verify_peer()
set_debug()
set_device_settings_base()
set_dynamicdns()
set_elemen_adopsi()
set_guestlogin_settings()
set_guestlogin_settings_base()
set_ips_settings_base()
set_is_unifi_os()
set_location_ap() (tidak digunakan lagi tetapi masih tersedia sebagai alias)
set_networksettings_base()
set_radius_akun_basis()
set_permintaan_metode()
set_request_timeout()
set_situs()
set_situs_konektivitas()
set_situs_negara()
set_situs_tamu_akses()
set_situs_lokal()
set_situs_mgmt()
set_nama_situs()
set_situs_ntp()
set_situs_snmp()
set_nama_sta()
set_sta_note()
set_super_identitas_settings_base()
set_super_mgmt_settings_base()
set_super_smtp_settings_base()
set_grup pengguna()
set_wlan_mac_filter()
set_wlansettings()
set_wlansettings_base()
situs_leds()
spektrum_scan()
spektrum_scan_state()
mulai_bergulir_peningkatan()
stat_5 menit_aps()
stat_5 menit_gateway()
stat_5 menit_situs()
stat_5 menit_pengguna()
stat_allusers()
stat_auths()
stat_klien()
stat_harian_aps()
stat_daily_gateway()
stat_harian_situs()
stat_harian_pengguna()
status_status_penuh()
stat_jam_aps()
stat_hourly_gateway()
stat_situs_jam()
stat_jam_pengguna()
stat_ips_events()
stat_bulanan_aps()
stat_bulanan_gateway()
stat_situs_bulanan()
stat_bulanan_pengguna()
stat_pembayaran()
stat_sesi()
stat_situs()
stat_speedtest_results()
stat_sta_sessions_latest()
status_status()
stat_sysinfo()
stat_voucher()
batalkan otorisasi_tamu()
buka blokir_sta()
unset_location_ap() (tidak digunakan lagi tetapi masih tersedia sebagai alias)
tingkatkan_perangkat()
tingkatkan_perangkat_eksternal()
Masih ada pekerjaan yang harus dilakukan untuk menambah fungsionalitas dan lebih meningkatkan kegunaan kelas ini, jadi semua saran/komentar dipersilakan. Silakan gunakan bagian Masalah GitHub atau forum Komunitas Ubiquiti (https://community.ubnt.com/t5/UniFi-Wireless/PHP-class-to-access-the-UniFi-controller-API-updates-and/td- p/1512870) untuk membagikan saran dan pertanyaan Anda.
Saat mengalami masalah dengan UniFi API menggunakan perpustakaan lain, cURL atau Tukang Pos, mohon jangan membuka Masalah. Permasalahan seperti ini akan segera ditutup. Silakan gunakan bagian Diskusi sebagai gantinya.
Jika Anda ingin menyumbangkan kode (perbaikan), silakan buka terbitan dan sertakan kode Anda di sana atau buat permintaan tarik.
Kelas ini didasarkan pada karya awal oleh pengembang berikut:
domwo: https://community.ui.com/questions/little-php-class-for-unifi-api/933d3fb3-b401-4499-993a-f9af079a4a3a
fbagnol: https://github.com/fbagnol/class.unifi.php
dan API yang diterbitkan oleh Ubiquiti:
https://dl.ui.com/unifi/8.0.26/unifi_sh_api
Banyak fungsi di kelas klien API ini tidak didukung secara resmi oleh Ubiquiti dan oleh karena itu, mungkin tidak didukung di versi UniFi Controller API yang akan datang.