Ubiquiti のUniFi ネットワーク アプリケーションAPI へのアクセスを提供する PHP クラス。
このクラスは、ここにある API ブラウザ ツールによって使用されます。
パッケージは手動でインストールすることも、composer/packagist を使用してプロジェクトに簡単に組み込むこともできます。詳細については、以下のインストール手順を参照してください。
ソフトウェア | バージョン |
---|---|
UniFi ネットワーク アプリケーション/コントローラー | 5.XX、6.XX、7.XX、8.XX( 8.5.6は確認済み) |
UniFi OS | 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 OS の場合はポート 443) との間の直接ネットワーク接続
このクラスを通じて UniFi コントローラー API にアクセスするには、ローカル アクセス許可を持つアカウントを使用する必要があります
UniFi Cloud アカウントを使用せず、このクラスで使用するアカウントに対して 2FA を有効にしないでください。
UniFi OS ベースのコントローラーのサポートは、バージョン 1.1.47 で追加されました。以下のデバイス/サービスは動作することが確認されています。
UniFi ドリーム ルーター (UDR)
UniFi ドリーム マシン (UDM)
UniFi ドリームマシン プロ (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 クラウド ゲートウェイ ウルトラ (UCG-Ultra)
UniFi CloudKey エンタープライズ (CK-Enterprise)
UniFi エンタープライズ フォートレス ゲートウェイ (EFG)
公式 UniFi ホスティング、詳細はこちら
このクラスは UniFi OS コンソールを自動的に検出し、それに応じて URL といくつかの関数/メソッドを調整します。
UniFi OS ベースのコントローラーでは、「ソフトウェア ベース」のコントローラーに使用されるポート8443ではなく、ポート443 を使用して接続する必要があります。独自のコードがコンストラクターに渡される URL の厳密な検証を実装している場合は、UniFi OS ベースのコントローラーを使用するときに、ポート サフィックスのない URL またはポート 443 を使用する URL を許可するようにロジックを調整してください。
WAN インターフェイス経由で UniFi OS ベースのゲートウェイに接続する場合、これを許可する特定のファイアウォール ルールを作成する必要があります。詳細については、Art of WiFi Web サイトのこのブログ投稿を参照してください: https://artofwifi.net/blog/how-to-access-the-unifi-controller-by-wan-ip-or-hostname-on-a- udm-プロ
そこで説明されている「カスタム ファイアウォール ルール」アプローチが推奨される方法です。
1.1.84より前のバージョンからアップグレードする場合は、次のことを行ってください。
PHP 7.4以降を使用していることを確認してください
コードを使用してクライアントをテストし、重大な変更がないかどうかを確認します。クラス メソッドには、厳密なパラメーター タイプのヒントと応答タイプが含まれるようになりました。これにより、間違ったタイプが渡されたり、別の応答タイプが返されることが期待される場合に、コードが破損する可能性があります。
Composer、Git を使用するか、単にリリースをダウンロードして API クライアント クラスをインストールします。
推奨されるインストール方法は、composer を使用することです。 Composer がまだインストールされていない場合は、次のインストール手順に従ってください。
Composer がインストールされたら、プロジェクト ディレクトリのシェルから次のコマンドを実行するだけです。
作曲家には art-of-wifi/unifi-api-client が必要です
または、パッケージをcomposer.jsonファイルに手動で追加します。
{"require": {"art-of-wifi/unifi-api-client": "^1.1"}}
最後に、フレームワークがまだこれを行っていない場合は、コードにコンポーザー オートローダーを必ず含めてください。
/** * Composer オートローダーを使用してクラスをロードします */require_once 'vendor/autoload.php';
プロジェクト ディレクトリのシェルから次のgit
コマンドを実行します。
git clone 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->list_alarms(); // アラーム オブジェクトを含む PHP 配列を返します
独自の PHP コードの開始点として使用できる、より詳細な例については、 examples/
ディレクトリを参照してください。
上記の例では、 $site_id
、UniFi ネットワーク コントローラーでサイトを管理するときに URL に表示される短いサイト「名前」(通常は 8 文字長) です。たとえば、次の URL を使用します。
https://<controller IP address or FQDN>:8443/manage/site/jl3z2shm/dashboard
jl3z2shm
短いサイトの「名前」であり、$site_id に割り当てる値です。
上記の例でコンストラクターに渡される 6 番目のオプションのパラメーター ( true
) は、デフォルトで無効になっているコントローラーの SSL 証明書の検証を有効にします。実稼働環境では、 controller_url
パラメータの FQDN に関連付けられている有効な SSL 証明書が UniFi コントローラにインストールされている場合、この機能を有効にすることを強くお勧めします。このオプションは、API クライアント バージョン 1.1.16 で追加されました。
読み取り専用権限を持つ管理者アカウント (上記の例では$controller_user
) を使用すると、特定のコレクション/オブジェクトのプロパティの表示が制限される可能性があります。 WPA2 パスワードが読み取り専用の管理者アカウントに表示されない例については、この問題とこの問題を参照してください。
このクラスは現在、UniFi コントローラー API にアクセスするための次の関数/メソッドをサポートしています。このリストはアルファベット順に並べられています。各関数/メソッド、その目的、およびそれぞれのパラメータの詳細については、ソース コードのコメントを参照してください。
Adopt_device()
Advanced_adopt_device()
アーカイブ_アラーム()
assign_existing_admin()
authorize_guest()
block_sta()
cancel_rolling_upgrade()
check_controller_update()
check_firmware_update()
cmd_stat()
count_alarms()
create_apgroup()
create_dynamicdns()
create_firewallgroup()
create_hotspotop()
create_network()
create_radius_account()
create_user()
create_usergroup()
create_voucher()
create_wlan()
カスタムapi_request()
削除_apgroup()
削除_デバイス()
削除_ファイアウォールグループ()
ネットワーク削除()
delete_radius_account()
削除サイト()
削除_ユーザーグループ()
delete_wlan()
disable_ap()
disable_wlan()
edit_apgroup()
edit_client_fixedip()
edit_client_name()
edit_firewallgroup()
edit_usergroup()
extend_guest_validity()
忘れた_スタ()
生成_バックアップ()
生成_バックアップ_サイト()
get_class_version()
get_cookie()
get_cookies()
get_curl_connection_timeout()
get_curl_http_version()
get_curl_method()
get_curl_request_timeout()
get_curl_request_timeout()
get_curl_ssl_verify_host()
get_curl_ssl_verify_peer()
get_debug()
get_is_unifi_os()
get_last_error_message()
get_last_results_raw()
get_site()
招待_管理者()
LED_オーバーライド()
list_admins()
list_all_admins()
list_alarms()
list_aps()
list_backups()
list_clients()
list_country_codes()
list_current_channels()
list_dashboard()
list_device_name_mappings()
list_device_states()
list_devices()
list_devices_basic()
list_dynamicdns()
list_events()
list_extension()
list_ファイアウォールグループ()
list_firmware()
list_guests()
list_health()
list_hotspotop()
list_known_rogueaps()
list_networkconf()
list_portconf()
list_portforward_stats()
list_portforwarding()
list_radius_accounts()
list_radius_profiles()
list_self()
list_settings()
list_sites()
list_tags()
list_users()
list_wlan_groups()
list_wlanconf()
ロケート_ap()
ログイン()
ログアウト()
move_device()
power_cycle_switch_port()
reboot_cloudkey()
rename_ap()
revoke_admin()
revoke_voucher()
set_ap_radiosettings()
set_ap_wlangroup()
set_connection_timeout()
set_cookies()
set_curl_http_version()
set_curl_request_timeout()
set_curl_ssl_verify_host()
set_curl_ssl_verify_peer()
set_debug()
set_device_settings_base()
set_dynamicdns()
set_element_adoption()
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_request_method()
set_request_timeout()
set_site()
set_site_connectivity()
set_site_country()
set_site_guest_access()
set_site_locale()
set_site_mgmt()
set_site_name()
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_usergroup()
set_wlan_mac_filter()
set_wlansettings()
set_wlansettings_base()
site_leds()
スペクトルスキャン()
spectrum_scan_state()
start_rolling_upgrade()
stat_5 minutes_aps()
stat_5 minutes_gateway()
stat_5 minutes_site()
stat_5 minutes_user()
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_payment()
stat_sessions()
stat_sites()
stat_speedtest_results()
stat_sta_sessions_latest()
stat_status()
stat_sysinfo()
stat_voucher()
unauthorize_guest()
unblock_sta()
unset_locate_ap() (非推奨ですが、エイリアスとして引き続き使用できます)
upgrade_device()
upgrade_device_external()
機能を追加し、このクラスの使いやすさをさらに向上させるためにやるべき作業がまだ残っているため、すべての提案/コメントを歓迎します。 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 で問題が発生した場合は、問題を開かないでください。このような問題は直ちにクローズされます。代わりにディスカッションセクションを使用してください。
コード (改善) に貢献したい場合は、問題を開いてそこにコードを含めるか、プル リクエストを作成してください。
このクラスは、次の開発者による初期の作業に基づいています。
ドムウォ: 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 の将来のバージョンではサポートされなくなる可能性があります。