use of org.opensmartgridplatform.adapter.protocol.iec61850.device.DeviceRequest in project open-smart-grid-platform by OSGP.
the class Iec61850RtuDeviceService method connectAndRetrieveServerModel.
// ======================================
// PRIVATE DEVICE COMMUNICATION METHODS =
// ======================================
private ServerModel connectAndRetrieveServerModel(final DeviceRequest deviceRequest, final String serverName) throws ProtocolAdapterException {
final DeviceConnectionParameters deviceConnectionParameters = DeviceConnectionParameters.newBuilder().ipAddress(deviceRequest.getIpAddress()).deviceIdentification(deviceRequest.getDeviceIdentification()).ied(IED.ZOWN_RTU).serverName(serverName).logicalDevice(LogicalDevice.RTU.getDescription() + 1).build();
this.iec61850DeviceConnectionService.connect(deviceConnectionParameters, deviceRequest.getOrganisationIdentification());
return this.iec61850DeviceConnectionService.getServerModel(deviceRequest.getDeviceIdentification());
}
use of org.opensmartgridplatform.adapter.protocol.iec61850.device.DeviceRequest in project open-smart-grid-platform by OSGP.
the class Iec61850RtuDeviceService method getData.
@Override
public void getData(final GetDataDeviceRequest deviceRequest, final DeviceResponseHandler deviceResponseHandler) throws JMSException {
try {
final String serverName = this.getServerName(deviceRequest);
final ServerModel serverModel = this.connectAndRetrieveServerModel(deviceRequest, serverName);
final ClientAssociation clientAssociation = this.iec61850DeviceConnectionService.getClientAssociation(deviceRequest.getDeviceIdentification());
final GetDataResponseDto getDataResponse = this.handleGetData(new DeviceConnection(new Iec61850Connection(new Iec61850ClientAssociation(clientAssociation, null), serverModel), deviceRequest.getDeviceIdentification(), deviceRequest.getOrganisationIdentification(), serverName), deviceRequest);
if (getDataResponse == null) {
throw new ProtocolAdapterException("No valid response received during GetData");
}
final GetDataDeviceResponse deviceResponse = new GetDataDeviceResponse(deviceRequest, DeviceMessageStatus.OK, getDataResponse);
deviceResponseHandler.handleResponse(deviceResponse);
} catch (final ConnectionFailureException se) {
LOGGER.error("Could not connect to device after all retries", se);
final EmptyDeviceResponse deviceResponse = new EmptyDeviceResponse(deviceRequest, DeviceMessageStatus.FAILURE);
deviceResponseHandler.handleConnectionFailure(se, deviceResponse);
} catch (final Exception e) {
LOGGER.error("Unexpected exception during Get Data", e);
final EmptyDeviceResponse deviceResponse = new EmptyDeviceResponse(deviceRequest, DeviceMessageStatus.FAILURE);
deviceResponseHandler.handleException(e, deviceResponse);
}
}
use of org.opensmartgridplatform.adapter.protocol.iec61850.device.DeviceRequest in project open-smart-grid-platform by OSGP.
the class Iec61850RtuDeviceService method handleSetData.
private void handleSetData(final DeviceConnection connection, final SetDataDeviceRequest deviceRequest) throws ProtocolAdapterException {
final SetDataRequestDto setDataRequest = deviceRequest.getSetDataRequest();
final Function<Void> function = new Function<Void>() {
@Override
public Void apply(final DeviceMessageLog deviceMessageLog) throws ProtocolAdapterException {
for (final SetDataSystemIdentifierDto identifier : setDataRequest.getSetDataSystemIdentifiers()) {
final SystemService systemService = Iec61850RtuDeviceService.this.systemServiceFactory.getSystemService(identifier.getSystemType());
systemService.setData(identifier, Iec61850RtuDeviceService.this.iec61850Client, connection);
}
return null;
}
};
this.iec61850Client.sendCommandWithRetry(function, deviceRequest.getDeviceIdentification());
}
use of org.opensmartgridplatform.adapter.protocol.iec61850.device.DeviceRequest in project open-smart-grid-platform by OSGP.
the class Iec61850SsldDeviceService method updateFirmware.
@Override
public void updateFirmware(final UpdateFirmwareDeviceRequest deviceRequest, final DeviceResponseHandler deviceResponseHandler) throws JMSException {
DeviceConnection deviceConnection = null;
try {
deviceConnection = this.connectToDevice(deviceRequest);
new Iec61850UpdateFirmwareCommand(this.deviceMessageLoggingService).pushFirmwareToDevice(this.iec61850Client, deviceConnection, deviceRequest.getFirmwareDomain().concat(deviceRequest.getFirmwareUrl()), deviceRequest.getFirmwareModuleData());
this.createSuccessfulDefaultResponse(deviceRequest, deviceResponseHandler);
} catch (final ConnectionFailureException se) {
this.handleConnectionFailureException(deviceRequest, deviceResponseHandler, se);
} catch (final Exception e) {
this.handleException(deviceRequest, deviceResponseHandler, e);
}
this.iec61850DeviceConnectionService.disconnect(deviceConnection, deviceRequest);
}
use of org.opensmartgridplatform.adapter.protocol.iec61850.device.DeviceRequest in project open-smart-grid-platform by OSGP.
the class Iec61850SsldDeviceService method updateDeviceSslCertification.
@Override
public void updateDeviceSslCertification(final UpdateDeviceSslCertificationDeviceRequest deviceRequest, final DeviceResponseHandler deviceResponseHandler) throws JMSException {
DeviceConnection deviceConnection = null;
try {
deviceConnection = this.connectToDevice(deviceRequest);
new Iec61850UpdateSslCertificateCommand(this.deviceMessageLoggingService).pushSslCertificateToDevice(this.iec61850Client, deviceConnection, deviceRequest.getCertification());
this.createSuccessfulDefaultResponse(deviceRequest, deviceResponseHandler);
} catch (final ConnectionFailureException se) {
this.handleConnectionFailureException(deviceRequest, deviceResponseHandler, se);
} catch (final Exception e) {
this.handleException(deviceRequest, deviceResponseHandler, e);
}
this.iec61850DeviceConnectionService.disconnect(deviceConnection, deviceRequest);
}
Aggregations