use of org.opensmartgridplatform.dto.valueobjects.microgrids.GetDataSystemIdentifierDto in project open-smart-grid-platform by OSGP.
the class Iec61850HeatPumpSystemService method getData.
@Override
public GetDataSystemIdentifierDto getData(final SystemFilterDto systemFilter, final Iec61850Client client, final DeviceConnection connection) throws NodeException {
final int logicalDeviceIndex = systemFilter.getId();
LOGGER.info("Get data called for logical device {}{}", DEVICE.getDescription(), logicalDeviceIndex);
final List<MeasurementDto> measurements = new ArrayList<>();
for (final MeasurementFilterDto filter : systemFilter.getMeasurementFilters()) {
final RtuReadCommand<MeasurementDto> command = this.iec61850HeatPumpCommandFactory.getCommand(filter);
if (command == null) {
LOGGER.warn("Unsupported data attribute [{}], skip get data for it", filter.getNode());
} else {
measurements.add(command.execute(client, connection, DEVICE, logicalDeviceIndex));
}
}
final List<ProfileDto> profiles = new ArrayList<>();
for (final ProfileFilterDto filter : systemFilter.getProfileFilters()) {
final RtuReadCommand<ProfileDto> command = Iec61850RtuReadProfileCommandFactory.getInstance().getCommand(filter);
if (command == null) {
LOGGER.warn("Unsupported data attribute [{}], skip get data for it", filter.getNode());
} else {
profiles.add(command.execute(client, connection, DEVICE, logicalDeviceIndex));
}
}
return new GetDataSystemIdentifierDto(systemFilter.getId(), systemFilter.getSystemType(), measurements, profiles);
}
use of org.opensmartgridplatform.dto.valueobjects.microgrids.GetDataSystemIdentifierDto in project open-smart-grid-platform by OSGP.
the class Iec61850BatterySystemService method getData.
@Override
public GetDataSystemIdentifierDto getData(final SystemFilterDto systemFilter, final Iec61850Client client, final DeviceConnection connection) throws NodeException {
final int logicalDeviceIndex = systemFilter.getId();
LOGGER.info("Get data called for logical device {}{}", DEVICE.getDescription(), logicalDeviceIndex);
final List<MeasurementDto> measurements = new ArrayList<>();
for (final MeasurementFilterDto filter : systemFilter.getMeasurementFilters()) {
final RtuReadCommand<MeasurementDto> command = this.iec61850BatteryCommandFactory.getCommand(filter);
if (command == null) {
LOGGER.warn("Unsupported data attribute [{}], skip get data for it", filter.getNode());
} else {
measurements.add(command.execute(client, connection, DEVICE, logicalDeviceIndex));
}
}
final List<ProfileDto> profiles = new ArrayList<>();
for (final ProfileFilterDto filter : systemFilter.getProfileFilters()) {
final RtuReadCommand<ProfileDto> command = Iec61850RtuReadProfileCommandFactory.getInstance().getCommand(filter);
if (command == null) {
LOGGER.warn("Unsupported data attribute [{}], skip get data for it", filter.getNode());
} else {
profiles.add(command.execute(client, connection, DEVICE, logicalDeviceIndex));
}
}
return new GetDataSystemIdentifierDto(systemFilter.getId(), systemFilter.getSystemType(), measurements, profiles);
}
use of org.opensmartgridplatform.dto.valueobjects.microgrids.GetDataSystemIdentifierDto in project open-smart-grid-platform by OSGP.
the class Iec61850RtuDeviceService method handleGetData.
// ========================
// PRIVATE HELPER METHODS =
// ========================
private GetDataResponseDto handleGetData(final DeviceConnection connection, final GetDataDeviceRequest deviceRequest) throws ProtocolAdapterException {
final GetDataRequestDto requestedData = deviceRequest.getDataRequest();
final Function<GetDataResponseDto> function = new Function<GetDataResponseDto>() {
@Override
public GetDataResponseDto apply(final DeviceMessageLog deviceMessageLog) throws ProtocolAdapterException {
final List<GetDataSystemIdentifierDto> identifiers = new ArrayList<>();
for (final SystemFilterDto systemFilter : requestedData.getSystemFilters()) {
final SystemService systemService = Iec61850RtuDeviceService.this.systemServiceFactory.getSystemService(systemFilter);
final GetDataSystemIdentifierDto getDataSystemIdentifier = systemService.getData(systemFilter, Iec61850RtuDeviceService.this.iec61850Client, connection);
identifiers.add(getDataSystemIdentifier);
}
return new GetDataResponseDto(identifiers, null);
}
};
return this.iec61850Client.sendCommandWithRetry(function, deviceRequest.getDeviceIdentification());
}
use of org.opensmartgridplatform.dto.valueobjects.microgrids.GetDataSystemIdentifierDto in project open-smart-grid-platform by OSGP.
the class CommunicationRecoveryService method signalConnectionLost.
/**
* Send a signal that the connection with the device has been lost. This is done by putting a
* GetDataResponse on the queue with an alarm value. When this response is received by the
* webservice adapter, it can send a notification to the client.
*/
public void signalConnectionLost(final RtuDevice rtu) {
LOGGER.info("Sending connection lost signal for device {}.", rtu.getDeviceIdentification());
final GetDataResponseDto dataResponse = new GetDataResponseDto(Arrays.asList(new GetDataSystemIdentifierDto(SYSTEM_ID, SYSTEM_TYPE, Arrays.asList(new MeasurementDto(MEASUREMENT_ID, MEASUREMENT_NODE, 0, new DateTime(DateTimeZone.UTC), MEASUREMENT_VALUE_ALARM_ON)))), null);
final String correlationUid = this.createCorrelationUid(rtu);
final String organisationIdentification = rtu.getOwner().getOrganisationIdentification();
final String deviceIdentification = rtu.getDeviceIdentification();
final CorrelationIds ids = new CorrelationIds(organisationIdentification, deviceIdentification, correlationUid);
this.adHocManagementService.handleInternalDataResponse(dataResponse, ids, DeviceFunction.GET_DATA.toString());
}
use of org.opensmartgridplatform.dto.valueobjects.microgrids.GetDataSystemIdentifierDto in project open-smart-grid-platform by OSGP.
the class Iec61850LoadSystemService method getData.
@Override
public GetDataSystemIdentifierDto getData(final SystemFilterDto systemFilter, final Iec61850Client client, final DeviceConnection connection) throws NodeException {
final int logicalDeviceIndex = systemFilter.getId();
LOGGER.info("Get data called for logical device {}{}", DEVICE.getDescription(), logicalDeviceIndex);
final List<MeasurementDto> measurements = new ArrayList<>();
for (final MeasurementFilterDto filter : systemFilter.getMeasurementFilters()) {
final RtuReadCommand<MeasurementDto> command = this.getFactory(connection.getDeviceIdentification()).getCommand(filter);
if (command == null) {
LOGGER.warn("Unsupported data attribute [{}], skip get data for it", filter.getNode());
} else {
measurements.add(command.execute(client, connection, DEVICE, logicalDeviceIndex));
}
}
return new GetDataSystemIdentifierDto(systemFilter.getId(), systemFilter.getSystemType(), measurements);
}
Aggregations