ابدأ مجاناً

التكامل

طباعة الملصقات عبر MQTT: كل رسالة من الوسيط تصبح ملصقًا

في أرض المصنع يكون كل شيء تقريبًا متصلًا أصلًا بوسيط MQTT: الموازين والماسحات ووحدات PLC وأجهزة الاستشعار. وتحويل ذلك إلى ملصقات يعني عادةً كتابة خدمة صغيرة …

في أرض المصنع يكون كل شيء تقريبًا متصلًا أصلًا بوسيط MQTT: الموازين والماسحات ووحدات PLC وأجهزة الاستشعار. وتحويل ذلك إلى ملصقات يعني عادةً كتابة خدمة صغيرة تشترك في الموضوع، وتملأ تخطيطًا، وترسل ZPL إلى الطابعة. يمكنك الاستغناء عن هذه الخدمة: فـ zplCloud يشترك في الموضوع بنفسه ويطبع.

ما تحتاج إليه

المكوّنمثال
الوسيطMosquitto، HiveMQ، EMQX، AWS IoT Core، Azure IoT Hub
مرشِّح الموضوعplant/line1/labels، أو مع أحرف البدل plant/+/labels
الوصولاسم مستخدم وكلمة مرور، عادةً المنفذ 8883 مع TLS
الهدفطابعة Zebra متصلة أو طابعة اختبار افتراضية

إنشاء الاشتراك

ضمن تدفق البيانات ← الاشتراكات ← اشتراك جديد اختر النوع MQTT. سلسلة الاتصال قائمة بسيطة من المفاتيح والقيم:

Server=broker.example.com;Port=8883;Tls=true;Username=plant1;Password=…;Qos=1

يستقبل حقل الموضوع مرشِّح الموضوع. وأحرف البدل في 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 استلام الرسالة لحظة وصولها. أما zplCloud فيتصرف بشكل مختلف: يحدث التأكيد بعد وصول ZPL إلى الطابعة. وإذا فشلت الطباعة، تبقى الرسالة دون تأكيد ويعيد الوسيط تسليمها عند QoS 1 أو 2.

لهذا يستحق Qos=1 مكانه في سلسلة الاتصال. فعند QoS 0 لا يوفر البروتوكول أي إعادة تسليم على الإطلاق: ما يضيع عند فشل الطباعة يضيع نهائيًا.

تدرّب قبل أن تتحرك أي ورقة

قبل تشغيل ملصقات حقيقية، أنشئ طابعة اختبار افتراضية ضمن الطابعات ← طابعات وضع الاختبار واخترها في الاشتراك. فهي تقبل ZPL كجهاز حقيقي، وتُصيّر الملصق وتضعه في السجل - بلا عتاد ودون أن يُحتسب من حصة التصيير. هكذا ترى ما تنتجه رسائلك فعلًا قبل استهلاك أول لفة.

ويمكن أيضًا تشغيل الاشتراك مرة واحدة يدويًا بزر اختبار، دون أي رسالة من الوسيط.

أخطاء شائعة

  • لا يصل شيء. تحقق من مرشِّح الموضوع. plant/line1 لا يلتقط الرسائل على plant/line1/labels؛ تحتاج إلى plant/line1/#.
  • أخطاء TLS. المنفذ 8883 يتطلب Tls=true؛ أما المنفذ 1883 فيعمل دون تشفير.
  • ملصقات مكررة بعد إعادة التشغيل. اضبط CleanSession=false وClientId ثابتًا حتى يتعرف الوسيط على الجلسة.
  • حقل يبقى فارغًا. يجب أن تطابق مفاتيح الرسالة روابط التصميم. وتعرض منطقة «السجل» في الاشتراك كل رسالة حرفيًا.