جدول المحتويات:

كيفية العمل مع JSON في Node-RED: 13 خطوة
كيفية العمل مع JSON في Node-RED: 13 خطوة

فيديو: كيفية العمل مع JSON في Node-RED: 13 خطوة

فيديو: كيفية العمل مع JSON في Node-RED: 13 خطوة
فيديو: How to Run Node.js in Visual Studio Code | Node.js in VSCode 2024, شهر نوفمبر
Anonim
كيفية العمل مع JSON في Node-RED
كيفية العمل مع JSON في Node-RED

سيعلمك هذا الدليل كيفية العمل مع JSON في node-RED. سأوضح لك كيفية التحكم في مآخذ الطاقة المتصلة بالشبكة عن طريق نقل ملفات json عبر http get and post. ويمكنك استخدام هذه المعرفة لاحقًا للتحكم في أي جهاز يدعم بروتوكول JSON.

لأغراض التدريس ، سأستخدم NETIO 4All مقبس الطاقة المتصل بالشبكة ، لكن لا تقلق ، فأنت لست بحاجة إلى شراء أي شيء. NETIO لديها عرض 4All مدهش على الإنترنت يمكنك استخدامه.

اللوازم

NETIO 4: جميع مقابس الطاقة المتصلة بالشبكة أو 4All التجريبي عبر الإنترنت:

العقدة الحمراء

الخطوة 1: بروتوكول REST JSON Http (s)

بروتوكول REST JSON Http (s)
بروتوكول REST JSON Http (s)

هذا الجزء تقني بعض الشيء ولكن يرجى تحمل معي. إذا لم أشرح هذا الجزء ، فستواجه مشاكل في فهم القيم في ملفات json التي سنرسلها في node-RED.

الإجراءات المطبقة على كل مخرج (مقبس كهربائي):

في جميع بروتوكولات M2M ، تستخدم مقابس طاقة NETIO نفس الإجراءات التي يمكن تطبيقها على المخرجات الفردية. على سبيل المثال ، يمكن كتابة إجراء Toggle أو Short Off إلى أي إخراج.

ومع ذلك ، لا يمكن استخدام متغير الإجراء إلا لكتابة القيم ، ولا يمكن استخدامه لقراءة حالة المخرج الحالية.

هذه هي الإجراءات التي يمكنك تطبيقها على كل ناتج:

0 = إخراج مغلق (إيقاف)

1 = الإخراج قيد التشغيل (تشغيل)

2 = تم إيقاف تشغيل الإخراج لفترة قصيرة (إيقاف قصير)

3 = الإخراج قيد التشغيل لفترة قصيرة (تشغيل قصير)

4 = تم تبديل الإخراج من حالة إلى أخرى (تبديل)

5 = حالة الإخراج دون تغيير (بدون تغيير)

6 = تم التجاهل

مثال - ملف JSON لتبديل رقم الإخراج. 1:

{

"المخرجات": [{

"المعرف": 1 ،

"العمل": 4

}]

}

المعرف - يشير هذا الرقم إلى الإخراج الذي سنستخدمه

الإجراء - هذا الجزء ، هو الإجراء الذي سيتخذه الإخراج (على سبيل المثال 1 (تشغيل الإخراج))

الخطوة 2: التدفق

تدفق
تدفق

والآن الجزء الرئيسي. هكذا تبدو بيئة node-RED.

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

  1. تدفق NETIO AN30 (JSON REST API)
  2. لوحة القيادة (واجهة رسومية يمكنك من خلالها تشغيل برنامجك)

الخطوة 3: لوحة القيادة

لوحة القيادة
لوحة القيادة

هذه هي الطريقة التي تبدو بها لوحة القيادة في node-RED لهذه التعليمات. يمكنك تخصيصه إذا كنت تريد أن تتناسب مع ذوقك.

لوحة القيادة لهذا المشروع مقسمة إلى 4 أجزاء:

  1. حالة الجهاز - تعرض معلومات الجهاز مثل الطراز أو عنوان mac أو إصدار البرنامج الثابت.
  2. (POST) إخراج التحكم 1 - يحتوي على 5 أزرار تتحكم في الإخراج 1. كل زر ينفذ إجراءً مختلفًا
  3. (GET) O1 - O4 Output States - يعرض هذا الجزء الحالة الحالية لكل إخراج من جهازك.
  4. إدارة الجهاز - في هذا الجزء ، يمكنك العثور على جميع أنواع الرسوم البيانية والمقاييس التي تعرض القيم المقاسة الحالية من جهاز NETIO 4Aall

الخطوة 4: تدفق الاستيراد (مشروع ، نص ، إلخ)

تدفق الاستيراد (مشروع ، نص ، إلخ)
تدفق الاستيراد (مشروع ، نص ، إلخ)

في القائمة (الزاوية العلوية اليمنى) حدد استيراد ثم الحافظة.

ثم انسخ النص أدناه إلى الحقل المشار إليه وانقر فوق استيراد.

تثبيت العقد المفقودة

