الخطوة 1: إدخال رموز OBIS في M-Center
في M-Center أدخل رمز OBIS لكل سجل يجب أن يستقبله Home Assistant. فتقع القيمة عندئذ على عنوان ثابت، مثل قراءة التعرفة 1 المسحوبة (1-0:1.8.1) عند السجل 1030. وسجّل «Modbus TCP Server device number» لكل عداد. وهو في Home Assistant عنوان الجهاز.
تحقق أيضًا من وحدة السجل في M-Center. يأخذ Home Assistant القيمة العددية؛ وتحدد أنت الوحدة بنفسك. فإذا أظهر M-Center الوحدة Wh، فأدخل Wh في Home Assistant.
الخطوة 2: إعداد Modbus في Home Assistant
وسّع ملف configuration.yaml. يقرأ المثال التعرفة 1 والتعرفة 2 المسحوبتين لعداد بعنوان الجهاز 9 وعداد المياه بالعنوان 12:
modbus:
- name: m_center
type: tcp
host: 192.168.1.50 # IP of the M-Center
port: 502
sensors:
- name: "Apartment 1 import tariff 1"
slave: 9 # device address in the M-Center
address: 1029 # register 1030, counted from 0
input_type: holding
data_type: float32
unit_of_measurement: Wh
device_class: energy
state_class: total_increasing
scan_interval: 900
- name: "Apartment 1 import tariff 2"
slave: 9
address: 1059 # register 1060
input_type: holding
data_type: float32
unit_of_measurement: Wh
device_class: energy
state_class: total_increasing
scan_interval: 900
- name: "Apartment 1 cold water"
slave: 12
address: 2999 # register 3000
input_type: holding
data_type: float32
unit_of_measurement: m³ # unit as in the M-Center
device_class: water
state_class: total_increasing
scan_interval: 900
ثلاث نقاط غالبًا ما تحدث فيها الأخطاء:
- العنوان: يعدّ الدليل السجلات ابتداءً من 1، وHome Assistant ابتداءً من 0. ولهذا يستخدم المثال 1029 للسجل 1030. تحقق من ذلك مرة واحدة مقابل قراءة عداد معروفة.
- ترتيب البايت: يسلّم M-Center بـ Big Endian مع الكلمة العليا أولًا. وهذا يطابق الإعداد الافتراضي في Home Assistant، ولا حاجة إلى
swap. - اسم المفتاح: بحسب إصدار Home Assistant يُسمى عنوان الجهاز
slaveأوdevice_address. وتسري وثائق إصدارك.
يتوافق scan_interval البالغ 900 ثانية مع فاصل القراءة في M-Center البالغ 15 دقيقة. والاستعلام بشكل أكثر تكرارًا لا يجلب قيمًا أحدث.
الخطوة 3: لوحة الطاقة
بعد إعادة التشغيل تظهر المستشعرات في Home Assistant. ولأنها تحمل device_class: energy أو water وstate_class: total_increasing يمكن اختيارها تحت Settings → Dashboards → Energy كاستهلاك من الشبكة أو جهاز أو استهلاك مياه.
البديل: MQTT
إذا كان لدى M-Center ترخيص MQTT فيمكنه نشر قيمه لدى وسيط Home Assistant، مثل إضافة Mosquitto. وتتبع المواضيع النمط <prefix>/emu/mcenter/<MAC>/meterreading/<serial number>/byobis/<OBIS code>.
اطّلع على الرسائل قبل الإعداد، مثلًا بـ MQTT Explorer أو في تكامل MQTT لـ Home Assistant تحت «Listen to a topic». ثم أنشئ مستشعر MQTT لكل موضوع واقرأ القيمة حسب محتوى الرسالة.
Modbus هو الطريق الأبسط إذا كان Home Assistant وحده يحتاج إلى القيم. ويستحق MQTT العناء إذا كانت أنظمة أخرى ستقرأ أيضًا.