Skip to main content

Device Connectivity

📡 Device Connectivity & Supported Protocols​

đŸ›°ī¸ Overview​

MAPS Messaging supports a wide range of connectivity options for integrating IoT devices, gateways, and external systems. The server is protocol-agnostic and offers interfaces over TCP, UDP, DTLS, SSL/TLS, and various IoT protocols like MQTT, MQTT-SN, AMQP, CoAP, STOMP, and LoRa.

Devices can connect over:

  • TCP/UDP (raw or protocol-specific)
  • Encrypted TLS/SSL interfaces
  • DTLS support for UDP protocols such as CoAP and MQTT-SN
  • Application-layer protocols like:
    • MQTT (3.1, 5.0)
    • MQTT-SN (for constrained devices)
    • AMQP
    • CoAP
    • STOMP
    • LoRa (with radio throttling)

These interfaces are configured via the NetworkManager.yaml, NetworkManagerDocker.yaml, and NetworkConnectionManager.yaml files.


🔌 Supported Protocol Interfaces​

Each interface is defined by:

  • url – the binding (IP + port + transport)
  • protocol – what protocol is served
  • auth – the authentication mechanism (e.g., usernamePassword, anon, or default)
  • map / virtualHost – optional protocol-specific routing
ProtocolTransportEncryptedConfig FilesExample URL
MQTTTCP❌NetworkManager.yamltcp://:::1883/
MQTTSSL/TLS✅NetworkManager.yamlssl://:::1884/
MQTT-SNUDP/DTLS✅NetworkManagerDocker.yamludp://0.0.0.0:1884/
AMQPTCP❌NetworkManager.yamltcp://:::5672/
AMQPSSL/TLS✅NetworkManager.yamlssl://:::5671/
CoAPUDP/DTLS✅NetworkManagerDocker.yamludp://0.0.0.0:5683/
STOMPTCP❌NetworkManager.yamltcp://:::61613/
STOMPSSL/TLS✅NetworkManager.yamlssl://:::61614/
LoRaRadio (UDP)❌NetworkManager.yamlN/A

â„šī¸ Note: CoAP and MQTT-SN protocols also support DTLS (Datagram Transport Layer Security) for securing communications over UDP. DTLS settings can be defined in the NetworkManager.yaml under the security.dtls section.


📄 Sample Interface Configuration​

- name: "TCP MQTT Interface"
url: tcp://:::1883/
protocol: mqtt
auth: usernamePassword

This exposes a plain TCP MQTT listener on port 1883, using username/password authentication.

- name: "CoAP Interface"
url: udp://0.0.0.0:5683/
protocol: coap
maxBlockSize: 512
idleTimePeriod: 120

A CoAP endpoint for constrained devices. No authentication defined (could be anonymous or managed elsewhere).

- name: "AMQP Interface"
url: tcp://:::5672/
protocol: amqp
sasl:
mechanism: "SCRAM-SHA-512"
identityProvider: system
map: "/{{virtualHostName}}"

AMQP interface using SASL authentication and optional virtual host mappings.


🧠 Device Types Supported​

Device TypeConnectivity MethodProtocols UsedExample Use Case
IoT Sensors (Low Power)UDPMQTT-SN, CoAPBattery-powered GPS trackers, NMEA receivers
Gateways / Edge DevicesTCP or UDPMQTT, AMQPForwarding messages from local sensors
Browsers / Web ClientsHTTPS (via REST API)REST/WebSocket (UI)Access admin dashboards, publish data
LoRa GatewaysRadio + Backhaul (UDP)LoRaLong-range, low-bandwidth environmental monitors
Enterprise AppsTCP + TLSAMQP, MQTTReal-time messaging with secure encryption
STOMP ClientsTCP or TLSSTOMPLegacy messaging integration

✅ Best Practices​

  • Use TLS/SSL wherever possible for external-facing services (ssl:// and secure keystores).
  • Use DTLS for securing UDP-based protocols like CoAP and MQTT-SN.
  • Enable virtual hosts for tenant-aware routing (see map: "/{{virtualHostName}}").
  • Use MQTT-SN or CoAP for lightweight embedded devices that can't handle TCP.
  • Enable discoverable: true for dynamic service registration via mDNS (e.g. for LAN discovery).
  • Set protocol-specific limits such as maxInFlightEvents, eventQueueTimeout, or LoRaMaxTransmissionRate to manage resources efficiently.