SmartgridOne logo
SmartgridOne logo
إرشادات التوصيل والاتصالإشعارات السلامة والصيانة والإشعارات القانونية
استكشاف الأخطاء وإصلاحها
الأجهزة
الإشارات الخارجية
DSO

AgrolaAutarcoAxpoBEE EnergyCKWCompanion EnergyDexterDNO Relay ControlEdmijElia
Elindus
EnervalisEngieEPEX Spot SolarEuropean CommoditiesFleco PowerFlowerFrank EnergieFuseboxGreenchoiceHallostroomHive PowerImbyKratTrade
Mqtt
FCRإعداد MQTTالتحكم المباشر عبر MQTTالتحكم المجدول عبر MQTTتدفق الإعداد الأوليخطوط الأساسمحطة الطاقة الافتراضية
Next EnergyOpinumPleeviPowernautRepoweredScholt
TrevionVGT EnergyvZEV - مجتمع الطاقةYuso - التحكم في البطاريةYuso - تقليل إنتاج الطاقة الشمسيةالاختبارات التشخيصيةالتداول الديناميكي للطاقةالتكاملات الجديدة
المراقبة
تكامل الفقرة 14aحلول مرونة الطاقة (EFS)واجهة برمجة تطبيقات التخطيط المسبق
البدء السريعالتثبيتالترخيص
التكوين من الألف إلى الياء
الشبكةالشهادات
الملحقات
المواصفاتتطبيق
خاص بالعميل
دروس الفيديوزمن استجابة التحكم
صندوق الأدوات
مصابيح LED للحالةوحدة التحكم
الإشارات الخارجيةMqtt

التحكم المباشر عبر MQTT

نصيحة
نصيحة

يُستخدم التحكم المباشر عبر MQTT للتحكم الفوري. لإرسال الجداول مسبقًا، راجع التحكم المجدول عبر MQTT بدلًا من ذلك.

سيساعدك هذا الدليل على تكوين MQTT على SmartgridOne Controller للتحكم عن بُعد في تركيبات البطاريات والألواح الشمسية ومراقبتها.

التكوين لأول مرة (نقطة البداية للمستخدمين الجدد)

لديّ SmartgridOne Controller وأرغب في إعداده للتحكم عن بُعد عبر MQTT.

قبل المتابعة، تأكد من أن شبكتك وأجهزتك جاهزة من خلال اتباع دليل إعداد MQTT.

1. إضافة الإشارة الخارجية لـ MQTT

Image 1
Image 1
Image 1
Image 1

2. تمكين الإشارة البعيدة لـ MQTT

توضح مهلة آلية الرجوع إلى الوضع الاحتياطي لـ SmartgridOne Controller المدة التي ينبغي أن ينتظرها للحصول على أوامر جديدة. عندما يتوقف SmartgridOne Controller عن تلقي الأوامر، فإنه يفعّل الاستراتيجية الافتراضية تلقائيًا بعد انتهاء هذه المهلة.

بعد ذلك، حدد جميع الأجهزة التي ترغب في تضمينها في التحكم عن بُعد عبر MQTT.

Image 1
Image 1

3. تمت إضافة الإشارة البعيدة

تم الآن تفعيل واجهة التحكم عن بُعد عبر MQTT على SmartgridOne Controller.

نحن الآن مستعدون لإرسال بعض الأوامر الأساسية باستخدام مثال بسيط. يوضح لك عمود الحالة ما إذا كان أي أمر نشطًا.

Image 1

نص برمجي تجريبي بلغة Python

من أفضل نقاط البداية اختبار التكامل الذي أعددته حديثًا باستخدام مثال بسيط.

ينفذ هذا الكود الاختباري مهمة بسيطة تتمثل في إرسال الأوامر التالية باستمرار:

  • البطارية: الشحن بقدرة 5 kW
  • الطاقة الشمسية: ضبط القدرة على 0 kW

يستجيب SmartgridOne Controller باستمرار برسالة «feedback» تتضمن قيم قدرة الشبكة والأصول المرصودة. وهذه الميزة مضمنة أيضًا في هذا المثال.

يُرجى تنزيل الملف أدناه في بيئة تطوير Python المفضلة لديك. أدخل الرقم التسلسلي وبيانات اعتماد MQTT ثم نفّذ البرنامج النصي:

بعد نجاح ما سبق، يمكنك متابعة إرسال أنواع أخرى من الأوامر. جميع الأوامر موضحة في وثائق التحكم عن بُعد عبر MQTT.

وثائق MQTT لإرسال الأوامر

