رابط کاربری MQTT Sparkplug

پیش‌نیازها

پیش از شروع، مطمئن شوید که راهنمای «شروع به کار» ThingsConnect را مطالعه کرده‌اید تا با این پلتفرم آشنا شوید. همچنین توصیه می‌کنیم ابتدا مستندات مربوط به پروفایل‌های دستگاه را مرور کنید.

معرفی Sparkplug

Sparkplug یک استاندارد متن‌باز است که به کلاینت‌های MQTT کمک می‌کند داده‌های خود را از برنامه‌ها، حسگرها، دستگاه‌ها و gateways به صورت یکپارچه در زیرساخت MQTT ادغام کنند.

ThingsConnect به‌عنوان یک سرور MQTT از ساختار موضوعات و بار داده Sparkplug پشتیبانی می‌کند و امکان اتصال گره‌های لبه شبکه (EoN) را فراهم می‌سازد.

گره EoN، یک اپلیکیشن کلاینت MQTT سازگار با نسخه V3.1.1 است که وظیفه مدیریت نشست MQTT و ارائه عملکردهای دروازه فیزیکی یا منطقی را بر عهده دارد. این گره می‌تواند رابط‌های محلی با دستگاه‌های قدیمی (مثل PLCها، RTUها و حسگرها)، ورودی/خروجی‌های گسسته یا متغیرهای فرآیندی داخلی را مدیریت کند.

این پروتکل ساختار موضوعات و پیام‌های MQTT را برای ارتباط گره‌های EoN با سرور تعریف می‌کند. یک گره EoN می‌تواند نماینده چندین دستگاه باشد و داده‌های آن‌ها را ارسال کند. ThingsConnect این داده‌ها را از بار Sparkplug استخراج کرده و آن‌ها را به‌صورت ویژگی‌های دستگاه یا داده‌های سری زمانی ذخیره می‌کند. همچنین می‌توانید از طریق به‌روزرسانی ویژگی‌ها یا ارسال دستور rpc، دستگاه‌های Sparkplug را مدیریت کنید.

توجه:

ThingsConnect تنها از بار داده‌های Sparkplug™ B پشتیبانی می‌کند.

شروع به کار

این راهنما به شما می‌آموزد که چگونه: گره Sparkplug EoN را به ThingsConnect متصل کنید. معیارهای دستگاه را جمع‌آوری کرده و به‌عنوان داده‌های سری زمانی در ThingsConnect ذخیره کنید. دستورات را به دستگاه‌ها ارسال کنید.

مرحله 1: ایجاد پروفایل دستگاه

