ESP RainMaker MQTT Definitions for Nodes 3.3.0-6c749d111_2025-07-24T12:18

The API Defintions for the Rainmaker MQTT topics for communication with RainMaker nodes.

TLS encryption with RainMaker issued X.509 certificate-based mutual authentication is required to publish and subscribe to these topics.

Command Structure

Command requests/responses use Binary TLV (Tag, Length, Value) format with these standard tags:

  • Tag 1: Request ID (22 bytes) - Uniquely identifies each request
  • Tag 2: User Role (1 byte) - 1=admin, 2=primary user, 4=secondary user
  • Tag 3: Status (1 byte) - 0=success, 1=failed, 2=invalid, 3=auth failure, 4=not found
  • Tag 5: Command (2 bytes) - See command categories below
  • Tag 6: Data (0-64KB) - JSON object with command-specific data

Command Categories

Standard Commands

  • 0: Get all pending requests
  • 1: Request param update
  • 16: Request file upload URL
  • 17: Get file download URL
  • 20: Confirm file upload success

DAC Commands (Device Attestation Certificate)

  • 201: CSR submission for DAC/Custom Data
  • 202: Request/Response for DAC, Custom Data, or PAI certificates
  • 203: Status update for DAC data retrieval process

Servers

  • mqtt://a1p72mufdu6064-ats.iot.us-east-1.amazonaws.com/mqttproduction
    Security:
    • X509:

Operations

  • SEND $aws/events/presence/connected/<node_id>

    [Node connection] AWS IoT Core presence events for device connections

    Operation IDonPresenceConnected

    Available only on servers:

    Accepts the following message:

    connectedMessage
    Message IDconnectedMessage
    object

    Examples

  • SEND $aws/events/presence/disconnected/<node_id>

    [Node connection] AWS IoT Core presence events for device disconnections

    Operation IDonPresenceDisconnected

    Available only on servers:

    Accepts the following message:

    disconnectedMessage
    Message IDdisconnectedMessage
    object

    Examples

  • SEND node/<node_id>/config

    [Node config] Node configuration

    Note: Use Basic ingest topic $aws/rules/esp_node_config/node/<node_id>/config to save costs
    Operation IDonNodeConfig

    Available only on servers:

    Accepts the following message:

    configMessage
    Message IDconfigMessage
    object

    Examples

  • SEND node/<node_id>/params/local/init

    [Node params] Initial local parameters for nodes, this resets the node parameters to the provided values.

    Note: Use Basic ingest topic $aws/rules/esp_init_params/node/<node_id>/params/local/init to save costs
    Operation IDonNodeParamsLocalInit

    Available only on servers:

    Accepts the following message:

    paramsLocalInitMessage
    Message IDparamsLocalInitMessage
    object

    Initial parameter values for the node

    Examples

  • SEND node/<node_id>/user/mapping

    [User node mapping] Node can request or confirm user to node mapping

    Note: Use Basic ingest topic $aws/rules/esp_user_node_mapping/node/<node_id>/user/mapping to save costs
    Operation IDonNodeUserMapping

    Available only on servers:

    Accepts the following message:

    userMappingMessage
    Message IDuserMappingMessage
    object

    Examples

  • RECEIVE node/<node_id>/params/remote

    [Node params] Parameter change request sent to node by cloud

    Operation IDpublishNodeParamsRemote

    Available only on servers:

    Accepts the following message:

    paramsRemoteMessage
    Message IDparamsRemoteMessage
    object

    Desired parameter change values for the node

    Examples

  • SEND node/<node_id>/params/local

    [Node params] Delta in parameters reported by nodes whenever they are changed

    Note: Use Basic ingest topic $aws/rules/esp_set_params/node/<node_id>/params/local to save costs
    Operation IDonNodeParamsLocal

    Available only on servers:

    Accepts the following message:

    paramsLocalMessage
    Message IDparamsLocalMessage
    object

    Changed parameter values for the node

    Examples

  • SEND node/<node_id>/params/local/<group_id>

    [BETA] [Node params] Delta in parameters reported by nodes whenever they are changed

    Note: Use Basic ingest topic $aws/rules/esp_set_group_params/node/<node_id>/params/local/<group_id> to save costs
    Operation IDonNodeParamsLocalGroup

    Available only on servers:

    Accepts the following message:

    paramsLocalWildcardMessage
    Message IDparamsLocalWildcardMessage
    object

    Changed parameter values for the node

    Examples

  • SEND node/<node_id>/otafetch

    [OTA] Nodes request for OTA firmware updates

    Note: Use Basic ingest topic $aws/rules/esp_node_otafetch/node/<node_id>/otafetch to save costs
    Operation IDonNodeOtaFetch

    Available only on servers:

    Accepts the following message:

    otaFetchMessage
    Message IDotaFetchMessage
    object

    Examples

  • RECEIVE node/<node_id>/otaurl

    [OTA] OTA update details if available sent to nodes. This is sent as a response to OTA fetch request or when a force pushed job is created.

    Operation IDpublishNodeOtaUrl

    Available only on servers:

    Accepts the following message:

    otaUrlMessage
    Message IDotaUrlMessage
    object

    Examples

  • SEND node/<node_id>/otastatus

    [OTA] OTA update status from nodes once they start the OTA job.

    Note: Use Basic ingest topic $aws/rules/esp_node_otastatus/node/<node_id>/otastatus to save costs
    Operation IDonNodeOtaStatus

    Available only on servers:

    Accepts the following message:

    otaStatusMessage
    Message IDotaStatusMessage
    object

    Examples

  • SEND node/<node_id>/tsdata

    [Time Series Data] Time series data from nodes.

    Note: Use Basic ingest topic $aws/rules/esp_ts_ingest/node/<node_id>/tsdata to save costs
    Operation IDonNodeTsData

    Available only on servers:

    Accepts the following message:

    tsDataMessage
    Message IDtsDataMessage
    object

    Examples

  • SEND node/<node_id>/simple_tsdata

    [Time Series Data] Simple time series data from nodes. This is a simplified version of the time series data format with lesser aggregations.

    Note: Use Basic ingest topic $aws/rules/esp_simple_ts_ingest/node/<node_id>/simple_tsdata to save costs
    Operation IDonNodeSimpleTsData

    Available only on servers:

    Accepts the following message:

    simpleTsDataMessage
    Message IDsimpleTsDataMessage
    object

    Examples

  • SEND node/<node_id>/from-node

    [Command Request Response] Command requests or responses sent from nodes to the cloud. The format is Binary of TLV (Tag, Length, Value).

    Note: Use Basic ingest topic $aws/rules/esp_cmd_resp/node/<node_id>/from-node to save costs
    Operation IDonNodeFromNode

    Available only on servers:

    Accepts the following message:

    fromNodeMessage
    Message IDfromNodeMessage
    object

    Examples

  • RECEIVE node/<node_id>/to-node

    [Command Request Response] Command requests sent from cloud to nodes. The format is Binary of TLV (Tag, Length, Value).

    Operation IDpublishNodeToNode

    Available only on servers:

    Accepts the following message:

    toNodeMessage
    Message IDtoNodeMessage
    object

    Examples

  • SEND node/<node_id>/alert

    [Alert] Channel for sending push notification alerts to associated users from nodes

    Note: Use Basic ingest topic $aws/rules/esp_node_alert/node/<node_id>/alert to save costs
    Operation IDonNodeAlert

    Available only on servers:

    Accepts the following message:

    nodeAlertMessage
    Message IDnodeAlertMessage
    object

    Examples