يوضح هذا القسم تنسيق رسائل MQTT ومتطلبات الحمولة للتحكم عن بُعد في سياسات القدرة على الأجهزة الموجودة ضمن شبكة SmartgridOne Controller.

موضوع MQTT

يُهيكل موضوع MQTT المستخدم لإرسال الأوامر كما يلي:

standard1/rp_one_s/remoteControlMetrics/'controller SN'

يجب استبدال 'controller SN' بالرقم التسلسلي الفعلي لـ SmartgridOne Controller الذي تريد التحكم فيه.

بنية حمولة MQTT

تُرسل الأوامر كحمولات JSON. صُممت بنية الحمولة لتحديد سياسات مختلفة لإدارة القدرة ونقاط الضبط لمكونات مختلفة من نظام الشبكة الذكية. فيما يلي مخطط الحمولة مع أوصاف تفصيلية للحقول:

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": "<Unix Timestamp>",
    "fields": {
        "<Component Policy>": "<Policy Type>",
        "<Component Power Setpoint>": <Setpoint in watts>,
        "site_<policy>": "<Value in watts>"
    }
}

وصف الحقول

نصيحة
نصيحة

يمكن التحكم في أنواع متعددة من الأجهزة (مثل البطاريات والطاقة الشمسية) في الوقت نفسه.

  • extraTags (Object):
    • nodeId (String): معرّف فريد للعقدة ضمن شبكة SmartgridOne Controller. ويساوي رقمك التسلسلي متبوعًا بـ '_site_0' لمعظم أجهزة SmartgridOne Controller.
  • time (Integer): طابع زمني لـ Unix بالثواني يحدد وقت إرسال الرسالة.
  • fields (Object):
    • <Component>_policy (String): نوع السياسة للمكوّن. هذا الحقل اختياري، وإذا لم يُحدد فسيعود النظام إلى الإعداد الافتراضي لـ SmartgridOne Controller.
    • <Component>_power_setpoint_w (Float): نقطة ضبط القدرة المطلوبة للمكوّن بالواط. هذا الحقل اختياري ولا يكون ذا صلة إلا عند تحديد سياسة مقابلة.

المكونات والسياسات

ملاحظة
ملاحظة

ستُدمج الأصول من النوع نفسه (مثل بطاريتين) في مكوّن واحد. على سبيل المثال، عند تركيب بطاريتين بسعة 5 kWh، ستُعاملان كبطارية واحدة بسعة 10 kWh.