ابتدا باید یک پروفایل دستگاه MQTT برای دستگاه‌های Sparkplug ایجاد کنید:

  1. به صفحه Profiles -> Device profiles بروید و در سربرگ جدول پروفایل دستگاه، روی آیکون «+» کلیک کنید تا کادر محاوره‌ای Add device profile باز شود.
  2. به‌عنوان نام پروفایل از MQTT EoN Node یا هر نام معنی‌دار دیگری استفاده کنید.
  3. به زبانه Transport configuration بروید و نوع انتقال MQTT را انتخاب کنید.
  4. مطمئن شوید که گزینه MQTT Sparkplug B Edge of Network (EoN) node را علامت زده‌اید.
  5. نام معیارهای Sparkplug را که می‌خواهید به‌جای داده‌های سری زمانی به‌عنوان ویژگی ذخیره شوند، وارد کنید. این لیست باید شامل معیارهایی باشد که ممکن است بخواهید از سمت سرور به‌روزرسانی کرده و به دستگاه ارسال کنید. از کاراکتر جایگزین (*) نیز می‌توانید استفاده کنید، مانند:
    Node Control/*
    Device Control/*
    Properties/*

مرحله 2: پیکربندی اعتبارنامه‌های گره EoN

  1. به صفحه Entities -> Devices بروید و روی آیکون «+» در سربرگ جدول دستگاه کلیک کنید تا کادر محاوره‌ای Add new device باز شود.
  2. نام گره دستگاه EoN خود را وارد کنید (برای مثال: Node 1) و پروفایل دستگاه موجود را انتخاب کنید: MQTT EoN Node.
  3. دستگاه را ایجاد کنید و به جزئیات دستگاه بروید. توکن دسترسی را کپی کنید. این توکن در مرحله بعدی مورد استفاده قرار می‌گیرد. توجه داشته باشید که می‌توانید از انواع دیگر اعتبارنامه‌ها نیز استفاده کنید.

مرحله 3: اجرای شبیه‌ساز گره EoN

برای اهداف آزمایشی، یک شبیه‌ساز گره Sparkplug آماده کرده‌ایم. اکنون بیایید آن را اجرا کرده و به نمونه پلتفرم خود متصل شویم. در این مرحله از توکن دسترسی که در مرحله قبل کپی کردید، استفاده خواهیم کرد.

				
					docker run -e SPARKPLUG_SERVER_URL='tcp://demo.thingsboard.io:1883' -e SPARKPLUG_CLIENT_MQTT_USERNAME='YOUR_THINGSBOARD_DEVICE_TOKEN' thingsboard/tb-sparkplug-emulator:latest
				
			

فراموش نکنید که مقدار YOUR_THINGSBOARD_DEVICE_TOKEN را با مقدار واقعی توکن جایگزین کنید.
همچنین، demo.thingsboard.io را با نام میزبان سرور خود جایگزین نمایید.

توجه:

نمی‌توانید از localhost به‌عنوان مقدار SPARKPLUG_SERVER_URL در داخل کانتینر Docker استفاده کنید.

image

پس از موفقیت‌آمیز بودن اجرای شبیه‌ساز، باید پیام‌های زیر را مشاهده کنید:

				
					2023-05-04 13:40:42,787 [pool-2-thread-1] INFO  o.t.sparkplug.SparkplugEmulation - Publishing [Sparkplug Node 1] NBIRTH
2023-05-04 13:40:42,815 [pool-2-thread-1] INFO  o.t.sparkplug.SparkplugEmulation - Publishing [Sparkplug Device 1] DBIRTH
2023-05-04 13:40:42,816 [pool-2-thread-1] INFO  o.t.sparkplug.SparkplugEmulation - Publishing [Sparkplug Device 2] DBIRTH

				
			

مرحله 4: مشاهده معیارهای دستگاه به‌عنوان ویژگی‌ها و داده‌های تلمتری

به جزئیات دستگاه گره EoN (مثلاً Node 1) بروید.
زبانه Latest telemetry را باز کنید. در این بخش باید معیارهای دستگاه، مانند ولتاژ فعلی شبکه (Current Grid Voltage) را مشاهده کنید.
به زبانه Attributes بروید و محدوده Shared attributes را انتخاب کنید.
در این بخش معیارهایی را مشاهده خواهید کرد که در مرحله 1 (بند 5) پیکربندی کرده‌اید.

صفحه Devices را تازه‌سازی کنید و توجه داشته باشید که دو دستگاه جدید Sparkplug توسط شبیه‌ساز ایجاد شده‌اند:

Sparkplug Device 1
Sparkplug Device 2
هر دو دستگاه ویژگی‌ها و مقادیر تلمتری خود را دارند که توسط شبیه‌ساز تولید شده‌اند.

علاوه بر این، یک پروفایل دستگاه جداگانه برای این دو دستگاه جدید ایجاد می‌شود. نام این پروفایل شامل نام گره Sparkplug شما به‌همراه کلمه device است.

مرحله 5: ارسال به‌روزرسانی‌ها به معیارهای Sparkplug از سرور ThingsConnect به MQTT EoN و دستگاه

می‌توانید از طریق به‌روزرسانی ویژگی‌های مشترک (Shared Attributes) یا دستورات RPC، مقادیر معیارهای گره یا دستگاه Sparkplug را از ThingsConnect تغییر دهید.

به‌روزرسانی معیارها با استفاده از ویژگی‌های مشترک

ویژگی‌های مشترک در ThingsConnect برای ارسال به‌روزرسانی مقادیر معیارها به دستگاه استفاده می‌شوند. این ویژگی‌ها را می‌توانید به چند روش تغییر دهید:از طریق رابط کاربری مدیریتی
ابزارک داشبورد
REST API
گره موتور قوانین (Rule Engine)
مثال تغییر مقادیر ویژگی‌ها:
می‌خواهیم مقادیر ویژگی‌های زیر را به‌صورت دستی تغییر دهیم:

Outputs/LEDs/Green
Device Control/Scan Rate
افزودن معیار جدید به پروفایل دستگاه
برای تغییر مقدار ویژگی Outputs/LEDs/Green:

ابتدا باید معیار مربوطه را به پروفایل دستگاه MQTT EoN Node اضافه کنید تا به‌جای تلمتری، به‌عنوان یک ویژگی مشترک ذخیره شود.
در زبانه Transport Configuration، یک معیار جدید با نام Outputs/* اضافه کنید.

به صفحه Devices برگردید و Sparkplug Device 1 را انتخاب کنید. در زبانه Shared attributes، دو ویژگی جدید را مشاهده خواهید کرد:
Outputs/LEDs/Green با مقدار true
Outputs/LEDs/Yellow با مقدار false
این‌ها معیارهایی هستند که به‌عنوان ویژگی ذخیره شده‌اند و می‌توانیم مقادیر آن‌ها را تغییر داده و به دستگاه ارسال کنیم.

روی آیکون مداد کلیک کنید و مقدار ویژگی Outputs/LEDs/Green را از true به false تغییر دهید، با این کار جعبه مربوطه را علامت‌زدایی کنید. سپس، روی Update کلیک کنید.

ویژگی با نام Outputs/LEDs/Green و مقدار false از سرور به دستگاه Sparkplug Device 1 ارسال خواهد شد.

در ترمینالی که شبیه‌ساز در آن در حال اجرا است، باید پیام‌های زیر را مشاهده کنید:

				
					2023-05-04 14:09:00,417 [MQTT Call: Sparkplug Node 1] INFO  o.t.sparkplug.SparkplugMqttCallback - Message Arrived on topic spBv1.0/Sparkplug Group 1/DCMD/Sparkplug Node 1/Sparkplug Device 1
2023-05-04 14:09:00,417 [MQTT Call: Sparkplug Node 1] INFO  o.t.sparkplug.SparkplugMqttCallback - Command: [DCMD]  nodeDeviceId: [Sparkplug Device 1]
2023-05-04 14:09:00,417 [MQTT Call: Sparkplug Node 1] INFO  o.t.sparkplug.SparkplugMqttCallback - Metric [Outputs/LEDs/Green] value [false]

				
			

همانطور که می‌بینید، مقدار جدید ویژگی Outputs/LEDs/Green با موفقیت به دستگاه ارسال شده است.

حال، بیایید مقدار ویژگی Device Control/Scan Rate را تغییر دهیم. روی آیکون مداد کلیک کنید و مقدار آن را از 60000 به 30000 تغییر دهید. سپس، روی Update کلیک کنید.

زمانی که مقدار جدید برای ویژگی Device Control/Scan Rate به دستگاه Sparkplug Device 1 ارسال شود، پیام‌های زیر را در ترمینال مشاهده خواهید کرد:

				
					2023-05-04 14:16:51,715 [MQTT Call: Sparkplug Node 1] INFO  o.t.sparkplug.SparkplugMqttCallback - Message Arrived on topic spBv1.0/Sparkplug Group 1/DCMD/Sparkplug Node 1/Sparkplug Device 1
2023-05-04 14:16:51,715 [MQTT Call: Sparkplug Node 1] INFO  o.t.sparkplug.SparkplugMqttCallback - Command: [DCMD]  nodeDeviceId: [Sparkplug Device 1]
2023-05-04 14:16:51,715 [MQTT Call: Sparkplug Node 1] INFO  o.t.sparkplug.SparkplugMqttCallback - Metric [Device Control/Scan Rate] value [30000]
				
			

مقدار ویژگی‌های Outputs/LEDs/Green و Device Control/Scan Rate تغییر یافته و به دستگاه Sparkplug Device 1 ارسال شده است.

به‌روزرسانی معیارها با استفاده از دستور RPC در ThingsConnect از سرور به MQTT EoN/Device

ThingsConnect از به‌روزرسانی درخواستی برای معیارهای گره یا دستگاه Sparkplug EoN با استفاده از ویژگی RPC (تماس رویه از راه دور) پشتیبانی می‌کند. برای سادگی، از واژه "دستور" به جای RPC استفاده می‌کنیم. شما می‌توانید دستور را از طریق REST API، ابزارک داشبورد، موتور قوانین یا اسکریپت سفارشی ارسال کنید. ساختار دستور در اینجا مستند شده است.

ویژگی‌های کلیدی دستور شامل method و params هستند.

method عملیات Sparkplug را تعریف می‌کند و یکی از مقادیر زیر است:

  • NCMD: دستور به گره EoN
  • DCMD: دستور به دستگاه EoN

params یک JSON است که معیار و مقدار آن را تعریف می‌کند.

به عنوان مثال، برای راه‌اندازی مجدد گره Sparkplug EoN، باید دستور زیر را ارسال کنید:

				
					  {
    "method": "NCMD",
    "params": {"metricName": "Node Control/Reboot", "value": true}
  }
				
			

برای راه‌اندازی مجدد دستگاه Sparkplug EoN، باید دستور زیر را ارسال کنید:

				
					  {
    "method": "DCMD",
    "params": {"metricName": "Device Control/Reboot", "value": true}
  }
				
			

در این مثال، از ابزارک “RPC Button” برای راه‌اندازی مجدد گره Sparkplug EoN استفاده خواهیم کرد. راهنمای گام به گام همراه با تصاویر زیر را مشاهده کنید.

به صفحه Dashboards بروید و یک داشبورد جدید با نام Sparkplug ایجاد کنید.داشبورد را باز کرده و با کلیک بر روی آیکون Entity aliases، یک آلیاس جدید اضافه کنید.
برای آلیاس یک نام انتخاب کنید (مثلاً EoN Node)، نوع فیلتر را Single Entity انتخاب کرده، عبارت Device را وارد کنید و Node 1 را انتخاب کنید. روی Add کلیک کرده و سپس Save را بزنید.

حال یک ویجت جدید ایجاد کنید. روی Add new widget کلیک کنید، از منوی کشویی بسته Control widgets را انتخاب کرده و ویجت RPC Button را برگزینید.
در قسمت Data، آلیاس ایجاد شده (EoN Node) را انتخاب کنید. به تب Advanced بروید و برچسب دکمه را REBOOT NODE وارد کنید.
در تنظیمات RPC، متد RPC را NCMD (دستور به گره EoN) وارد کرده و پارامترهای متد RPC را به شکل زیر وارد کنید:
{"metricName": "Node Control/Reboot", "value": true}
روی Add کلیک کنید و تغییرات را ذخیره کنید.

حال روی دکمه REBOOT NODE در ویجت کلیک کنید. دستور RPC با نام Node Control/Reboot و مقدار true از سرور به گره Sparkplug Node 1 ارسال می‌شود.

در ترمینالی که شبیه‌ساز در آن در حال اجرا است، باید پیام‌های زیر را مشاهده کنید:

				
					2023-05-04 14:27:02,215 [MQTT Call: Sparkplug Node 1] INFO  o.t.sparkplug.SparkplugMqttCallback - Message Arrived on topic spBv1.0/Sparkplug Group 1/NCMD/Sparkplug Node 1
2023-05-04 14:27:02,215 [MQTT Call: Sparkplug Node 1] INFO  o.t.sparkplug.SparkplugMqttCallback - Command: [NCMD]  nodeDeviceId: [Sparkplug Node 1]
2023-05-04 14:27:02,215 [MQTT Call: Sparkplug Node 1] INFO  o.t.sparkplug.SparkplugMqttCallback - Metric [Node Control/Reboot] value [true]

				
			

گره Sparkplug EoN Node 1 راه‌اندازی مجدد شده است.

گام‌های بعدی

  • راهنمای شروع سریع – این راهنماها نمای کلی از ویژگی‌های اصلی ThingsConnect را ارائه می‌دهند. طراحی شده‌اند تا در ۱۵-۳۰ دقیقه تکمیل شوند.
  • تصویرسازی داده‌ها – این راهنماها شامل دستورالعمل‌هایی برای پیکربندی داشبوردهای پیچیده در ThingsConnect هستند.
  • پردازش داده‌ها و اقدامات – یاد بگیرید چگونه از Rule Engine در ThingsConnect استفاده کنید.
  • تحلیل داده‌های اینترنت اشیاء (IoT) – یاد بگیرید چگونه از Rule Engine برای انجام وظایف تحلیلی پایه استفاده کنید.
  • نمونه‌های سخت‌افزاری – یاد بگیرید چگونه پلتفرم‌های سخت‌افزاری مختلف را به ThingsConnect متصل کنید.
  • ویژگی‌های پیشرفته – با ویژگی‌های پیشرفته ThingsConnect آشنا شوید.
  • مشارکت و توسعه – یاد بگیرید چگونه در توسعه و مشارکت در ThingsConnect فعالیت کنید.

عناوین هر بخش