Конечная цель — создать панель мониторинга, которая отображает количество аутентифицированных пользователей на одна точка доступа в течение установленного периода времени X. Я использовал Pandas для форматирования ответов json и пытался работать с ними, но я немного застрял, так как никогда не работал с Json, API или Pandas.
Dataframe 1 — это список всех точек доступа и необходимой информации о них выглядит примерно так:
Код: Выделить всё
name - serial - mac - networkID - model - IP - last updated - Firmware
Код: Выделить всё
for serial in df['serial']:
times =[]
times.append(dashboard.wireless.getNetworkWirelessClientCountHistory(networkID,deviceSerial=serial,timespan=3600,resolution=300))
print(times)
Код: Выделить всё
{'startTs': '2024-12-12T11:05:00Z',
'endTs': '2024-12-12T11:10:00Z',
'clientCount': None}
X = временная метка, например, 11:05:00
Y = ClientCount, например, нет
Я не уверен, какой способ будет самым простым, поскольку каждый ответ API для времени должен быть сопоставлен с правильной точкой доступа, поэтому Я могу отображать данные для каждой точки доступа индивидуально.
Кадр данных для времени выглядит примерно так (для каждой точки доступа)
Код: Выделить всё
startTs endTs clientCount
0 2024-12-12T10:10:00Z 2024-12-12T10:15:00Z None
1 2024-12-12T10:15:00Z 2024-12-12T10:20:00Z None
2 2024-12-12T10:20:00Z 2024-12-12T10:25:00Z None
3 2024-12-12T10:25:00Z 2024-12-12T10:30:00Z None
Код: Выделить всё
import meraki
import pandas as pd
from datetime import datetime
API_KEY = 'API_KEY_HERE'
dashboard = meraki.DashboardAPI(API_KEY)
org_id = 'ORG_ID_HERE'
Network_ID = 'MERAKI_NETWORK_ID_HERE'
client_id = ''
#get all devices
response = dashboard.organizations.getOrganizationDevices(
org_id, total_pages='all', networkIds= NETWORK_ID_HERE
)
#filter for APs
response = list(filter(lambda x: x['productType'] == "wireless",response))
df = pd.DataFrame(response)
#drop columns
df = df.drop(['details','url','tags','notes','lng','lat','address','productType'],axis=1)
for serial in df['serial']:
times = []
times.append(dashboard.wireless.getNetworkWirelessClientCountHistory(NETWORK_ID_HERE,deviceSerial=serial,timespan=3600,resolution=300))
Подробнее здесь: https://stackoverflow.com/questions/792 ... dataframes