Search in sources :

Example 11 with NodeReadException

use of com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeReadException in project Protocol-Adapter-IEC61850 by OSGP.

the class Iec61850ModeCommand method execute.

@Override
public MeasurementDto execute(final Iec61850Client client, final DeviceConnection connection, final LogicalDevice logicalDevice, final int logicalDeviceIndex) throws NodeReadException {
    final NodeContainer containingNode = connection.getFcModelNode(logicalDevice, logicalDeviceIndex, LogicalNode.LOGICAL_NODE_ZERO, DataAttribute.MODE, Fc.ST);
    client.readNodeDataValues(connection.getConnection().getClientAssociation(), containingNode.getFcmodelNode());
    return this.translate(containingNode);
}
Also used : NodeContainer(com.alliander.osgp.adapter.protocol.iec61850.infra.networking.helper.NodeContainer)

Example 12 with NodeReadException

use of com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeReadException in project Protocol-Adapter-IEC61850 by OSGP.

the class Iec61850Client method readAllDataValues.

/**
     * Read the values of all data attributes of all data objects of all Logical
     * Nodes.
     *
     * @param clientAssociation
     *            An {@link ClientAssociation} instance.
     *
     * @throws NodeReadException
     *             In case the read action fails.
     */
public void readAllDataValues(final ClientAssociation clientAssociation) throws NodeReadException {
    try {
        LOGGER.debug("Start getAllDataValues from device");
        clientAssociation.getAllDataValues();
        LOGGER.debug("Completed getAllDataValues from device");
    } catch (final ServiceError e) {
        LOGGER.error("ServiceError during readAllDataValues", e);
        throw new NodeReadException(e.getMessage(), e, ConnectionState.OK);
    } catch (final IOException e) {
        LOGGER.error("IOException during readAllDataValues", e);
        throw new NodeReadException(e.getMessage(), e, ConnectionState.BROKEN);
    }
}
Also used : ServiceError(org.openmuc.openiec61850.ServiceError) NodeReadException(com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeReadException) IOException(java.io.IOException)

Example 13 with NodeReadException

use of com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeReadException in project Protocol-Adapter-IEC61850 by OSGP.

the class Iec61850Client method sendCommandWithRetry.

/**
     * Executes the apply method of the given {@link Function} with retries and
     * message logging.
     *
     * @return The given T.
     */
public <T> T sendCommandWithRetry(final Function<T> function, final String functionName, final String deviceIdentification) throws ProtocolAdapterException {
    T output = null;
    final DeviceMessageLog deviceMessageLog = new DeviceMessageLog(IED.FLEX_OVL, LogicalDevice.LIGHTING, functionName);
    try {
        output = function.apply(deviceMessageLog);
    } catch (final NodeWriteException | NodeReadException e) {
        if (ConnectionState.OK.equals(e.getConnectionState())) {
            // ServiceError means we have to retry.
            LOGGER.error("Caught ServiceError, retrying", e);
            this.sendCommandWithRetry(function, deviceIdentification, 1, deviceMessageLog);
        } else {
            LOGGER.error("Caught IOException, connection with device is broken.", e);
        }
    } catch (final ConnectionFailureException e) {
        throw e;
    } catch (final Exception e) {
        throw new ProtocolAdapterException(e == null ? "Could not execute command" : e.getMessage(), e);
    }
    return output;
}
Also used : DeviceMessageLog(com.alliander.osgp.adapter.protocol.iec61850.domain.valueobjects.DeviceMessageLog) NodeWriteException(com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeWriteException) ConnectionFailureException(com.alliander.osgp.adapter.protocol.iec61850.exceptions.ConnectionFailureException) NodeReadException(com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeReadException) ProtocolAdapterException(com.alliander.osgp.adapter.protocol.iec61850.exceptions.ProtocolAdapterException) SclParseException(org.openmuc.openiec61850.SclParseException) NodeWriteException(com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeWriteException) NodeReadException(com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeReadException) ConnectionFailureException(com.alliander.osgp.adapter.protocol.iec61850.exceptions.ConnectionFailureException) IOException(java.io.IOException) ProtocolAdapterException(com.alliander.osgp.adapter.protocol.iec61850.exceptions.ProtocolAdapterException)

Example 14 with NodeReadException

use of com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeReadException in project Protocol-Adapter-IEC61850 by OSGP.

the class Iec61850ScheduleAbsTimeCommand method execute.

@Override
public ProfileDto execute(final Iec61850Client client, final DeviceConnection connection, final LogicalDevice logicalDevice, final int logicalDeviceIndex) throws NodeReadException {
    final NodeContainer containingNode = connection.getFcModelNode(logicalDevice, logicalDeviceIndex, this.logicalNode, DATA_ATTRIBUTE, FC);
    client.readNodeDataValues(connection.getConnection().getClientAssociation(), containingNode.getFcmodelNode());
    return this.translate(containingNode);
}
Also used : NodeContainer(com.alliander.osgp.adapter.protocol.iec61850.infra.networking.helper.NodeContainer)

Example 15 with NodeReadException

use of com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeReadException in project Protocol-Adapter-IEC61850 by OSGP.

the class Iec61850ScheduleCatCommand method execute.

@Override
public MeasurementDto execute(final Iec61850Client client, final DeviceConnection connection, final LogicalDevice logicalDevice, final int logicalDeviceIndex) throws NodeReadException {
    final NodeContainer containingNode = connection.getFcModelNode(logicalDevice, logicalDeviceIndex, this.logicalNode, DATA_ATTRIBUTE_RTU, FC);
    client.readNodeDataValues(connection.getConnection().getClientAssociation(), containingNode.getFcmodelNode());
    return this.translate(containingNode);
}
Also used : NodeContainer(com.alliander.osgp.adapter.protocol.iec61850.infra.networking.helper.NodeContainer)

Aggregations

NodeContainer (com.alliander.osgp.adapter.protocol.iec61850.infra.networking.helper.NodeContainer)31 NodeReadException (com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeReadException)3 Iec61850Connection (com.alliander.osgp.adapter.protocol.iec61850.infra.networking.Iec61850Connection)3 Iec61850ClientAssociation (com.alliander.osgp.adapter.protocol.iec61850.infra.networking.Iec61850ClientAssociation)2 IOException (java.io.IOException)2 DateTime (org.joda.time.DateTime)2 ClientAssociation (org.openmuc.openiec61850.ClientAssociation)2 DeviceMessageLog (com.alliander.osgp.adapter.protocol.iec61850.domain.valueobjects.DeviceMessageLog)1 ConnectionFailureException (com.alliander.osgp.adapter.protocol.iec61850.exceptions.ConnectionFailureException)1 NodeWriteException (com.alliander.osgp.adapter.protocol.iec61850.exceptions.NodeWriteException)1 ProtocolAdapterException (com.alliander.osgp.adapter.protocol.iec61850.exceptions.ProtocolAdapterException)1 LogicalNode (com.alliander.osgp.adapter.protocol.iec61850.infra.networking.helper.LogicalNode)1 PowerUsageDataDto (com.alliander.osgp.dto.valueobjects.PowerUsageDataDto)1 RelayDataDto (com.alliander.osgp.dto.valueobjects.RelayDataDto)1 SsldDataDto (com.alliander.osgp.dto.valueobjects.SsldDataDto)1 ArrayList (java.util.ArrayList)1 FcModelNode (org.openmuc.openiec61850.FcModelNode)1 SclParseException (org.openmuc.openiec61850.SclParseException)1 ServiceError (org.openmuc.openiec61850.ServiceError)1