คลาส PHP ที่ให้การเข้าถึง UniFi Network Application API ของ Ubiquiti
คลาสนี้ถูกใช้โดยเครื่องมือเบราว์เซอร์ API ของเรา ซึ่งสามารถพบได้ที่นี่
สามารถติดตั้งแพ็คเกจด้วยตนเองหรือโดยใช้ผู้แต่ง/ผู้ทำแพ็คเกจเพื่อให้รวมในโครงการของคุณได้ง่าย ดูคำแนะนำในการติดตั้งด้านล่างสำหรับรายละเอียดเพิ่มเติม
ซอฟต์แวร์ | รุ่นต่างๆ |
---|---|
แอปพลิเคชัน/ตัวควบคุมเครือข่าย UniFi | 5.XX, 6.XX, 7.XX, 8.XX ( 8.5.6 ได้รับการยืนยันแล้ว ) |
ระบบปฏิบัติการ UniFi | 3.X, 4.X ( 4.1.15 ได้รับการยืนยันแล้ว ) |
เซิร์ฟเวอร์ที่มี:
PHP 7.4.0 หรือสูงกว่า (ใช้เวอร์ชัน 1.1.83 สำหรับ PHP 7.3.x และต่ำกว่า)
โมดูล PHP json และ PHP cURL
ทดสอบบน Apache 2.4 ด้วย PHP 7.4.27 และ cURL 7.60.0 และกับ PHP 8.3.11 และ cURL 7.81.0
การเชื่อมต่อเครือข่ายโดยตรงระหว่างเซิร์ฟเวอร์นี้กับโฮสต์และพอร์ต (โดยปกติคือพอร์ต TCP 8443 หรือพอร์ต 443 สำหรับ UniFi OS) ที่ UniFi Controller กำลังทำงานอยู่
คุณ ต้อง ใช้ บัญชีที่มีสิทธิ์การเข้าถึงในเครื่อง เพื่อเข้าถึง UniFi Controller API ผ่านคลาสนี้
ห้ามใช้บัญชี UniFi Cloud และอย่าเปิดใช้งาน 2FA สำหรับบัญชีที่คุณใช้กับคลาสนี้
เพิ่มการรองรับคอนโทรลเลอร์ที่ใช้ UniFi OS ในเวอร์ชัน 1.1.47 อุปกรณ์/บริการเหล่านี้ได้รับการยืนยันแล้วว่าใช้งานได้:
เราเตอร์ UniFi Dream (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 หรือสูงกว่า
ยูนิไฟ เอ็กซ์เพรส (UX)
กำแพงความฝัน UniFi (UDW)
UniFi Cloud Gateway Ultra (UCG-อัลตร้า)
UniFi CloudKey Enterprise (CK-องค์กร)
เกตเวย์ป้อมปราการองค์กร UniFi (EFG)
UniFi Hosting อย่างเป็นทางการ รายละเอียดที่นี่
คลาสจะตรวจจับคอนโซล UniFi OS โดยอัตโนมัติและปรับ URL รวมถึงฟังก์ชัน/วิธีการต่างๆ ตามลำดับ
คอนโทรลเลอร์ที่ใช้ UniFi OS ต้องการให้คุณเชื่อมต่อโดยใช้พอร์ต 443 แทน 8443 ซึ่งใช้สำหรับคอนโทรลเลอร์ "ที่ใช้ซอฟต์แวร์" หากโค้ดของคุณใช้การตรวจสอบ URL ที่ส่งไปยังตัวสร้างอย่างเข้มงวด โปรดปรับตรรกะของคุณเพื่ออนุญาต URL ที่ไม่มีส่วนต่อท้ายพอร์ตหรือพอร์ต 443 เมื่อทำงานกับคอนโทรลเลอร์ที่ใช้ UniFi OS
เมื่อเชื่อมต่อกับเกตเวย์ที่ใช้ระบบปฏิบัติการ UniFi ผ่านอินเทอร์เฟซ WAN คุณจะต้องสร้างกฎไฟร์วอลล์เฉพาะเพื่ออนุญาตสิ่งนี้ ดูโพสต์บล็อกนี้บนเว็บไซต์ Art of WiFi สำหรับรายละเอียดเพิ่มเติม: 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 หรือเพียงดาวน์โหลด Release เพื่อติดตั้งคลาสไคลเอ็นต์ API
วิธีการติดตั้งที่ต้องการคือผ่านผู้แต่ง ปฏิบัติตามคำแนะนำในการติดตั้งเหล่านี้หากคุณยังไม่ได้ติดตั้งผู้แต่ง
เมื่อติดตั้งผู้แต่งแล้ว เพียงรันคำสั่งนี้จากเชลล์ในไดเร็กทอรีโปรเจ็กต์ของคุณ:
ผู้แต่งต้องการ art-of-wifi/unifi-api-client
หรือเพิ่มแพ็คเกจลงในไฟล์ composer.json ของคุณด้วยตนเอง:
{"ต้องการ": {"ศิลปะของ wifi/unifi-api-client": "^1.1"}}
สุดท้าย อย่าลืมรวม composer autoloader ไว้ในโค้ดของคุณ หากเฟรมเวิร์กของคุณยังไม่ได้ทำสิ่งนี้ให้คุณ:
/** * โหลดคลาสโดยใช้ตัวโหลดอัตโนมัติของผู้แต่ง */require_once 'vendor/autoload.php';
ดำเนินการคำสั่ง git
ต่อไปนี้จากเชลล์ในไดเร็กทอรีโปรเจ็กต์ของคุณ:
โคลนคอมไพล์ https://github.com/Art-of-WiFi/UniFi-API-client.git
เมื่อทำการโคลน git เสร็จแล้ว ให้รวมไฟล์ที่มีคลาสในลักษณะนี้ไว้ในโค้ดของคุณ:
/** * โหลดคลาสโดยตรงแทนที่จะใช้ตัวโหลดอัตโนมัติของผู้แต่ง */require_once 'path/to/src/Client.php';
หากคุณไม่ต้องการใช้ composer หรือ git เพียงดาวน์โหลดแพ็คเกจ แตกไฟล์ zip จากนั้นรวมไฟล์ที่มีคลาสนั้นไว้ในโค้ดของคุณ ดังนี้:
/** * โหลดคลาสโดยตรงแทนที่จะใช้ตัวโหลดอัตโนมัติของผู้แต่ง */require_once 'path/to/src/Client.php';
ตัวอย่างพื้นฐานวิธีใช้คลาส:
/** * โหลดคลาสโดยใช้ composer autoloader */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 ที่มีวัตถุแจ้งเตือน
โปรดดู examples/
ไดเร็กทอรีสำหรับตัวอย่างโดยละเอียดเพิ่มเติมซึ่งสามารถใช้เป็นจุดเริ่มต้นสำหรับโค้ด PHP ของคุณเอง
ในตัวอย่างข้างต้น $site_id
คือชื่อไซต์แบบสั้น (ปกติจะมีความยาว 8 อักขระ) ซึ่งมองเห็นได้ใน URL เมื่อจัดการไซต์ใน UniFi Network Controller ตัวอย่างเช่นกับ URL นี้:
https://<controller IP address or FQDN>:8443/manage/site/jl3z2shm/dashboard
jl3z2shm
คือ "ชื่อ" ของไซต์แบบสั้นและค่าที่จะกำหนดให้กับ $site_id
พารามิเตอร์ทางเลือกตัวที่ 6 ที่ส่งผ่านไปยังตัวสร้างในตัวอย่างด้านบน ( true
) ช่วยให้สามารถตรวจสอบความถูกต้องของใบรับรอง SSL ของคอนโทรลเลอร์ ซึ่งจะ ถูกปิดใช้งาน ตามค่าเริ่มต้น ขอแนะนำเป็นอย่างยิ่ง ให้เปิดใช้งานคุณสมบัตินี้ในสภาพแวดล้อมการผลิตที่คุณได้ติดตั้งใบรับรอง SSL ที่ถูกต้องบน UniFi Controller ที่เชื่อมโยงกับ FQDN ในพารามิเตอร์ controller_url
ตัวเลือกนี้ถูกเพิ่มเข้ากับไคลเอ็นต์ API เวอร์ชัน 1.1.16
การใช้บัญชีผู้ดูแลระบบ ( $controller_user
ในตัวอย่างด้านบน) ที่มีสิทธิ์ อ่านอย่างเดียว สามารถจำกัดการมองเห็นคุณสมบัติคอลเลกชัน/อ็อบเจ็กต์บางอย่างได้ ดูปัญหานี้และปัญหานี้สำหรับตัวอย่างที่บัญชีผู้ดูแลระบบ แบบอ่านอย่างเดียว ไม่สามารถมองเห็นรหัสผ่าน WPA2
ปัจจุบันคลาสรองรับฟังก์ชัน/วิธีการต่อไปนี้เพื่อเข้าถึง UniFi Controller API รายการนี้จัดเรียงตามตัวอักษร โปรดดูความคิดเห็นในซอร์สโค้ดสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับแต่ละฟังก์ชัน/วิธีการ วัตถุประสงค์ และพารามิเตอร์ที่เกี่ยวข้อง
นำมาใช้_อุปกรณ์()
ขั้นสูง_adopt_device()
archive_alarm()
มอบหมาย_ที่มีอยู่_ผู้ดูแลระบบ()
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()
custom_api_request()
ลบ_apgroup()
ลบ_อุปกรณ์()
ลบ_ไฟร์วอลล์กรุ๊ป()
ลบ_เครือข่าย()
ลบ_รัศมี_บัญชี()
ลบ_ไซต์()
ลบ_กลุ่มผู้ใช้()
ลบ_wlan()
Disable_ap()
Disable_wlan()
edit_apgroup()
edit_client_fixedip()
edit_client_name()
edit_firewallgroup()
edit_usergroup()
extension_guest_validity()
ลืม_sta()
Generate_Backup()
Generate_backup_site()
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_override()
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_dynamicdns()
รายการ_เหตุการณ์()
list_extension()
list_firewallgroups()
รายการ_เฟิร์มแวร์()
list_guests()
รายการ_สุขภาพ()
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_users()
list_wlan_groups()
list_wlanconf()
ค้นหาตำแหน่ง_ap()
เข้าสู่ระบบ()
ออกจากระบบ()
ย้าย_อุปกรณ์()
power_cycle_switch_port()
รีบูต_cloudkey()
เปลี่ยนชื่อ_ap()
เพิกถอน_admin()
เพิกถอน_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_ประเทศ()
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()
สเปกตรัม_สแกน()
สเปกตรัม_สแกน_สเตท()
start_rolling_upgrade()
stat_5นาที_aps()
stat_5นาที_เกตเวย์()
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_เหตุการณ์()
stat_monthly_aps()
stat_monthly_gateway()
stat_monthly_site()
stat_monthly_user()
stat_pay()
stat_sessions()
stat_sites()
stat_speedtest_results()
stat_sta_sessions_latest()
สถานะ_สถานะ()
stat_sysinfo()
stat_voucher()
unauthorize_guest()
unblock_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) เพื่อแบ่งปันข้อเสนอแนะและคำถามของคุณ
เมื่อประสบปัญหากับ UniFi API โดยใช้ไลบรารีอื่น cURL หรือบุรุษไปรษณีย์ โปรด อย่า เปิดปัญหา ปัญหาดังกล่าวจะถูกปิดทันที โปรดใช้ส่วนการสนทนาแทน
หากคุณต้องการสนับสนุนโค้ด (การปรับปรุง) โปรดเปิดปัญหาและรวมโค้ดของคุณไว้ที่นั่น ไม่เช่นนั้นจะสร้างคำขอดึงข้อมูล
คลาสนี้อิงจากงานเริ่มแรกของนักพัฒนาต่อไปนี้:
โดม: https://community.ui.com/questions/little-php-class-for-unifi-api/933d3fb3-b401-4499-993a-f9af079a4a3a
fbagnol: https://github.com/fbagnol/class.unifi.php
และ API ตามที่เผยแพร่โดย Ubiquiti:
https://dl.ui.com/unifi/8.0.26/unifi_sh_api
ฟังก์ชั่นหลายอย่างในคลาสไคลเอนต์ API นี้ไม่ได้รับการสนับสนุนอย่างเป็นทางการจาก Ubiquiti ดังนั้นจึงอาจไม่ได้รับการสนับสนุนใน UniFi Controller API เวอร์ชันอนาคต