# Supported protocols

OpenGate does not ask your devices to change. It speaks eleven protocols, and the first thing to know about
any of them is **which side opens the conversation**, because that decides your network architecture.

## Devices that call OpenGate

The platform listens. The device needs outgoing connectivity and nothing else — no public address, no
inbound firewall rule. This is what fits sleeping devices, NAT and mobile networks.

| Protocol | Carries | Documented in |
|---|---|---|
| **HTTP** | Data collection and operations, in both directions | [HTTP](../http/) |
| **MQTT** | Data collection, operation requests and responses over one persistent connection | [MQTT](../mqtt/) |
| **WebSocket** | A persistent session for low-latency two-way messaging | [WebSocket](../websocket/) |
| **CoAP** | Data from constrained devices on constrained networks, over UDP or DTLS | [CoAP](../coap/) |
| **DLMS** | Meter messages pushed by the device, identified by OBIS code | [Meter and industrial protocols](../meter_protocols/) |

## OpenGate that calls devices

Here the platform opens the conversation, from a [connector function](../connector_functions/). The device
must be **reachable** at an IP address — directly, through a VPN, or through a
[gateway](../topology/).

| Protocol | Used for | Documented in |
|---|---|---|
| **DLMS** | Reading and writing meter attributes by OBIS code | [Meter and industrial protocols](../meter_protocols/) |
| **DLMS Gas** | Smart Gas meters, across manufacturers, on top of DLMS | [Meter and industrial protocols](../meter_protocols/) |
| **IEC102** | Electricity meters: load curves, profiles, clock, with IP, VPN, GSM or ATR registration | [Meter and industrial protocols](../meter_protocols/) |
| **SNMP** | Reading and writing OIDs on network equipment | [Meter and industrial protocols](../meter_protocols/) |
| **SSH** | Running commands on a device shell | [Remote access](../remote_access/) |
| **Telnet** | The same on legacy equipment without SSH | [Remote access](../remote_access/) |
| **ICMP** | Ping, to prove a device is reachable | [Remote access](../remote_access/) |

## Network nodes that report to OpenGate

| Protocol | Carries | Documented in |
|---|---|---|
| **RADIUS** | Accounting packets from GGSN or RAS nodes about M2M network sessions | [RADIUS accounting](../radius_accounting/) |

Note that here the counterpart is not the device but the operator's network, which is why it is provisioned
as a mobile-operator concern rather than a device one.

## The one that is not a device protocol

| | Carries | Documented in |
|---|---|---|
| **Kite** | Querying and changing the status of a mobile **subscription**, through the operator's connector | [Kite JavaScript API](../connector_functions/protocol_apis/kite/) |

It lives with the protocol APIs because a connector function calls it the same way, but no device is on the
other end.

## How this maps to the docs

Two kinds of page exist per protocol, and it is worth knowing which you want:

| You are asking | Read |
|---|---|
| *How does an integration over this protocol work?* | The pages linked above |
| *Which functions can my script call?* | The [protocol APIs](../connector_functions/protocol_apis/) reference |

{{% notice style="note" title="One gap we know about" icon="circle-info" %}}
**Modbus** and **SCADA** appear in the product overview but have no technical documentation at all — not
even a connector function reference. If you need either, ask your platform contact.
{{% /notice %}}