يتم تحميل العقد في التدفق المحدد. من الممكن أن يتم عرض رسالة خطأ مع قائمة بالعقد التي يتم استيرادها ولكن لم يتم تثبيتها في Node-RED حتى الآن. في هذه الحالة ، يجب تثبيت العقد المفقودة.

إذا كانت هناك عقد مفقودة ، فحدد إدارة اللوحة في القائمة ، وانقر فوق تثبيت وابحث عن العقد المفقودة وقم بتثبيتها.

نص الاستيراد:

[{"id": "56b9510c.98c6f"، "type": "tab"، "label": "NETIO AN30 (REST JSON)" ، "معطل": خطأ ، "معلومات": ""} ، {"معرف ":" 6a66b637.da1558 "،" type ":" http request "،" z ":" 56b9510c.98c6f "،" name ":" HTTP Request (POST) "،" method ":" POST "،" ret ": "txt"، "url": "https://netio-4All.netio-products.com:8080/netio.json"، "tls": ""، "x": 430، "y": 100، "الأسلاك":

الخطوة 5: كيف يعمل كل شيء معًا

كيف يعمل كل شيء معًا
كيف يعمل كل شيء معًا

ينقسم التدفق بشكل أساسي إلى جزأين: POST و GET.

POST: الكتابة إلى O1

  • يتم عرض خمسة أزرار تم إنشاؤها في لوحة المعلومات في التدفق في لوحة المعلومات.
  • بعد النقر فوق الزر Output 1 = ON في لوحة المعلومات ، يتم تعيين الحمولة على ملف netio.json الذي يحدد الإخراج والإجراء (المحدد لكل زر من الأزرار).
  • ترسل كتلة طلب HTTP (POST) ملف netio.json كطلب إلى عنوان IP.
  • يتم إرجاع استجابة الخادم (الحالة) كناتج.
  • تعرض كتلة Msg.payload النتيجة من طلب HTTP (POST).

GET: القراءة من O1 - O4

  • يتم تنشيط كتلة التكرار 1 ثانية ، مع فترة ثانية واحدة ، كتلة طلب HTTP (GET) ، والتي بدورها ترسل netio.json كطلب GET ويعيد ملف JSON كاملًا بحالة المقبس كما تم استلامه من الخادم.
  • تقوم كتلة تحليل JSON بتحويل ملف JSON من كتلة طلب HTTP (GET) إلى كائن JSON بحيث يمكن معالجة الخصائص في ملف JSON.
  • تأخذ كتلة الوظيفة الأجزاء الفردية من كائن JSON وتحولها إلى خصائص كائن msg لاستخدامها لاحقًا.
  • تعيِّن كتلة المخطط الحالي msg.payload إلى خاصية msg. TotalCurrent لكائن msg ، لأن كتلة المخطط الحالي (الجهاز) اللاحقة يمكنها فقط عرض قيمة msg.payload.
  • ثم تتبع عقد الإخراج المختلفة لعرض الخصائص المحددة لكائن msg ، كما تم أخذها من كائن JSON ، في لوحة المعلومات.

كائن msg و msg.payload

للحصول على شرح بسيط وموجز ، انظر هنا:

www.steves-internet-guide.com/node-red-mess…

الخطوة 6: HTTP POST و GET

HTTP POST والحصول على
HTTP POST والحصول على
HTTP POST و GET
HTTP POST و GET

طلب HTTP (POST)

ترسل هذه العقدة ملف أوامر netio.json كطلب HTTP (POST) للتحكم في NETIO 4All device.

طلب HTTP (GET)

ترسل هذه العقدة طلب HTTP (GET) وتقوم بإرجاع استجابة الحالة.

يشير العنوان المملوء مسبقًا إلى العرض التوضيحي عبر الإنترنت NETIO 4 ، حيث يمكنك اختبار الاتصال دون وجود جهاز NETIO على مكتبك.

netio-4all.netio-products.com

من الممكن تعيين عنوان IP الخاص بك في هذه العقد ؛ ومع ذلك ، يجب تغيير IP في كل من عقدتي HTTP Request و POST و GET.

الخطوة 7: عقد الأزرار

عقد الزر
عقد الزر
عقد الزر
عقد الزر

يؤدي النقر فوق عقدة الزر إلى إنشاء رسالة تحتوي على ملف netio.json (الصورة اليمنى) والذي يتم إرساله بعد ذلك عبر عقدة مشاركة http إلى مقبس الطاقة الذكي netio.

الخطوة 8: عقدة الوظيفة

عقدة الوظيفة
عقدة الوظيفة
عقدة الوظيفة
عقدة الوظيفة

العقدة الوظيفية هي عقدة خاصة تمكن من كتابة وظيفة JavaScript مخصصة.

في هذا الدليل ، تختار الوظيفة القيم من ملف JSON الذي تم تحليله (الآن كائن JSON) وتخصيصها لخصائص كائن msg.

ينقسم الكود إلى أربعة أقسام:

  1. تعيين قيم من كائن JSON للخصائص الفردية لكائن msg
  2. معالجة الأخطاء في حالة عدم دعم مقبس الطاقة المتصل بالشبكة للقياسات العالمية

    إذا كان مقبس الطاقة المتصل بالشبكة لا يدعم قياس القيم العالمية ، فستعرض Node-RED أخطاء لأن هذه الوظيفة لن تجد الخاصية المعنية ، على سبيل المثال msg.payload. GlobalMeasure. Voltage ، لأنه لن يكون موجودًا في كائن JSON. في هذه الحالة ، خاصية الكائن msg ، على سبيل المثال msg. Voltage ، مضبوط على 0 ويتم اكتشاف الخطأ.

  3. تعيين قيم حالة الإخراج
  4. ضبط ألوان قيم حالة الإخراج المعروضة وفقًا لحالات الإخراج

الخطوة 9: JSON Node and Inject Node

عقدة JSON وحقن العقدة
عقدة JSON وحقن العقدة
عقدة JSON وحقن العقدة
عقدة JSON وحقن العقدة

عقدة JSON

تقوم عقدة JSON بتوزيع ملف JSON وتحويله إلى كائن JSON.

كاستجابة من الخادم لطلب GET ، تقوم عقدة طلب HTTP بإرجاع ملف JSON يحتوي على الحالة الحالية لجهاز NETIO 4x ، ولكنه مجرد ملف نصي ، لذلك من أجل العمل مع البيانات ، يحتاج ملف JSON ليتم تحليلها في كائن JSON.

عقدة الحقن

كل ثانية ، تقوم هذه العقدة بتنشيط عقدة طلب HTTP التي ترسل طلب GET.

نتيجة لذلك ، يتم تحديث القيم الموجودة في لوحة المعلومات بفترة ثانية واحدة

الخطوة 10: عقدة النص وعقدة التصحيح

عقدة النص وعقدة التصحيح
عقدة النص وعقدة التصحيح
عقدة النص وعقدة التصحيح
عقدة النص وعقدة التصحيح

عقدة النص

يعرض حقل نص في لوحة المعلومات. في هذا الدليل ، تعرض العقد النصية الإصدار الحالي أو الجهد الكهربائي أو الطراز أو البرنامج الثابت أو إصدار JSON.

يتم عرض التسمية في لوحة المعلومات ، والاسم هو اسم العقدة المعروض في التدفق في Node-RED.

عقدة التصحيح

يعرض msg.payload.

الخطوة 11: عقدة الرسم البياني

عقدة التخطيط
عقدة التخطيط
عقدة التخطيط
عقدة التخطيط

ترسم هذه العقدة المخطط الحالي في لوحة المعلومات وفقًا لقيمة الحمولة.

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

لهذا السبب ، يتم استخدام عقدة دالة لتعيين msg.payload إلى القيمة التي يجب عرضها.

msg.payload = msg. TotalCurrent ؛

الخطوة 12: قياس العقدة وعقد الارتباط

عقدة القياس وعقد الارتباط
عقدة القياس وعقد الارتباط
عقدة القياس وعقد الارتباط
عقدة القياس وعقد الارتباط

عقدة القياس

تضيف هذه العقدة أداة قياس إلى لوحة المعلومات.

في هذا الدليل ، يتصور كل مقياس خاصية واحدة لكائن الرسالة: الجهد [V] ، الحالي [A] ، التردد [هرتز] وعامل القدرة الحقيقية الكلي (TPF).

عقد الارتباط

ربط العقد وربطها تعمل مثل النفق. يصل msg.payload إلى الرابط في العقدة ويخرج من عقدة الارتباط الخارج.

استخدمته لجعل التدفق أكثر وضوحًا وأسهل في القراءة.

الخطوة 13: شكرًا لك على قراءة تعليماتي

أتمنى أن تكون قد استمتعت بالتعليمات التي تلقيتها وأتمنى أن تكون قد تعلمت شيئًا جديدًا.

هذه التعليمات هي نسخة مختصرة فقط من دليل مختلف قمت بإنشائه

الدليل الأصلي أطول وأكثر تفصيلاً وأكثر تنظيماً بشكل عام. إذا كنت لا تفهم شيئًا ما أو تعتقد أنني فاتني أو لم أشرح شيئًا كافيًا ، فيمكنك بالتأكيد العثور عليه هناك.

أعدك أنك لن تكون بخيبة أمل

الأصل:

هناك أيضًا أدلة متشابهة حول الاستخدامات المختلفة لـ node-RED ، لذلك إذا كنت مهتمًا فلا تتردد في استكشاف:

العمل مع REST URL API في node-RED

www.netio-products.com/ar/application-notes/an29-node-red-example-of-url-api-communication-with-netio-4x

العمل مع REST XML في node-RED

www.netio-products.com/ar/application-notes/an31-node-red-example-of-rest-xml-comm Communication-with-netio-4x

العمل مع TCP / Modbus في node-RED

قريبا جدا:)

موصى به: