المسار 1: Modbus TCP
- في M-Center أدخل رمز OBIS للسجلات المطلوبة. فتكون قراءة التعرفة 1 المسحوبة (1-0:1.8.1) عندئذ عند السجل 1030.
- في Node-RED أضف عقدة «Modbus Read». الخادم: عنوان IP لـ M-Center، المنفذ 502، النوع TCP.
- Unit ID: عنوان جهاز Modbus للعداد في M-Center.
- FC 3 (Read Holding Registers)، العنوان 1029 للسجل 1030، الكمية 2، معدل الاستعلام مثلًا 15 دقيقة.
- أضف عقدة دالة (Function) تجمع السجلين في عدد عشري.
// Two 16-bit registers (big endian, high word first) -> float32
const buf = Buffer.alloc(4);
buf.writeUInt16BE(msg.payload[0], 0);
buf.writeUInt16BE(msg.payload[1], 2);
msg.payload = buf.readFloatBE(0);
msg.topic = "apartment1/import_t1";
return msg;
يعدّ الدليل السجلات ابتداءً من 1، بينما يتوقع node-red-contrib-modbus العنوان ابتداءً من 0. ولهذا 1029 للسجل 1030. قارن القيمة الأولى بقراءة العداد في M-Center.
لعدة عدادات أنشئ عقدة قراءة لكل عداد بـ Unit ID خاص. وتبقى العناوين نفسها ما دامت رموز OBIS مُدخلة.
المسار 2: MQTT
مع ترخيص MQTT ينشر M-Center كل قيمة تحت موضوع خاص. وتستقبل عقدة «mqtt in» باشتراك برمز شامل جميع قيم M-Center:
<prefix>/emu/mcenter/<MAC>/meterreading/#
أضف أولًا عقدة Debug واطّلع على المواضيع ومحتوى الرسائل. ثم افصل القيم حسب الموضوع بعقدة Switch، مثلًا حسب رمز OBIS في نهاية المسار.
أي مسار؟
| Modbus TCP | MQTT | |
|---|---|---|
| العناوين | ثابتة، موثّقة في الدليل | موضوع لكل عداد وسجل |
| الاستعلام | Node-RED يستعلم بنشاط | M-Center يرسل من تلقاء نفسه |
| أنظمة أخرى | استعلام منفصل لكل نظام | أي عدد من المشتركين لدى الوسيط |
| الترخيص | 210.300.04 | 210.300.03 |