https://github.com/unpoller/unifi
Go Library (w/ structures) to grab data from a Ubiquiti UniFi Controller
https://github.com/unpoller/unifi
go-modules go-unifi unifi-api unifi-controller unifi-poller
Last synced: 8 months ago
JSON representation
Go Library (w/ structures) to grab data from a Ubiquiti UniFi Controller
- Host: GitHub
- URL: https://github.com/unpoller/unifi
- Owner: unpoller
- License: mit
- Created: 2019-01-24T02:10:27.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2025-04-07T23:27:32.000Z (9 months ago)
- Last Synced: 2025-04-12T16:58:47.823Z (9 months ago)
- Topics: go-modules, go-unifi, unifi-api, unifi-controller, unifi-poller
- Language: Go
- Homepage: https://golift.io/discord
- Size: 542 KB
- Stars: 126
- Watchers: 10
- Forks: 26
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Go Library: `unifi`
It connects to a Unifi Controller, given a url, username and password. Returns
an authenticated http Client you may use to query the device for data. Also
contains some built-in methods for de-serializing common client and device
data. The data is provided in a large struct you can consume in your application.
This library is designed to PULL data FROM the controller. It has no methods that
update settings or change things on the controller.
[Someone expressed interest](https://github.com/unpoller/unifi/issues/31) in
adding methods to update data, and I'm okay with that. I'll even help add them.
[Tell me what you want to do](https://github.com/unpoller/unifi/issues/new), and we'll make it happen.
Pull requests, feature requests, code reviews and feedback are welcomed!
Here's a working example:
```golang
package main
import "log"
import "github.com/unpoller/unifi/v5"
func main() {
c := *unifi.Config{
User: "admin",
Pass: "superSecret1234",
URL: "https://127.0.0.1:8443/",
// Log with log.Printf or make your own interface that accepts (msg, fmt)
ErrorLog: log.Printf,
DebugLog: log.Printf,
}
uni, err := unifi.NewUnifi(c)
if err != nil {
log.Fatalln("Error:", err)
}
sites, err := uni.GetSites()
if err != nil {
log.Fatalln("Error:", err)
}
clients, err := uni.GetClients(sites)
if err != nil {
log.Fatalln("Error:", err)
}
devices, err := uni.GetDevices(sites)
if err != nil {
log.Fatalln("Error:", err)
}
log.Println(len(sites), "Unifi Sites Found: ", sites)
log.Println(len(clients), "Clients connected:")
for i, client := range clients {
log.Println(i+1, client.ID, client.Hostname, client.IP, client.Name, client.LastSeen)
}
log.Println(len(devices.USWs), "Unifi Switches Found")
log.Println(len(devices.USGs), "Unifi Gateways Found")
log.Println(len(devices.UAPs), "Unifi Wireless APs Found:")
for i, uap := range devices.UAPs {
log.Println(i+1, uap.Name, uap.IP)
}
}
```