Compare commits

...

4 Commits

Author SHA1 Message Date
malle-pietje
2c743563f8 API client class v1.1.61
- minor improvements of comments contents
- fixed naming error in comments for list_devices()
- updated supported controller versions in main README
- change variable names used from MBytes to megabytes for improved consistency
2020-11-26 13:19:53 +01:00
malle-pietje
32252e56d7 API client class v1.1.60
- minor syntax improvements based on Scrutinizer CI feedback
- added support for PATCH requests (for future use)
- completed updating method/function comments to PHPDoc format (PSR-5)
2020-11-12 11:09:37 +01:00
malle-pietje
120699d343 API client class v1.1.59
- added methods/functions to manage AP groups: list_apgroups(), create_apgroup(), edit_apgroup(), and delete_apgroup() (only supported with controller versions 6.0.X and higher)
- adapted code to handle the behavior of the new v2 API routes that were added with controller versions 6.0.X and higher
- merged PR #76 which adds methods/functions check_controller_update() and check_firmware_update(), contributed  by @brenard
- further work on updating method/function comments to PHPDoc format (PSR-5)
2020-10-26 09:51:41 +01:00
malle-pietje
d26cba1f66 API client class v1.1.58
- changed several references from UniFi SDN controller to UniFi Network controller
- added optional payload parameter to the list_alarms() method/function, contributed by @MikeSiekkinen through PR #68
- added example showing how to disable/enable a UniFi switch port
- updated restart_device() function/method, thanks go to @leonardogyn for reporting this
- added example to modify outlet settings on a UniFi SmartPower PDU Pro, thanks go to @panthergm for providing access
2020-10-22 14:23:29 +02:00
5 changed files with 1219 additions and 837 deletions

4
.gitignore vendored
View File

@@ -5,5 +5,9 @@
/vendor/
/composer.lock
# ignore phpdoc files
/build
.phpdoc-md
# ignore XML files
*.xml

View File

