getDevicesLogs method
Implementation
@override
Future<DevicesLogs> getDevicesLogs(DevicesLogsParam param,
{DateTime? timeStart}) async {
try {
// if (timeStart == null) {
// timeStart = DateTime.now().subtract(Duration(days: 30)).toUtc();
// }
Map<String, dynamic> queryParameters = {
'parameter': param.deviceParameter,
'communication': 'mqtt',
'limit': param.limit,
'sortorder': 'desc'
};
if (timeStart != null) {
queryParameters['ts'] = timeStart.toIso8601String();
}
return await dio
.get('${ApiEndpoints.DEVICES_LOGS}/${param.deviceId}',
queryParameters: queryParameters,
options: Options(
validateStatus: (status) => status == 200 || status == 404))
.then((value) {
Property? prop = DevicePropertiesHelper.getPropertyByDeviceParameter(
param.deviceParameter, param.device);
if (prop != null) {
var devicesLogs = DevicesLogs.fromJson(value.data, prop);
int maxLimit = param.limit > devicesLogs.list.length
? devicesLogs.list.length
: param.limit;
return DevicesLogs(
list: devicesLogs.list.getRange(0, maxLimit).toList());
}
return DevicesLogs(list: <SensorData>[]);
});
} on Exception catch (e) {
throw HttpHelper.decodeErrorResponse(e,
tag: TAG,
logger: logger,
defaultErrorMessage: "Failed to get this device logs",
meta: {
'id': param.deviceId,
'param': param.deviceParameter,
'method': 'getDevicesLogs'
});
}
}