एकीकरण
MQTT लेबल प्रिंटिंग: हर ब्रोकर संदेश एक लेबल बनता है
फ़ैक्टरी फ़्लोर पर लगभग सब कुछ पहले से MQTT ब्रोकर से जुड़ा होता है: तराज़ू, स्कैनर, PLC, सेंसर। इसे लेबल में बदलने के लिए आमतौर पर एक छोटी सेवा लिखनी पड़ती …
फ़ैक्टरी फ़्लोर पर लगभग सब कुछ पहले से MQTT ब्रोकर से जुड़ा होता है: तराज़ू, स्कैनर, PLC, सेंसर। इसे लेबल में बदलने के लिए आमतौर पर एक छोटी सेवा लिखनी पड़ती है, जो सब्सक्राइब करे, लेआउट भरे और ZPL प्रिंटर तक भेजे। आप इस सेवा को छोड़ सकते हैं: zplCloud स्वयं topic को सब्सक्राइब करता है और प्रिंट करता है।
आपको क्या चाहिए
| घटक | उदाहरण |
|---|---|
| ब्रोकर | Mosquitto, HiveMQ, EMQX, AWS IoT Core, Azure IoT Hub |
| Topic फ़िल्टर | plant/line1/labels, या वाइल्डकार्ड के साथ plant/+/labels |
| एक्सेस | उपयोगकर्ता नाम और पासवर्ड, आमतौर पर TLS के साथ पोर्ट 8883 |
| लक्ष्य | एक कनेक्टेड Zebra प्रिंटर या एक वर्चुअल टेस्ट प्रिंटर |
सदस्यता बनाना
स्ट्रीमिंग → सदस्यताएँ → नई सदस्यता में प्रकार MQTT चुनें। कनेक्शन स्ट्रिंग कुंजियों और मानों की एक सादी सूची है:
Server=broker.example.com;Port=8883;Tls=true;Username=plant1;Password=…;Qos=1
Topic फ़ील्ड में topic फ़िल्टर दर्ज होता है। MQTT वाइल्डकार्ड की अनुमति है: + ठीक एक स्तर से मेल खाता है, # उसके नीचे की हर चीज़ से। इसलिए plant/+/labels पर बनी सदस्यता एक साथ plant/line1/labels और plant/line2/labels दोनों को पकड़ती है।
लेबल तक दो रास्ते
पहला: डेटा आता है, डिज़ाइन अपने आप भर जाता है। यदि आप सदस्यता में कोई लेबल डिज़ाइन चुनते हैं, तो हर JSON संदेश एक रिकॉर्ड बन जाता है। संदेश की कुंजियाँ डिज़ाइन के बाइंड किए गए फ़ील्ड भरती हैं:
{ "sku": "88-12345", "batch": "LOT-42", "qty": 120, "bestBefore": "2027-03-01" }
sku से बाइंड किया गया फ़ील्ड तब 88-12345 दिखाता है। जो कुछ JSON नहीं है, वह एक ही फ़ील्ड में message के रूप में आता है।
दूसरा: तैयार ZPL। यदि संदेश में पहले से ZPL है, तो सदस्यता में डिज़ाइन खाली छोड़ें और एक एनवेलप भेजें:
{
"schemaVersion": 1,
"printer": "*",
"zpl": "^XA^FO50,50^A0N,40,40^FDHello^FS^XZ"
}
printer में सीरियल नंबर, रिमोट प्रिंटर के लिए rp:{id}, या खाते के हर प्रिंटर के लिए "*" दिया जाता है। यदि ZPL बड़ा है, तो उसकी ओर इशारा करें: "zplRef": { "storage": "archive", "key": "orders/4711.zpl" } प्रिंट के समय फ़ाइल को S3 या Azure Blob से लाता है।
कुछ भी खोता क्यों नहीं
MQTT सामान्य रूप से किसी संदेश को पहुँचते ही स्वीकृत (acknowledge) कर देता है। zplCloud इसे अलग तरह से करता है: स्वीकृति ZPL के प्रिंटर तक पहुँचने के बाद होती है। यदि प्रिंट विफल होता है, तो संदेश बिना स्वीकृति के रहता है और ब्रोकर उसे QoS 1 या 2 पर फिर से डिलीवर करता है।
इसीलिए कनेक्शन स्ट्रिंग में Qos=1 रखना फ़ायदेमंद है। QoS 0 पर प्रोटोकॉल कोई पुनः डिलीवरी नहीं देता: प्रिंट विफल होने पर जो खो गया, वह हमेशा के लिए चला गया।
कागज़ चलने से पहले रिहर्सल करें
असली लेबल चलाने से पहले प्रिंटर → सैंडबॉक्स प्रिंटर में एक वर्चुअल टेस्ट प्रिंटर बनाएँ और उसे सदस्यता में चुनें। यह असली डिवाइस की तरह ZPL स्वीकार करता है, लेबल रेंडर करता है और उसे इतिहास में डाल देता है - न हार्डवेयर, न रेंडर कोटा। इस तरह पहला रोल इस्तेमाल होने से पहले ही आप देख लेते हैं कि आपके संदेश वास्तव में क्या बनाते हैं।
किसी सदस्यता को टेस्ट करें से हाथ से एक बार चलाया भी जा सकता है, बिल्कुल बिना ब्रोकर संदेश के।
आम गलतियाँ
- कुछ नहीं पहुँचता। Topic फ़िल्टर जाँचें।
plant/line1,plant/line1/labelsपर आए संदेश नहीं पकड़ता; इसके लिए आपकोplant/line1/#चाहिए। - TLS त्रुटियाँ। पोर्ट 8883 के लिए
Tls=trueआवश्यक है; पोर्ट 1883 बिना एन्क्रिप्शन के चलता है। - रीस्टार्ट के बाद डुप्लिकेट लेबल।
CleanSession=falseऔर एक निश्चितClientIdसेट करें, ताकि ब्रोकर सत्र को पहचान ले। - कोई फ़ील्ड खाली रहता है। संदेश की कुंजियाँ डिज़ाइन की बाइंडिंग से मेल खानी चाहिए। सदस्यता पर "लॉग" क्षेत्र हर संदेश को ज्यों-का-त्यों दिखाता है।