use of com.alliander.osgp.dto.valueobjects.TimePeriodDto in project Protocol-Adapter-IEC61850 by OSGP.
the class Iec61850PowerUsageHistoryCommand method getPowerUsageHistoryDataFromDevice.
public List<PowerUsageDataDto> getPowerUsageHistoryDataFromDevice(final Iec61850Client iec61850Client, final DeviceConnection deviceConnection, final PowerUsageHistoryMessageDataContainerDto powerUsageHistoryContainer, final List<DeviceOutputSetting> deviceOutputSettingsLightRelays) throws ProtocolAdapterException {
final Function<List<PowerUsageDataDto>> function = new Function<List<PowerUsageDataDto>>() {
@Override
public List<PowerUsageDataDto> apply(final DeviceMessageLog deviceMessageLog) throws Exception {
final HistoryTermTypeDto historyTermType = powerUsageHistoryContainer.getHistoryTermType();
if (historyTermType != null) {
LOGGER.info("device: {}, ignoring HistoryTermType ({}) determining power usage history", deviceConnection.getDeviceIdentification(), historyTermType);
}
final TimePeriodDto timePeriod = powerUsageHistoryContainer.getTimePeriod();
final List<PowerUsageDataDto> powerUsageHistoryData = new ArrayList<>();
for (final DeviceOutputSetting deviceOutputSetting : deviceOutputSettingsLightRelays) {
final List<PowerUsageDataDto> powerUsageData = Iec61850PowerUsageHistoryCommand.this.getPowerUsageHistoryDataFromRelay(iec61850Client, deviceConnection, timePeriod, deviceOutputSetting, deviceMessageLog);
powerUsageHistoryData.addAll(powerUsageData);
}
DeviceMessageLoggingService.logMessage(deviceMessageLog, deviceConnection.getDeviceIdentification(), deviceConnection.getOrganisationIdentification(), false);
/*
* This way of gathering leads to PowerUsageData elements per
* relay. If it is necessary to only include one PowerUsageData
* element for the device, where data for the different relays
* is combined in the SsldData.relayData some sort of merge
* needs to be performed.
*
* This can either be a rework of the list currently returned,
* or it can be a list constructed based on an altered return
* type from getPowerUsageHistoryDataFromRelay (for instance a
* Map of Date to a Map of Relay Index to Total Lighting
* Minutes).
*/
return powerUsageHistoryData;
}
};
return iec61850Client.sendCommandWithRetry(function, "GetPowerUsageHistory", deviceConnection.getDeviceIdentification());
}
Aggregations