ul-data-logger-api-sdk 3.3.4__tar.gz → 3.4.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.3.4 → ul_data_logger_api_sdk-3.4.0}/PKG-INFO +1 -1
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/data_logger_api_sdk.py +17 -43
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/pyproject.toml +1 -1
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/types/api_base_stations.py +3 -32
- ul_data_logger_api_sdk-3.4.0/types/api_bs_device_links.py +15 -0
- ul_data_logger_api_sdk-3.4.0/types/api_uplink_signal.py +22 -0
- ul_data_logger_api_sdk-3.3.4/types/api_bs_device_links.py +0 -25
- ul_data_logger_api_sdk-3.3.4/types/api_uplink_signal.py +0 -29
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/.gitignore +0 -0
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/__init__.py +0 -0
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/data_logger_sdk_config.py +0 -0
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/py.typed +0 -0
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/types/__init__.py +0 -0
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/types/api_bs_traffic_stats.py +0 -0
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/types/api_device_data_history.py +0 -0
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/types/api_last_bs_data_by_device_macs.py +0 -0
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/types/api_packet_types.py +0 -0
- {ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/types/api_protocol_types.py +0 -0
|
@@ -25,7 +25,7 @@ from data_logger_api_sdk.types.api_base_stations import (
|
|
|
25
25
|
ApiBaseStationSystemLogResponse,
|
|
26
26
|
ApiBaseStationSystemLogsListResult,
|
|
27
27
|
)
|
|
28
|
-
from data_logger_api_sdk.types.api_bs_device_links import ApiBsDeviceLinkResponse
|
|
28
|
+
from data_logger_api_sdk.types.api_bs_device_links import ApiBsDeviceLinkResponse
|
|
29
29
|
from data_logger_api_sdk.types.api_bs_traffic_stats import ApiBsTrafficStatsResponse, ApiDeviceTrafficStatsQuery
|
|
30
30
|
from data_logger_api_sdk.types.api_uplink_signal import (
|
|
31
31
|
ApiDeviceUplinkSignalLatestResponse,
|
|
@@ -180,7 +180,6 @@ class DataLoggerApiSdk:
|
|
|
180
180
|
serial_number: int | None = None,
|
|
181
181
|
log_stat_days: int = 0,
|
|
182
182
|
) -> ApiBaseStationsListResult:
|
|
183
|
-
"""GET /base-stations — список базовых станций Data Logger."""
|
|
184
183
|
query: Dict[str, Any] = {
|
|
185
184
|
"limit": limit,
|
|
186
185
|
"offset": offset,
|
|
@@ -202,12 +201,7 @@ class DataLoggerApiSdk:
|
|
|
202
201
|
offset: int = 0,
|
|
203
202
|
macs: List[int] | None = None,
|
|
204
203
|
) -> ApiDeviceUplinkSignalsListResult:
|
|
205
|
-
"""
|
|
206
|
-
|
|
207
|
-
Последний по метеру, группировка по маку (один мак = одна строка);
|
|
208
|
-
macs — рантайм-фильтр по конкретным устройствам. bs_id —
|
|
209
|
-
идентификатор БС Data Logger (= external_bs_id потребителя).
|
|
210
|
-
"""
|
|
204
|
+
"""Последний uplink-сигнал каждого мака (один мак — одна строка)."""
|
|
211
205
|
query: Dict[str, Any] = {"limit": limit, "offset": offset}
|
|
212
206
|
if macs:
|
|
213
207
|
query["mac"] = macs
|
|
@@ -219,28 +213,27 @@ class DataLoggerApiSdk:
|
|
|
219
213
|
)
|
|
220
214
|
return ApiDeviceUplinkSignalsListResult(items=items, total_count=total_count)
|
|
221
215
|
|
|
222
|
-
def
|
|
216
|
+
def get_bs_device_links_for_bs(
|
|
223
217
|
self,
|
|
218
|
+
bs_id: UUID,
|
|
224
219
|
start_at: datetime,
|
|
225
220
|
end_at: datetime | None = None,
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
) -> ApiBsDeviceLinksListResult:
|
|
229
|
-
"""GET /bs-device-links — связи «мак ↔ БС» за период («когда-либо» при start_at из далёкого прошлого).
|
|
221
|
+
) -> List[ApiBsDeviceLinkResponse]:
|
|
222
|
+
"""GET /bs-device-links?bs_id=… — связи «мак ↔ БС» одной БС за окно (~90 дней ночного синка).
|
|
230
223
|
|
|
231
|
-
|
|
232
|
-
|
|
224
|
+
Ответ капится сервером (DL_BS_LINKS_PER_BS_LIMIT, при переполнении
|
|
225
|
+
дробится окно); дедуп между под-окнами — на потребителе.
|
|
233
226
|
"""
|
|
234
|
-
query: Dict[str, Any] = {"
|
|
227
|
+
query: Dict[str, Any] = {"bs_id": str(bs_id), "start_at": start_at.isoformat()}
|
|
235
228
|
if end_at is not None:
|
|
236
229
|
query["end_at"] = end_at.isoformat()
|
|
237
|
-
|
|
238
|
-
ApiMethod.GET,
|
|
239
|
-
"/bs-device-links",
|
|
240
|
-
|
|
241
|
-
query,
|
|
242
|
-
)
|
|
243
|
-
return
|
|
230
|
+
response = self._api.request(
|
|
231
|
+
method=ApiMethod.GET,
|
|
232
|
+
path="/bs-device-links",
|
|
233
|
+
json=None,
|
|
234
|
+
q=query,
|
|
235
|
+
).typed(List[ApiBsDeviceLinkResponse]).check()
|
|
236
|
+
return response.payload
|
|
244
237
|
|
|
245
238
|
def get_base_station(
|
|
246
239
|
self,
|
|
@@ -248,11 +241,7 @@ class DataLoggerApiSdk:
|
|
|
248
241
|
log_stat_days: int = 0,
|
|
249
242
|
exclude_log_types: List[str] | None = None,
|
|
250
243
|
) -> ApiBaseStationDetailResponse:
|
|
251
|
-
"""
|
|
252
|
-
|
|
253
|
-
exclude_log_types исключает типы из logs_stat (например, ['heartbit']);
|
|
254
|
-
без него счётчики включают служебные heartbeat-логи.
|
|
255
|
-
"""
|
|
244
|
+
"""exclude_log_types исключает типы из счётчиков logs_stat (например, ['heartbit'])."""
|
|
256
245
|
query: Dict[str, Any] = {"log_stat_days": log_stat_days}
|
|
257
246
|
if exclude_log_types:
|
|
258
247
|
query["exclude_log_types"] = exclude_log_types
|
|
@@ -273,11 +262,6 @@ class DataLoggerApiSdk:
|
|
|
273
262
|
exclude_log_types: List[str] | None = None,
|
|
274
263
|
sort: str | None = None,
|
|
275
264
|
) -> ApiBaseStationLogsListResult:
|
|
276
|
-
"""GET /base-stations/<uuid>/logs — журнал логов базовой станции.
|
|
277
|
-
|
|
278
|
-
exclude_log_types передаётся стандартным filter-параметром
|
|
279
|
-
(например, ['heartbit'] прячет служебные heartbeat-логи).
|
|
280
|
-
"""
|
|
281
265
|
query: Dict[str, Any] = {"limit": limit, "offset": offset}
|
|
282
266
|
if start_at is not None:
|
|
283
267
|
query["start_at"] = start_at.isoformat()
|
|
@@ -300,7 +284,6 @@ class DataLoggerApiSdk:
|
|
|
300
284
|
base_station_id: UUID,
|
|
301
285
|
log_id: UUID,
|
|
302
286
|
) -> ApiBaseStationLogDetailResponse:
|
|
303
|
-
"""GET /base-stations/<uuid>/logs/<uuid> — конкретный лог БС с сырым JSON пакета."""
|
|
304
287
|
return self._request_payload_once(
|
|
305
288
|
ApiMethod.GET,
|
|
306
289
|
f"/base-stations/{base_station_id}/logs/{log_id}",
|
|
@@ -315,7 +298,6 @@ class DataLoggerApiSdk:
|
|
|
315
298
|
limit: int = 100,
|
|
316
299
|
offset: int = 0,
|
|
317
300
|
) -> ApiBaseStationSystemLogsListResult:
|
|
318
|
-
"""GET /base-stations/<uuid>/system-logs — журнал системных логов базовой станции."""
|
|
319
301
|
query: Dict[str, Any] = {"limit": limit, "offset": offset}
|
|
320
302
|
if start_at is not None:
|
|
321
303
|
query["start_at"] = start_at.isoformat()
|
|
@@ -335,10 +317,6 @@ class DataLoggerApiSdk:
|
|
|
335
317
|
day: date,
|
|
336
318
|
exclude_log_types: List[str] | None = None,
|
|
337
319
|
) -> ApiBaseStationLogsStatResponse:
|
|
338
|
-
"""GET /base-stations/<uuid>/logs-stat — статистика логов базовой станции за сутки.
|
|
339
|
-
|
|
340
|
-
exclude_log_types исключает типы из поминутных счётчиков (['heartbit'] прячет heartbeat).
|
|
341
|
-
"""
|
|
342
320
|
query: Dict[str, Any] = {"day": day.isoformat()}
|
|
343
321
|
if exclude_log_types:
|
|
344
322
|
query["exclude_log_types"] = exclude_log_types
|
|
@@ -355,7 +333,6 @@ class DataLoggerApiSdk:
|
|
|
355
333
|
start_at: datetime,
|
|
356
334
|
end_at: datetime | None = None,
|
|
357
335
|
) -> ApiBaseStationDeviceLogsStatResponse:
|
|
358
|
-
"""GET /base-stations/<uuid>/device-logs-stat — число логов устройств БС по дням."""
|
|
359
336
|
query: Dict[str, Any] = {"start_at": start_at.isoformat()}
|
|
360
337
|
if end_at is not None:
|
|
361
338
|
query["end_at"] = end_at.isoformat()
|
|
@@ -372,7 +349,6 @@ class DataLoggerApiSdk:
|
|
|
372
349
|
start_at: datetime,
|
|
373
350
|
end_at: datetime | None = None,
|
|
374
351
|
) -> ApiBaseStationLogsStatForIntervalsResponse:
|
|
375
|
-
"""GET /base-stations/<uuid>/logs-stat-for-intervals — метки времени логов за интервал."""
|
|
376
352
|
query: Dict[str, Any] = {"start_at": start_at.isoformat()}
|
|
377
353
|
if end_at is not None:
|
|
378
354
|
query["end_at"] = end_at.isoformat()
|
|
@@ -391,7 +367,6 @@ class DataLoggerApiSdk:
|
|
|
391
367
|
limit: int = 100,
|
|
392
368
|
offset: int = 0,
|
|
393
369
|
) -> ApiBaseStationDevicesResponse:
|
|
394
|
-
"""GET /base-stations/<uuid>/devices — устройства, работающие через базовую станцию."""
|
|
395
370
|
query: Dict[str, Any] = {"start_at": start_at.isoformat(), "limit": limit, "offset": offset}
|
|
396
371
|
if end_at is not None:
|
|
397
372
|
query["end_at"] = end_at.isoformat()
|
|
@@ -410,7 +385,6 @@ class DataLoggerApiSdk:
|
|
|
410
385
|
limit: int = 100,
|
|
411
386
|
offset: int = 0,
|
|
412
387
|
) -> ApiBaseStationDeviceLogsResponse:
|
|
413
|
-
"""GET /base-stations/<uuid>/device-logs — логи устройств базовой станции."""
|
|
414
388
|
query: Dict[str, Any] = {"start_at": start_at.isoformat(), "limit": limit, "offset": offset}
|
|
415
389
|
if end_at is not None:
|
|
416
390
|
query["end_at"] = end_at.isoformat()
|
|
@@ -9,29 +9,21 @@ BS__LOG_TYPE__HEARTBIT = "heartbit"
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class ApiBaseStationsListResult(NamedTuple):
|
|
12
|
-
"""Результат спискового вызова BS-endpoint Data Logger: страница элементов и total_count."""
|
|
13
|
-
|
|
14
12
|
items: List["ApiBaseStationResponse"]
|
|
15
13
|
total_count: int
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
class ApiBaseStationLogsListResult(NamedTuple):
|
|
19
|
-
"""Результат вызова GET /base-stations/<uuid>/logs."""
|
|
20
|
-
|
|
21
17
|
items: List["ApiBaseStationLogResponse"]
|
|
22
18
|
total_count: int
|
|
23
19
|
|
|
24
20
|
|
|
25
21
|
class ApiBaseStationSystemLogsListResult(NamedTuple):
|
|
26
|
-
"""Результат вызова GET /base-stations/<uuid>/system-logs."""
|
|
27
|
-
|
|
28
22
|
items: List["ApiBaseStationSystemLogResponse"]
|
|
29
23
|
total_count: int
|
|
30
24
|
|
|
31
25
|
|
|
32
26
|
class ApiBaseStationResponse(JsonApiResponsePayload):
|
|
33
|
-
"""Элемент ответа GET /base-stations (BsListShortResponse на стороне Data Logger)."""
|
|
34
|
-
|
|
35
27
|
id: UUID4
|
|
36
28
|
date_created: datetime
|
|
37
29
|
date_modified: datetime
|
|
@@ -55,8 +47,6 @@ class ApiBaseStationResponse(JsonApiResponsePayload):
|
|
|
55
47
|
|
|
56
48
|
|
|
57
49
|
class ApiBaseStationDetailResponse(ApiBaseStationResponse):
|
|
58
|
-
"""Ответ GET /base-stations/<uuid> (BsResponse на стороне Data Logger)."""
|
|
59
|
-
|
|
60
50
|
latest_sdr_config: Dict[str, Any] | None = None
|
|
61
51
|
device_counts: List[Tuple[datetime, int]] | None = None
|
|
62
52
|
system_logs_stat: List[Tuple[datetime, int]] | None = None
|
|
@@ -65,12 +55,7 @@ class ApiBaseStationDetailResponse(ApiBaseStationResponse):
|
|
|
65
55
|
|
|
66
56
|
|
|
67
57
|
class ApiBaseStationLogResponse(JsonApiResponsePayload):
|
|
68
|
-
"""
|
|
69
|
-
|
|
70
|
-
rssi/snr/protocol_type/packet_type_name/network_sys_type/error_* обогащаются
|
|
71
|
-
из сырого документа пакета (блок meta.bs_http / meta.nbfi_bs0); null, если
|
|
72
|
-
документа нет или в нём нет этих полей.
|
|
73
|
-
"""
|
|
58
|
+
"""Лог БС; rssi/snr и поля пакета (protocol_type, error_*) — из сырого документа, null при его отсутствии."""
|
|
74
59
|
|
|
75
60
|
id: UUID4
|
|
76
61
|
date_created: datetime
|
|
@@ -98,14 +83,10 @@ class ApiBaseStationLogResponse(JsonApiResponsePayload):
|
|
|
98
83
|
|
|
99
84
|
|
|
100
85
|
class ApiBaseStationLogDetailResponse(ApiBaseStationLogResponse):
|
|
101
|
-
"""Ответ GET /base-stations/<uuid>/logs/<uuid> — лог с сырым JSON пакета (ApiBsLogDetailResponse в DL)."""
|
|
102
|
-
|
|
103
86
|
data: Dict[str, Any] | None = None
|
|
104
87
|
|
|
105
88
|
|
|
106
89
|
class ApiBaseStationSystemLogResponse(JsonApiResponsePayload):
|
|
107
|
-
"""Элемент ответа GET /base-stations/<uuid>/system-logs (ApiBsSystemLogsResponse)."""
|
|
108
|
-
|
|
109
90
|
id: UUID4
|
|
110
91
|
date_created: datetime
|
|
111
92
|
|
|
@@ -118,26 +99,22 @@ class ApiBaseStationSystemLogResponse(JsonApiResponsePayload):
|
|
|
118
99
|
|
|
119
100
|
|
|
120
101
|
class ApiBaseStationLogsStatResponse(JsonApiResponsePayload):
|
|
121
|
-
"""Ответ GET /base-stations/<uuid>/logs-stat (ApiBsLogsStatResponse)."""
|
|
122
|
-
|
|
123
102
|
stats: List[Tuple[datetime, int]]
|
|
124
103
|
|
|
125
104
|
|
|
126
105
|
class ApiBaseStationLogsStatForIntervalsResponse(JsonApiResponsePayload):
|
|
127
|
-
"""
|
|
106
|
+
"""Метки времени логов за интервал."""
|
|
128
107
|
|
|
129
108
|
stats: List[datetime]
|
|
130
109
|
|
|
131
110
|
|
|
132
111
|
class ApiBaseStationDeviceLogsStatResponse(JsonApiResponsePayload):
|
|
133
|
-
"""
|
|
112
|
+
"""Число логов устройств БС по дням."""
|
|
134
113
|
|
|
135
114
|
stats: List[Tuple[date, int]]
|
|
136
115
|
|
|
137
116
|
|
|
138
117
|
class ApiBaseStationDeviceResponse(JsonApiResponsePayload):
|
|
139
|
-
"""Элемент devices ответа GET /base-stations/<uuid>/devices (ApiDeviceResponse без вложенной БС)."""
|
|
140
|
-
|
|
141
118
|
id: UUID4
|
|
142
119
|
date_created: datetime
|
|
143
120
|
date_modified: datetime
|
|
@@ -163,15 +140,11 @@ class ApiBaseStationDeviceResponse(JsonApiResponsePayload):
|
|
|
163
140
|
|
|
164
141
|
|
|
165
142
|
class ApiBaseStationDevicesResponse(JsonApiResponsePayload):
|
|
166
|
-
"""Ответ GET /base-stations/<uuid>/devices (ApiBsDevicesResponse)."""
|
|
167
|
-
|
|
168
143
|
devices: List[ApiBaseStationDeviceResponse]
|
|
169
144
|
device_count: int
|
|
170
145
|
|
|
171
146
|
|
|
172
147
|
class ApiBaseStationDeviceLogResponse(JsonApiResponsePayload):
|
|
173
|
-
"""Элемент device_logs ответа GET /base-stations/<uuid>/device-logs (ApiDeviceLogsResponse)."""
|
|
174
|
-
|
|
175
148
|
id: UUID4
|
|
176
149
|
date_created: datetime
|
|
177
150
|
|
|
@@ -202,8 +175,6 @@ class ApiBaseStationDeviceLogResponse(JsonApiResponsePayload):
|
|
|
202
175
|
|
|
203
176
|
|
|
204
177
|
class ApiBaseStationDeviceLogsResponse(JsonApiResponsePayload):
|
|
205
|
-
"""Ответ GET /base-stations/<uuid>/device-logs (ApiBsDeviceLogsResponse)."""
|
|
206
|
-
|
|
207
178
|
device_logs: List[ApiBaseStationDeviceLogResponse]
|
|
208
179
|
device_logs_count: int
|
|
209
180
|
device_count: int
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from pydantic import UUID4
|
|
2
|
+
from ul_api_utils.api_resource.api_response import JsonApiResponsePayload
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ApiBsDeviceLinkResponse(JsonApiResponsePayload):
|
|
6
|
+
"""Связь «мак ↔ БС» за период: элемент ответа GET /bs-device-links.
|
|
7
|
+
|
|
8
|
+
bs_id — идентификатор БС Data Logger (у потребителя unified API —
|
|
9
|
+
external_bs_id); bs_identifier — серийный номер БС.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
device_network_mac: int
|
|
13
|
+
bs_id: UUID4
|
|
14
|
+
device_id: UUID4
|
|
15
|
+
bs_identifier: str
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from typing import List, NamedTuple
|
|
3
|
+
|
|
4
|
+
from pydantic import UUID4
|
|
5
|
+
from ul_api_utils.api_resource.api_response import JsonApiResponsePayload
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ApiDeviceUplinkSignalLatestResponse(JsonApiResponsePayload):
|
|
9
|
+
"""Последний uplink-сигнал мака; bs_identifier — серийный номер БС, packet_date — время последнего пакета."""
|
|
10
|
+
|
|
11
|
+
mac: int
|
|
12
|
+
device_id: UUID4
|
|
13
|
+
bs_id: UUID4 | None = None
|
|
14
|
+
bs_identifier: str | None = None
|
|
15
|
+
rssi: int | None = None
|
|
16
|
+
snr: int | None = None
|
|
17
|
+
packet_date: datetime | None = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ApiDeviceUplinkSignalsListResult(NamedTuple):
|
|
21
|
+
items: List[ApiDeviceUplinkSignalLatestResponse]
|
|
22
|
+
total_count: int
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
from typing import List, NamedTuple
|
|
2
|
-
|
|
3
|
-
from pydantic import UUID4
|
|
4
|
-
from ul_api_utils.api_resource.api_response import JsonApiResponsePayload
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class ApiBsDeviceLinkResponse(JsonApiResponsePayload):
|
|
8
|
-
"""Связь «мак ↔ БС» за период: элемент ответа GET /bs-device-links.
|
|
9
|
-
|
|
10
|
-
Пара существует, если БС когда-либо получала пакет устройства в
|
|
11
|
-
запрошенном окне (дистинкт по журналу device_log). bs_id — идентификатор
|
|
12
|
-
БС Data Logger (у потребителя unified API это external_bs_id);
|
|
13
|
-
bs_identifier — её серийный номер.
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
device_network_mac: int
|
|
17
|
-
bs_id: UUID4
|
|
18
|
-
bs_identifier: str
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class ApiBsDeviceLinksListResult(NamedTuple):
|
|
22
|
-
"""Результат спискового вызова: страница элементов и total_count."""
|
|
23
|
-
|
|
24
|
-
items: List[ApiBsDeviceLinkResponse]
|
|
25
|
-
total_count: int
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
from datetime import datetime
|
|
2
|
-
from typing import List, NamedTuple
|
|
3
|
-
|
|
4
|
-
from pydantic import UUID4
|
|
5
|
-
from ul_api_utils.api_resource.api_response import JsonApiResponsePayload
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class ApiDeviceUplinkSignalLatestResponse(JsonApiResponsePayload):
|
|
9
|
-
"""Последний uplink-сигнал мака: элемент ответа GET /uplink-signal-latest.
|
|
10
|
-
|
|
11
|
-
bs_id — идентификатор базовой станции Data Logger (у потребителя unified
|
|
12
|
-
API это external_bs_id, маппинг по серийнику не нужен); bs_identifier —
|
|
13
|
-
серийный номер БС. packet_date — время последнего пакета устройства.
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
mac: int
|
|
17
|
-
device_id: UUID4
|
|
18
|
-
bs_id: UUID4 | None = None
|
|
19
|
-
bs_identifier: str | None = None
|
|
20
|
-
rssi: int | None = None
|
|
21
|
-
snr: int | None = None
|
|
22
|
-
packet_date: datetime | None = None
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class ApiDeviceUplinkSignalsListResult(NamedTuple):
|
|
26
|
-
"""Результат спискового вызова: страница элементов и total_count."""
|
|
27
|
-
|
|
28
|
-
items: List[ApiDeviceUplinkSignalLatestResponse]
|
|
29
|
-
total_count: int
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul_data_logger_api_sdk-3.3.4 → ul_data_logger_api_sdk-3.4.0}/types/api_device_data_history.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|