فئة PHP التي توفر الوصول إلى Ubiquiti's UniFi Network Application API.
يتم استخدام هذه الفئة بواسطة أداة متصفح API الخاصة بنا، والتي يمكن العثور عليها هنا.
يمكن تثبيت الحزمة يدويًا أو باستخدام الملحن/الحزم لتضمينها بسهولة في مشاريعك. راجع تعليمات التثبيت أدناه لمزيد من التفاصيل.
برمجة | الإصدارات |
---|---|
تطبيق/وحدة تحكم شبكة UniFi | 5.XX، 6.XX، 7.XX، 8.XX ( تم تأكيد 8.5.6 ) |
نظام التشغيل يونيفي | 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) حيث يتم تشغيل وحدة تحكم UniFi
يجب عليك استخدام حساب يتمتع بأذونات الوصول المحلية للوصول إلى UniFi Controller API من خلال هذه الفئة
لا تستخدم حسابات UniFi Cloud ولا تقم بتمكين المصادقة الثنائية (2FA) للحسابات التي تستخدمها مع هذه الفئة
تمت إضافة دعم وحدات التحكم المستندة إلى نظام التشغيل UniFi اعتبارًا من الإصدار 1.1.47. تم التحقق من عمل هذه الأجهزة/الخدمات:
راوتر UniFi Dream (UDR)
آلة UniFi Dream (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 Ultra (UCG-Ultra)
UniFi CloudKey Enterprise (CK-Enterprise)
بوابة قلعة UniFi Enterprise (EFG)
استضافة UniFi الرسمية، التفاصيل هنا
يكتشف الفصل تلقائيًا وحدات تحكم UniFi OS ويضبط عناوين URL والعديد من الوظائف/الطرق وفقًا لذلك.
تتطلب وحدات التحكم المستندة إلى نظام التشغيل UniFi منك الاتصال باستخدام المنفذ 443 بدلاً من 8443 الذي يُستخدم لوحدات التحكم "القائمة على البرامج". إذا كانت التعليمات البرمجية الخاصة بك تنفذ تحققًا صارمًا من عنوان URL الذي تم تمريره إلى المُنشئ، فيرجى تعديل المنطق الخاص بك للسماح بعناوين URL بدون لاحقة منفذ أو مع منفذ 443 عند العمل مع وحدة تحكم قائمة على نظام التشغيل UniFi.
عند الاتصال ببوابة قائمة على نظام التشغيل UniFi من خلال واجهة WAN، فإنك تحتاج إلى إنشاء قاعدة جدار حماية محددة للسماح بذلك. راجع منشور المدونة هذا على موقع Art of 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.
طريقة التثبيت المفضلة هي من خلال الملحن. اتبع تعليمات التثبيت هذه إذا لم يكن برنامج الملحن مثبتًا لديك بالفعل.
بمجرد تثبيت الملحن، ما عليك سوى تنفيذ هذا الأمر من الصدفة الموجودة في دليل مشروعك:
يتطلب الملحن عميل art-of-wifi/unifi-api
أو قم بإضافة الحزمة يدويًا إلى ملف Composer.json الخاص بك:
{"تتطلب": {"art-of-wifi/unifi-api-client": "^1.1"}}
أخيرًا، تأكد من تضمين برنامج التحميل التلقائي للمؤلف في التعليمات البرمجية الخاصة بك إذا لم يكن إطار العمل الخاص بك يقوم بذلك نيابةً عنك بالفعل:
/** * تحميل الفصل باستخدام أداة التحميل التلقائي للملحن */require_once 'vendor/autoload.php';
قم بتنفيذ أمر git
التالي من Shell في دليل المشروع الخاص بك:
استنساخ بوابة https://github.com/Art-of-WiFi/UniFi-API-client.git
عند الانتهاء من استنساخ git، قم بتضمين الملف الذي يحتوي على الفئة كما هو الحال في التعليمات البرمجية الخاصة بك:
/** * قم بتحميل الفصل مباشرةً بدلاً من استخدام أداة التحميل التلقائي للملحن */require_once 'path/to/src/Client.php';
إذا كنت تفضل عدم استخدام Composer أو git، فما عليك سوى تنزيل الحزمة وفك ضغط الملف المضغوط، ثم تضمين الملف الذي يحتوي على الفئة في التعليمات البرمجية الخاصة بك كما يلي:
/** * قم بتحميل الفصل مباشرةً بدلاً من استخدام أداة التحميل التلقائي للملحن */require_once 'path/to/src/Client.php';
مثال أساسي لكيفية استخدام الفصل:
/** * تحميل الفصل باستخدام أداة التحميل التلقائي للملحن */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. على سبيل المثال مع عنوان URL هذا:
https://<controller IP address or FQDN>:8443/manage/site/jl3z2shm/dashboard
jl3z2shm
هو "اسم" الموقع القصير والقيمة المراد تخصيصها لـ $site_id.
تتيح المعلمة الاختيارية السادسة التي تم تمريرها إلى المُنشئ في المثال أعلاه ( true
) التحقق من صحة شهادة SSL الخاصة بوحدة التحكم والتي يتم تعطيلها افتراضيًا. يوصى بشدة بتمكين هذه الميزة في بيئات الإنتاج حيث لديك شهادة SSL صالحة مثبتة على وحدة تحكم UniFi المرتبطة بـ FQDN في المعلمة controller_url
. تمت إضافة هذا الخيار مع إصدار عميل API 1.1.16.
يمكن أن يؤدي استخدام حساب المسؤول ( $controller_user
في المثال أعلاه) مع أذونات القراءة فقط إلى تقييد الرؤية على خصائص مجموعة/كائن معينة. راجع هذه المشكلة وهذه المشكلة للحصول على مثال حيث لا تكون كلمة مرور WPA2 مرئية لحسابات المسؤول للقراءة فقط .
يدعم الفصل حاليًا الوظائف/الطرق التالية للوصول إلى UniFi Controller API. يتم فرز هذه القائمة أبجديا. يرجى الرجوع إلى التعليقات الموجودة في الكود المصدري للحصول على مزيد من التفاصيل حول كل من الوظائف/الطرق والغرض منها والمعلمات الخاصة بها.
اعتماد_الجهاز ()
Advanced_adopt_device()
archive_alarm()
تعيين_الموجود_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()
custom_api_request()
حذف_apgroup()
حذف_الجهاز()
delete_firewallgroup()
حذف_الشبكة ()
delete_radius_account()
حذف_الموقع ()
delete_usergroup()
حذف_wlan()
Disable_ap()
تعطيل_wlan()
تحرير_apgroup()
Edit_client_fixedip()
تحرير_اسم_العميل()
تحرير_firewallgroup()
تحرير_usergroup()
Extend_guest_validity()
ننسى_ستا ()
إنشاء_نسخة احتياطية ()
create_backup_site()
get_class_version()
get_cookie()
الحصول على ملفات تعريف الارتباط ()
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()
دعوة_admin()
led_override()
list_admins()
list_all_admins()
list_alarms()
list_aps()
list_backups()
قائمة العملاء ()
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_firewallgroups()
list_firmware()
قائمة_الضيوف()
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_wlan_groups()
list_wlanconf()
تحديد موقع_AP ()
تسجيل الدخول()
تسجيل الخروج ()
move_device()
power_cycle_switch_port()
reboot_cloudkey()
rename_ap()
إبطال_admin()
إبطال_قسيمة ()
set_ap_radiosettings()
set_ap_wlangroup()
set_connection_timeout()
مجموعة ملفات تعريف الارتباط ()
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_wlan_mac_filter()
set_wlansettings()
set_wlansettings_base()
site_leds()
Spectrum_Scan()
Spectrum_scan_state()
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_events()
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_status()
stat_sysinfo()
stat_voucher()
unauthorize_guest()
unblock_sta()
unset_locate_ap() (مهمل ولكنه لا يزال متاحًا كاسم مستعار)
ترقية_الجهاز()
ترقية_device_external()
لا يزال هناك عمل يتعين القيام به لإضافة وظائف وتحسين قابلية استخدام هذا الفصل، لذا نرحب بجميع الاقتراحات/التعليقات. الرجاء استخدام قسم مشكلات GitHub أو منتديات مجتمع Ubiquiti (https://community.ubnt.com/t5/UniFi-Wireless/PHP-class-to-access-the-UniFi-controller-API-updates-and/td- ص/1512870) لمشاركة اقتراحاتكم وأسئلتكم.
عند مواجهة مشكلات مع UniFi API باستخدام مكتبات أخرى، cURL أو Postman، يرجى عدم فتح مشكلة. سيتم إغلاق مثل هذه القضايا على الفور. الرجاء استخدام قسم المناقشات بدلا من ذلك.
إذا كنت ترغب في المساهمة بالكود (التحسينات)، فيرجى فتح مشكلة وإدراج الكود الخاص بك هناك أو إنشاء طلب سحب.
تعتمد هذه الفئة على العمل الأولي للمطورين التاليين:
دومو: https://community.ui.com/questions/little-php-class-for-unifi-api/933d3fb3-b401-4499-993a-f9af079a4a3a
فباجنول: https://github.com/fbagnol/class.unifi.php
وواجهة برمجة التطبيقات كما نشرتها Ubiquiti:
https://dl.ui.com/unifi/8.0.26/unifi_sh_api
العديد من الوظائف في فئة عميل API هذه غير مدعومة رسميًا بواسطة Ubiquiti، وعلى هذا النحو، قد لا تكون مدعومة في الإصدارات المستقبلية من UniFi Controller API.