يمكن أن يتضمن كل مكوّن في كائن fields سياسة ونقطة ضبط للقدرة. ويمكن التحكم في المكونات التالية:

  • solar_policy و solar_power_setpoint_w:

    • يتحكمان في سياسة توليد الطاقة الشمسية ونقطة ضبطها. السياسات المدعومة:
      • Policy setpoint: ضبط الحد الأقصى للقدرة التي تنتجها جميع التركيبات الشمسية المتصلة مجتمعة. يجب ضبط الحقل solar_power_setpoint_w على حد قدرة الإنتاج بالواط.
      • Policy feed-in-restriction: الإنتاج بالقدرة الكاملة مع اتباع حدود الشبكة الحالية.
      • Policy cost: تمكين تقليل تكلفة إنتاج الطاقة الشمسية استنادًا إلى سعر اليوم التالي (سوق EPEX Spot). عند حدوث أسعار حقن سالبة، نحد من الإنتاج إلى الاستهلاك الذاتي. وعندما يكون كل من سعري السحب والحقن سالبًا، نوقف جميع التركيبات الشمسية. يُتجاهل الحقل solar_power_setpoint_w.
      • Policy off: تعطيل جميع التفاعلات مع أصول الطاقة الشمسية. تحذير: لا تتم حماية الحدود في هذا الوضع. يُتجاهل الحقل solar_power_setpoint_w.
  • storage_policy و storage_power_setpoint_w:

    • يتحكمان في سياسة نظام تخزين الطاقة ومعدل التفريغ أو الشحن.
      • Policy setpoint: ضبط إجمالي قدرة الشحن (نقطة ضبط موجبة) أو قدرة التفريغ (نقطة ضبط سالبة) لمجموعة البطاريات. عند توصيل عدة بطاريات، تُقسّم نقطة الضبط وفق قدرة الشحن/التفريغ المتاحة لتوزيع الحمل بالتساوي على البطاريات. يُضبط الحقل storage_power_setpoint_w على قدرة البطارية المطلوبة.
      • Policy peak-shaving-only: تمكين تحسين خفض ذروة الحمل على البطارية. يجب دمج ذلك مع أربعة معاملات لخفض الذروة على مستوى الموقع.
      • Policy cost: تمكين تحسين التكلفة استنادًا إلى سعر اليوم التالي (سوق EPEX Spot) على البطاريات، عبر شحنها خلال الساعات منخفضة التكلفة واستخدام الطاقة خلال الساعات مرتفعة التكلفة. يُتجاهل الحقل storage_power_setpoint_w.
      • Policy self-consumption: تمكين خوارزمية بسيطة للاستهلاك الذاتي على البطاريات. يُخزّن فائض الإنتاج الشمسي في البطارية أثناء النهار، وعند غروب الشمس تُسحب الطاقة من البطارية. يُتجاهل الحقل storage_power_setpoint_w.
      • Policy off: تعطيل جميع التفاعلات مع أصول البطاريات. تحذير: لا تتم حماية الحدود في هذا الوضع. يُتجاهل الحقل storage_power_setpoint_w.
  • heat_pump_policy:

    • تبديل تشغيل/إيقاف أنظمة المضخات الحرارية. ستتم دائمًا مراعاة الحدين الأدنى والأقصى لمدد التشغيل.
      • Policy cost: تمكين تحسين التكلفة استنادًا إلى سعر اليوم التالي (سوق EPEX Spot) على المضخات الحرارية. تحدد خوارزمية التسعير الديناميكي المحلية أفضل فترات التشغيل.
      • Policy self-consumption: تشغيل المضخات الحرارية عند إنتاج فائض من الطاقة الشمسية.
      • Policy power_off: إيقاف تشغيل المضخات الحرارية.
      • Policy power_on: تشغيل المضخات الحرارية.
  • switched_load_policy:

    • تبديل تشغيل/إيقاف الأنظمة التي تتحكم فيها المرحلات. وقد تكون المرحلات مدمجة أو متصلة بالشبكة.
      • Policy cost: تمكين تحسين التكلفة استنادًا إلى سعر اليوم التالي (سوق EPEX Spot) على المرحل.
      • Policy self-consumption: تشغيل المرحل عند إنتاج فائض من الطاقة الشمسية.
      • Policy power_off
      • Policy power_on
  • variable_power_load_policy و variable_power_load_power_setpoint_w:

    • إدارة سياسة استهلاك القدرة ونقطة ضبطها للمركبات الكهربائية.
      • Policy setpoint: ضبط إجمالي قدرة الشحن لمجموعة المركبات الكهربائية. يُضبط الحقل variable_power_load_power_setpoint_w على قدرة الشحن المطلوبة.
      • Policy cost: تمكين تحسين التكلفة استنادًا إلى سعر اليوم التالي (سوق EPEX Spot) على البطاريات، عبر شحنها خلال الساعات منخفضة التكلفة. يُتجاهل الحقل variable_power_load_power_setpoint_w.
      • Policy self-consumption: تمكين الشحن عند إنتاج فائض من الطاقة الشمسية. يُتجاهل الحقل variable_power_load_power_setpoint_w.
      • Policy off: تعطيل جميع التفاعلات مع أصول المركبات الكهربائية. يُتجاهل الحقل variable_power_load_power_setpoint_w.

حدود القدرة

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

على سبيل المثال:

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": "<Unix Timestamp>",
    "fields": {
        "{prefix}_maxChargePower_W": <Max Charge Power W>,
        "{prefix}_maxDischargePower_W": <Max Discharge Power W>,
        "{prefix}_maxProductionPower_W": <Max Production Power W>,
    }
}

حيث إن prefix إما storage أو solar أو nodeID الخاص بالجهاز المعني.

التحكم في الموقع

يمكن التحكم في الموقع بشكل منفصل. ويمكن إرسال أوامر الموقع التالية إلى وحدة التحكم:

  • default أو fallback إزالة أي أوامر نشطة للموقع
  • export ضبط حد تصدير الموقع
  • import ضبط حد استيراد الموقع
  • setpoint يمكن أن تتغير نقطة ضبط الموقع بنسبة تصل إلى 5% في كلا الاتجاهين
  • setpoint_A لم يُنفذ بعد

المتغيرات التالية هي معاملات خفض الذروة، ولن تُطبق إلا عند ضبط استراتيجية البطارية على خفض الذروة.

  • startChargeBelow_W
  • stopChargeAbove_W
  • startDischargeAbove_W
  • stopDischargeBelow_W

نقطة ضبط الموقع غير متوافقة مع حد الاستيراد/التصدير.

