diff --git a/src/APStats.cpp b/src/APStats.cpp index d43a3a0..abb596c 100644 --- a/src/APStats.cpp +++ b/src/APStats.cpp @@ -6,12 +6,95 @@ namespace OpenWifi { +/* + +{"interfaces":[ + { "clients": + [{ "ipv4_addresses":["10.2.0.1"], + "ipv6_addresses":["fe80:0:0:0:a8a2:caff:fe45:bc6b"], + "mac":"e2:63:da:86:64:8e", + "ports":["eth1"]}], + "counters": + {"collisions":0,"multicast":762813,"rx_bytes":181910484,"rx_dropped":0,"rx_errors":0,"rx_packets":1076144,"tx_bytes":2749349,"tx_dropped":0,"tx_errors":0,"tx_packets":12941}, + "dns_servers":["10.2.0.1"], + "ipv4":{"addresses":["10.2.177.154/16"], + "dhcp_server":"10.2.0.1","leasetime":86400}, + "location":"/interfaces/0", + "name":"up0v0", + "uptime":130177}, + {"counters": + {"collisions":0,"multicast":0,"rx_bytes":0,"rx_dropped":0,"rx_errors":0,"rx_packets":0,"tx_bytes":1032226,"tx_dropped":0,"tx_errors":0,"tx_packets":4881}, + "ipv4":{"addresses":["192.168.1.1/24"]}, + "location":"/interfaces/1", + "name":"down1v0", + "ssids":[ + { "bssid":"04:f8:f8:fc:3b:04", + "iface":"wlan0", + "location":"/interfaces/1/ssids/0", + "mode":"ap", + "phy":"soc/1b700000.pci/pci0001:00/0001:00:00.0/0001:01:00.0", + "radio":{"$ref":"#/radios/0"}, + "ssid":"OpenWifi"}, + { "bssid":"04:f8:f8:fc:3b:03", + "iface":"wlan1", + "location":"/interfaces/1/ssids/0", + "mode":"ap", + "phy":"soc/1b900000.pci/pci0002:00/0002:00:00.0/0002:01:00.0", + "radio":{"$ref":"#/radios/1"},"ssid":"OpenWifi"}], + "uptime":130177}], + "link-state":{"downstream":{"eth1":{"carrier":0}},"upstream":{"eth0":{"carrier":1,"duplex":"full","speed":1000}}},"radios":[{"active_ms":130162935,"busy_ms":5320005,"channel":100,"channel_width":"80","noise":-103,"phy":"soc/1b700000.pci/pci0001:00/0001:00:00.0/0001:01:00.0","receive_ms":4466633,"transmit_ms":450846,"tx_power":24},{"active_ms":130169276,"busy_ms":21844515,"channel":6,"channel_width":"20","noise":-96,"phy":"soc/1b900000.pci/pci0002:00/0002:00:00.0/0002:01:00.0","receive_ms":18929929,"transmit_ms":421807,"tx_power":30}],"unit":{"load":[0.039063,0.02295,0.001465],"localtime":1647363036,"memory":{"buffered":6762496,"cached":17711104,"free":99299328,"total":217239552},"uptime":130207},"version":1} + + */ + + void AP::UpdateStats(const std::shared_ptr &State) { DI_.states++; DI_.connected =true; DI_.lastPing = DI_.lastState = OpenWifi::Now(); std::cout << "Stats update for MAC: " << Utils::IntToSerialNumber(mac_) << std::endl; - std::cout << *State << std::endl; +// std::cout << *State << std::endl; + + // find radios first to get associations. + try { + auto radios = (*State)["radios"]; + uint radio_index=0; + std::map radio_band; + for(const auto &radio:radios) { + if(radio.contains("channel")) { + radio_band[radio_index++] = radio["channel"] <= 16 ? 2 : 5; + } + } + + // now that we know the radio bands, look for associations + auto interfaces = (*State)["interfaces"]; + DI_.associations_2g = DI_.associations_5g = DI_.associations_6g = 0; + for(const auto &interface:interfaces) { + if(interface.contains("ssids")) { + auto ssids = interface["ssids"]; + for (const auto &ssid: ssids) { + auto radio = ssid["radio"]["$ref"]; + auto radio_parts = Poco::StringTokenizer(radio, "/"); + auto radio_location = std::atoi(radio_parts[2].c_str()); + if (ssid.contains("associations")) { + auto associations = ssid["associations"]; + auto the_radio = radio_band.find(radio_location)->second; + if(the_radio==2) + DI_.associations_2g += associations.size(); + else if(the_radio==5) + DI_.associations_5g += associations.size(); + else if(the_radio==6) + DI_.associations_6g += associations.size(); + for(const auto &association:associations) { + } + } + } + } + } + std::cout << "Stats update for MAC: " << Utils::IntToSerialNumber(mac_) << std::endl; + std::cout << "2G:" << DI_.associations_2g << " 5G" << DI_.associations_5g << " 6G:" << DI_.associations_6g << std::endl; + } catch (...) { + std::cout << "Could not parse stats for " << Utils::IntToSerialNumber(mac_) << std::endl; + } } /* diff --git a/stats_sample/bridge2_stats.json b/stats_sample/bridge2_stats.json new file mode 100644 index 0000000..b7b449b --- /dev/null +++ b/stats_sample/bridge2_stats.json @@ -0,0 +1,1166 @@ +{ + "interfaces": [{ + "clients": [{ + "ipv6_addresses": ["fe80:0:0:0:1e12:b0ff:fe97:f257"], + "mac": "1c:12:b0:97:f2:57", + "ports": ["wlan0-1"] + }, { + "ipv6_addresses": ["fe80:0:0:0:4e8:b4a4:9976:b85e"], + "mac": "36:3b:d9:f3:bd:bb", + "ports": ["wlan0-1"] + }, { + "ipv6_addresses": ["fe80:0:0:0:4600:49ff:fe3d:667b"], + "mac": "44:00:49:3d:66:7b", + "ports": ["eth0"] + }, { + "ipv6_addresses": ["fe80:0:0:0:e2:5d0e:1f50:fc90"], + "mac": "58:d3:49:0d:d2:56", + "ports": ["wlan0-1"] + }, { + "ipv4_addresses": ["10.100.71.149"], + "ipv6_addresses": ["fe80:0:0:0:6a21:5fff:fe04:2c32"], + "mac": "68:21:5f:04:2c:32", + "ports": ["eth0"] + }, { + "ipv6_addresses": ["fe80:0:0:0:18ff:6919:f36:6faa"], + "mac": "7a:c5:5b:a1:2b:89", + "ports": ["wlan0-1"] + }, { + "ipv6_addresses": ["fe80:0:0:0:923c:b3ff:feb1:6dd9"], + "mac": "90:3c:b3:b1:6d:d9", + "ports": ["eth0"] + }, { + "ipv6_addresses": ["fe80:0:0:0:cef7:35ff:fe8d:702b"], + "mac": "cc:f7:35:8d:70:2b", + "ports": ["eth0"] + }, { + "ipv4_addresses": ["10.100.0.1"], + "ipv6_addresses": ["2604:3d08:9680:bd01:0:0:0:1", "fe80:0:0:0:dc41:8bff:fe8f:a5e7"], + "mac": "e0:63:da:86:64:97", + "ports": ["eth0"] + }], + "counters": { + "collisions": 0, + "multicast": 365063, + "rx_bytes": 40825927, + "rx_dropped": 0, + "rx_errors": 0, + "rx_packets": 410543, + "tx_bytes": 3620164, + "tx_dropped": 0, + "tx_errors": 0, + "tx_packets": 12912 + }, + "location": "/interfaces/0", + "name": "up0v100", + "ssids": [{ + "associations": [{ + "bssid": "90:3c:b3:bb:1e:f8", + "connected": 21873, + "deltas": { + "rx_bytes": 12407, + "rx_packets": 166, + "tx_bytes": 14305, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 155, + "tx_retries": 0 + }, + "inactive": 2, + "msdu": [{ + "rx_msdu": 2144470, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 2, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }], + "rssi": -80, + "rx_bytes": 153787136, + "rx_packets": 2144478, + "rx_rate": { + "bitrate": 117000, + "chwidth": 80, + "mcs": 1, + "nss": 2, + "sgi": true, + "vht": true + }, + "station": "1c:12:b0:97:f2:57", + "tx_bytes": 1637634279, + "tx_duration": 1086207467519, + "tx_failed": 37, + "tx_offset": 0, + "tx_packets": 4065201, + "tx_rate": { + "bitrate": 195100, + "chwidth": 80, + "mcs": 2, + "nss": 2, + "sgi": true, + "vht": true + }, + "tx_retries": 0 + }, { + "bssid": "90:3c:b3:bb:1e:f8", + "connected": 32849, + "deltas": { + "rx_bytes": 9598, + "rx_packets": 72, + "tx_bytes": 8882, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 46, + "tx_retries": 0 + }, + "inactive": 4, + "msdu": [{ + "rx_msdu": 195620, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }], + "rssi": -51, + "rx_bytes": 77743073, + "rx_packets": 197420, + "rx_rate": { + "bitrate": 258000, + "chwidth": 20 + }, + "station": "36:3b:d9:f3:bd:bb", + "tx_bytes": 197788825, + "tx_duration": 70234104972, + "tx_failed": 12, + "tx_offset": 0, + "tx_packets": 267271, + "tx_rate": { + "bitrate": 1200900, + "chwidth": 80 + }, + "tx_retries": 0 + }, { + "bssid": "90:3c:b3:bb:1e:f8", + "connected": 34738, + "deltas": { + "rx_bytes": 1800, + "rx_packets": 30, + "tx_bytes": 1680, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 30, + "tx_retries": 0 + }, + "inactive": 0, + "msdu": [{ + "rx_msdu": 36142, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 2, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }], + "rssi": -71, + "rx_bytes": 3520379, + "rx_packets": 36152, + "rx_rate": { + "bitrate": 216000, + "chwidth": 40, + "ht": true, + "mcs": 13 + }, + "station": "5c:f6:dc:18:30:ad", + "tx_bytes": 21076447, + "tx_duration": 16559831451, + "tx_failed": 1, + "tx_offset": 0, + "tx_packets": 39012, + "tx_rate": { + "bitrate": 300000, + "chwidth": 40, + "ht": true, + "mcs": 15, + "sgi": true + }, + "tx_retries": 0 + }, { + "bssid": "90:3c:b3:bb:1e:f8", + "connected": 41576, + "deltas": { + "rx_bytes": 7673, + "rx_packets": 92, + "tx_bytes": 9619, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 85, + "tx_retries": 0 + }, + "inactive": 2, + "msdu": [{ + "rx_msdu": 114733, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 2, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }], + "rssi": -75, + "rx_bytes": 9588569, + "rx_packets": 114743, + "rx_rate": { + "bitrate": 81000, + "chwidth": 40, + "ht": true, + "mcs": 4 + }, + "station": "34:d2:70:67:b9:de", + "tx_bytes": 11422871, + "tx_duration": 45241105959, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 110731, + "tx_rate": { + "bitrate": 300000, + "chwidth": 40, + "ht": true, + "mcs": 15, + "sgi": true + }, + "tx_retries": 0 + }, { + "bssid": "90:3c:b3:bb:1e:f8", + "connected": 41752, + "deltas": { + "rx_bytes": 854, + "rx_packets": 9, + "tx_bytes": 56, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 1, + "tx_retries": 0 + }, + "inactive": 11, + "msdu": [{ + "rx_msdu": 71403, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }], + "rssi": -44, + "rx_bytes": 12794240, + "rx_packets": 71411, + "rx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "station": "58:d3:49:0d:d2:56", + "tx_bytes": 60670264, + "tx_duration": 40289617292, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 82248, + "tx_rate": { + "bitrate": 72200, + "chwidth": 20, + "ht": true, + "mcs": 7, + "sgi": true + }, + "tx_retries": 0 + }, { + "bssid": "90:3c:b3:bb:1e:f8", + "connected": 42072, + "deltas": { + "rx_bytes": 330, + "rx_packets": 5, + "tx_bytes": 386, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 6, + "tx_retries": 0 + }, + "inactive": 22, + "msdu": [{ + "rx_msdu": 28238, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }], + "rssi": -53, + "rx_bytes": 10468957, + "rx_packets": 28242, + "rx_rate": { + "bitrate": 1080600, + "chwidth": 80 + }, + "station": "62:72:4b:45:5e:b6", + "tx_bytes": 150118037, + "tx_duration": 13718626153, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 117047, + "tx_rate": { + "bitrate": 1200900, + "chwidth": 80 + }, + "tx_retries": 0 + }, { + "bssid": "90:3c:b3:bb:1e:f8", + "connected": 42232, + "deltas": { + "rx_bytes": 970491, + "rx_packets": 9828, + "tx_bytes": 14174312, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 19394, + "tx_retries": 0 + }, + "msdu": [{ + "rx_msdu": 340572, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }], + "rssi": -63, + "rx_bytes": 60726160, + "rx_packets": 340588, + "rx_rate": { + "bitrate": 960700, + "chwidth": 80 + }, + "station": "f4:d4:88:6c:e7:29", + "tx_bytes": 567846695, + "tx_duration": 54492468022, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 683094, + "tx_rate": { + "bitrate": 1200900, + "chwidth": 80 + }, + "tx_retries": 0 + }, { + "bssid": "90:3c:b3:bb:1e:f8", + "connected": 42236, + "deltas": { + "rx_bytes": 126, + "rx_packets": 3, + "tx_bytes": 448, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 8, + "tx_retries": 0 + }, + "inactive": 0, + "msdu": [{ + "rx_msdu": 76226, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }], + "rssi": -63, + "rx_bytes": 12760776, + "rx_packets": 76242, + "rx_rate": { + "bitrate": 720600, + "chwidth": 80 + }, + "station": "7a:c5:5b:a1:2b:89", + "tx_bytes": 69914580, + "tx_duration": 35664092548, + "tx_failed": 3, + "tx_offset": 0, + "tx_packets": 98985, + "tx_rate": { + "bitrate": 1080600, + "chwidth": 80 + }, + "tx_retries": 0 + }], + "bssid": "90:3c:b3:bb:1e:f8", + "iface": "wlan0-1", + "location": "/interfaces/0/ssids/1", + "mode": "ap", + "phy": "platform/soc/c000000.wifi", + "radio": { + "$ref": "#/radios/0" + }, + "ssid": "petunia" + }, { + "associations": [{ + "bssid": "90:3c:b3:bb:1e:f7", + "connected": 42251, + "deltas": { + "rx_bytes": 558, + "rx_packets": 8, + "tx_bytes": 470, + "tx_failed": 0, + "tx_offset": 0, + "tx_packets": 6, + "tx_retries": 0 + }, + "inactive": 4, + "msdu": [{ + "rx_msdu": 5916, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }, { + "rx_msdu": 0, + "tx_msdu": 0, + "tx_msdu_failed": 0, + "tx_msdu_retries": 0 + }], + "rssi": -71, + "rx_bytes": 412290, + "rx_packets": 5920, + "rx_rate": { + "bitrate": 19500, + "chwidth": 20, + "ht": true, + "mcs": 2 + }, + "station": "48:e1:e9:3d:a2:06", + "tx_bytes": 369788, + "tx_duration": 4708609802, + "tx_failed": 182, + "tx_offset": 0, + "tx_packets": 4610, + "tx_rate": { + "bitrate": 36000, + "chwidth": 20 + }, + "tx_retries": 0 + }], + "bssid": "90:3c:b3:bb:1e:f7", + "iface": "wlan1", + "location": "/interfaces/0/ssids/1", + "mode": "ap", + "phy": "platform/soc/c000000.wifi+1", + "radio": { + "$ref": "#/radios/1" + }, + "ssid": "petunia" + }], + "uptime": 42272 + }], + "link-state": { + "downstream": { + "eth1": { + "carrier": 0 + }, + "eth2": { + "carrier": 0 + } + }, + "upstream": { + "eth0": { + "carrier": 1, + "duplex": "full", + "speed": 1000 + } + } + }, + "radios": [{ + "active_ms": 42254476, + "busy_ms": 1602706, + "channel": 36, + "channel_width": "80", + "noise": -103, + "phy": "platform/soc/c000000.wifi", + "receive_ms": 250163, + "temperature": 47, + "transmit_ms": 958789, + "tx_power": 23 + }, { + "active_ms": 42245443, + "busy_ms": 3201129, + "channel": 1, + "channel_width": "20", + "noise": -98, + "phy": "platform/soc/c000000.wifi+1", + "receive_ms": 11185, + "temperature": 46, + "transmit_ms": 233039, + "tx_power": 10 + }], + "unit": { + "load": [0, 0.013184, 0], + "localtime": 1647363105, + "memory": { + "buffered": 8962048, + "cached": 27140096, + "free": 801275904, + "total": 973135872 + }, + "uptime": 42339 + }, + "version": 1 +} \ No newline at end of file