unpoller_unpoller/core/unifi
David Newhall II a650fd1b26 Merge pull request #19 from golift/dn2_examples
Add json examples.
2019-07-05 02:25:19 -07:00
..
examples add comments 2019-07-05 02:16:45 -07:00
.gitignore Add dep constraints. 2019-01-23 23:50:59 -08:00
.travis.yml attempt to fix build again 2019-06-14 03:09:39 -07:00
Gopkg.lock add more site names. 2019-06-05 17:46:31 -07:00
Gopkg.toml Use new influx db lib path. Make Points() work with an interface. 2019-01-26 12:33:18 -08:00
LICENSE fix license again. 2019-01-26 15:52:41 -08:00
README.md fix readme 2019-06-14 21:05:13 -07:00
clients_influx.go Forgot one step. 2019-07-03 23:51:30 -07:00
clients_type.go Add placeholds for device names. 2019-07-03 22:47:00 -07:00
devices.go Get rid of intermediate logger. 2019-06-19 01:26:21 -07:00
site_influx.go Add full site name to sites. 2019-06-15 12:49:46 -07:00
site_type.go Add full site name to sites. 2019-06-15 12:49:46 -07:00
types.go update comment 2019-06-19 01:37:39 -07:00
types_test.go Re-arrange 2019-04-17 00:21:24 -07:00
uap_influx.go add the prefix back 2019-07-04 20:53:16 -07:00
uap_type.go Add usg port_table data. 2019-07-05 01:58:06 -07:00
unifi.go Add usg port_table data. 2019-07-05 01:58:06 -07:00
unifi_test.go Add site name to all assets. Include Travis build. 2019-06-05 17:12:59 -07:00
usg_influx.go Add usg port_table data. 2019-07-05 01:58:06 -07:00
usg_type.go Add usg port_table data. 2019-07-05 01:58:06 -07:00
usw_influx.go Update USW device collection. 2019-06-06 16:40:46 -07:00
usw_type.go Update USW device collection. 2019-06-06 16:40:46 -07:00

README.md

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 also contains methods to export the Unifi data in InfluxDB format, and this can be used as an example to base your own metrics collection methods.

If more features are requested, I'll certainly consider them. Do you need to do more than just collect data? Let me know! Pull requests and feedback are welcomed!

Here's a working example:

package main

import "log"
import "github.com/golift/unifi"

func main() {
	username := "admin"
	password := "superSecret1234"
	URL := "https://127.0.0.1:8443/"
	uni, err := unifi.NewUnifi(username, password, URL, false)
	if err != nil {
		log.Fatalln("Error:", err)
	}
	// Log with log.Printf or make your own interface that accepts (msg, fmt)
	uni.ErrorLog = log.Printf
	uni.DebugLog = log.Printf

	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)
	}
}