على سبيل المثال:

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": "<Unix Timestamp>",
    "fields": {
        "<Component Policy>": "<Policy Type>",
        "<Component Power Setpoint>": <Setpoint in watts>,
        "site_export": <Export Limit W>,
        "site_import": <Import Limit W>,
        "site_setpoint": <Setpoint W>,
        "site_startChargeBelow_W": <Value_W>
    }
}

التحكم في الأجهزة

يمكن أيضًا التحكم في أجهزة محددة بدلًا من مجموعات الأجهزة المستندة إلى أنواعها. وتكون الرسالة منظمة بالطريقة نفسها:

  • nodeId_policy و nodeId_power_setpoint_w
ملاحظة
ملاحظة

عند إرسال أمرين إلى الأصل نفسه (مثل أمر خاص بجهاز إلى عاكس شمسي، وأمر إلى جميع الأجهزة الشمسية)، ستُعطى الأولوية لطريقة التحكم الخاصة بالجهاز على التحكم حسب نوع الجهاز.

السلوك الاحتياطي

لكل مكوّن، إذا لم يتم تحديد _policy و _power_setpoint_w، فسيستخدم النظام تلقائيًا السياسة الاحتياطية المكوّنة في SmartgridOne Controller. ويضمن ذلك تشغيل كل جهاز أو مجموعة أجهزة بأمان واستمرار عملها حتى عند عدم توفير تعليمات محددة.

إذا لم يتم إرسال أي أمر على الإطلاق، فستُعاد تفعيل السياسات الافتراضية للأصول بعد 60 ثانية (أو بعد فترة المهلة المكوّنة).

إلغاء الأوامر الحالية والرجوع إلى أوضاع التحكم المحلية

يمكن إلغاء أمر نشط بإرسال رسالة أمر احتياطي.

الأمر الاحتياطي

سيؤدي الأمر الاحتياطي إلى إلغاء الأمر الحالي فورًا، وستتولى SmartgridOne Controller التحكم في التركيب. وتعتمد السياسة المنفذة على الإعداد المحدد في "إعدادات" SmartgridOne Controller.

يمكن استخدام ذلك أيضًا في الحالات التي تُستخدم فيها إشارة تحكم ثانوية، مثل جدول، كإجراء احتياطي.

أمثلة على الرسائل:

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": "<Unix Timestamp>",
    "fields": {
        "<Component Policy>": "fallback",
    }
}

الأمر الفارغ

يمكن إرسال أمر فارغ في أي وقت لجمع معلومات الموقع. ولن يؤدي ذلك إلى إلغاء الأمر الحالي.

تكون بنية الأمر الفارغ كما يلي:

{
    "extraTags": {
        "nodeId": "<Controller SN>_site_0"
    },
    "time": "<Unix Timestamp>",
    "fields": {}
}

مثال على الحمولة

فيما يلي مثال على حمولة لضبط سياسات ونقاط ضبط مختلفة:

{
    "extraTags": {
        "nodeId": "OM12404080000000000_site_0"
    },
    "time": 1714652046,
    "fields": {
        "solar_policy": "setpoint",
        "solar_power_setpoint_w": 5000,
        "storage_policy": "setpoint",
        "storage_power_setpoint_w": -5000
    }
}

في هذا المثال، تُضبط قدرة الطاقة الشمسية لإنتاج ما يصل إلى 5000 واط، ويُضبط نظام تخزين الطاقة للشحن أو التفريغ بمعدل 5000 واط، تبعًا لإشارة قيمة نقطة الضبط. إذا تم حذف solar_policy أو storage_policy، فسيعود الجهاز المعني إلى الإعدادات الافتراضية التي يحددها SmartgridOne Controller.

وثائق MQTT لتلقي رسائل feedback

يوضح هذا القسم بنية ومحتوى رسائل feedback التي يرسلها SmartgridOne Controller عبر MQTT. وتُنشر هذه الرسائل في الموضوع standard1/outbound/remoteControlMetrics/feedback/<Controller SN> بعد معالجة الأمر.

موضوع MQTT لرسائل feedback

يُهيكل موضوع MQTT لرسائل feedback كما يلي:

standard1/outbound/remoteControlMetrics/feedback/<Controller SN>

يجب استبدال <Controller SN> بالرقم التسلسلي لـ SmartgridOne Controller الذي يرسل رسالة feedback.

بنية حمولة MQTT لرسائل feedback

ملاحظة
ملاحظة

