binaryDataCaptureUpload method
Upload binary sensor data to Viam's Data Manager
Returns the data's file ID.
_viam = await Viam.withApiKey(
dotenv.env['API_KEY_ID'] ?? '',
dotenv.env['API_KEY'] ?? ''
);
final dataClient = _viam.dataClient;
try {
final imageBytes = getPNGasBytes(); // Replace with your image bytes getter
(DateTime, DateTime) dataRequestTimes = (
DateTime(2025, 1, 15, 10, 30), // Start time
DateTime(2025, 1, 15, 14, 45) // End time
);
final fileId = await dataClient.binaryDataCaptureUpload(
imageBytes,
"<YOUR-PART-ID>",
".png",
componentType: "rdk:component:camera",
componentName: "camera-1",
methodName: "ReadImage",
dataRequestTimes: dataRequestTimes);
print('Successfully uploaded binary data with fileId: $fileId');
} catch (e) {
print('Error uploading binary data: $e');
}
For more information, see Data Client API.
Implementation
Future<String> binaryDataCaptureUpload(List<int> binaryData, String partId, String fileExtension,
{String? componentType,
String? componentName,
String? methodName,
Map<String, Any>? methodParameters,
(DateTime, DateTime)? dataRequestTimes,
Iterable<String> tags = const []}) async {
final sensorMetadata = SensorMetadata();
if (dataRequestTimes != null) {
sensorMetadata.timeRequested = Timestamp.fromDateTime(dataRequestTimes.$1);
sensorMetadata.timeReceived = Timestamp.fromDateTime(dataRequestTimes.$2);
}
final metadata = UploadMetadata()
..partId = partId
..componentType = componentType ?? ''
..componentName = componentName ?? ''
..methodName = methodName ?? ''
..type = DataType.DATA_TYPE_BINARY_SENSOR
..tags.addAll(tags);
if (methodParameters != null) metadata.methodParameters.addAll(methodParameters);
if (fileExtension.isEmpty) {
metadata.fileExtension = '';
} else if (fileExtension[0] == '.') {
metadata.fileExtension = fileExtension;
} else {
metadata.fileExtension = '.$fileExtension';
}
final sensorContents = SensorData()
..binary = binaryData
..metadata = sensorMetadata;
final request = DataCaptureUploadRequest()
..metadata = metadata
..sensorContents.add(sensorContents);
final response = await _dataSyncClient.dataCaptureUpload(request);
return response.fileId;
}