# EtherNet/IP

EtherNet/IP is an industrial network protocol that adapts the Common Industrial Protocol to standard Ethernet. EtherNet/IP is one of the leading industrial protocols in the United States and is widely used in a range of industries including factory, hybrid and process.

[Connection Properties](https://docs.cybus.io/1-8-0/documentation/industry-protocol-details/ethernet-ip/ethernetipconnection)

[Endpoint Properties](https://docs.cybus.io/1-8-0/documentation/industry-protocol-details/ethernet-ip/ethernetipendpoint)

### Input Format on Write

When writing data, a JSON object with the following structure should be sent to a write Endpoint (`/set`):

{% code lineNumbers="true" %}

```yaml
{ 'id': '<correlation id>', 'value': '<value>' }
```

{% endcode %}

### Output Format on Write

When writing data, the result of the operation will be published to a `/res` topic with the following structure:

{% code lineNumbers="true" %}

```yaml
{ 'id': '<correlation id>', 'timestamp': '<msSinceEpoch>', 'result': '<result>' }
```

{% endcode %}

### Output Format on Read

When data is read from a read Endpoint (`/req`) the following JSON is returned as a response in a `/res` topic:

{% code lineNumbers="true" %}

```yaml
{ 'id': '<correlation id>', 'timestamp': '<msSinceEpoch>', 'value': '<value>' }
```

{% endcode %}

### Output Format on Subscribe

When data is read by means of a subscription Endpoint, the following JSON is returned as response:

{% code lineNumbers="true" %}

```yaml
{ 'id': '<correlation id>', 'timestamp': '<msSinceEpoch>', 'oldValue': '<old value>', 'value': '<value>' }
```

{% endcode %}

## Sample Commissioning file:

Download:

{% file src="<https://3008235441-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FshLLdPEhD7SHVDYSquU1%2Fuploads%2Fgit-blob-82bf7bc737e3b327d6d1c62c5bca8a5b09f36f46%2FethernetIp-example.yml?alt=media>" %}

{% code lineNumbers="true" %}

```yaml
description: >
    Sample EtherNet/IP service commissioning file

metadata:
    name: Sample EtherNet/IP service
    icon: https://www.cybus.io/wp-content/uploads/2017/10/for-whom1.svg
    provider: cybus
    homepage: https://www.cybus.io
    version: 1.0.0

parameters:
    host:
        type: string
        default: 127.0.0.1
    initialReconnectDelay:
        type: integer
        default: 1000
    maxReconnectDelay:
        type: integer
        default: 30000
    factorReconnectDelay:
        type: integer
        default: 2

resources:
    ethernetIpConnection:
        type: Cybus::Connection
        properties:
            protocol: EthernetIp
            connection:
                host: !ref host
                connectionStrategy:
                    initialDelay: !ref initialReconnectDelay
                    maxDelay: !ref maxReconnectDelay
                    incrementFactor: !ref factorReconnectDelay

    sampleSubscription:
        type: Cybus::Endpoint
        properties:
            protocol: EthernetIp
            connection: !ref ethernetIpConnection
            subscribe:
                tagName: dn_count
                programName: SimulationMain

    sampleRead:
        type: Cybus::Endpoint
        properties:
            protocol: EthernetIp
            connection: !ref ethernetIpConnection
            subscribe:
                tagName: dn_count
                programName: SimulationMain

    sampleWrite:
        type: Cybus::Endpoint
        properties:
            protocol: EthernetIp
            connection: !ref ethernetIpConnection
            subscribe:
                tagName: dn_count
                programName: SimulationMain
                tagType: DINT
```

{% endcode %}