تُجمع جميع الأصول حسب نوعها. وهذا يعني أن تركيبتين شمسيتين منفصلتين بقدرة 3 kW ستُعاملان كأصل واحد بقدرة 6 kW.

تُنسق رسائل feedback كحمولات JSON. وتوفر هذه الحمولات معلومات تفصيلية عن حالة النظام بعد تطبيق أوامر نقاط الضبط، مع مراعاة حدود الشبكة/الجهاز. فيما يلي بنية حمولة feedback مع أوصاف حقولها:

{
    "time": "<Unix Timestamp>",
    "data": {
        "state": {
            "grid": {
                "active_power_W": <Grid Active Power in Watts>,
                "today_imported_energy_Wh": <Grid Imported Energy in Watt-hours>,
                "today_exported_energy_Wh": <Grid Exported Energy in Watt-hours>,
                "import_limit_W": <Grid Import Limit in Watts>,
                "export_limit_W": <Grid Export Limit in Watts>,
            },
            "storage": {
                "energy_stored_Wh": <Energy Stored in Watt-hours>,
                "energy_capacity_Wh": <Total Energy Capacity in Watt-hours>,
                "mean_soc_perc": <Mean State of Charge Percentage>,
                "active_power_W": <Active Power in Watts>,
                "executed_power_W": <Power Setpoint Sent to Devices in Watts>,
                "executed_policy": <Policy Executed by the Controller>,
                "max_charge_power_W": <Maximum Charge Power in Watts>,
                "max_discharge_power_W": <Maximum Discharge Power in Watts>,
                "today_charged_Wh": <Energy Charged Today in Watt-hours>,
                "today_discharged_Wh": <Energy Discharged Today in Watt-hours>,
                "realised_charge_power_W": <Adapted maximum charge power>,
                "realised_discharge_power_W": <Adapted maximum discharge power>,
                "constraint_ph0_label": <Constraint reason for limiting power setpoint>,
                "errorCodes": <Error status messages per device>,
                "nr_devices": <Number of Controlled Storage Devices Installed>
            },
            "solar": {
                "active_power_W": <Solar Active Power in Watts>,
                "executed_power_W": <Power Setpoint Sent to Devices in Watts>,
                "executed_policy": <Policy Executed by the Controller>,
                "capacity_W": <Solar Capacity in Watts>,
                "today_energy_Wh": <Energy Produced Today in Watt-hours>,
                "constraint_ph0_label": <Constraint reason for limiting power setpoint>,
                "errorCodes": <Error status messages per device>,
                "nr_devices": <Number of Controlled Solar Devices Installed>
            },
            "heat_pump": {
                "executed_policy": <Policy Executed by the Controller>,
                "operation_modes": <Heatpump Operation Modes>,
                "executed_power_W": <Power Setpoint Sent to Devices in Watts>,
                "constraint_ph0_label": <Constraint reason for limiting power setpoint>,
                "errorCodes": <Error status messages per device>,
                "nr_devices": <Number of Controlled Heat Pump Devices Installed>
            },
            "switched_load": {
                "executed_policy": <Policy Executed by the Controller>,
                "devices_on": <Number of Devices On>,
                "devices_off": <Number of Devices Off>,
                "executed_power_W": <Power Setpoint Sent to Devices in Watts>,
                "constraint_ph0_label": <Constraint reason for limiting power setpoint>,
                "errorCodes": <Error status messages per device>,
                "nr_devices": <Number of Controlled Switched Load Devices Installed>  
            },
            "variable_load": {
                "active_power_W": <Power of the device in Watts>,
                "ev_charging": <How many EVs are currently charging>,
                "ev_not_charging": <How many EVs are currently unconnected>,
                "executed_policy": <Policy Executed by the Controller>,
                "executed_power_W": <Power Setpoint Sent to Devices in Watts>,
                "ev_requiring_charge": <Does the EV require charge>,
                "currentL1_A": <Current of the device on phase 1 in Ampere>,
                "currentL2_A": <Current of the device on phase 2 in Ampere>,
                "currentL3_A": <Current of the device on phase 3 in Ampere>,
                "executed_current_A": <Current Setpoint Sent to Devices in Ampere>,
                "today_charged_Wh": <Energy Charged Today in Watt-hours>,
                "today_discharged_Wh": <Energy Discharged Today in Watt-hours>,
                "total_charged_Wh": <Total Energy Charged in Watt-hours>,
                "total_discharged_Wh": <Total Energy Discharged in Watt-hours>,
                "min_charge_current_A": <Minimum Charge in Ampere>,
                "max_charge_current_A": <Maximum Charge in Ampere>,
                "allow_zero_current": <Does the Charger Support Pausing>,
                "current_charging_session": {
                    "pluginTime": <The session start time>,
                    "endTime": <The session end time>,
                    "firstChargingStartTime": <The time when the vehicle first charged>,
                    "isFull": <Is the vehicle fully charged or not>,
                    "chargedEnergy_Ws": <How much energy has been charged this session>,
                    "usedPhases": <The list of phases used during charging>,
                    "historicMaxChargeCurrent_A": <The maximum current at which the vehicle was charged during the session>
                },
                "previous_charging_session": {
                    "pluginTime": <The session start time>,
                    "endTime": <The session end time>,
                    "firstChargingStartTime": <The time when the vehicle first charged>,
                    "isFull": <Is the vehicle fully charged or not>,
                    "chargedEnergy_Ws": <How much energy has been charged this session>,
                    "usedPhases": <The list of phases used during charging>,
                    "historicMaxChargeCurrent_A": <The maximum current at which the vehicle was charged during the session>
                },
                "constraint_ph0_label": <Constraint reason for limiting power setpoint>,
                "errorCodes": <Error status messages per device>,
                "nr_devices": <Number of Variable Power  Load Devices Installed>  
            }
        },
        "error": {
            <Errors occured during driver execution>
        }
        "response_code": <Response Code>
    },
    "fields": {},
    "requestTime": "<Unix Timestamp>",
    "time": "<Unix Timestamp>",
    "siteNodeId": "<Controller SN>_site_0"
}

