# Device integration

This is the **south side** of the platform: everything that happens between OpenGate and the things in the
field. Where the [north APIs](../) are consumed by your applications, these are spoken by devices,
gateways, sensors and machines.

## The two conversations

Every integration comes down to two of them, in opposite directions:

```mermaid
flowchart LR
    DEV["Device"] -->|"data collection<br>pushes readings"| OG["OpenGate"]
    OG -->|"operations<br>asks for actions"| DEV
```

| Conversation | The device | Documented in |
|---|---|---|
| **Data collection** | Pushes inventory and business data: serial number, ICC, MSISDN, location, temperature, pressure, consumption | [HTTP](http/data_collection/) · [MQTT](mqtt/data_collection/) |
| **Operations** | Receives operation requests and answers with the result | [HTTP](http/operations/) · [MQTT](mqtt/operations/) |

The north side of operations — how an application launches them and reads the results — is in
[Operations](../operations/).

## Eleven protocols, two directions

OpenGate speaks eleven protocols, and the question that decides your architecture is **which side opens the
conversation**:

| | Protocols | The device needs |
|---|---|---|
| **The device calls OpenGate** | HTTP · MQTT · WebSocket · CoAP · DLMS | Outgoing connectivity only |
| **OpenGate calls the device** | DLMS · DLMS Gas · IEC102 · SNMP · SSH · Telnet · ICMP | To be reachable at an IP address |

Plus **RADIUS**, where the counterpart is the operator's network rather than a device.

**[Supported protocols](supported_protocols/)** is the full matrix: every protocol, who initiates, what it
carries and where its documentation lives. Start there if you are deciding how to connect something.

| Where to go | For |
|---|---|
| [HTTP](http/) · [MQTT](mqtt/) · [WebSocket](websocket/) · [CoAP](coap/) | The transports OpenGate listens on |
| [Meter and industrial protocols](meter_protocols/) | DLMS, DLMS Gas, IEC102 and SNMP: the polling model |
| [Remote access](remote_access/) | SSH, Telnet and ICMP |
| [RADIUS accounting](radius_accounting/) | Network-side session reporting |

## When the device does not fit

Real fleets are not uniform. Two mechanisms absorb that:

- **[Connector Functions](connector_functions/)** let you run your own JavaScript inside the platform to
  translate between OpenGate and whatever the device actually speaks. This is the answer to almost every
  "our devices do it differently" problem.
- **[Topology](topology/)** covers devices that are not reachable directly: gateways, mesh networks and the
  `path` that addresses a device several hops away.

## Also here

- **[Deployment Elements](deployment_element/)** — downloading the files a device needs for a firmware or
  configuration update, the south counterpart of the update operation.
- **[Security tips for operations](http/operations/security/)** — HTTPS, API key and mutual TLS.

{{% children sort="weight" %}}
