مشاريع Node-RED متوسطة التدفق

مبتدئ

image_pdf

استرداد البيانات من صفحة ويب :

سنقوم بكتابة التدفق الذي يوفر معلومات حول مؤشرات البورصة من ياهو (Yahoo) في http://finance.yahoo.com/market-overview/ حيث يتم تنسيقه باستخدام عقدة function . إذا قمت بفحص الصفحة المعروضة في الشكل أدناه باستخدام “Inspect Element”  في متصفح كروم ، فستجد أن المؤشرات التلاثة لها نفس فئة CSS تسمى ‘l84’ (وهذا الحرف حرف “L” في المظهر الصغير) . يمكن استخدام هذه الفئة لاسترداد جميع المؤشرات الثلاثة من عقدة html . سوف نقوم بإعداد عقدة inject لتشغيل طلب http للحصول على الصفحة، ثم عقدة html للحصول على العناصر مع فئة ‘l84‘ .

intermediate-flows

يتم تهيئة عقد HTML و http كما هو موضح بالصورة التالية :

intermediate-flows

يتم تهيئة هذه العقد اعلاه لاسترداد مؤشرات البورصة . ثم قم بربط العقد معا كما هو موضح بالصورة أدناه ، مع عقدة debug لإظهار المخرج .

intermediate-flows

يجب أن يحتوي على أحدث قيم الفهرس . عند الضغط على التشغيل على عقدة inject  . سيظهر لك ما يلي في جزء لوحة الاخراج عند تبويب debug  :

intermediate-flows

كان ذلك سهلا ، ولكن ما ترديه حقا هو مصفوفة من JSON وهي ازواج من الاسم:القيم التي تستخدم الاسم لوصف القيم و القيم كأرقام. في الكود أدناه يوضح ناتج JSON المطلوب من مؤشرات الأسهم :

[{
    “index”:”S&P”,
    “value”:2096.92
 },{
    “index”:”Dow”,
    “value”:17511.34
 },{
    “index”:”Nasdaq”,
    “value”:5059.35
 }]

سنقوم بالكتابة على عقدة funcrion لتنسيق هذا بالطريقة التي تريدها . قم بالنظر إلى الكود أدناه فهو يقوم بإخذ اسعار الأسهم الواردة ويخزنهم في  pices (كما هو موضح بالسطر الأول) ، ثم يتم إنشاء مصفوفتين جديدة، واحدة لإحتواء رسائل الإخراج و الثانية لإحتواء الاسم النصي للمؤشرات الثلاثة المختلفة.

في السطور من 5-8 عبارة عن حلقة تكرارمن خلال مؤشرات الأسهم الواردة وكل واحد يدفع زوج من (الاسم:القيمة) إلى مصفوفة رسالة الإخراج.  في السطر 8، يستخدم وظيفة replace بالجافا سكريب لإزالة كل الفواصل من قيم المؤشر قبل تحليلها كأرقام.

var prices = msg.payload;
var newPayload = [];
var priceIndex = ['S&P','Dow','Nasdaq'];

for (var i=0; i<prices.length; i++) {
  newPayload.push({
    index:priceIndex[i],
    value:Number(prices[i].replace(/,/g,''))
  });
}

msg.payload = newPayload;
return msg;

الآن قم بإضافة عقدة function ثم قم بكتابة الكود أعلاه :

intermediate-flows

بعد نشر و إختبار التدفق، يجب أن تقوم وحدة التحكم في debug بإخراج شيء مشابة للشكل أدناه . البيانات الآن تبدو جيدة ويمكنك استخدام هذا الشكل لعقد في التدفق الخاص بك .

intermediate-flows

X
تم إضافة المنتج إلى السلة بنجاح