وصف الحقول

  • time (Integer): طابع زمني لـ Unix يحدد وقت إرسال رسالة feedback.
  • requestTime (Integer): طابع زمني لـ Unix يحدد وقت إرسال رسالة التحكم الأصلية.
  • siteNodeId (String): معرّف nodeId للموقع الذي يرسل رسالة feedback.
  • fields (Object): كائن فارغ
  • data (Object):
    • state (Object):
      • vpp_id (String): معرّف محطة الطاقة الافتراضية المرتبطة بهذا الجهاز.
      • grid (Object):
        • active_power_W (Float): القدرة الفعالة الحالية على الشبكة بالواط.
        • today_imported_energy_Wh (Float): إجمالي الطاقة المسحوبة من الشبكة اليوم بالواط-ساعة. ملاحظة: يُحتسب اليوم وفق توقيت UTC.
        • today_exported_energy_Wh (Float): إجمالي الطاقة المحقونة إلى الشبكة اليوم بالواط-ساعة. ملاحظة: يُحتسب اليوم وفق توقيت UTC.
        • import_limit_W (Float): حد استيراد الشبكة بالواط.
        • export_limit_W (Float): حد تصدير الشبكة بالواط.
      • storage (Object): معلومات نظام التخزين، بما في ذلك الطاقة المخزنة والسعة وحالة الشحن والقدرات المنفذة والحدود والأخطاء وعدد الأجهزة.
      • solar (Object): معلومات القدرة الشمسية الحالية والسعة والطاقة المنتجة والسياسة المنفذة والحدود والأخطاء وعدد الأجهزة.
      • heat_pump (Object): معلومات سياسة المضخة الحرارية ووضع التشغيل والقدرة والأخطاء والحدود وعدد الأجهزة.
      • switched_load (Object): معلومات السياسة والأجهزة قيد التشغيل والإيقاف والقدرة والحدود والأخطاء وعدد الأجهزة.
      • variable_load (Object): معلومات قدرة شحن المركبات الكهربائية، والتيارات على الأطوار، والطاقة المشحونة والمفرغة، وجلسات الشحن، والحدود والأخطاء وعدد الأجهزة.
      • nodeId (Object): إذا تم تضمين nodeId في الأمر، فستتضمن رسالة feedback حالة الجهاز المقابلة.
    • response_code (Int): يوضح حالة العملية. تشير القيمة 0 عادةً إلى النجاح، بينما قد تشير القيم الأخرى إلى أنواع مختلفة من الأخطاء أو معلومات الحالة.

تسميات قيود التخزين

يمكن أن يحد نظام EMS داخليًا من نقاط الضبط المرسلة بواسطة إشارة خارجية. يقدم الجدول أدناه نظرة عامة على القيود المحتملة لحقل feedback constraint_ph0_label.

