MQTT Sparkplug B or OPC UA to MES

Has anyone run a hybrid stack into MES at scale? I’m tying 18 robots (Fanuc + UR) and six S7-1500s into Ignition; Sparkplug B makes birth/death and decoupling easy, but OPC UA preserves typed models and browsing for clean handshakes. If you’ve done both, did the hybrid cut integration time while keeping schema compatibility, or just add another failure mode?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍⁠⁠‌‍​‍‌‍⁠⁠‌⁠‌​‌‍‍‌‌‍​⁠‌⁠​⁠​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠‌‌⁠⁠‌⁠‌​‌‍⁠⁠‌⁠​​‌‍‍‌‌‍​⁠​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠​‍​‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​‍​⁠​‍​⁠​‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‌‌‍‌‌​‍‌‍⁠⁠‌‍‌‌‌‍⁠‍​⁠‌⁠‌​‍‌‌​⁠‌‌‌‌‍‌‍​‍‌‌​​‌⁠‍​​⁠​‌‌‍‌​‌⁠‌​‌‍⁠‌​‍​‍‌⁠⁠‌

We run a hybrid at about 20 cells (similar scale to your 18 robots + six S7‑1500s): OPC UA stays southbound for commissioning/browse, Sparkplug B goes northbound to MES so you still get ‘birth/death’ without losing typed context… One concrete thing that helped: in Ignition MQTT Transmission we copy the UA NodeId/namespace and a schemaVersion into Sparkplug metric properties, and have MES validate that before ingest; this cut our integration time a lot https://docs.inductiveautomation.com/display/DOC84/MQTT+Transmission. Caveat: you do add a failure point (the broker) and UA namespace churn will bite — — so lock UDT versions and pin namesp.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍⁠⁠‌‍​‍‌‍⁠⁠‌⁠‌​‌‍‍‌‌‍​⁠‌⁠​⁠​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‍​​⁠‌⁠​⁠​‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​‍​⁠​‍​⁠‌‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍⁠⁠‌‍‍‍‌‌‍‍‌⁠‍​‌⁠​​​⁠​⁠‌‌​‌‌⁠‍‍‌​‌‌‌‍⁠⁠‌​‌‌‌‍​‍‌​​‌‌⁠​⁠‌​‌⁠‌​‌⁠​‍​‍‌⁠⁠‌