Add usg port_table data.
This commit is contained in:
		
							parent
							
								
									46683f841d
								
							
						
					
					
						commit
						2f16177afc
					
				| 
						 | 
					@ -176,7 +176,6 @@ type UAP struct {
 | 
				
			||||||
		UplinkRemotePort int      `json:"uplink_remote_port"`
 | 
							UplinkRemotePort int      `json:"uplink_remote_port"`
 | 
				
			||||||
	} `json:"uplink"`
 | 
						} `json:"uplink"`
 | 
				
			||||||
	VapTable []struct {
 | 
						VapTable []struct {
 | 
				
			||||||
		SiteName          string `json:"-"`
 | 
					 | 
				
			||||||
		AnomaliesBarChart struct {
 | 
							AnomaliesBarChart struct {
 | 
				
			||||||
			HighTCPLatency    FlexInt `json:"high_tcp_latency"`
 | 
								HighTCPLatency    FlexInt `json:"high_tcp_latency"`
 | 
				
			||||||
			HighTCPPacketLoss FlexInt `json:"high_tcp_packet_loss"`
 | 
								HighTCPPacketLoss FlexInt `json:"high_tcp_packet_loss"`
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -105,15 +105,9 @@ func (u *Unifi) GetDevices(sites []Site) (*Devices, error) {
 | 
				
			||||||
		// Add SiteName to each device asset.
 | 
							// Add SiteName to each device asset.
 | 
				
			||||||
		for i := range loopDevices.UAPs {
 | 
							for i := range loopDevices.UAPs {
 | 
				
			||||||
			loopDevices.UAPs[i].SiteName = site.Desc + " (" + site.Name + ")"
 | 
								loopDevices.UAPs[i].SiteName = site.Desc + " (" + site.Name + ")"
 | 
				
			||||||
			for j := range loopDevices.UAPs[i].VapTable {
 | 
					 | 
				
			||||||
				loopDevices.UAPs[i].VapTable[j].SiteName = site.Desc + " (" + site.Name + ")"
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for i := range loopDevices.USGs {
 | 
							for i := range loopDevices.USGs {
 | 
				
			||||||
			loopDevices.USGs[i].SiteName = site.Desc + " (" + site.Name + ")"
 | 
								loopDevices.USGs[i].SiteName = site.Desc + " (" + site.Name + ")"
 | 
				
			||||||
			for j := range loopDevices.USGs[i].NetworkTable {
 | 
					 | 
				
			||||||
				loopDevices.USGs[i].NetworkTable[j].SiteName = site.Desc + " (" + site.Name + ")"
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		for i := range loopDevices.USWs {
 | 
							for i := range loopDevices.USWs {
 | 
				
			||||||
			loopDevices.USWs[i].SiteName = site.Desc + " (" + site.Name + ")"
 | 
								loopDevices.USWs[i].SiteName = site.Desc + " (" + site.Name + ")"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
package unifi
 | 
					package unifi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"strconv"
 | 
						"strings"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	influx "github.com/influxdata/influxdb1-client/v2"
 | 
						influx "github.com/influxdata/influxdb1-client/v2"
 | 
				
			||||||
| 
						 | 
					@ -10,6 +10,7 @@ import (
 | 
				
			||||||
// Points generates Unifi Gateway datapoints for InfluxDB.
 | 
					// Points generates Unifi Gateway datapoints for InfluxDB.
 | 
				
			||||||
// These points can be passed directly to influx.
 | 
					// These points can be passed directly to influx.
 | 
				
			||||||
func (u USG) Points() ([]*influx.Point, error) {
 | 
					func (u USG) Points() ([]*influx.Point, error) {
 | 
				
			||||||
 | 
						now := time.Now()
 | 
				
			||||||
	tags := map[string]string{
 | 
						tags := map[string]string{
 | 
				
			||||||
		"id":                     u.ID,
 | 
							"id":                     u.ID,
 | 
				
			||||||
		"mac":                    u.Mac,
 | 
							"mac":                    u.Mac,
 | 
				
			||||||
| 
						 | 
					@ -19,16 +20,12 @@ func (u USG) Points() ([]*influx.Point, error) {
 | 
				
			||||||
		"site_name":              u.SiteName,
 | 
							"site_name":              u.SiteName,
 | 
				
			||||||
		"adopted":                u.Adopted.Txt,
 | 
							"adopted":                u.Adopted.Txt,
 | 
				
			||||||
		"name":                   u.Name,
 | 
							"name":                   u.Name,
 | 
				
			||||||
		"adopt_ip":               u.AdoptIP,
 | 
					 | 
				
			||||||
		"adopt_url":              u.AdoptURL,
 | 
					 | 
				
			||||||
		"cfgversion":             u.Cfgversion,
 | 
							"cfgversion":             u.Cfgversion,
 | 
				
			||||||
		"config_network_ip":      u.ConfigNetwork.IP,
 | 
							"config_network_ip":      u.ConfigNetwork.IP,
 | 
				
			||||||
		"config_network_type":    u.ConfigNetwork.Type,
 | 
							"config_network_type":    u.ConfigNetwork.Type,
 | 
				
			||||||
		"connect_request_ip":     u.ConnectRequestIP,
 | 
							"connect_request_ip":     u.ConnectRequestIP,
 | 
				
			||||||
		"connect_request_port":   u.ConnectRequestPort,
 | 
							"connect_request_port":   u.ConnectRequestPort,
 | 
				
			||||||
		"default":                u.Default.Txt,
 | 
					 | 
				
			||||||
		"device_id":              u.DeviceID,
 | 
							"device_id":              u.DeviceID,
 | 
				
			||||||
		"discovered_via":         u.DiscoveredVia,
 | 
					 | 
				
			||||||
		"guest_token":            u.GuestToken,
 | 
							"guest_token":            u.GuestToken,
 | 
				
			||||||
		"inform_ip":              u.InformIP,
 | 
							"inform_ip":              u.InformIP,
 | 
				
			||||||
		"known_cfgversion":       u.KnownCfgversion,
 | 
							"known_cfgversion":       u.KnownCfgversion,
 | 
				
			||||||
| 
						 | 
					@ -38,42 +35,39 @@ func (u USG) Points() ([]*influx.Point, error) {
 | 
				
			||||||
		"outdoor_mode_override":  u.OutdoorModeOverride,
 | 
							"outdoor_mode_override":  u.OutdoorModeOverride,
 | 
				
			||||||
		"serial":                 u.Serial,
 | 
							"serial":                 u.Serial,
 | 
				
			||||||
		"type":                   u.Type,
 | 
							"type":                   u.Type,
 | 
				
			||||||
		"version_incompatible":   u.VersionIncompatible.Txt,
 | 
							"usg_caps":               u.UsgCaps.Txt,
 | 
				
			||||||
		"usg_caps":               strconv.FormatFloat(u.UsgCaps, 'f', 6, 64),
 | 
					 | 
				
			||||||
		"speedtest-status-saved": u.SpeedtestStatusSaved.Txt,
 | 
							"speedtest-status-saved": u.SpeedtestStatusSaved.Txt,
 | 
				
			||||||
		"wan1_up":                u.Wan1.Up.Txt,
 | 
							"wan1_up":                u.Wan1.Up.Txt,
 | 
				
			||||||
		"wan2_up":                u.Wan2.Up.Txt,
 | 
							"wan2_up":                u.Wan2.Up.Txt,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	fields := map[string]interface{}{
 | 
						fields := map[string]interface{}{
 | 
				
			||||||
		"ip":                             u.IP,
 | 
							"ip":                             u.IP,
 | 
				
			||||||
		"bytes":                          u.Bytes,
 | 
							"bytes":                          u.Bytes.Val,
 | 
				
			||||||
		"last_seen":                      u.LastSeen,
 | 
							"last_seen":                      u.LastSeen.Val,
 | 
				
			||||||
		"license_state":                  u.LicenseState,
 | 
							"license_state":                  u.LicenseState,
 | 
				
			||||||
		"fw_caps":                        u.FwCaps,
 | 
							"fw_caps":                        u.FwCaps.Val,
 | 
				
			||||||
		"guest-num_sta":                  u.GuestNumSta,
 | 
							"guest-num_sta":                  u.GuestNumSta.Val,
 | 
				
			||||||
		"rx_bytes":                       u.RxBytes.Val,
 | 
							"rx_bytes":                       u.RxBytes.Val,
 | 
				
			||||||
		"tx_bytes":                       u.TxBytes.Val,
 | 
							"tx_bytes":                       u.TxBytes.Val,
 | 
				
			||||||
		"uptime":                         u.Uptime,
 | 
							"uptime":                         u.Uptime.Val,
 | 
				
			||||||
		"considered_lost_at":             u.ConsideredLostAt,
 | 
					 | 
				
			||||||
		"next_heartbeat_at":              u.NextHeartbeatAt,
 | 
					 | 
				
			||||||
		"roll_upgrade":                   u.Rollupgrade.Val,
 | 
							"roll_upgrade":                   u.Rollupgrade.Val,
 | 
				
			||||||
		"state":                          u.State,
 | 
							"state":                          u.State.Val,
 | 
				
			||||||
		"upgradable":                     u.Upgradable.Val,
 | 
							"upgradable":                     u.Upgradable.Val,
 | 
				
			||||||
		"user-num_sta":                   u.UserNumSta,
 | 
							"user-num_sta":                   u.UserNumSta.Val,
 | 
				
			||||||
		"version":                        u.Version,
 | 
							"version":                        u.Version,
 | 
				
			||||||
		"num_desktop":                    u.NumDesktop,
 | 
							"num_desktop":                    u.NumDesktop.Val,
 | 
				
			||||||
		"num_handheld":                   u.NumHandheld,
 | 
							"num_handheld":                   u.NumHandheld.Val,
 | 
				
			||||||
		"num_mobile":                     u.NumMobile,
 | 
							"num_mobile":                     u.NumMobile.Val,
 | 
				
			||||||
		"speedtest-status_latency":       u.SpeedtestStatus.Latency,
 | 
							"speedtest-status_latency":       u.SpeedtestStatus.Latency.Val,
 | 
				
			||||||
		"speedtest-status_rundate":       u.SpeedtestStatus.Rundate,
 | 
							"speedtest-status_rundate":       u.SpeedtestStatus.Rundate.Val,
 | 
				
			||||||
		"speedtest-status_runtime":       u.SpeedtestStatus.Runtime,
 | 
							"speedtest-status_runtime":       u.SpeedtestStatus.Runtime.Val,
 | 
				
			||||||
		"speedtest-status_download":      u.SpeedtestStatus.StatusDownload,
 | 
							"speedtest-status_download":      u.SpeedtestStatus.StatusDownload.Val,
 | 
				
			||||||
		"speedtest-status_ping":          u.SpeedtestStatus.StatusPing,
 | 
							"speedtest-status_ping":          u.SpeedtestStatus.StatusPing.Val,
 | 
				
			||||||
		"speedtest-status_summary":       u.SpeedtestStatus.StatusSummary,
 | 
							"speedtest-status_summary":       u.SpeedtestStatus.StatusSummary.Val,
 | 
				
			||||||
		"speedtest-status_upload":        u.SpeedtestStatus.StatusUpload,
 | 
							"speedtest-status_upload":        u.SpeedtestStatus.StatusUpload.Val,
 | 
				
			||||||
		"speedtest-status_xput_download": u.SpeedtestStatus.XputDownload,
 | 
							"speedtest-status_xput_download": u.SpeedtestStatus.XputDownload.Val,
 | 
				
			||||||
		"speedtest-status_xput_upload":   u.SpeedtestStatus.XputUpload,
 | 
							"speedtest-status_xput_upload":   u.SpeedtestStatus.XputUpload.Val,
 | 
				
			||||||
		"config_network_wan_type":        u.ConfigNetworkWan.Type,
 | 
							"config_network_wan_type":        u.ConfigNetwork.Type,
 | 
				
			||||||
		"wan1_bytes-r":                   u.Wan1.BytesR.Val,
 | 
							"wan1_bytes-r":                   u.Wan1.BytesR.Val,
 | 
				
			||||||
		"wan1_enable":                    u.Wan1.Enable.Val,
 | 
							"wan1_enable":                    u.Wan1.Enable.Val,
 | 
				
			||||||
		"wan1_full_duplex":               u.Wan1.FullDuplex.Val,
 | 
							"wan1_full_duplex":               u.Wan1.FullDuplex.Val,
 | 
				
			||||||
| 
						 | 
					@ -124,35 +118,35 @@ func (u USG) Points() ([]*influx.Point, error) {
 | 
				
			||||||
		"wan2_tx_dropped":                u.Wan2.TxDropped.Val,
 | 
							"wan2_tx_dropped":                u.Wan2.TxDropped.Val,
 | 
				
			||||||
		"wan2_tx_errors":                 u.Wan2.TxErrors.Val,
 | 
							"wan2_tx_errors":                 u.Wan2.TxErrors.Val,
 | 
				
			||||||
		"wan2_tx_packets":                u.Wan2.TxPackets.Val,
 | 
							"wan2_tx_packets":                u.Wan2.TxPackets.Val,
 | 
				
			||||||
		"loadavg_1":                      u.SysStats.Loadavg1,
 | 
							"loadavg_1":                      u.SysStats.Loadavg1.Val,
 | 
				
			||||||
		"loadavg_5":                      u.SysStats.Loadavg5,
 | 
							"loadavg_5":                      u.SysStats.Loadavg5.Val,
 | 
				
			||||||
		"loadavg_15":                     u.SysStats.Loadavg15,
 | 
							"loadavg_15":                     u.SysStats.Loadavg15.Val,
 | 
				
			||||||
		"mem_used":                       u.SysStats.MemUsed,
 | 
							"mem_used":                       u.SysStats.MemUsed.Val,
 | 
				
			||||||
		"mem_buffer":                     u.SysStats.MemBuffer,
 | 
							"mem_buffer":                     u.SysStats.MemBuffer.Val,
 | 
				
			||||||
		"mem_total":                      u.SysStats.MemTotal,
 | 
							"mem_total":                      u.SysStats.MemTotal.Val,
 | 
				
			||||||
		"cpu":                            u.SystemStats.CPU,
 | 
							"cpu":                            u.SystemStats.CPU.Val,
 | 
				
			||||||
		"mem":                            u.SystemStats.Mem,
 | 
							"mem":                            u.SystemStats.Mem.Val,
 | 
				
			||||||
		"system_uptime":                  u.SystemStats.Uptime,
 | 
							"system_uptime":                  u.SystemStats.Uptime.Val,
 | 
				
			||||||
		"stat_duration":                  u.Stat.Duration,
 | 
							"stat_duration":                  u.Stat.Duration.Val,
 | 
				
			||||||
		"stat_datetime":                  u.Stat.Datetime,
 | 
							"stat_datetime":                  u.Stat.Datetime,
 | 
				
			||||||
		"gw":                             u.Stat.Gw,
 | 
							"gw":                             u.Stat.Gw,
 | 
				
			||||||
		"false":                          "false", // to fill holes in graphs.
 | 
							"false":                          "false", // to fill holes in graphs.
 | 
				
			||||||
		"lan-rx_bytes":                   u.Stat.LanRxBytes,
 | 
							"lan-rx_bytes":                   u.Stat.LanRxBytes.Val,
 | 
				
			||||||
		"lan-rx_packets":                 u.Stat.LanRxPackets,
 | 
							"lan-rx_packets":                 u.Stat.LanRxPackets.Val,
 | 
				
			||||||
		"lan-tx_bytes":                   u.Stat.LanTxBytes,
 | 
							"lan-tx_bytes":                   u.Stat.LanTxBytes.Val,
 | 
				
			||||||
		"lan-tx_packets":                 u.Stat.LanTxPackets,
 | 
							"lan-tx_packets":                 u.Stat.LanTxPackets.Val,
 | 
				
			||||||
		"wan-rx_bytes":                   u.Stat.WanRxBytes,
 | 
							"wan-rx_bytes":                   u.Stat.WanRxBytes.Val,
 | 
				
			||||||
		"wan-rx_dropped":                 u.Stat.WanRxDropped,
 | 
							"wan-rx_dropped":                 u.Stat.WanRxDropped.Val,
 | 
				
			||||||
		"wan-rx_packets":                 u.Stat.WanRxPackets,
 | 
							"wan-rx_packets":                 u.Stat.WanRxPackets.Val,
 | 
				
			||||||
		"wan-tx_bytes":                   u.Stat.WanTxBytes,
 | 
							"wan-tx_bytes":                   u.Stat.WanTxBytes.Val,
 | 
				
			||||||
		"wan-tx_packets":                 u.Stat.WanTxPackets,
 | 
							"wan-tx_packets":                 u.Stat.WanTxPackets.Val,
 | 
				
			||||||
		"uplink_name":                    u.Uplink.Name,
 | 
							"uplink_name":                    u.Uplink.Name,
 | 
				
			||||||
		"uplink_latency":                 u.Uplink.Latency,
 | 
							"uplink_latency":                 u.Uplink.Latency.Val,
 | 
				
			||||||
		"uplink_speed":                   u.Uplink.Speed,
 | 
							"uplink_speed":                   u.Uplink.Speed.Val,
 | 
				
			||||||
		"uplink_num_ports":               u.Uplink.NumPort,
 | 
							"uplink_num_ports":               u.Uplink.NumPort.Val,
 | 
				
			||||||
		"uplink_max_speed":               u.Uplink.MaxSpeed,
 | 
							"uplink_max_speed":               u.Uplink.MaxSpeed.Val,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	pt, err := influx.NewPoint("usg", tags, fields, time.Now())
 | 
						pt, err := influx.NewPoint("usg", tags, fields, now)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -162,6 +156,7 @@ func (u USG) Points() ([]*influx.Point, error) {
 | 
				
			||||||
			"device_name":               u.Name,
 | 
								"device_name":               u.Name,
 | 
				
			||||||
			"device_id":                 u.ID,
 | 
								"device_id":                 u.ID,
 | 
				
			||||||
			"device_mac":                u.Mac,
 | 
								"device_mac":                u.Mac,
 | 
				
			||||||
 | 
								"site_name":                 u.SiteName,
 | 
				
			||||||
			"name":                      p.Name,
 | 
								"name":                      p.Name,
 | 
				
			||||||
			"dhcpd_dns_enabled":         p.DhcpdDNSEnabled.Txt,
 | 
								"dhcpd_dns_enabled":         p.DhcpdDNSEnabled.Txt,
 | 
				
			||||||
			"dhcpd_enabled":             p.DhcpdEnabled.Txt,
 | 
								"dhcpd_enabled":             p.DhcpdEnabled.Txt,
 | 
				
			||||||
| 
						 | 
					@ -180,7 +175,6 @@ func (u USG) Points() ([]*influx.Point, error) {
 | 
				
			||||||
			"is_nat":                    p.IsNat.Txt,
 | 
								"is_nat":                    p.IsNat.Txt,
 | 
				
			||||||
			"networkgroup":              p.Networkgroup,
 | 
								"networkgroup":              p.Networkgroup,
 | 
				
			||||||
			"site_id":                   p.SiteID,
 | 
								"site_id":                   p.SiteID,
 | 
				
			||||||
			"site_name":                 p.SiteName,
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		fields := map[string]interface{}{
 | 
							fields := map[string]interface{}{
 | 
				
			||||||
			"dhcpd_ip_1":             p.DhcpdIP1,
 | 
								"dhcpd_ip_1":             p.DhcpdIP1,
 | 
				
			||||||
| 
						 | 
					@ -191,20 +185,54 @@ func (u USG) Points() ([]*influx.Point, error) {
 | 
				
			||||||
			"ip_subnet":              p.IPSubnet,
 | 
								"ip_subnet":              p.IPSubnet,
 | 
				
			||||||
			"mac":                    p.Mac,
 | 
								"mac":                    p.Mac,
 | 
				
			||||||
			"name":                   p.Name,
 | 
								"name":                   p.Name,
 | 
				
			||||||
			"num_sta":                p.NumSta,
 | 
								"num_sta":                p.NumSta.Val,
 | 
				
			||||||
			"purpose":                p.Purpose,
 | 
								"purpose":                p.Purpose,
 | 
				
			||||||
			"rx_bytes":               p.RxBytes.Val,
 | 
								"rx_bytes":               p.RxBytes.Val,
 | 
				
			||||||
			"rx_packets":             p.RxPackets,
 | 
								"rx_packets":             p.RxPackets.Val,
 | 
				
			||||||
			"tx_bytes":               p.TxBytes.Val,
 | 
								"tx_bytes":               p.TxBytes.Val,
 | 
				
			||||||
			"tx_packets":             p.TxPackets,
 | 
								"tx_packets":             p.TxPackets.Val,
 | 
				
			||||||
			"up":                     p.Up.Txt,
 | 
					 | 
				
			||||||
			"vlan":                   p.Vlan.Txt,
 | 
								"vlan":                   p.Vlan.Txt,
 | 
				
			||||||
			"dhcpd_ntp_1":            p.DhcpdNtp1,
 | 
								"dhcpd_ntp_1":            p.DhcpdNtp1,
 | 
				
			||||||
			"dhcpd_unifi_controller": p.DhcpdUnifiController,
 | 
								"dhcpd_unifi_controller": p.DhcpdUnifiController,
 | 
				
			||||||
			"ipv6_interface_type":    p.Ipv6InterfaceType,
 | 
								"ipv6_interface_type":    p.Ipv6InterfaceType,
 | 
				
			||||||
			"attr_hidden_id":         p.AttrHiddenID,
 | 
								"attr_hidden_id":         p.AttrHiddenID,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		pt, err = influx.NewPoint("usg_networks", tags, fields, time.Now())
 | 
							pt, err = influx.NewPoint("usg_networks", tags, fields, now)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return points, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							points = append(points, pt)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for _, p := range u.PortTable {
 | 
				
			||||||
 | 
							tags := map[string]string{
 | 
				
			||||||
 | 
								"device_name": u.Name,
 | 
				
			||||||
 | 
								"device_id":   u.ID,
 | 
				
			||||||
 | 
								"device_mac":  u.Mac,
 | 
				
			||||||
 | 
								"site_name":   u.SiteName,
 | 
				
			||||||
 | 
								"name":        p.Name,
 | 
				
			||||||
 | 
								"ifname":      p.Ifname,
 | 
				
			||||||
 | 
								"ip":          p.IP,
 | 
				
			||||||
 | 
								"netmask":     p.Netmask,
 | 
				
			||||||
 | 
								"mac":         p.Mac,
 | 
				
			||||||
 | 
								"up":          p.Up.Txt,
 | 
				
			||||||
 | 
								"speed":       p.Speed.Txt,
 | 
				
			||||||
 | 
								"full_duplex": p.FullDuplex.Txt,
 | 
				
			||||||
 | 
								"enable":      p.Enable.Txt,
 | 
				
			||||||
 | 
								"gateway":     p.Gateway,
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							fields := map[string]interface{}{
 | 
				
			||||||
 | 
								"rx_bytes":     p.RxBytes.Val,
 | 
				
			||||||
 | 
								"rx_dropped":   p.RxDropped.Val,
 | 
				
			||||||
 | 
								"rx_errors":    p.RxErrors.Val,
 | 
				
			||||||
 | 
								"rx_packets":   p.RxBytes.Val,
 | 
				
			||||||
 | 
								"tx_bytes":     p.TxBytes.Val,
 | 
				
			||||||
 | 
								"tx_dropped":   p.TxDropped.Val,
 | 
				
			||||||
 | 
								"tx_errors":    p.TxErrors.Val,
 | 
				
			||||||
 | 
								"tx_packets":   p.TxPackets.Val,
 | 
				
			||||||
 | 
								"rx_multicast": p.RxMulticast.Val,
 | 
				
			||||||
 | 
								"dns_servers":  strings.Join(p.DNS, ","),
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							pt, err = influx.NewPoint("usg_ports", tags, fields, now)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return points, err
 | 
								return points, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,262 +1,261 @@
 | 
				
			||||||
package unifi
 | 
					package unifi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "encoding/json"
 | 
					import "time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// USG represents all the data from the Ubiquiti Controller for a Unifi Security Gateway.
 | 
					// USG represents all the data from the Ubiquiti Controller for a Unifi Security Gateway.
 | 
				
			||||||
type USG struct {
 | 
					type USG struct {
 | 
				
			||||||
	ID            string   `json:"_id"`
 | 
						ID            string   `json:"_id"`
 | 
				
			||||||
	UUptime       float64  `json:"_uptime"`
 | 
					 | 
				
			||||||
	AdoptIP       string   `json:"adopt_ip"`
 | 
					 | 
				
			||||||
	AdoptURL      string   `json:"adopt_url"`
 | 
					 | 
				
			||||||
	Adopted       FlexBool `json:"adopted"`
 | 
						Adopted       FlexBool `json:"adopted"`
 | 
				
			||||||
	Bytes         float64  `json:"bytes"`
 | 
					 | 
				
			||||||
	Cfgversion    string   `json:"cfgversion"`
 | 
						Cfgversion    string   `json:"cfgversion"`
 | 
				
			||||||
	ConfigNetwork struct {
 | 
						ConfigNetwork struct {
 | 
				
			||||||
 | 
							Type string `json:"type"`
 | 
				
			||||||
		IP   string `json:"ip"`
 | 
							IP   string `json:"ip"`
 | 
				
			||||||
		Type string `json:"type"`
 | 
					 | 
				
			||||||
	} `json:"config_network"`
 | 
						} `json:"config_network"`
 | 
				
			||||||
	ConfigNetworkWan struct {
 | 
					 | 
				
			||||||
		Type string `json:"type"`
 | 
					 | 
				
			||||||
	} `json:"config_network_wan"`
 | 
					 | 
				
			||||||
	ConnectRequestIP   string   `json:"connect_request_ip"`
 | 
					 | 
				
			||||||
	ConnectRequestPort string   `json:"connect_request_port"`
 | 
					 | 
				
			||||||
	ConsideredLostAt   float64  `json:"considered_lost_at"`
 | 
					 | 
				
			||||||
	Default            FlexBool `json:"default"`
 | 
					 | 
				
			||||||
	DeviceID           string   `json:"device_id"`
 | 
					 | 
				
			||||||
	DiscoveredVia      string   `json:"discovered_via"`
 | 
					 | 
				
			||||||
	EthernetTable []struct {
 | 
						EthernetTable []struct {
 | 
				
			||||||
		Mac     string  `json:"mac"`
 | 
							Mac     string  `json:"mac"`
 | 
				
			||||||
 | 
							NumPort FlexInt `json:"num_port"`
 | 
				
			||||||
		Name    string  `json:"name"`
 | 
							Name    string  `json:"name"`
 | 
				
			||||||
		NumPort float64 `json:"num_port"`
 | 
					 | 
				
			||||||
	} `json:"ethernet_table"`
 | 
						} `json:"ethernet_table"`
 | 
				
			||||||
	FwCaps          float64  `json:"fw_caps"`
 | 
						FwCaps              FlexInt `json:"fw_caps"`
 | 
				
			||||||
	GuestNumSta     float64  `json:"guest-num_sta"`
 | 
					 | 
				
			||||||
	GuestToken      string   `json:"guest_token"`
 | 
					 | 
				
			||||||
	InformIP            string  `json:"inform_ip"`
 | 
						InformIP            string  `json:"inform_ip"`
 | 
				
			||||||
	InformURL           string  `json:"inform_url"`
 | 
						InformURL           string  `json:"inform_url"`
 | 
				
			||||||
	IP                  string  `json:"ip"`
 | 
						IP                  string  `json:"ip"`
 | 
				
			||||||
	KnownCfgversion string   `json:"known_cfgversion"`
 | 
					 | 
				
			||||||
	LastSeen        float64  `json:"last_seen"`
 | 
					 | 
				
			||||||
	LedOverride         string  `json:"led_override"`
 | 
						LedOverride         string  `json:"led_override"`
 | 
				
			||||||
	LicenseState        string  `json:"license_state"`
 | 
						LicenseState        string  `json:"license_state"`
 | 
				
			||||||
	Locating        FlexBool `json:"locating"`
 | 
					 | 
				
			||||||
	Mac                 string  `json:"mac"`
 | 
						Mac                 string  `json:"mac"`
 | 
				
			||||||
	Model               string  `json:"model"`
 | 
						Model               string  `json:"model"`
 | 
				
			||||||
	Name                string  `json:"name"`
 | 
						Name                string  `json:"name"`
 | 
				
			||||||
	NetworkTable    []struct {
 | 
					 | 
				
			||||||
		ID                     string      `json:"_id"`
 | 
					 | 
				
			||||||
		DhcpdDNSEnabled        FlexBool    `json:"dhcpd_dns_enabled"`
 | 
					 | 
				
			||||||
		DhcpdEnabled           FlexBool    `json:"dhcpd_enabled"`
 | 
					 | 
				
			||||||
		DhcpdIP1               string      `json:"dhcpd_ip_1,omitempty"`
 | 
					 | 
				
			||||||
		DhcpdLeasetime         json.Number `json:"dhcpd_leasetime,Number"`
 | 
					 | 
				
			||||||
		DhcpdStart             string      `json:"dhcpd_start"`
 | 
					 | 
				
			||||||
		DhcpdStop              string      `json:"dhcpd_stop"`
 | 
					 | 
				
			||||||
		DhcpdWinsEnabled       FlexBool    `json:"dhcpd_wins_enabled,omitempty"`
 | 
					 | 
				
			||||||
		DhcpguardEnabled       FlexBool    `json:"dhcpguard_enabled,omitempty"`
 | 
					 | 
				
			||||||
		DomainName             string      `json:"domain_name"`
 | 
					 | 
				
			||||||
		Enabled                FlexBool    `json:"enabled"`
 | 
					 | 
				
			||||||
		IgmpSnooping           FlexBool    `json:"igmp_snooping,omitempty"`
 | 
					 | 
				
			||||||
		IP                     string      `json:"ip"`
 | 
					 | 
				
			||||||
		IPSubnet               string      `json:"ip_subnet"`
 | 
					 | 
				
			||||||
		IsGuest                FlexBool    `json:"is_guest"`
 | 
					 | 
				
			||||||
		IsNat                  FlexBool    `json:"is_nat"`
 | 
					 | 
				
			||||||
		Mac                    string      `json:"mac"`
 | 
					 | 
				
			||||||
		Name                   string      `json:"name"`
 | 
					 | 
				
			||||||
		Networkgroup           string      `json:"networkgroup"`
 | 
					 | 
				
			||||||
		NumSta                 float64     `json:"num_sta"`
 | 
					 | 
				
			||||||
		Purpose                string      `json:"purpose"`
 | 
					 | 
				
			||||||
		RxBytes                FlexInt     `json:"rx_bytes"`
 | 
					 | 
				
			||||||
		RxPackets              float64     `json:"rx_packets"`
 | 
					 | 
				
			||||||
		SiteID                 string      `json:"site_id"`
 | 
					 | 
				
			||||||
		SiteName               string      `json:"-"`
 | 
					 | 
				
			||||||
		TxBytes                FlexInt     `json:"tx_bytes"`
 | 
					 | 
				
			||||||
		TxPackets              float64     `json:"tx_packets"`
 | 
					 | 
				
			||||||
		Up                     FlexBool    `json:"up"`
 | 
					 | 
				
			||||||
		Vlan                   FlexInt     `json:"vlan,omitempty"`
 | 
					 | 
				
			||||||
		VlanEnabled            FlexBool    `json:"vlan_enabled"`
 | 
					 | 
				
			||||||
		DhcpRelayEnabled       FlexBool    `json:"dhcp_relay_enabled,omitempty"`
 | 
					 | 
				
			||||||
		DhcpdGatewayEnabled    FlexBool    `json:"dhcpd_gateway_enabled,omitempty"`
 | 
					 | 
				
			||||||
		DhcpdNtp1              string      `json:"dhcpd_ntp_1,omitempty"`
 | 
					 | 
				
			||||||
		DhcpdNtpEnabled        FlexBool    `json:"dhcpd_ntp_enabled,omitempty"`
 | 
					 | 
				
			||||||
		DhcpdTimeOffsetEnabled FlexBool    `json:"dhcpd_time_offset_enabled,omitempty"`
 | 
					 | 
				
			||||||
		DhcpdUnifiController   string      `json:"dhcpd_unifi_controller,omitempty"`
 | 
					 | 
				
			||||||
		Ipv6InterfaceType      string      `json:"ipv6_interface_type,omitempty"`
 | 
					 | 
				
			||||||
		AttrHiddenID           string      `json:"attr_hidden_id,omitempty"`
 | 
					 | 
				
			||||||
		AttrNoDelete           FlexBool    `json:"attr_no_delete,omitempty"`
 | 
					 | 
				
			||||||
		UpnpLanEnabled         FlexBool    `json:"upnp_lan_enabled,omitempty"`
 | 
					 | 
				
			||||||
	} `json:"network_table"`
 | 
					 | 
				
			||||||
	NextHeartbeatAt     float64 `json:"next_heartbeat_at"`
 | 
					 | 
				
			||||||
	NumDesktop          float64 `json:"num_desktop"`
 | 
					 | 
				
			||||||
	NumHandheld         float64 `json:"num_handheld"`
 | 
					 | 
				
			||||||
	NumMobile           float64 `json:"num_mobile"`
 | 
					 | 
				
			||||||
	NumSta              float64 `json:"num_sta"`
 | 
					 | 
				
			||||||
	OutdoorModeOverride string  `json:"outdoor_mode_override"`
 | 
						OutdoorModeOverride string  `json:"outdoor_mode_override"`
 | 
				
			||||||
	PortTable           []struct {
 | 
					 | 
				
			||||||
		DNS         []string `json:"dns,omitempty"`
 | 
					 | 
				
			||||||
		Enable      FlexBool `json:"enable"`
 | 
					 | 
				
			||||||
		FullDuplex  FlexBool `json:"full_duplex"`
 | 
					 | 
				
			||||||
		Gateway     string   `json:"gateway,omitempty"`
 | 
					 | 
				
			||||||
		Ifname      string   `json:"ifname"`
 | 
					 | 
				
			||||||
		IP          string   `json:"ip"`
 | 
					 | 
				
			||||||
		Mac         string   `json:"mac"`
 | 
					 | 
				
			||||||
		Name        string   `json:"name"`
 | 
					 | 
				
			||||||
		Netmask     string   `json:"netmask"`
 | 
					 | 
				
			||||||
		RxBytes     FlexInt  `json:"rx_bytes"`
 | 
					 | 
				
			||||||
		RxDropped   float64  `json:"rx_dropped"`
 | 
					 | 
				
			||||||
		RxErrors    float64  `json:"rx_errors"`
 | 
					 | 
				
			||||||
		RxMulticast float64  `json:"rx_multicast"`
 | 
					 | 
				
			||||||
		RxPackets   float64  `json:"rx_packets"`
 | 
					 | 
				
			||||||
		Speed       float64  `json:"speed"`
 | 
					 | 
				
			||||||
		TxBytes     FlexInt  `json:"tx_bytes"`
 | 
					 | 
				
			||||||
		TxDropped   float64  `json:"tx_dropped"`
 | 
					 | 
				
			||||||
		TxErrors    float64  `json:"tx_errors"`
 | 
					 | 
				
			||||||
		TxPackets   float64  `json:"tx_packets"`
 | 
					 | 
				
			||||||
		Up          FlexBool `json:"up"`
 | 
					 | 
				
			||||||
	} `json:"port_table"`
 | 
					 | 
				
			||||||
	Rollupgrade     FlexBool `json:"rollupgrade"`
 | 
					 | 
				
			||||||
	RxBytes         FlexInt  `json:"rx_bytes"`
 | 
					 | 
				
			||||||
	Serial              string  `json:"serial"`
 | 
						Serial              string  `json:"serial"`
 | 
				
			||||||
	SiteID              string  `json:"site_id"`
 | 
						SiteID              string  `json:"site_id"`
 | 
				
			||||||
	SiteName            string  `json:"-"`
 | 
						SiteName            string  `json:"-"`
 | 
				
			||||||
	SpeedtestStatus struct {
 | 
						Type                string  `json:"type"`
 | 
				
			||||||
		Latency        float64 `json:"latency"`
 | 
						UsgCaps             FlexInt `json:"usg_caps"`
 | 
				
			||||||
		Rundate        float64 `json:"rundate"`
 | 
						Version             string  `json:"version"`
 | 
				
			||||||
		Runtime        float64 `json:"runtime"`
 | 
						RequiredVersion     string  `json:"required_version"`
 | 
				
			||||||
		StatusDownload float64 `json:"status_download"`
 | 
						EthernetOverrides   []struct {
 | 
				
			||||||
		StatusPing     float64 `json:"status_ping"`
 | 
							Ifname       string `json:"ifname"`
 | 
				
			||||||
		StatusSummary  float64 `json:"status_summary"`
 | 
							Networkgroup string `json:"networkgroup"`
 | 
				
			||||||
		StatusUpload   float64 `json:"status_upload"`
 | 
						} `json:"ethernet_overrides"`
 | 
				
			||||||
		XputDownload   float64 `json:"xput_download"`
 | 
						HwCaps                FlexInt  `json:"hw_caps"`
 | 
				
			||||||
		XputUpload     float64 `json:"xput_upload"`
 | 
						BoardRev              FlexInt  `json:"board_rev"`
 | 
				
			||||||
	} `json:"speedtest-status"`
 | 
						Unsupported           FlexBool `json:"unsupported"`
 | 
				
			||||||
	SpeedtestStatusSaved FlexBool `json:"speedtest-status-saved"`
 | 
						UnsupportedReason     FlexInt  `json:"unsupported_reason"`
 | 
				
			||||||
	Stat                 struct {
 | 
						DeviceID              string   `json:"device_id"`
 | 
				
			||||||
		Datetime     string  `json:"datetime"`
 | 
						State                 FlexInt  `json:"state"`
 | 
				
			||||||
		Duration     float64 `json:"duration"`
 | 
						LastSeen              FlexInt  `json:"last_seen"`
 | 
				
			||||||
		Gw           string  `json:"gw"`
 | 
						Upgradable            FlexBool `json:"upgradable"`
 | 
				
			||||||
		LanRxBytes   float64 `json:"lan-rx_bytes"`
 | 
						AdoptableWhenUpgraded FlexBool `json:"adoptable_when_upgraded"`
 | 
				
			||||||
		LanRxPackets float64 `json:"lan-rx_packets"`
 | 
						Rollupgrade           FlexBool `json:"rollupgrade"`
 | 
				
			||||||
		LanTxBytes   float64 `json:"lan-tx_bytes"`
 | 
						KnownCfgversion       string   `json:"known_cfgversion"`
 | 
				
			||||||
		LanTxPackets float64 `json:"lan-tx_packets"`
 | 
						Uptime                FlexInt  `json:"uptime"`
 | 
				
			||||||
		O            string  `json:"o"`
 | 
						Locating              FlexBool `json:"locating"`
 | 
				
			||||||
		Oid          string  `json:"oid"`
 | 
						ConnectRequestIP      string   `json:"connect_request_ip"`
 | 
				
			||||||
		SiteID       string  `json:"site_id"`
 | 
						ConnectRequestPort    string   `json:"connect_request_port"`
 | 
				
			||||||
		Time         float64 `json:"time"`
 | 
					 | 
				
			||||||
		WanRxBytes   float64 `json:"wan-rx_bytes"`
 | 
					 | 
				
			||||||
		WanRxDropped float64 `json:"wan-rx_dropped"`
 | 
					 | 
				
			||||||
		WanRxPackets float64 `json:"wan-rx_packets"`
 | 
					 | 
				
			||||||
		WanTxBytes   float64 `json:"wan-tx_bytes"`
 | 
					 | 
				
			||||||
		WanTxPackets float64 `json:"wan-tx_packets"`
 | 
					 | 
				
			||||||
	} `json:"stat"`
 | 
					 | 
				
			||||||
	State    float64 `json:"state"`
 | 
					 | 
				
			||||||
	SysStats              struct {
 | 
						SysStats              struct {
 | 
				
			||||||
		Loadavg1  float64 `json:"loadavg_1,string"`
 | 
							Loadavg1  FlexInt `json:"loadavg_1"`
 | 
				
			||||||
		Loadavg15 float64 `json:"loadavg_15,string"`
 | 
							Loadavg15 FlexInt `json:"loadavg_15"`
 | 
				
			||||||
		Loadavg5  float64 `json:"loadavg_5,string"`
 | 
							Loadavg5  FlexInt `json:"loadavg_5"`
 | 
				
			||||||
		MemBuffer float64 `json:"mem_buffer"`
 | 
							MemBuffer FlexInt `json:"mem_buffer"`
 | 
				
			||||||
		MemTotal  float64 `json:"mem_total"`
 | 
							MemTotal  FlexInt `json:"mem_total"`
 | 
				
			||||||
		MemUsed   float64 `json:"mem_used"`
 | 
							MemUsed   FlexInt `json:"mem_used"`
 | 
				
			||||||
	} `json:"sys_stats"`
 | 
						} `json:"sys_stats"`
 | 
				
			||||||
	SystemStats struct {
 | 
						SystemStats struct {
 | 
				
			||||||
		CPU    float64 `json:"cpu,string"`
 | 
							CPU    FlexInt `json:"cpu"`
 | 
				
			||||||
		Mem    float64 `json:"mem,string"`
 | 
							Mem    FlexInt `json:"mem"`
 | 
				
			||||||
		Uptime float64 `json:"uptime,string"`
 | 
							Uptime FlexInt `json:"uptime"`
 | 
				
			||||||
	} `json:"system-stats"`
 | 
						} `json:"system-stats"`
 | 
				
			||||||
	TxBytes    FlexInt  `json:"tx_bytes"`
 | 
						GuestToken      string `json:"guest_token"`
 | 
				
			||||||
 | 
						SpeedtestStatus struct {
 | 
				
			||||||
 | 
							Latency        FlexInt `json:"latency"`
 | 
				
			||||||
 | 
							Rundate        FlexInt `json:"rundate"`
 | 
				
			||||||
 | 
							Runtime        FlexInt `json:"runtime"`
 | 
				
			||||||
 | 
							StatusDownload FlexInt `json:"status_download"`
 | 
				
			||||||
 | 
							StatusPing     FlexInt `json:"status_ping"`
 | 
				
			||||||
 | 
							StatusSummary  FlexInt `json:"status_summary"`
 | 
				
			||||||
 | 
							StatusUpload   FlexInt `json:"status_upload"`
 | 
				
			||||||
 | 
							XputDownload   FlexInt `json:"xput_download"`
 | 
				
			||||||
 | 
							XputUpload     FlexInt `json:"xput_upload"`
 | 
				
			||||||
 | 
						} `json:"speedtest-status"`
 | 
				
			||||||
 | 
						SpeedtestStatusSaved FlexBool `json:"speedtest-status-saved"`
 | 
				
			||||||
 | 
						Wan1                 struct {
 | 
				
			||||||
 | 
							TxBytesR    FlexInt  `json:"tx_bytes-r"`
 | 
				
			||||||
 | 
							RxBytesR    FlexInt  `json:"rx_bytes-r"`
 | 
				
			||||||
 | 
							BytesR      FlexInt  `json:"bytes-r"`
 | 
				
			||||||
 | 
							MaxSpeed    FlexInt  `json:"max_speed"`
 | 
				
			||||||
		Type        string   `json:"type"`
 | 
							Type        string   `json:"type"`
 | 
				
			||||||
	Upgradable FlexBool `json:"upgradable"`
 | 
							Name        string   `json:"name"`
 | 
				
			||||||
 | 
							Ifname      string   `json:"ifname"`
 | 
				
			||||||
 | 
							IP          string   `json:"ip"`
 | 
				
			||||||
 | 
							Netmask     string   `json:"netmask"`
 | 
				
			||||||
 | 
							Mac         string   `json:"mac"`
 | 
				
			||||||
 | 
							Up          FlexBool `json:"up"`
 | 
				
			||||||
 | 
							Speed       FlexInt  `json:"speed"`
 | 
				
			||||||
 | 
							FullDuplex  FlexBool `json:"full_duplex"`
 | 
				
			||||||
 | 
							RxBytes     FlexInt  `json:"rx_bytes"`
 | 
				
			||||||
 | 
							RxDropped   FlexInt  `json:"rx_dropped"`
 | 
				
			||||||
 | 
							RxErrors    FlexInt  `json:"rx_errors"`
 | 
				
			||||||
 | 
							RxPackets   FlexInt  `json:"rx_packets"`
 | 
				
			||||||
 | 
							TxBytes     FlexInt  `json:"tx_bytes"`
 | 
				
			||||||
 | 
							TxDropped   FlexInt  `json:"tx_dropped"`
 | 
				
			||||||
 | 
							TxErrors    FlexInt  `json:"tx_errors"`
 | 
				
			||||||
 | 
							TxPackets   FlexInt  `json:"tx_packets"`
 | 
				
			||||||
 | 
							RxMulticast FlexInt  `json:"rx_multicast"`
 | 
				
			||||||
 | 
							Enable      FlexBool `json:"enable"`
 | 
				
			||||||
 | 
							DNS         []string `json:"dns"`
 | 
				
			||||||
 | 
							Gateway     string   `json:"gateway"`
 | 
				
			||||||
 | 
						} `json:"wan1"`
 | 
				
			||||||
 | 
						Wan2 struct {
 | 
				
			||||||
 | 
							TxBytesR    FlexInt  `json:"tx_bytes-r"`
 | 
				
			||||||
 | 
							RxBytesR    FlexInt  `json:"rx_bytes-r"`
 | 
				
			||||||
 | 
							BytesR      FlexInt  `json:"bytes-r"`
 | 
				
			||||||
 | 
							MaxSpeed    FlexInt  `json:"max_speed"`
 | 
				
			||||||
 | 
							Type        string   `json:"type"`
 | 
				
			||||||
 | 
							Name        string   `json:"name"`
 | 
				
			||||||
 | 
							Ifname      string   `json:"ifname"`
 | 
				
			||||||
 | 
							IP          string   `json:"ip"`
 | 
				
			||||||
 | 
							Netmask     string   `json:"netmask"`
 | 
				
			||||||
 | 
							Mac         string   `json:"mac"`
 | 
				
			||||||
 | 
							Up          FlexBool `json:"up"`
 | 
				
			||||||
 | 
							Speed       FlexInt  `json:"speed"`
 | 
				
			||||||
 | 
							FullDuplex  FlexBool `json:"full_duplex"`
 | 
				
			||||||
 | 
							RxBytes     FlexInt  `json:"rx_bytes"`
 | 
				
			||||||
 | 
							RxDropped   FlexInt  `json:"rx_dropped"`
 | 
				
			||||||
 | 
							RxErrors    FlexInt  `json:"rx_errors"`
 | 
				
			||||||
 | 
							RxPackets   FlexInt  `json:"rx_packets"`
 | 
				
			||||||
 | 
							TxBytes     FlexInt  `json:"tx_bytes"`
 | 
				
			||||||
 | 
							TxDropped   FlexInt  `json:"tx_dropped"`
 | 
				
			||||||
 | 
							TxErrors    FlexInt  `json:"tx_errors"`
 | 
				
			||||||
 | 
							TxPackets   FlexInt  `json:"tx_packets"`
 | 
				
			||||||
 | 
							RxMulticast FlexInt  `json:"rx_multicast"`
 | 
				
			||||||
 | 
							Enable      FlexBool `json:"enable"`
 | 
				
			||||||
 | 
							DNS         []string `json:"dns"`
 | 
				
			||||||
 | 
							Gateway     string   `json:"gateway"`
 | 
				
			||||||
 | 
						} `json:"wan2"`
 | 
				
			||||||
 | 
						PortTable []struct {
 | 
				
			||||||
 | 
							Name        string   `json:"name"`
 | 
				
			||||||
 | 
							Ifname      string   `json:"ifname"`
 | 
				
			||||||
 | 
							IP          string   `json:"ip"`
 | 
				
			||||||
 | 
							Netmask     string   `json:"netmask"`
 | 
				
			||||||
 | 
							Mac         string   `json:"mac"`
 | 
				
			||||||
 | 
							Up          FlexBool `json:"up"`
 | 
				
			||||||
 | 
							Speed       FlexInt  `json:"speed"`
 | 
				
			||||||
 | 
							FullDuplex  FlexBool `json:"full_duplex"`
 | 
				
			||||||
 | 
							RxBytes     FlexInt  `json:"rx_bytes"`
 | 
				
			||||||
 | 
							RxDropped   FlexInt  `json:"rx_dropped"`
 | 
				
			||||||
 | 
							RxErrors    FlexInt  `json:"rx_errors"`
 | 
				
			||||||
 | 
							RxPackets   FlexInt  `json:"rx_packets"`
 | 
				
			||||||
 | 
							TxBytes     FlexInt  `json:"tx_bytes"`
 | 
				
			||||||
 | 
							TxDropped   FlexInt  `json:"tx_dropped"`
 | 
				
			||||||
 | 
							TxErrors    FlexInt  `json:"tx_errors"`
 | 
				
			||||||
 | 
							TxPackets   FlexInt  `json:"tx_packets"`
 | 
				
			||||||
 | 
							RxMulticast FlexInt  `json:"rx_multicast"`
 | 
				
			||||||
 | 
							Enable      FlexBool `json:"enable"`
 | 
				
			||||||
 | 
							DNS         []string `json:"dns,omitempty"`
 | 
				
			||||||
 | 
							Gateway     string   `json:"gateway,omitempty"`
 | 
				
			||||||
 | 
						} `json:"port_table"`
 | 
				
			||||||
 | 
						NetworkTable []struct {
 | 
				
			||||||
 | 
							ID                     string   `json:"_id"`
 | 
				
			||||||
 | 
							IsNat                  FlexBool `json:"is_nat"`
 | 
				
			||||||
 | 
							DhcpdDNSEnabled        FlexBool `json:"dhcpd_dns_enabled"`
 | 
				
			||||||
 | 
							Purpose                string   `json:"purpose"`
 | 
				
			||||||
 | 
							DhcpdLeasetime         FlexInt  `json:"dhcpd_leasetime"`
 | 
				
			||||||
 | 
							IgmpSnooping           FlexBool `json:"igmp_snooping"`
 | 
				
			||||||
 | 
							DhcpguardEnabled       FlexBool `json:"dhcpguard_enabled,omitempty"`
 | 
				
			||||||
 | 
							DhcpdStart             string   `json:"dhcpd_start"`
 | 
				
			||||||
 | 
							Enabled                FlexBool `json:"enabled"`
 | 
				
			||||||
 | 
							DhcpdStop              string   `json:"dhcpd_stop"`
 | 
				
			||||||
 | 
							DhcpdWinsEnabled       FlexBool `json:"dhcpd_wins_enabled,omitempty"`
 | 
				
			||||||
 | 
							DomainName             string   `json:"domain_name"`
 | 
				
			||||||
 | 
							DhcpdEnabled           FlexBool `json:"dhcpd_enabled"`
 | 
				
			||||||
 | 
							IPSubnet               string   `json:"ip_subnet"`
 | 
				
			||||||
 | 
							Vlan                   FlexInt  `json:"vlan,omitempty"`
 | 
				
			||||||
 | 
							Networkgroup           string   `json:"networkgroup"`
 | 
				
			||||||
 | 
							Name                   string   `json:"name"`
 | 
				
			||||||
 | 
							SiteID                 string   `json:"site_id"`
 | 
				
			||||||
 | 
							DhcpdIP1               string   `json:"dhcpd_ip_1,omitempty"`
 | 
				
			||||||
 | 
							VlanEnabled            FlexBool `json:"vlan_enabled"`
 | 
				
			||||||
 | 
							DhcpdGatewayEnabled    FlexBool `json:"dhcpd_gateway_enabled"`
 | 
				
			||||||
 | 
							DhcpdTimeOffsetEnabled FlexBool `json:"dhcpd_time_offset_enabled"`
 | 
				
			||||||
 | 
							Ipv6InterfaceType      string   `json:"ipv6_interface_type"`
 | 
				
			||||||
 | 
							DhcpRelayEnabled       FlexBool `json:"dhcp_relay_enabled"`
 | 
				
			||||||
 | 
							Mac                    string   `json:"mac"`
 | 
				
			||||||
 | 
							IsGuest                FlexBool `json:"is_guest"`
 | 
				
			||||||
 | 
							IP                     string   `json:"ip"`
 | 
				
			||||||
 | 
							Up                     string   `json:"up"`
 | 
				
			||||||
 | 
							NumSta                 FlexInt  `json:"num_sta"`
 | 
				
			||||||
 | 
							RxBytes                FlexInt  `json:"rx_bytes"`
 | 
				
			||||||
 | 
							RxPackets              FlexInt  `json:"rx_packets"`
 | 
				
			||||||
 | 
							TxBytes                FlexInt  `json:"tx_bytes"`
 | 
				
			||||||
 | 
							TxPackets              FlexInt  `json:"tx_packets"`
 | 
				
			||||||
 | 
							DhcpdNtp1              string   `json:"dhcpd_ntp_1,omitempty"`
 | 
				
			||||||
 | 
							DhcpdNtpEnabled        FlexBool `json:"dhcpd_ntp_enabled,omitempty"`
 | 
				
			||||||
 | 
							DhcpdUnifiController   string   `json:"dhcpd_unifi_controller,omitempty"`
 | 
				
			||||||
 | 
							UpnpLanEnabled         FlexBool `json:"upnp_lan_enabled,omitempty"`
 | 
				
			||||||
 | 
							AttrNoDelete           FlexBool `json:"attr_no_delete,omitempty"`
 | 
				
			||||||
 | 
							AttrHiddenID           string   `json:"attr_hidden_id,omitempty"`
 | 
				
			||||||
 | 
						} `json:"network_table"`
 | 
				
			||||||
	Uplink struct {
 | 
						Uplink struct {
 | 
				
			||||||
		BytesR           float64  `json:"bytes-r"`
 | 
							Drops            FlexInt  `json:"drops"`
 | 
				
			||||||
		Drops            float64  `json:"drops"`
 | 
					 | 
				
			||||||
		Enable           FlexBool `json:"enable"`
 | 
							Enable           FlexBool `json:"enable"`
 | 
				
			||||||
		FullDuplex       FlexBool `json:"full_duplex"`
 | 
							FullDuplex       FlexBool `json:"full_duplex"`
 | 
				
			||||||
		Gateways         []string `json:"gateways"`
 | 
							Gateways         []string `json:"gateways"`
 | 
				
			||||||
		IP               string   `json:"ip"`
 | 
							IP               string   `json:"ip"`
 | 
				
			||||||
		Latency          float64  `json:"latency"`
 | 
							Latency          FlexInt  `json:"latency"`
 | 
				
			||||||
		Mac              string   `json:"mac"`
 | 
							Mac              string   `json:"mac"`
 | 
				
			||||||
		MaxSpeed         float64  `json:"max_speed"`
 | 
					 | 
				
			||||||
		Name             string   `json:"name"`
 | 
							Name             string   `json:"name"`
 | 
				
			||||||
		Nameservers      []string `json:"nameservers"`
 | 
							Nameservers      []string `json:"nameservers"`
 | 
				
			||||||
		Netmask          string   `json:"netmask"`
 | 
							Netmask          string   `json:"netmask"`
 | 
				
			||||||
		NumPort          float64  `json:"num_port"`
 | 
							NumPort          FlexInt  `json:"num_port"`
 | 
				
			||||||
		RxBytes          FlexInt  `json:"rx_bytes"`
 | 
							RxBytes          FlexInt  `json:"rx_bytes"`
 | 
				
			||||||
		RxBytesR         float64  `json:"rx_bytes-r"`
 | 
							RxDropped        FlexInt  `json:"rx_dropped"`
 | 
				
			||||||
		RxDropped        float64  `json:"rx_dropped"`
 | 
							RxErrors         FlexInt  `json:"rx_errors"`
 | 
				
			||||||
		RxErrors         float64  `json:"rx_errors"`
 | 
							RxMulticast      FlexInt  `json:"rx_multicast"`
 | 
				
			||||||
		RxMulticast      float64  `json:"rx_multicast"`
 | 
							RxPackets        FlexInt  `json:"rx_packets"`
 | 
				
			||||||
		RxPackets        float64  `json:"rx_packets"`
 | 
							Speed            FlexInt  `json:"speed"`
 | 
				
			||||||
		Speed            float64  `json:"speed"`
 | 
							SpeedtestLastrun FlexInt  `json:"speedtest_lastrun"`
 | 
				
			||||||
		SpeedtestLastrun float64  `json:"speedtest_lastrun"`
 | 
							SpeedtestPing    FlexInt  `json:"speedtest_ping"`
 | 
				
			||||||
		SpeedtestPing    float64  `json:"speedtest_ping"`
 | 
					 | 
				
			||||||
		SpeedtestStatus  string   `json:"speedtest_status"`
 | 
							SpeedtestStatus  string   `json:"speedtest_status"`
 | 
				
			||||||
		TxBytes          FlexInt  `json:"tx_bytes"`
 | 
							TxBytes          FlexInt  `json:"tx_bytes"`
 | 
				
			||||||
		TxBytesR         float64  `json:"tx_bytes-r"`
 | 
							TxDropped        FlexInt  `json:"tx_dropped"`
 | 
				
			||||||
		TxDropped        float64  `json:"tx_dropped"`
 | 
							TxErrors         FlexInt  `json:"tx_errors"`
 | 
				
			||||||
		TxErrors         float64  `json:"tx_errors"`
 | 
							TxPackets        FlexInt  `json:"tx_packets"`
 | 
				
			||||||
		TxPackets        float64  `json:"tx_packets"`
 | 
					 | 
				
			||||||
		Type             string   `json:"type"`
 | 
					 | 
				
			||||||
		Up               FlexBool `json:"up"`
 | 
							Up               FlexBool `json:"up"`
 | 
				
			||||||
		Uptime           float64  `json:"uptime"`
 | 
							Uptime           FlexInt  `json:"uptime"`
 | 
				
			||||||
		XputDown         float64  `json:"xput_down"`
 | 
							XputDown         FlexInt  `json:"xput_down"`
 | 
				
			||||||
		XputUp           float64  `json:"xput_up"`
 | 
							XputUp           FlexInt  `json:"xput_up"`
 | 
				
			||||||
 | 
							TxBytesR         FlexInt  `json:"tx_bytes-r"`
 | 
				
			||||||
 | 
							RxBytesR         FlexInt  `json:"rx_bytes-r"`
 | 
				
			||||||
 | 
							BytesR           FlexInt  `json:"bytes-r"`
 | 
				
			||||||
 | 
							MaxSpeed         FlexInt  `json:"max_speed"`
 | 
				
			||||||
 | 
							Type             string   `json:"type"`
 | 
				
			||||||
	} `json:"uplink"`
 | 
						} `json:"uplink"`
 | 
				
			||||||
	Uptime              float64  `json:"uptime"`
 | 
						Stat struct {
 | 
				
			||||||
	UserNumSta          float64  `json:"user-num_sta"`
 | 
							SiteID       string    `json:"site_id"`
 | 
				
			||||||
	UsgCaps             float64  `json:"usg_caps"`
 | 
							O            string    `json:"o"`
 | 
				
			||||||
	Version             string   `json:"version"`
 | 
							Oid          string    `json:"oid"`
 | 
				
			||||||
	VersionIncompatible FlexBool `json:"version_incompatible"`
 | 
							Gw           string    `json:"gw"`
 | 
				
			||||||
	Wan1                struct {
 | 
							Time         FlexInt   `json:"time"`
 | 
				
			||||||
		BytesR      FlexInt  `json:"bytes-r"`
 | 
							Datetime     time.Time `json:"datetime"`
 | 
				
			||||||
		DNS         []string `json:"dns"`
 | 
							Duration     FlexInt   `json:"duration"`
 | 
				
			||||||
		Enable      FlexBool `json:"enable"`
 | 
							WanRxPackets FlexInt   `json:"wan-rx_packets"`
 | 
				
			||||||
		FullDuplex  FlexBool `json:"full_duplex"`
 | 
							WanRxBytes   FlexInt   `json:"wan-rx_bytes"`
 | 
				
			||||||
		Gateway     string   `json:"gateway"`
 | 
							WanTxPackets FlexInt   `json:"wan-tx_packets"`
 | 
				
			||||||
		Ifname      string   `json:"ifname"`
 | 
							WanTxBytes   FlexInt   `json:"wan-tx_bytes"`
 | 
				
			||||||
		IP          string   `json:"ip"`
 | 
							LanRxPackets FlexInt   `json:"lan-rx_packets"`
 | 
				
			||||||
		Mac         string   `json:"mac"`
 | 
							LanRxBytes   FlexInt   `json:"lan-rx_bytes"`
 | 
				
			||||||
		MaxSpeed    FlexInt  `json:"max_speed"`
 | 
							LanTxPackets FlexInt   `json:"lan-tx_packets"`
 | 
				
			||||||
		Name        string   `json:"name"`
 | 
							LanTxBytes   FlexInt   `json:"lan-tx_bytes"`
 | 
				
			||||||
		Netmask     string   `json:"netmask"`
 | 
							WanRxDropped FlexInt   `json:"wan-rx_dropped"`
 | 
				
			||||||
		RxBytes     FlexInt  `json:"rx_bytes"`
 | 
							LanRxDropped FlexInt   `json:"lan-rx_dropped"`
 | 
				
			||||||
		RxBytesR    FlexInt  `json:"rx_bytes-r"`
 | 
						} `json:"stat"`
 | 
				
			||||||
		RxDropped   FlexInt  `json:"rx_dropped"`
 | 
					 | 
				
			||||||
		RxErrors    FlexInt  `json:"rx_errors"`
 | 
					 | 
				
			||||||
		RxMulticast FlexInt  `json:"rx_multicast"`
 | 
					 | 
				
			||||||
		RxPackets   FlexInt  `json:"rx_packets"`
 | 
					 | 
				
			||||||
		Speed       FlexInt  `json:"speed"`
 | 
					 | 
				
			||||||
	TxBytes     FlexInt `json:"tx_bytes"`
 | 
						TxBytes     FlexInt `json:"tx_bytes"`
 | 
				
			||||||
		TxBytesR    FlexInt  `json:"tx_bytes-r"`
 | 
					 | 
				
			||||||
		TxDropped   FlexInt  `json:"tx_dropped"`
 | 
					 | 
				
			||||||
		TxErrors    FlexInt  `json:"tx_errors"`
 | 
					 | 
				
			||||||
		TxPackets   FlexInt  `json:"tx_packets"`
 | 
					 | 
				
			||||||
		Type        string   `json:"type"`
 | 
					 | 
				
			||||||
		Up          FlexBool `json:"up"`
 | 
					 | 
				
			||||||
	} `json:"wan1"`
 | 
					 | 
				
			||||||
	Wan2 struct {
 | 
					 | 
				
			||||||
		BytesR      FlexInt  `json:"bytes-r"`
 | 
					 | 
				
			||||||
		DNS         []string `json:"dns"`
 | 
					 | 
				
			||||||
		Enable      FlexBool `json:"enable"`
 | 
					 | 
				
			||||||
		FullDuplex  FlexBool `json:"full_duplex"`
 | 
					 | 
				
			||||||
		Gateway     string   `json:"gateway"`
 | 
					 | 
				
			||||||
		Ifname      string   `json:"ifname"`
 | 
					 | 
				
			||||||
		IP          string   `json:"ip"`
 | 
					 | 
				
			||||||
		Mac         string   `json:"mac"`
 | 
					 | 
				
			||||||
		MaxSpeed    FlexInt  `json:"max_speed"`
 | 
					 | 
				
			||||||
		Name        string   `json:"name"`
 | 
					 | 
				
			||||||
		Netmask     string   `json:"netmask"`
 | 
					 | 
				
			||||||
	RxBytes     FlexInt `json:"rx_bytes"`
 | 
						RxBytes     FlexInt `json:"rx_bytes"`
 | 
				
			||||||
		RxBytesR    FlexInt  `json:"rx_bytes-r"`
 | 
						Bytes       FlexInt `json:"bytes"`
 | 
				
			||||||
		RxDropped   FlexInt  `json:"rx_dropped"`
 | 
						NumSta      FlexInt `json:"num_sta"`
 | 
				
			||||||
		RxErrors    FlexInt  `json:"rx_errors"`
 | 
						UserNumSta  FlexInt `json:"user-num_sta"`
 | 
				
			||||||
		RxMulticast FlexInt  `json:"rx_multicast"`
 | 
						GuestNumSta FlexInt `json:"guest-num_sta"`
 | 
				
			||||||
		RxPackets   FlexInt  `json:"rx_packets"`
 | 
						NumDesktop  FlexInt `json:"num_desktop"`
 | 
				
			||||||
		Speed       FlexInt  `json:"speed"`
 | 
						NumMobile   FlexInt `json:"num_mobile"`
 | 
				
			||||||
		TxBytes     FlexInt  `json:"tx_bytes"`
 | 
						NumHandheld FlexInt `json:"num_handheld"`
 | 
				
			||||||
		TxBytesR    FlexInt  `json:"tx_bytes-r"`
 | 
					 | 
				
			||||||
		TxDropped   FlexInt  `json:"tx_dropped"`
 | 
					 | 
				
			||||||
		TxErrors    FlexInt  `json:"tx_errors"`
 | 
					 | 
				
			||||||
		TxPackets   FlexInt  `json:"tx_packets"`
 | 
					 | 
				
			||||||
		Type        string   `json:"type"`
 | 
					 | 
				
			||||||
		Up          FlexBool `json:"up"`
 | 
					 | 
				
			||||||
	} `json:"wan2"`
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue