MQTT एक हल्का, सुरक्षित publish-subscribe प्रोटोकॉल है जो Allen-Bradley, Siemens, Beckhoff और हर दूसरे PLC को एक मानक के तहत जोड़ता है। कोई proprietary lock-in नहीं। नेटिव JSON। पहले दिन से cloud-ready।
इंडस्ट्रियल प्रोटोकॉल cloud के दौर के लिए नहीं बने थे। MQTT बना था। आधुनिक मैन्युफैक्चरिंग के लिए अहम पहलुओं पर इनकी तुलना यह रही।
MQTT ट्रांसपोर्ट देता है। Sparkplug B उसमें इंडस्ट्रियल अर्थ (semantics) जोड़ता है। साथ मिलकर ये हर मशीन पर एक मानकीकृत, interoperable डेटा लेयर देते हैं।
MQTT का न्यूनतम 2-byte header और binary प्रोटोकॉल का मतलब है OPC-UA या HTTP-आधारित विकल्पों से कम बैंडविड्थ, कम CPU और कम latency।
सिर्फ़ binary वाले प्रोटोकॉल (Modbus, PROFINET) के उलट, MQTT JSON को नेटिव रूप से ले जाता है। न कस्टम parser, न binary-से-text converter, न middleware ट्रांसलेशन लेयर।
TLS 1.3 एन्क्रिप्शन, certificate-आधारित authentication, और topic-स्तर के ACL। Modbus TCP में सिक्योरिटी शून्य है। PROFINET और EtherNet/IP सिक्योरिटी को वैकल्पिक मानते हैं।
हर PLC वेंडर अलग भाषा बोलता है। MQTT यूनिवर्सल अनुवादक का काम करता है — PLC ब्रांड कोई भी हो, शॉप फ़्लोर से cloud तक एक ही प्रोटोकॉल।
MQTT आपके सभी PLC को एक ही डेटा स्ट्रीम में जोड़ता है। लोकल स्पीड के लिए ऑन-प्रेम broker, और cloud में डेटा सहेजने व analytics के लिए AWS IoT Core।
MQTT payload सीधे NoSQL documents में मैप होते हैं। न ट्रांसलेशन, न middleware, न डेटा का नुक़सान।
// Direct to DynamoDB - no conversion needed { "topic": "spBv1.0/CUST00/DDATA/LOC01/MACH02", "metrics": [ { "name": "machine_state", "value": 1, "type": "Int32" }, { "name": "line_speed", "value": 12.4, "type": "Float" }, { "name": "temperature", "value": 185.2, "type": "Float" }, { "name": "fabric_length", "value": 4521, "type": "Float" } ], "timestamp": 1710288000000 }
// Requires custom parser + register mapping // Register 40001: 0x0001 (machine_state?) // Register 40002: 0x4148 0xCCCD (line_speed?) // Register 40004: 0x4339 0x3333 (temperature?) // Register 40006: 0x458D 0x2000 (fabric_length?) // No field names, no types, no timestamps // Must maintain register map spreadsheet // Byte order varies by vendor (big/little endian) // Changes require rewriting parser code 01 03 00 00 00 08 44 0C // raw bytes
Sparkplug B (Eclipse Foundation, v3.0) MQTT के ऊपर इंडस्ट्रियल अर्थ (semantics) जोड़ता है। यह topic संरचना, metric के प्रकार, birth/death certificates और state मैनेजमेंट तय करता है — और कच्चे MQTT को plug-and-play इंडस्ट्रियल डेटा बस में बदल देता है।
Edge node ऑनलाइन आता है। सभी उपलब्ध डिवाइस और उनकी metric परिभाषाएँ घोषित करता है। Gateway के लिए birth certificate का काम करता है।
Edge node ऑफ़लाइन हो जाता है (MQTT Last Will & Testament के ज़रिए)। Broker इसे अपने आप publish करता है — कोई कोड नहीं चाहिए। सभी डिवाइस डेटा को stale (पुराना) मार्क कर दिया जाता है।
डिवाइस (PLC) ऑनलाइन आता है। नाम, प्रकार और शुरुआती वैल्यू के साथ पूरी metric सूची publish करता है। इस मशीन का डेटा कॉन्ट्रैक्ट तय करता है।
Runtime डेटा। सिर्फ़ बदली हुई वैल्यू publish करता है (report by exception)। सभी subscribers को अप-टू-डेट रखते हुए बैंडविड्थ कम से कम रखता है।
डिवाइस ऑफ़लाइन हो जाता है। इसे edge node publish करता है (डिवाइस ख़ुद नहीं)। Dashboard तुरंत मशीन को disconnected दिखाता है।
डिवाइस को write कमांड। MES, PLC को रेसिपी पैरामीटर, बैच कमांड या state transitions भेजता है। दोतरफ़ा कंट्रोल।
जब कोई डिवाइस कनेक्ट होता है, DBIRTH हर metric को नाम, प्रकार और शुरुआती वैल्यू के साथ publish करता है। Subscribers को डेटा कॉन्ट्रैक्ट तुरंत पता चल जाता है — शून्य कॉन्फ़िगरेशन।
Disconnect होने पर MQTT Last Will & Testament अपने आप NDEATH/DDEATH ट्रिगर करता है। Dashboard कुछ ही सेकंड में offline स्टेट दिखाता है — polling की ज़रूरत नहीं।
DDATA सिर्फ़ बदले हुए metrics भेजता है। अगर तापमान नहीं बदला, तो वह payload में नहीं होता। Polling प्रोटोकॉल की तुलना में बैंडविड्थ 80-95% तक कम करता है।
हर message का एक seq नंबर (0-255) होता है। अगर बीच में gap दिखे, तो subscriber rebirth का अनुरोध करता है — ख़ुद ठीक होने वाला (self-healing) डेटा।
MQTT को शुरू से ही सिक्योरिटी को ध्यान में रखकर डिज़ाइन किया गया। Modbus में कोई सिक्योरिटी नहीं है। PROFINET और EtherNet/IP इसे बाद में जोड़ी गई चीज़ मानते हैं।
हर message transit में एन्क्रिप्टेड। X.509 certificates के साथ Mutual TLS (mTLS) यह पक्का करता है कि client और broker दोनों एक-दूसरे की पहचान वेरिफ़ाई करें।
हर डिवाइस, हर topic के लिए बारीक access control। मशीन MACH02 सिर्फ़ अपने topics पर publish कर सकती है। ऑपरेटर subscribe कर सकते हैं, पर कमांड नहीं दे सकते।
AWS IoT Core में हर thing के लिए अलग policy। हर डिवाइस को अपना certificate, अपनी permissions और अपना audit trail मिलता है। कोई डिवाइस compromise हुआ? तुरंत revoke करें।
MQTT के JSON payload सीधे NoSQL documents में मैप होते हैं — न ORM, न schema migration, न ETL pipeline। स्पीड के लिए लोकल स्टोर करें, analytics के लिए cloud में replicate करें।
PulseMQ, MQTT + Sparkplug B के ज़रिए हर PLC से cloud तक एक एकीकृत डेटा लेयर देता है — नेटिव JSON, एंटरप्राइज़ सिक्योरिटी और बिना किसी proprietary lock-in के।
डेमो का अनुरोध करें