ReadonlychannelUnique identifier for this channel (e.g., "mqtt", "matter", "ble")
Detach all listeners. The shared MQTT connection is intentionally left
intact — its lifecycle is owned by the orchestrator / ESPRMNeoBase.
Initialize the channel. The MQTT engine
(NodeMQTTOrchestrator over ESPRMNeoMqtt) is initialized by
ESPRMNeoBase.init() when an mqttAdapter is configured, so there is no
connection to set up here.
Subscribe to parameter updates for a node.
Constructs the node's shadow name from its group/subgroup context, registers it with the orchestrator (deduped by shadow), and installs a single orchestrator listener per node that normalizes shadow messages and fans them out to all subscriber callbacks.
Invoked with a normalized ESPNodeUpdateData on each update.
The node to subscribe to. Must carry nodeId (or id) and
groupId; subgroupIds optional. Group context is used to build the
shadow name directly — no reverse lookup from persisted state.
MQTT is the universal transport for RainMaker Neo nodes, so this channel supports every node.
Unused; MQTT supports all Neo nodes.
Always true.
Unsubscribe from a node.
nodeId: detach every node.nodeId only: detach the node and all its subscribers.nodeId + callback: remove just that subscriber; the node stays
subscribed (and the shared orchestrator listener stays attached) until its
last subscriber is removed, so sibling subscribers are not affected.OptionalnodeId: stringNode id to detach; omit to detach all nodes.
Optionalcallback: (update: ESPNodeUpdateData) => voidOptional specific subscriber to remove.
MQTT subscription channel for ESP RainMaker Neo.
This channel is a thin adapter over NodeMQTTOrchestrator, which owns the single MQTT connection, the AWS IoT shadow topic subscriptions, and the deduplication of nodes that share a group/subgroup shadow. The channel's job is only to:
It deliberately does not open/close the MQTT connection — that lifecycle is owned by
ESPRMNeoBase.init()/ the orchestrator, so disposing one channel never tears down a connection other channels (or the node) still use.Example