OptionalsubgroupIdOrIds: string | string[]Transports currently usable for this node, keyed by mode.
mqtt (cloud) is added when the node is connected and removed when it
goes offline (from cached connectivity_status or shadow updates).local is added/removed at runtime by a localDiscovery subscriber as the
node appears/disappears on the LAN (via addTransport/removeTransport).
Apps may also add custom string-keyed entries (pair with
customTransportManagers).Last-known connectivity. Seeded from cached connectivity_status when
present (cloud config does not provide it); otherwise starts offline until
an MQTT shadow online update arrives.
OptionalcustomOptional per-node custom transport implementations keyed by mode. When a mode in transportOrder has an entry here, the transport handler uses it in preference to the built-in local/MQTT backends. Enables BLE, WebSocket or proprietary transports without modifying the SDK.
All subgroup IDs this node belongs to under groupId (shadow segment order from constructShadowName). Empty when the node lives only at the root group.
OptionalsubscriptionOptional per-node subscription channel order, overriding the global order
on ESPRMNeoBase.subscriptionManager. Set and read via the
setSubscriptionChannelOrder / getSubscriptionChannelOrder methods
added by module augmentation in
src/methods/ESPRMNeoNode/SubscriptionConfig.ts.
Transport priority order for this node. Initialized from the global default (ESPRMNeoBase.getTransportOrder); override per-node via setTransportOrder.
Registers (or replaces) a custom transport manager for a mode. The transport handler prefers it over the built-in backend for that mode. Pair with addTransport so the mode also appears in availableTransports and participates in transportOrder.
Transport mode key the manager handles.
Implementation of ESPTransportInterface.
Adds (or replaces) an available transport for this node, keyed by mode. Works for built-in modes (ESPTransportMode) and custom string modes. For a custom transport, also register its implementation via addCustomTransportManager.
Transport mode key (e.g. local, mqtt, or a custom string).
The transport config ({ type, metadata }).
Replaces config and rebuilds devices/services (used after cloud sync).
Sets config so config.devices / config.services are the same
live ESPRMNeoDevice / ESPRMNeoService instances as
devices / services.
Clears the node-specific channel order so the node falls back to the global order.
Creates schedules on this node.
[] to clear.Calls PUT /v1/groups/{groupId}/nodes/{nodeId}/schedules.
Single-item append is not safe under concurrent calls to the same node — two simultaneous creates can read the same existing list and the later PUT wins. Callers appending many schedules should build the array locally and pass it once.
The created schedule, or the full list after a replace-all PUT.
Creates triggers on this node.
[] to clear.Calls PUT /v1/groups/{groupId}/nodes/{nodeId}/triggers.
Single-item append is not safe under concurrent calls to the same node — two simultaneous creates can read the same existing list and the later PUT wins. Callers appending many triggers should build the array locally and pass it once.
The created trigger, or the full list after a replace-all PUT.
Fully disassociates this node from the cloud account.
Calls DELETE /v1/groups/{groupId}/nodes/{nodeId} at the root group.
A promise that resolves with the API response when the node has been deleted.
Returns the node configuration currently held on this instance (the last snapshot loaded from cache or fetched via sync). Synchronous — does not hit the cloud. Call sync for a fresh fetch.
The current node configuration.
OptionalgetGets the most recent time-series sample for a device param from
GET /v1/groups/{groupId}/nodes/{nodeId}/timeseries/latest.
Device name.
Parameter name.
Optionaloptions: ESPRMNeoTSDataOptionsQuery options (only dataType override is used).
Promise resolving to time-series data with at most one point
in data (empty when the param has no samples yet).
OptionalgetGets raw time-series samples for a device param (newest first) from
GET /v1/groups/{groupId}/nodes/{nodeId}/timeseries/raw.
Device name.
Parameter name.
Optionaloptions: ESPRMNeoTSDataOptionsQuery options; startTs (Unix ms) is required,
endTs defaults to now. Paginate via pageSize/startKey or the
result's fetchNext().
Promise resolving to raw time-series data.
OptionalgetGets aggregated time-series data for a device param from
GET /v1/groups/{groupId}/nodes/{nodeId}/timeseries/aggregates.
Query modes (all require options.window):
date: one completed historical windowstartDate + endDate: paginated range of completed windowsDevice name.
Parameter name.
Optionaloptions: ESPRMNeoTSDataOptionsQuery options (window required; date or
startDate/endDate for historical windows; paginate via
pageSize/startKey or the result's fetchNext()).
Promise resolving to time-series data with aggregates populated.
RainMaker params channel: rainmaker/nodes/{nodeId}/user/{shadowName}/params
Retrieves all schedules for this node.
Calls GET /v1/groups/{groupId}/nodes/{nodeId}/schedules.
A promise that resolves to an array of ESPRMNeoSchedule instances.
Returns the effective subscription channel order for this node (node-specific order if set, otherwise the global order).
Channel ids in priority order.
Retrieves all triggers for this node.
Calls GET /v1/groups/{groupId}/nodes/{nodeId}/triggers.
A promise that resolves to an array of ESPRMNeoTrigger instances.
Removes all schedules for this node in a single call.
Calls DELETE /v1/groups/{groupId}/nodes/{nodeId}/schedules.
A promise that resolves with the API response when all schedules are successfully removed.
Removes all triggers for this node in a single call.
Calls DELETE /v1/groups/{groupId}/nodes/{nodeId}/triggers.
A promise that resolves with the API response when all triggers are successfully removed.
Removes the custom transport manager registered for a mode (if any).
Transport mode key to clear.
Removes a schedule from this node by id, preserving other schedules.
RainMaker's schedules API is replace-all, so this method does two round trips: a GET to fetch the current list, then a PUT of the filtered list.
Id of the schedule to remove.
A promise that resolves with the API response when the schedule is removed.
Removes an available transport for this node by mode.
Transport mode key to remove.
Removes a trigger from this node by id, preserving other triggers.
RainMaker's triggers API is replace-all, so this method does two round trips: a GET to fetch the current list, then a PUT of the filtered list.
Id of the trigger to remove.
A promise that resolves with the API response when the trigger is removed.
Publishes a parameter update to this node via the best available transport (local control first when reachable, otherwise MQTT).
The returned response indicates the publish was accepted by the transport (local ack or MQTT publish resolved). It does not guarantee that the device received or applied the params — cloud publishes are fire-and-forget over AWS IoT.
A record of device/service names to param maps.
A promise that resolves once the transport publish is accepted.
Sets the subscription channel order for this node, overriding the global order on ESPRMNeoBase.subscriptionManager. Channels are tried in order until one succeeds; only channels that support the node are used.
Channel ids in priority order, e.g. ["matter", "mqtt"].
Fetches the latest node config from the cloud, applies it to this instance (config, devices, services), then updates the local cache.
Calls:
GET /v1/groups/{groupId}/nodes/{nodeId}/configGET /v1/groups/{groupId}/subgroups/{subGroupId}/nodes/{nodeId}/configStops receiving MQTT shadow updates for this node.
Specifically:
Call this before dropping the last reference to the node instance so orchestrator registrations and MQTT subscriptions are not left behind. This does not clear local storage, node config cache, or other SDK resources.
Represents a node in the ESP Rainmaker Neo SDK. Provides access to node configuration and metadata.
Live updates arrive via the subscription manager (
subscribeToNode→ handleNodeUpdate) and are re-broadcast on the process-wide node-updates bus foruser.subscribe(nodeUpdates).