ul-data-logger-api-sdk 3.1.1__tar.gz → 3.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/PKG-INFO +1 -1
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/data_logger_api_sdk.py +60 -5
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/pyproject.toml +1 -1
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/types/api_base_stations.py +7 -1
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/.gitignore +0 -0
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/__init__.py +0 -0
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/data_logger_sdk_config.py +0 -0
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/py.typed +0 -0
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/types/__init__.py +0 -0
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/types/api_bs_traffic_stats.py +0 -0
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/types/api_device_data_history.py +0 -0
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/types/api_last_bs_data_by_device_macs.py +0 -0
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/types/api_packet_types.py +0 -0
- {ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/types/api_protocol_types.py +0 -0
|
@@ -13,6 +13,7 @@ from data_logger_api_sdk.data_logger_sdk_config import DataLoggerApiSdkConfig
|
|
|
13
13
|
from data_logger_api_sdk.types.api_base_stations import (
|
|
14
14
|
ApiBaseStationDetailResponse,
|
|
15
15
|
ApiBaseStationDeviceLogsResponse,
|
|
16
|
+
ApiBaseStationDeviceLogsStatResponse,
|
|
16
17
|
ApiBaseStationDevicesResponse,
|
|
17
18
|
ApiBaseStationLogsStatForIntervalsResponse,
|
|
18
19
|
ApiBaseStationLogsStatResponse,
|
|
@@ -193,13 +194,21 @@ class DataLoggerApiSdk:
|
|
|
193
194
|
self,
|
|
194
195
|
base_station_id: UUID,
|
|
195
196
|
log_stat_days: int = 0,
|
|
197
|
+
exclude_log_types: List[str] | None = None,
|
|
196
198
|
) -> ApiBaseStationDetailResponse:
|
|
197
|
-
"""GET /base-stations/<uuid> — карточка базовой станции Data Logger.
|
|
199
|
+
"""GET /base-stations/<uuid> — карточка базовой станции Data Logger.
|
|
200
|
+
|
|
201
|
+
exclude_log_types исключает типы из logs_stat (например, ['heartbit']);
|
|
202
|
+
без него счётчики включают служебные heartbeat-логи.
|
|
203
|
+
"""
|
|
204
|
+
query: Dict[str, Any] = {"log_stat_days": log_stat_days}
|
|
205
|
+
if exclude_log_types:
|
|
206
|
+
query["exclude_log_types"] = exclude_log_types
|
|
198
207
|
return self._request_payload_once(
|
|
199
208
|
ApiMethod.GET,
|
|
200
209
|
f"/base-stations/{base_station_id}",
|
|
201
210
|
ApiBaseStationDetailResponse,
|
|
202
|
-
|
|
211
|
+
query,
|
|
203
212
|
)
|
|
204
213
|
|
|
205
214
|
def get_base_station_logs(
|
|
@@ -209,13 +218,23 @@ class DataLoggerApiSdk:
|
|
|
209
218
|
end_at: datetime | None = None,
|
|
210
219
|
limit: int = 100,
|
|
211
220
|
offset: int = 0,
|
|
221
|
+
exclude_log_types: List[str] | None = None,
|
|
222
|
+
sort: str | None = None,
|
|
212
223
|
) -> ApiBaseStationLogsListResult:
|
|
213
|
-
"""GET /base-stations/<uuid>/logs — журнал логов базовой станции.
|
|
224
|
+
"""GET /base-stations/<uuid>/logs — журнал логов базовой станции.
|
|
225
|
+
|
|
226
|
+
exclude_log_types передаётся стандартным filter-параметром
|
|
227
|
+
(например, ['heartbit'] прячет служебные heartbeat-логи).
|
|
228
|
+
"""
|
|
214
229
|
query: Dict[str, Any] = {"limit": limit, "offset": offset}
|
|
215
230
|
if start_at is not None:
|
|
216
231
|
query["start_at"] = start_at.isoformat()
|
|
217
232
|
if end_at is not None:
|
|
218
233
|
query["end_at"] = end_at.isoformat()
|
|
234
|
+
if exclude_log_types:
|
|
235
|
+
query["filter"] = json.dumps([{"name": "log_type", "op": "not_in", "val": exclude_log_types}])
|
|
236
|
+
if sort:
|
|
237
|
+
query["sort"] = sort
|
|
219
238
|
items, total_count = self._request_list_payload_once(
|
|
220
239
|
ApiMethod.GET,
|
|
221
240
|
f"/base-stations/{base_station_id}/logs",
|
|
@@ -224,6 +243,18 @@ class DataLoggerApiSdk:
|
|
|
224
243
|
)
|
|
225
244
|
return ApiBaseStationLogsListResult(items=items, total_count=total_count)
|
|
226
245
|
|
|
246
|
+
def get_base_station_log(
|
|
247
|
+
self,
|
|
248
|
+
base_station_id: UUID,
|
|
249
|
+
log_id: UUID,
|
|
250
|
+
) -> ApiBaseStationLogResponse:
|
|
251
|
+
"""GET /base-stations/<uuid>/logs/<uuid> — конкретный лог базовой станции."""
|
|
252
|
+
return self._request_payload_once(
|
|
253
|
+
ApiMethod.GET,
|
|
254
|
+
f"/base-stations/{base_station_id}/logs/{log_id}",
|
|
255
|
+
ApiBaseStationLogResponse,
|
|
256
|
+
)
|
|
257
|
+
|
|
227
258
|
def get_base_station_system_logs(
|
|
228
259
|
self,
|
|
229
260
|
base_station_id: UUID,
|
|
@@ -250,13 +281,37 @@ class DataLoggerApiSdk:
|
|
|
250
281
|
self,
|
|
251
282
|
base_station_id: UUID,
|
|
252
283
|
day: date,
|
|
284
|
+
exclude_log_types: List[str] | None = None,
|
|
253
285
|
) -> ApiBaseStationLogsStatResponse:
|
|
254
|
-
"""GET /base-stations/<uuid>/logs-stat — статистика логов базовой станции за сутки.
|
|
286
|
+
"""GET /base-stations/<uuid>/logs-stat — статистика логов базовой станции за сутки.
|
|
287
|
+
|
|
288
|
+
exclude_log_types исключает типы из поминутных счётчиков (['heartbit'] прячет heartbeat).
|
|
289
|
+
"""
|
|
290
|
+
query: Dict[str, Any] = {"day": day.isoformat()}
|
|
291
|
+
if exclude_log_types:
|
|
292
|
+
query["exclude_log_types"] = exclude_log_types
|
|
255
293
|
return self._request_payload_once(
|
|
256
294
|
ApiMethod.GET,
|
|
257
295
|
f"/base-stations/{base_station_id}/logs-stat",
|
|
258
296
|
ApiBaseStationLogsStatResponse,
|
|
259
|
-
|
|
297
|
+
query,
|
|
298
|
+
)
|
|
299
|
+
|
|
300
|
+
def get_base_station_device_logs_stat(
|
|
301
|
+
self,
|
|
302
|
+
base_station_id: UUID,
|
|
303
|
+
start_at: datetime,
|
|
304
|
+
end_at: datetime | None = None,
|
|
305
|
+
) -> ApiBaseStationDeviceLogsStatResponse:
|
|
306
|
+
"""GET /base-stations/<uuid>/device-logs-stat — число логов устройств БС по дням."""
|
|
307
|
+
query: Dict[str, Any] = {"start_at": start_at.isoformat()}
|
|
308
|
+
if end_at is not None:
|
|
309
|
+
query["end_at"] = end_at.isoformat()
|
|
310
|
+
return self._request_payload_once(
|
|
311
|
+
ApiMethod.GET,
|
|
312
|
+
f"/base-stations/{base_station_id}/device-logs-stat",
|
|
313
|
+
ApiBaseStationDeviceLogsStatResponse,
|
|
314
|
+
query,
|
|
260
315
|
)
|
|
261
316
|
|
|
262
317
|
def get_base_station_logs_stat_for_intervals(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from datetime import datetime
|
|
1
|
+
from datetime import date, datetime
|
|
2
2
|
from typing import Any, Dict, List, NamedTuple, Tuple
|
|
3
3
|
|
|
4
4
|
from pydantic.types import UUID4
|
|
@@ -110,6 +110,12 @@ class ApiBaseStationLogsStatForIntervalsResponse(JsonApiResponsePayload):
|
|
|
110
110
|
stats: List[datetime]
|
|
111
111
|
|
|
112
112
|
|
|
113
|
+
class ApiBaseStationDeviceLogsStatResponse(JsonApiResponsePayload):
|
|
114
|
+
"""Ответ GET /base-stations/<uuid>/device-logs-stat: число логов устройств по дням."""
|
|
115
|
+
|
|
116
|
+
stats: List[Tuple[date, int]]
|
|
117
|
+
|
|
118
|
+
|
|
113
119
|
class ApiBaseStationDeviceResponse(JsonApiResponsePayload):
|
|
114
120
|
"""Элемент devices ответа GET /base-stations/<uuid>/devices (ApiDeviceResponse без вложенной БС)."""
|
|
115
121
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul_data_logger_api_sdk-3.1.1 → ul_data_logger_api_sdk-3.3.0}/types/api_device_data_history.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|