التسميةأنواع العقدالوصف
breaker_currentالموقعتيار قاطع الدائرة على مستوى الموقع
max_charge_current (EV)EVالحد الأقصى لتيار الشحن.
min_charge_currentEVالحد الأدنى لتيار الشحن.
nom_currentEVحد التيار الاسمي للجهاز.
max_export_powerالموقعحد تصدير الموقع
max_import_powerالموقعحد استيراد الموقع
max_charge_powerEV، Storageالحد الأقصى لقدرة الشحن.
max_discharge_powerStorageالحد الأقصى لقدرة التفريغ.
nom_charge_powerEV، Storageحد قدرة الشحن الاسمية.
nom_discharge_powerStorageحد القدرة الاسمية للتفريغ.
nom_production_powerPVحد القدرة الاسمية للإنتاج.
device_reported_max_charge_powerStorageحد أقصى لقدرة الشحن يبلّغ بها الجهاز.
device_reported_max_charge_currentStorageحد أقصى لتيار الشحن يبلّغ به الجهاز.
device_reported_max_discharge_powerStorageحد أقصى لقدرة التفريغ يبلّغ بها الجهاز.
device_reported_max_discharge_currentStorageحد أقصى لتيار الشحن يبلّغ به الجهاز.
ev_charging_suspendedEVتم إيقاف شحن المركبة الكهربائية مؤقتًا
setpoint_powerAllنقطة الضبط هي العامل المحدِّد - لا توجد قيود داخلية.
high_soc_limit_charge_powerStorageالشحن محدود بسبب ارتفاع حالة شحن البطارية.
low_soc_limit_discharge_powerStorageالتفريغ محدود بسبب انخفاض حالة شحن البطارية.
soc_power_curve_max_charge_powerStorageالشحن محدود بسبب منحنى القدرة لحالة الشحن.
soc_power_curve_max_discharge_powerStorageالتفريغ محدود بسبب منحنى القدرة لحالة الشحن.
too_low_soc_force_charge_powerStorageالحد الأدنى لقدرة الشحن بسبب انخفاض حالة الشحن بدرجة كبيرة.
peakshaving_charge_thresholdStorageالشحن بسبب معلمات تقليل ذروة الحمل.
peakshaving_discharge_thresholdStorageالتفريغ بسبب معلمات تقليل ذروة الحمل.
self_consumption_charge_powerEV, Storageالشحن بسبب استراتيجية الاستهلاك الذاتي.
self_consumption_discharge_powerEV, Storageالتفريغ بسبب استراتيجية الاستهلاك الذاتي.
self_consumption_load_powerSwitched Loadالاستهلاك بسبب استراتيجية الاستهلاك الذاتي.
external_signal_device_power_consumption_limitEV, Switched Loadالإشارة الخارجية تحد من استهلاك الجهاز.
external_signal_device_power_production_limitPVالإشارة الخارجية تحد من إنتاج الجهاز.
external_signal_battery_charge_power_limitStorageالإشارة الخارجية تحد من قدرة شحن البطارية.
external_signal_battery_discharge_power_limitStorageالإشارة الخارجية تحد من قدرة تفريغ البطارية.
setpoint_currentEVحد نقطة ضبط التيار.
observed_max_current_demandEVأقصى تيار مُلاحظ تستخدمه المركبة الكهربائية.
near_fully_chargedEVالتيار محدود بسبب اقتراب امتلاء شحن المركبة الكهربائية.
fully_chargedEVالمركبة الكهربائية مشحونة بالكامل
dynamic_derated_min_powerStorageنقطة الضبط محدودة لأن الجهاز غير قادر على الوصول إلى قدرة نقطة الضبط المتوقعة.
dynamic_derated_max_powerStorageنقطة الضبط محدودة لأن الجهاز غير قادر على الوصول إلى قدرة نقطة الضبط المتوقعة.

رموز أخطاء MQTT

تُجمَّع رموز الأخطاء في نطاقات تشير إلى الفئة العامة للمشكلة:

النطاقالفئة
-200أخطاء الاتصال
-300أخطاء الاستجابة
-500أخطاء برنامج التشغيل
-600أخطاء التحكم

ترد رموز الأخطاء الفردية أدناه.

أخطاء الاتصال (200)

مشكلات الاتصال بين EMS والجهاز.

الرمزالتسميةالحقول الإضافية
-204رفض الاتصال
-209لا يوجد مسار إلى المضيف
-210لا يوجد عنوان IP لعنوان MAC

أخطاء الاستجابة (300)

الجهاز متصل، لكن استجاباته غير صالحة.

الرمزالتسميةالحقول الإضافية
-300خطأ: الجهاز غير متاح
-310خطأ: لا توجد استجابة
-402خطأ في حالة الجهازMessage

أخطاء التحكم (600)