@@ -1,8 +1,8 @@
## UniFi Controller API client class
A PHP class that provides access to Ubiquiti's [**UniFi SDN Controller**](https://unifi-sdn.ui.com/) API, versions 4.X.X and 5.X.X of the UniFi SDN Controller software are supported (version 5.12.72 has been confirmed to work) as well as UbiOS-based controllers (version 5.12.59 has been confirmed to work). This class is used by our API browser tool which can be found [here](https://github.com/Art-of-WiFi/UniFi-API-browser).
A PHP class that provides access to Ubiquiti's [**UniFi Network Controller**](https://unifi-network.ui.com/) API, versions 4.X.X, 5.X.X and 6.0.X of the UniFi Network Controller software are supported (version 6.0.37 has been confirmed to work) as well as UbiOS-based controllers (version 5.12.59 has been confirmed to work). This class is used by our API browser tool which can be found [here](https://github.com/Art-of-WiFi/UniFi-API-browser).
The package can be installed manually or using composer/[packagist](https://packagist.org/packages/art-of-wifi/unifi-api-client) for easy inclusion in your projects.
The package can be installed manually or by using composer/[packagist](https://packagist.org/packages/art-of-wifi/unifi-api-client) for easy inclusion in your projects.
## Requirements
@@ -92,7 +92,7 @@ Please refer to the `examples/` directory for some more detailed examples which
#### IMPORTANT NOTES:
1. In the above example, `$site_id` is the short site "name" (usually 8 characters long) that is visible in the URL when managing the site in the UniFi SDN Controller. For example with this URL:
1. In the above example, `$site_id` is the short site "name" (usually 8 characters long) that is visible in the URL when managing the site in the UniFi Network Controller. For example with this URL:
`https://<controller IP address or FQDN>:8443/manage/site/jl3z2shm/dashboard`
@@ -114,6 +114,9 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
- cancel_rolling_upgrade()
- cmd_stat()
- count_alarms()
- check_controller_update()
- check_firmware_update()
- create_apgroup() (supported with controller versions 6.0.X and higher)
- create_dynamicdns()
- create_firewallgroup()
- create_hotspotop()
@@ -125,6 +128,7 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
- create_voucher()
- create_wlan()
- custom_api_request()
- delete_apgroup() (supported with controller versions 6.0.X and higher)
- delete_device()
- delete_firewallgroup()
- delete_network()
@@ -133,6 +137,7 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
- delete_usergroup()
- delete_wlan()
- disable_ap()
- edit_apgroup() (supported with controller versions 6.0.X and higher)
- edit_client_fixedip()
- edit_firewallgroup()
- edit_usergroup()
@@ -143,6 +148,7 @@ The class currently supports the following functions/methods to GET/POST/PUT/DEL
- list_admins()
- list_alarms()
- list_all_admins()
- list_apgroups() (supported with controller versions 6.0.X and higher)
- list_aps() (deprecated but still available as alias)
- list_backups()
- list_clients()

View File

@@ -0,0 +1,78 @@
<?php
/**
* PHP API usage example
*
* contributed by: Art of WiFi
* description: example PHP script to disable/enable the port of a UniFi switch
* note: Requires controller version 5.5.X or higher. This example assumes an override alreay exists for the desired port.
* To create a new port override simply append one (similar in structure to $updated_override) as needed to the
* $existing_overrides array
*/
/**
* using the composer autoloader
*/
require_once('vendor/autoload.php');
/**
* include the config file (place your credentials etc. there if not already present)
* see the config.template.php file for an example
*/
require_once('config.php');
/**
* the site to use to log in to the controller
*/
$site_id = '<enter your site id here>';
/**
* the MAC address of the UniFi switch to re-configure
*/
$device_mac = '<enter MAC address>';
/**
* index of port to modify/add
*/
$port_idx = 24;
/**
* port configuration id to apply when enabling/disabling the port
*
* NOTE:
* port configurations are available through list_portconf()
*/
$port_conf_id = '<enter _id value of desired port configuration>';
/**
* initialize the UniFi API connection class and log in to the controller and do our thing
*/
$unifi_connection = new UniFi_API\Client($controlleruser, $controllerpassword, $controllerurl, $site_id, $controllerversion, false);
$set_debug_mode = $unifi_connection->set_debug($debug);
$loginresults = $unifi_connection->login();
$data = $unifi_connection->list_devices($device_mac);
$device_id = $data[0]->device_id;
$existing_overrides = $data[0]->port_overrides;
foreach ($existing_overrides as $key => $value) {
if (!empty($value->port_idx) && $value->port_idx === $port_idx) {
$updated_override = [
'portconf_id' => $port_conf_id,
'port_idx' => $port_idx,
'poe_mode' => $value->poe_mode,
'name' => 'Your-port-name',
];
$existing_overrides[$key] = $updated_override;
}
}
$payload = [
'port_overrides' => $existing_overrides
];
$update_device = $unifi_connection->set_device_settings_base($device_id, $payload);
/**
* provide feedback in json format
*/
echo json_encode($update_device, JSON_PRETTY_PRINT);

View File

@@ -0,0 +1,84 @@
<?php
/**
* PHP API usage example
*
* contributed by: Art of WiFi
* description: example basic PHP script to toggle power of an outlet on the UniFi SmartPower PDU Pro,
* last tested with UniFi controller version 6.1.19
*/
require 'vendor/autoload.php';
/**
* include the config file (place your credentials etc. there if not already present)
* see the config.template.php file for an example
*/
require_once('config.php');
/**
* the site to use
*/
$site_id = 'default';
/**
* MAC of UniFi SmartPower PDU Pro to work with
*/
$pdu_mac = '<MAC ADDRESS of PDU>';
/**
* index value of the outlet to modify
*/
$outlet_idx = 20;
/**
* new values for relay_state (enable/disable Power) and cycle_enabled (disable/enable Modem Power Cycle) for the above outlet,
* values must be boolean (true/false)
*
* NOTES:
* - here you can choose to also change the name of the outlet
* - outlet overrides are structured like this:
* {
* "index": 1,
* "name": "USB Outlet 1",
* "cycle_enabled": false,
* "relay_state": true
* }
*/
$new_relay_state = true;
$new_cycle_enabled = false;
/**
* initialize the UniFi API connection class and log in to the controller and do our thing
*/
$unifi_connection = new UniFi_API\Client($controlleruser, $controllerpassword, $controllerurl, $site_id, $controllerversion);
$set_debug_mode = $unifi_connection->set_debug($debug);
$loginresults = $unifi_connection->login();
if ($loginresults) {
$pdu_details = $unifi_connection->list_devices($pdu_mac);
if (!empty($pdu_details) && property_exists($pdu_details[0], 'model') && $pdu_details[0]->model === 'USPPDUP' && property_exists($pdu_details[0], 'outlet_overrides')) {
$device_id = $pdu_details[0]->_id;
$outlet_overrides = $pdu_details[0]->outlet_overrides;
foreach ($outlet_overrides as $key => $value) {
if ($value->index === $outlet_idx) {
$outlet_overrides[$key]->relay_state = $new_relay_state;
$outlet_overrides[$key]->cycle_enabled = $new_cycle_enabled;
}
}
$pdu_update = $unifi_connection->set_device_settings_base($device_id, ['outlet_overrides' => $outlet_overrides]);
/**
* provide feedback in json format
*/
echo 'results:' . PHP_EOL . PHP_EOL;
echo json_encode($pdu_update, JSON_PRETTY_PRINT);
echo PHP_EOL;
} else {
echo 'not a PDU device?';
echo PHP_EOL;
}
} else {
echo 'we encountered a login error!';
echo PHP_EOL;
}

File diff suppressed because it is too large Load Diff