The node the update belongs to.
The parsed shadow document (full live message or get/accepted document).
Channel-specific metadata to merge into metadata (e.g. { shadowName, topic }).
The originating channel id (defaults to the MQTT channel).
A normalized ESPNodeUpdateData.
Normalizes a parsed AWS IoT shadow document into the canonical ESPNodeUpdateData envelope used by every subscription channel.
The
payloadis reduced to the device→param map ({ <deviceName>: { <paramName>: value } }) by preferringstate.reported.paramsand falling back tostate.reported, so all channels agree on the same payload shape regardless of transport.The full parsed shadow is also attached as
metadata.shadowso consumers that need fields outside the param map (e.g.online,ncfg_ver) can read them without changing the normalizedpayloadcontract.