- Notifications
You must be signed in to change notification settings - Fork3
ubnt-unifi is a Node.js module that allows you to listen to events from and call methods on the UniFi API 📡
License
hobbyquaker/ubnt-unifi
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
ubnt-unifi is a Node.js module that allows you to listen for events from and call methods on the UniFi API (UniFi isUbiquiti Networks wifi controller software).
This is a fork ofunifi-events, heavily modified to suite my needs.
- Node.js v6 or later
- UniFi-Controller v5
$ npm install ubnt-unifi
constUnifi=require('ubnt-unifi')constunifi=newUnifi({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).});// Listen for any eventunifi.on('**',function(data){console.log(this.event,data);});
ubnt-unifi usesEventEmitter2 and namespaced events.
These events indicate the status of the connection to the UniFi controller
ctrl.connect
- emitted when the connection to the controller is establishedctrl.disconnect
- emitted when the connection to the controller is lostctrl.error
-ctrl.reconnect
-
This JSON file shows all possible events:https://demo.ubnt.com/manage/locales/en/eventStrings.json?v=5.4.11.2The prefixEVT_
gets stripped, the first underscore is replaced by the namespace separating dot, everything isconverted to lower case. Some events such asEVT_AD_LOGIN
(Admin Login) are not emitted by the UniFi Controller.
wu.connected
- Wireless User connectedwu.disconnected
- Wireless User disconnectedwu.roam
- Wireless User roamed from one AP to anotherwu.roam_radio
- Wireless User changed channel on the same AP
wg.connected
- Wireless Guest connectedwg.disconnected
- Wireless Guest disconnectedwg.roam
- Wireless Guest roamed from one AP to anotherwg.roam_radio
- Wireless Guest changed channel on the same APwg.authorization_ended
- Wireless Guest became unauthorised
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);});
Connect to the UniFi controller. Is called in the constructor, so normally you don't need to call it (except if you wantto re-establish a connection that was closed before).
Closes the connection to the UniFi controller
Following methods operate on the configured site. The path gets prefixed withhttps://<host>:<port>/api/s/<site>/
if it does not start with a slash, otherwise it gets prefixed withhttps://<host>:<port>
. To explore available API endpoints you can use theUniFi-API-browser.
These methods are returning a promise.
Do a HTTP GET on the API.
Examples:
- Get a list of all clients
unifi.get('stat/sta').then(console.log);
- Get infos of a specific client
unifi.get('stat/user/<mac>').then(console.log);
- Get alarms
unifi.get('list/alarm').then(console.log);
- Get wireless network IDs
unifi.get('rest/wlanconf').then(res=>{res.data.forEach(wlan=>{console.log(wlan.name,wlan._id);});});
- Get device IDs
unifi.get('stat/device').then(res=>{res.data.forEach(dev=>{console.log(dev.name,dev._id);});});
Do a HTTP DELETE on the API.
Do a HTTP POST on the API.
Examples:
- Enable all LEDs of all APs
unifi.post('set/setting/mgmt',{led_enabled:true}).then(console.log);
- Disable a WLAN
unifi.post('upd/wlanconf/<wlan_id>',{enabled:false}).then(console.log);
Do a HTTP PUT on the API.
Examples:
- Enable LED of AP
unifi.put('rest/device/<device_id>',{led_override:'on'}).then(console.log);
MIT © 2018Sebastian Raff
MIT © 2017-2018oznu