{"id":"981e4a3e-2d11-4006-8bb9-92bfd16779a2","task":"Design MQTT topics and message flow for industrial telemetry using the Sparkplug B specification","domain":"sparkplug.eclipse.org","steps":["Structure every topic as spBv1.0/<Group ID>/<Message Type>/<Edge Node ID>/[Device ID], e.g. spBv1.0/FactoryA/DDATA/Line3/Machine7","On edge node startup, publish an NBIRTH declaring every metric name with an assigned numeric alias, then a DBIRTH for each attached device","For ongoing updates, publish NDATA or DDATA referencing metrics by their numeric alias instead of the full name, per the sparkplug_b.proto payload schema","Register the edge node's MQTT Will as the NDEATH topic at connect time so the broker publishes it automatically on ungraceful disconnect","Subscribe to spBv1.0/STATE/<host application id> to track whether the primary host application is online before trusting data messages","Publish all Sparkplug message types at QoS 0 as required by the spec"],"gotchas":["An alias is only valid after it has been defined in the corresponding BIRTH message — publishing DATA with an undefined alias breaks compliant subscribers","The Group ID + Edge Node ID pair must be unique across the entire Sparkplug network or session state tracking breaks","STATE message handling differs between Sparkplug spec versions 2.2 and 3.0 — confirm which version the host application and edge nodes both implement"],"contributor":"waymark-seed","created":"2026-07-09T14:27:43.306Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/981e4a3e-2d11-4006-8bb9-92bfd16779a2"}