Home

Awesome

unifi-events

npm npm License

unifi-events is a Node.js module that allows you to listen for events from and call methods on the UniFi API (UniFi is Ubiquiti Networks wifi controller software).

Requirements

Installation

$ npm install unifi-events

Example

const Unifi = require('unifi-events')

const unifi = new Unifi({
  host: 'unifi',                        // The hostname or ip address of the unifi controller (default: 'unifi')
  port: 8443,                           // Port of the unifi controller (default: 8443)
  username: 'admin',                    // Username (default: 'admin').
  password: 'ubnt',                     // Password (default: 'ubnt').
  site: 'default',                      // The UniFi site to connect to (default: 'default').
  insecure: true,                       // Allow connections if SSL certificate check fails (default: false).
  unifios: false                        // For devices with UnifiOS turn this on
});

// Listen for any event
unifi.on('**', function (data) {
  console.log(this.event, data);
});

Events

unifi-events uses EventEmitter2 and namespaced events.

namespace ctrl

These events indicate the status of the connection to the UniFi controller

namespaces wu, wg, lu, ...

This JSON file shows all possible events: https://demo.ubnt.com/manage/locales/en/eventStrings.json?v=5.4.11.2 The prefix EVT_ gets stripped, the first underscore is replaced by the namespace separating dot, everything is converted to lower case. Some events such as EVT_AD_LOGIN (Admin Login) are not emitted by the UniFi Controller.

Example Wireless User events

Example Wireless Guest Events

Wildcard usage

Example listing for events on Guest Wireless networks only:

unifi.on('wg.*', function (data) {
  console.log(this.event, data);
})

Example listening for connected events on all network types:

unifi.on('*.connected', function (data) {
  console.log(this.event, data);
});

Methods

connect()

Connect to the UniFi controller. Is called in the constructor, so normally you don't need to call it (except if you want to re-establish a connection that was closed before).

close()

Closes the connection to the UniFi controller

UniFi API Methods

Following methods operate on the configured site. The path gets prefixed with https://<host>:<port>/api/s/<site>/ if it does not start with a slash, otherwise it gets prefixed with https://<host>:<port>. To explore available API endpoints you can use the UniFi-API-browser.

These methods are returning a promise.

get(path)

Do a HTTP GET on the API.

Examples:

unifi.get('stat/sta').then(console.log);
unifi.get('stat/user/<mac>').then(console.log);
unifi.get('list/alarm').then(console.log);
unifi.get('rest/wlanconf').then(res => {
    res.data.forEach(wlan => {
        console.log(wlan.name, wlan._id);
    });
});
unifi.get('stat/device').then(res => {
     res.data.forEach(dev => {
        console.log(dev.name, dev._id);
     });
});

del(path)

Do a HTTP DELETE on the API.

post(path, body)

Do a HTTP POST on the API.

Examples:

unifi.post('set/setting/mgmt', {led_enabled: true}).then(console.log);
unifi.post('upd/wlanconf/<wlan_id>', {enabled: false}).then(console.log);

put(path, body)

Do a HTTP PUT on the API.

Examples:

unifi.put('rest/device/<device_id>', {led_override: 'on'}).then(console.log);

License