[[iec60870-server-component]]
= IEC 60870 Server Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-iec60870/src/main/docs/iec60870-server-component.adoc
:docTitle: IEC 60870 Server
:artifactId: camel-iec60870
:description: IEC 60870 supervisory control and data acquisition (SCADA) server using NeoSCADA implementation.
:since: 2.20
:supportLevel: Stable
:component-header: Both producer and consumer are supported

*Since Camel {since}*

*{component-header}*

The *IEC 60870-5-104 Server* component provides access to IEC 60870 servers using the
http://eclipse.org/eclipsescada[Eclipse NeoSCADA] implementation.

Maven users will need to add the following dependency to their `pom.xml`
for this component:

[source,xml]
----
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-iec60870</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
----


// component options: START
The IEC 60870 Server component supports 4 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *defaultConnectionOptions* (common) | Default connection options |  | ServerOptions
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
|===
// component options: END





== URI format

The URI syntax of the endpoint is: 

[source]
----
iec60870-server:host:port/00-01-02-03-04
----

The information object address is encoded in the path in the syntax shows above. Please
note that always the full, 5 octet address format is being used. Unused octets have to be filled
with zero.

== URI options




// endpoint options: START
The IEC 60870 Server endpoint is configured using URI syntax:

----
iec60870-server:uriPath
----

with the following path and query parameters:

=== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *uriPath* | *Required* The object information address |  | ObjectAddress
|===


=== Query Parameters (23 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *dataModuleOptions* (common) | Data module options |  | DataModuleOptions
| *filterNonExecute* (common) | Filter out all requests which don't have the execute bit set | true | boolean
| *protocolOptions* (common) | Protocol options |  | ProtocolOptions
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. The value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
| *acknowledgeWindow* (connection) | Parameter W - Acknowledgment window. | 10 | short
| *adsuAddressType* (connection) | The common ASDU address size. May be either SIZE_1 or SIZE_2. The value can be one of: SIZE_1, SIZE_2 |  | ASDUAddressType
| *causeOfTransmissionType* (connection) | The cause of transmission type. May be either SIZE_1 or SIZE_2. The value can be one of: SIZE_1, SIZE_2 |  | CauseOfTransmissionType
| *informationObjectAddressType* (connection) | The information address size. May be either SIZE_1, SIZE_2 or SIZE_3. The value can be one of: SIZE_1, SIZE_2, SIZE_3 |  | InformationObjectAddressType
| *maxUnacknowledged* (connection) | Parameter K - Maximum number of un-acknowledged messages. | 15 | short
| *timeout1* (connection) | Timeout T1 in milliseconds. | 15000 | int
| *timeout2* (connection) | Timeout T2 in milliseconds. | 10000 | int
| *timeout3* (connection) | Timeout T3 in milliseconds. | 20000 | int
| *causeSourceAddress* (data) | Whether to include the source address |  | byte
| *connectionTimeout* (data) | Timeout in millis to wait for client to establish a connected connection. | 10000 | int
| *ignoreBackgroundScan* (data) | Whether background scan transmissions should be ignored. | true | boolean
| *ignoreDaylightSavingTime* (data) | Whether to ignore or respect DST | false | boolean
| *timeZone* (data) | The timezone to use. May be any Java time zone string | UTC | TimeZone
| *connectionId* (id) | An identifier grouping connection instances |  | String
|===
// endpoint options: END


include::camel-spring-boot::page$iec60870-starter.adoc[]
