Modem-Side Configuration (Remote Edge)
MAPS can integrate directly with ST2100 / IDP / OGx modems via serial.
This setup is best suited for remote or disconnected deployments where the modem is the only uplink.
Example Configuration
- name: "ST2100 Modem"
url: serial://localhost:0/
protocol: stogi
transformation: "Message-Raw"
initialSetup: "" # optional init string sent at startup
incomingMessagePollInterval: 1 # seconds, minimum = 1
outgoingMessagePollInterval: 20 # seconds, minimum = 15 recommended
sharedSecret: "This is a shared secret to use"
sendHighPriorityMessages: false
modemResponseTimeout: 20000 # ms
locationPollInterval: 60 # seconds, GNSS/visibility state updates
maxBufferSize: 4000
compressionCutoffSize: 128
modemStatsTopic: "/modem/stats"
modemRawRequest: "/incoming/{sin}/{min}" # Any raw events will be published to incoming and split on sin/min
modemRawResponse: "/outbound" # Any messages from clients will be sent directly to the modem bridgeMode: false # if true, send raw byte[] with no modifications
remote:
sessionId: <optional> # not required for this link
username: <optional>
password: <optional>
links:
- direction: push
local_namespace: "/vessel/+/engine/rpm"
remote_namespace: "/satellite/engine/rpm"
include_schema: true
selector: "rpm > 5000"
- direction: push
local_namespace: "/vessel/+/engine/vibration"
remote_namespace: "/satellite/engine/anomalies"
include_schema: true
selector: "isolation_forest(is_anomaly, model_engine_vibration.arff, vibration, load, temperature) = 1"
namespaceFilters:
- namespace: /vessel/
depth: 5
- direction: push
local_namespace: "/sensors/+/temperature"
remote_namespace: "/satellite/anomalies"
include_schema: false
selector: "random_forest(is_anomaly, model_rf.arff, temperature, humidity, pressure) = 1"
namespaceFilters:
- namespace: /sensors/mess/
selector: temperature > 30 OR temperature < 17
depth: 1
- namespace: /sensors/engineroom/
depth: 10
serial:
port: ttyusb0
baudRate: 9600
dataBits: 8
stopBits: 1
parity: n
flowControl: 0
Key Sections
-
Polling
incomingMessagePollInterval— how often MAPS checks the modem for downlink messages.outgoingMessagePollInterval— how often MAPS flushes its data-dump for uplink.
-
Buffering & Compression
maxBufferSize— bytes in a single dump before chunking.compressionCutoffSize— payload size threshold for compression.
-
Security
sharedSecret— optional lightweight authentication between modem and backend.
-
Bridge Mode
bridgeMode: true— send raw byte[] payloads with no transformation or schema handling.
-
Location & Health
locationPollInterval— GNSS/visibility updates.modemStatsTopic— publishes modem health and session info to a MAPS topic.modemRawRequest— the namespace root to publish common messages using SIN/MIN that are NOT maps messagesmodemRawResponse— the topic to use to reply to the request, any event published here will be sent directly to the modem with out any MAPS packaging
-
Serial Block Standard serial parameters for ST2100 / IDP devices.
-
Links Defines namespace bridging. Multiple links can be defined with selectors and namespace filters.
Namespace Filters
namespaceFilters refine a link by applying additional rules per sub-namespace.
Each filter supports:
namespace: a prefix under the local namespace where the rule appliesselector: (optional) condition to apply only under this namespacedepth: how many topic levels deep to evaluate under the namespace
Evaluation Model
- Link-level selector runs first.
- If it passes, namespaceFilters are applied.
- Both must be true for the event to forward.
- Use
selector: "TRUE"at the link level if you want only namespace filters to control forwarding.
- Use
Example
links:
- direction: push
local_namespace: "/sensors/+/temperature"
remote_namespace: "/satellite/anomalies"
include_schema: false
selector: "random_forest(is_anomaly, model_rf.arff, temperature, humidity, pressure) = 1"
namespaceFilters:
- namespace: /sensors/mess/
selector: temperature > 30 OR temperature < 17
depth: 1
- namespace: /sensors/engineroom/
depth: 10
This example forwards temperature anomalies, but with more precise handling for /sensors/mess/ and /sensors/engineroom/ topics.