一個 PHP 類,提供對 Ubiquiti 的UniFi 網路應用程式API 的存取。
我們的 API 瀏覽器工具使用該類,可以在此處找到該工具。
該套件可以手動安裝或使用composer/packagist安裝,以便輕鬆包含在您的專案中。有關更多詳細信息,請參閱下面的安裝說明。
軟體 | 版本 |
---|---|
UniFi 網路應用程式/控制器 | 5.XX、6.XX、7.XX、8.XX( 8.5.6已確認) |
UniFi作業系統 | 3.X、4.X( 4.1.15已確認) |
伺服器具有:
PHP 7.4.0或更高版本(適用於 PHP 7.3.x 及更低版本,使用版本 1.1.83)
PHP json 和 PHP cURL 模組
在 Apache 2.4 上使用 PHP 7.4.27 和 cURL 7.60.0 以及 PHP 8.3.11 和 cURL 7.81.0 進行測試
此伺服器與執行 UniFi 控制器的主機和連接埠(通常為 TCP 連接埠 8443 或 UniFi 作業系統的連接埠 443)之間的直接網路連接
您必須使用具有本機存取權的帳戶才能透過此類存取UniFi控制器API
請勿使用 UniFi Cloud 帳戶,並且不要為您在此類中使用的帳戶啟用 2FA
自版本 1.1.47 起新增了對基於 UniFi 作業系統的控制器的支援。這些設備/服務已被驗證可以正常運作:
UniFi 夢想路由器 (UDR)
UniFi 夢想機器 (UDM)
UniFi Dream Machine Pro (UDM PRO)
UniFi Cloud Key Gen2 (UCK G2),韌體版本 2.0.24 或更高版本
UniFi Cloud Key Gen2 Plus (UCK G2 Plus),韌體版本 2.0.24 或更高版本
UniFi Express (UX)
UniFi 夢想牆 (UDW)
UniFi 雲端閘道 Ultra (UCG-Ultra)
UniFi CloudKey 企業版(CK-企業版)
UniFi 企業堡壘閘道 (EFG)
官方 UniFi 託管,詳細資訊請參閱此處
這類會自動偵測 UniFi OS 控制台並相應調整 URL 和多個函數/方法。
基於 UniFi 作業系統的控制器要求您使用連接埠443而不是用於「基於軟體」的控制器的8443進行連線。如果您自己的程式碼對傳遞給建構函數的 URL 實施嚴格驗證,請調整您的邏輯,以在使用基於 UniFi 作業系統的控制器時允許不帶連接埠後綴或帶有連接埠 443 的 URL。
透過 WAN 介面連接到基於 UniFi 作業系統的閘道時,您需要建立特定的防火牆規則以允許這樣做。有關更多詳細信息,請參閱WiFi 藝術網站上的這篇博文:https://artofwifi.net/blog/how-to-access-the-unifi-controller-by-wan-ip-or-hostname-on -a- udm-pro
其中所描述的「自訂防火牆規則」方法是推薦的方法。
從1.1.84之前的版本升級時,請:
確保您使用的是 PHP 7.4或更高版本
使用您的程式碼測試客戶端是否有任何重大變更;類別方法現在具有嚴格的參數類型提示和回應類型,在某些情況下,如果傳遞了錯誤的類型或期望返回不同的回應類型,可能會破壞您的程式碼
使用 Composer、Git 或直接下載版本來安裝 API 用戶端類別。
首選的安裝方法是透過composer。如果您尚未安裝 Composer,請按照這些安裝說明進行操作。
安裝 Composer 後,只需從專案目錄中的 shell 執行以下命令:
作曲家需要 art-of-wifi/unifi-api-client
或手動將套件新增至您的composer.json檔案:
{"require": {"art-of-wifi/unifi-api-client": "^1.1"}}
最後,如果您的框架尚未為您執行此操作,請務必在程式碼中包含 Composer 自動載入器:
/** * 使用 Composer 自動載入器載入類別 */require_once 'vendor/autoload.php';
從專案目錄中的 shell 執行以下git
命令:
git 複製 https://github.com/Art-of-WiFi/UniFi-API-client.git
當 git 完成克隆後,在程式碼中包含包含該類別的文件,如下所示:
/** * 直接載入類,而不是使用 Composer 自動載入器 */require_once 'path/to/src/Client.php';
如果您不想使用 Composer 或 git,只需下載包,解壓縮 zip 文件,然後將包含該類別的文件包含在您的程式碼中,如下所示:
/** * 直接載入類,而不是使用 Composer 自動載入器 */require_once 'path/to/src/Client.php';
如何使用該類別的基本範例:
/** * 使用 Composer 自動載入器載入類別 */require_once 'vendor/autoload.php';/** * 初始化 UniFi API 連接類,登入控制器並請求警報集合 * (此範例假設您有已為所使用的變數分配了正確的值) */$unifi_connection = new UniFi_APIClient($controller_user, $controller_password, $controller_url, $site_id, $controller_version, true);$login = $unifi_connection->login();$results = $unifi_connection->login();$results = $unifi_connection->login((); ->list_alarms(); // 傳回包含警報物件的 PHP 陣列
請參閱examples/
目錄以獲取一些更詳細的範例,這些範例可以用作您自己的 PHP 程式碼的起點。
在上面的範例中, $site_id
是短網站「名稱」(通常為 8 個字元長),在 UniFi 網路控制器中管理網站時在 URL 中可見。例如,使用以下 URL:
https://<controller IP address or FQDN>:8443/manage/site/jl3z2shm/dashboard
jl3z2shm
是短網站「名稱」以及分配給 $site_id 的值。
在上例中傳遞給建構函式的第 6 個可選參數 ( true
) 用於啟用控制器 SSL 憑證的驗證,否則預設會停用該憑證。強烈建議在生產環境中啟用此功能,在該環境中,UniFi 控制器上安裝了有效的 SSL 證書,該證書與controller_url
參數中的 FQDN 關聯。此選項是在 API 用戶端版本 1.1.16 中新增的。
使用具有唯讀權限的管理員帳號(上例中的$controller_user
)可以限制某些集合/物件屬性的可見性。請參閱此問題和此問題,以了解 WPA2 密碼對於唯讀管理員帳戶不可見的範例。
該類別目前支援以下函數/方法來存取 UniFi 控制器 API。此列表按字母順序排序。請參閱原始程式碼中的註釋,以了解每個函數/方法、其用途以及各自參數的更多詳細資訊。
採用_設備()
高階採用設備()
archive_alarm()
分配_現有_管理員()
授權訪客()
block_sta()
取消滾動升級()
檢查控制器更新()
檢查韌體更新()
cmd_stat()
計數警報()
建立_apgroup()
建立動態網域名稱()
建立_防火牆組()
建立熱點()
建立網路()
建立半徑帳戶()
建立使用者()
建立使用者群組()
創建優惠券()
建立無線網路()
自訂 API 請求()
刪除_apgroup()
刪除設備()
刪除_防火牆群組()
刪除網路()
刪除半徑帳戶()
刪除站點()
刪除用戶群組()
刪除無線網路()
禁用_ap()
禁用_wlan()
編輯_apgroup()
edit_client_fixedip()
編輯客戶端名稱()
編輯_防火牆組()
編輯使用者群組()
延長訪客有效性()
忘記斯塔()
產生備份()
產生備份站點()
取得類別版本()
取得cookie()
取得cookies()
get_curl_connection_timeout()
get_curl_http_version()
取得_curl_方法()
get_curl_request_timeout()
get_curl_request_timeout()
get_curl_ssl_verify_host()
get_curl_ssl_verify_peer()
獲取調試()
取得_is_unifi_os()
get_last_error_message()
get_last_results_raw()
取得站點()
邀請管理員()
led_override()
列表管理員()
列出所有管理員()
列表_警報()
列表_aps()
清單備份()
清單_客戶()
列表國家/地區代碼()
list_current_channels()
清單儀表板()
list_device_name_mappings()
清單_設備_狀態()
清單設備()
列表_設備_基本()
list_dynamicdns()
列表事件()
列表擴展名()
清單_防火牆群組()
列表_韌體()
名單賓客()
列表_健康狀況()
列表_熱點()
list_known_rogueaps()
列表_網路配置()
list_portconf()
list_portforward_stats()
列表_連接埠轉送()
list_radius_accounts()
list_radius_profiles()
列表_self()
列表設定()
清單站點()
列表標籤()
列表_用戶()
list_wlan_groups()
list_wlanconf()
定位_ap()
登入()
註銷()
行動裝置()
power_cycle_switch_port()
重新啟動_雲端金鑰()
重新命名_ap()
撤銷_admin()
撤銷_優惠券()
set_ap_radiosettings()
set_ap_wlangroup()
設定連線逾時()
設定cookies()
set_curl_http_version()
set_curl_request_timeout()
set_curl_ssl_verify_host()
set_curl_ssl_verify_peer()
設定_調試()
set_device_settings_base()
set_dynamicdns()
設定元素採用()
set_guestlogin_settings()
set_guestlogin_settings_base()
set_ips_settings_base()
set_is_unifi_os()
set_locate_ap()(已棄用,但仍可作為別名)
set_networksettings_base()
set_radius_account_base()
設定請求方法()
設定請求超時()
設定站點()
設定站點連線()
設定站點國家/地區()
set_site_guest_access()
設定站點區域設定()
設定站台管理()
設定網站名稱()
set_site_ntp()
set_site_snmp()
set_sta_name()
set_sta_note()
set_super_identity_settings_base()
set_super_mgmt_settings_base()
set_super_smtp_settings_base()
設定用戶群組()
set_wlan_mac_filter()
set_wlan設定()
set_wlansettings_base()
site_leds()
頻譜掃描()
頻譜掃描狀態()
開始滾動升級()
stat_5分鐘_aps()
stat_5分鐘_gateway()
stat_5分鐘_站點()
stat_5分鐘_用戶()
stat_allusers()
stat_auths()
stat_client()
stat_daily_aps()
stat_daily_gateway()
stat_daily_site()
stat_daily_user()
stat_full_status()
stat_hourly_aps()
stat_hourly_gateway()
stat_hourly_site()
stat_hourly_user()
stat_ips_events()
stat_monthly_aps()
stat_monthly_gateway()
stat_monthly_site()
stat_monthly_user()
統計付款()
stat_sessions()
統計站點()
stat_speedtest_results()
stat_sta_sessions_latest()
stat_status()
stat_sysinfo()
stat_voucher()
取消授權_guest()
解鎖_sta()
unset_locate_ap()(已棄用,但仍可作為別名)
升級設備()
升級設備外部()
仍有工作要做來添加功能並進一步提高此類的可用性,因此歡迎所有建議/評論。請使用 GitHub 問題部分或 Ubiquiti 社區論壇 (https://community.ubnt.com/t5/UniFi-Wireless/PHP-class-to-access-the-UniFi-controller-API-updates-and/td- p/ 1512870)分享您的建議和問題。
當使用其他函式庫、cURL 或 Postman 時遇到 UniFi API 問題時,請不要開啟問題。此類問題將立即關閉。請改用討論部分。
如果您想貢獻程式碼(改進),請開啟一個問題並在其中包含您的程式碼,或建立一個拉取請求。
此類基於以下開發人員的初始工作:
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
以及 Ubiquiti 發布的 API:
https://dl.ui.com/unifi/8.0.26/unifi_sh_api
此 API 用戶端類別中的許多功能並未得到 Ubiquiti 的正式支持,因此 UniFi 控制器 API 的未來版本可能不支援。