الرمزالتسميةالحقول الإضافية
-600خطأ: تم تجاهل نقطة الضبط
-602خطأ: تم رفض نقطة الضبط

أخطاء القياس ونقطة الضبط (1000)

الرمزالتسميةالحقول الإضافية
-1000لا توجد قياسات
-1001لا توجد قياسات للقدرة
-1003لا توجد نقطة ضبط للقدرة
-1005لم تتم متابعة نقاط الضبطnomPowerDeviation_frac, setpointDeviation_frac
-1006لم تتم متابعة الحدود

إصدارات MQTT المدعومة والسلوك عند استخدام مواضيع غير مصرّح بها

عند استخدام MQTT، من المهم مراعاة الاختلافات في المواصفات بين الإصدارات 3.1 و3.1.1 و5.0، لا سيما فيما يتعلق بسلوك الوسيط عندما ينشر العملاء إلى مواضيع غير مصرّح بها.

وفقًا لمواصفة MQTT 3.1.1 (راجع مواصفة OASIS MQTT 3.1.1، القسم MQTT-3.3.5-2)، يجب على الوسيط إنهاء الاتصال بمجرد أن يرسل العميل رسالة PUBLISH إلى موضوع لا يملك صلاحية الوصول إليه. وقد يؤدي هذا السلوك إلى قطع اتصال غير متوقعة للعملاء الذين يحاولون النشر إلى مواضيع تمت تهيئتها بشكل غير صحيح أو غير مصرّح بها.

لا يوجد هذا المتطلب في MQTT 3.1. عندما ينشر العميل إلى موضوع غير مصرّح به في هذا الإصدار، يتجاهل الوسيط عادةً الرسالة (إسقاط صامت) من دون إنهاء الاتصال. وهذا يجعل MQTT 3.1 أكثر ملاءمة في بعض الحالات عندما تكون المتانة في مواجهة أخطاء التكوين أو الصلاحيات المفقودة مؤقتًا أهم من التطبيق الصارم للأمان.

على الرغم من أن MQTT 5.0 يتيح استخدام رموز السبب (مثل PUBACK مع سبب الرفض)، فإن ذلك يتطلب دعمًا من جانبَي العميل والخادم. ولذلك، يتطلب الانتقال إلى MQTT 5.0 جهدًا إضافيًا في التنفيذ.

عواقب تجاهل التوافق: إذا اتصل العميل باستخدام MQTT 3.1.1 وحاول نشر رسائل إلى مواضيع غير مصرّح بها، فسينهي الوسيط الجلسة بشكل مفاجئ. وقد يؤدي ذلك إلى عدم الاستقرار أو فقدان الاتصال أو زيادة الحمل بسبب محاولات إعادة الاتصال المتكررة.

النهج الموصى به: بالنسبة إلى الأنظمة التي قد يحاول فيها العملاء (مؤقتًا) النشر إلى مواضيع غير مصرّح بها، أو التي لم تُنفَّذ فيها معالجة الأخطاء بشكل صارم، نوصي باستخدام MQTT 3.1. فهذا يضمن اتصالات أكثر استقرارًا ويتجنب قطع الاتصال غير المقصود أثناء وقت التشغيل.

Last updated August 7, 2026Edit this page

إعداد MQTT

Previous Page

التحكم المجدول عبر MQTT

Next Page

On this page

التحكم المباشر عبر MQTTالتكوين لأول مرة (نقطة البداية للمستخدمين الجدد)1. إضافة الإشارة الخارجية لـ MQTT2. تمكين الإشارة البعيدة لـ MQTT3. تمت إضافة الإشارة البعيدةنص برمجي تجريبي بلغة Pythonوثائق MQTT لإرسال الأوامرموضوع MQTTبنية حمولة MQTTوصف الحقولالمكونات والسياساتحدود القدرةالتحكم في الموقعالتحكم في الأجهزةالسلوك الاحتياطيإلغاء الأوامر الحالية والرجوع إلى أوضاع التحكم المحليةالأمر الاحتياطيالأمر الفارغمثال على الحمولةوثائق MQTT لتلقي رسائل feedbackموضوع MQTT لرسائل feedbackبنية حمولة MQTT لرسائل feedbackوصف الحقولتسميات قيود التخزينرموز أخطاء MQTTأخطاء الاتصال (200)أخطاء الاستجابة (300)أخطاء التحكم (600)أخطاء القياس ونقطة الضبط (1000)إصدارات MQTT المدعومة والسلوك عند استخدام مواضيع غير مصرّح بها