Minimal structural shape the subscription manager needs from a node.

Used instead of a hard dependency on ESPRMNeoNode so that satellite SDKs (Matter, BLE, …) and lightweight proxies can be passed to the manager. A node is identified by id or nodeId; channel selection may also read subscriptionConfig, type and metadata.

interface NodeLike {
    groupId?: string;
    id?: string;
    metadata?: Record<string, unknown>;
    nodeId?: string;
    subgroupIds?: string[];
    subscriptionConfig?: ESPNodeSubscriptionConfig;
    type?: string;
}

Properties

groupId?: string

Group this node belongs to. Required for channels that route by group (e.g. MQTT constructs its shadow name from groupId + subgroupIds).

id?: string

Node identifier (preferred).

metadata?: Record<string, unknown>

Optional metadata used by capability-gated channels (e.g. Matter markers).

nodeId?: string

Node identifier as used by ESPRMNeoNode.

subgroupIds?: string[]

Subgroup ids this node belongs to under groupId. Passed through to MQTT shadow-name construction. Empty/omitted → group-level shadow.

subscriptionConfig?: ESPNodeSubscriptionConfig

Per-node channel order override.

type?: string

Optional node type hint used by capability-gated channels.