البرمجة بصريًا باستخدام Node-RED: توصيل إنترنت الأشياء بسهولة

نشرت: 2022-03-11

من خلال البرمجة ، نجعل الآلات تقلد السلوك المعقد باتباع تسلسل من التعليمات البسيطة. يعد استخدام لغات البرمجة النصية مثل Assembly و C و Python و JavaScript إحدى الطرق الأساسية للقيام بذلك. أمضى مصممو لغات البرمجة هذه ساعات لا حصر لها في محاولة جعل تجربة كتابة البرامج سهلة قدر الإمكان من خلال بناء الجملة التعبيري وتركيبات البرمجة القوية وسلاسل الأدوات القوية. ومع ذلك ، فإن كل لغات البرمجة هذه تشترك في سمة مشتركة: شفرة المصدر النصية.

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

قم بتوصيل الأجهزة مع واجهات برمجة التطبيقات باستخدام Node-RED

Node-RED هي أداة للبرمجة بصريًا. يعرض العلاقات والوظائف بصريًا ، ويسمح للمستخدم بالبرمجة دون الحاجة إلى كتابة لغة. Node-RED هو محرر تدفق قائم على المستعرض حيث يمكنك إضافة أو إزالة العقد وربطها ببعضها البعض لجعلها تتواصل مع بعضها البعض.

في Node-RED ، كل عقدة هي أحد النوعين التاليين: عقدة حقن أو عقدة وظيفية . تُنتج عُقد الحقن رسالة دون الحاجة إلى أي إدخال وتدفع الرسالة إلى العقدة التالية المتصلة بها. من ناحية أخرى ، تأخذ العقد الوظيفية مدخلاً وتؤدي بعض الأعمال عليه. مع وجود عدد كبير من هذه العقد للاختيار من بينها ، تجعل Node-RED توصيل الأجهزة معًا وواجهات برمجة التطبيقات والخدمات عبر الإنترنت أسهل من أي وقت مضى.

الشروع في العمل مع Node-RED

تم بناء Node-RED على Node.js. لتثبيت Node-RED ، ستحتاج إلى تثبيت كل من Node.js و NPM. مع NPM ، من السهل جدًا تثبيت Node-RED:

 npm install -g node-red

محرر تدفق Node-RED هو تطبيق قائم على متصفح الويب. لتتمكن من استخدامه ، قم بتشغيل Node-RED:

 node-red

& hellip وانتقل إلى http: // localhost: 1880.

مرحبا بالعالم!

ما هو البرنامج التعليمي للبرمجة للمبتدئين الذي يكتمل دون تعلم قول "Hello، world"؟ دعونا نبدأ بتجربة ذلك بالضبط:

  1. اسحب عقدة الحقن وأفلتها في محرر التدفق. ثم انقر نقرًا مزدوجًا وقم بإعداد الحمولة كسلسلة واكتب "Hello world".
  2. قم بسحب وإسقاط عقدة تصحيح الأخطاء ، بنفس الطريقة التي فعلت بها مع حقنة العقدة.
  3. اربطهم معًا.
  4. انقر فوق الزر "نشر" في الزاوية اليمنى.
  5. انقر فوق الزر الأزرق الموجود على يسار عقدة الحقن .

جربها. سترى شيئًا كهذا:

فقط JavaScript

مع Node-RED ، لا تقتصر على العقد والوظائف البسيطة فقط. نظرًا لأن Node-RED مبني على Node.js ، فإنه يتم تشغيله بالكامل بواسطة JavaScript. العقد هي في الواقع وحدات Node.js. يمكن العثور عليها في http://flows.nodered.org/ ، لذا لإضافتها إلى اللوحة اليسرى ، يمكنك فقط "تثبيت npm". في الواقع ، يمكنك تطوير التدفق الخاص بك وتحميله إلى مستودع التدفق. يمكن أن تكون التطبيقات معقدة كما تريد ، لأنك قادر على كتابة JavaScript في العقد الوظيفية داخل محرر التعليمات البرمجية الذي يوفره Node-RED.

نظرًا لأن النظام الأساسي يعتمد على Node.js ، فإنه يستفيد من نفس النموذج المستند إلى الأحداث وغير المحظور. لذلك يمكن تشغيل تطبيق مبني على Node-RED على أجهزة منخفضة التكلفة مثل Raspberry Pi ، وكذلك في السحابة.

الآن لنبدأ الاحتراف: حان وقت التشغيل الآلي للمنزل

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

تعرف على Netbeast. إنها منصة مفتوحة المصدر لتطوير التطبيقات لأجهزة وأجهزة إنترنت الأشياء دون الحاجة إلى القلق بشأن التفاصيل مثل البروتوكولات اللاسلكية أو توافق العلامة التجارية أو الاضطرار إلى معرفة كيفية التعامل مع كل واجهة برمجة تطبيقات محددة هناك. يسمح لنا باستخدام الأجهزة الافتراضية التي تعمل كأجهزة حقيقية! لذلك حتى إذا لم يكن لديك مصباح ذكي ، فلديك مصباح افتراضي متاح.

يمكننا تثبيت حزمة Netbeast for Node-RED npm عالميًا كما يلي:

 npm install -g node-red-contrib-netbeast

ستمثل عقدة netbeast-red لوحة تحكم Netbeast ، والتي ستترجم أساسيات واجهة برمجة التطبيقات الخاصة بها إلى جميع أجهزتك الذكية الموجودة في المنزل. لحسن الحظ ، يتوفر أيضًا كوحدة نمطية!

بدء Netbeast:

 npm install -g netbeast-cli netbeast start

سيؤدي هذا إلى جعل لوحة المعلومات متاحة على المنفذ 8000 و SSL على 8443. افتح المتصفح بعد ذلك إلى http: // localhost: 8000 وانتقل إلى Explore. هناك سنكون قادرين على العثور على الكثير من التطبيقات والمكونات الإضافية. ابحث عن العلامات التجارية لمصابيحك الذكية (Philips Hue و LIFX و WeMo) أو إذا لم يكن لديك واحدة ، فحاول تنزيل المكوّن الإضافي اللمبة. تأكد من احتواء المكونات الإضافية للوحة القيادة على أحد هذه المكونات!

تشير الشارة الصفراء إلى أن المكونات الإضافية تعمل ، لكن لا يمكنهم العثور على أي أجهزة. انقر فوق المكوّن الإضافي bulb لإنشاء مصباح افتراضي. يجب أن تظهر أي أجهزة أخرى يتم اكتشافها ضمن الشبكة.

مع كل شيء في مكانه ، دعنا نعود إلى العمل. سنقوم بتدفق بسيط:

  1. قم بسحب وإسقاط عقدة الحقن.
  2. قم بسحب وإسقاط عقدة Netbeast.
  3. اسحب عقدة التصحيح وأفلتها.
  4. قم بربطها بالكامل كما هو موضح أدناه:

الآن دعنا نرسل طلب HTTP إلى لوحة القيادة. باستخدام Netbeast API ، سيتعين علينا إرسال JSON عبر عقدة الحقن التي تحتوي على القيم التي نريد تشغيلها في لمبةنا.

اضغط على الزر لحقن اللون والطاقة لجميع مصابيحك الذكية!

يمثل كل موضوع نوعًا مختلفًا من الأجهزة. لذلك هناك موضوعات للأضواء ولكن أيضًا للموسيقى والتدفئة والفيديو ؛ وكذلك مجسات للرطوبة والوجود ودرجة الحرارة والقائمة مستمرة. يمكنك أن تجد في وثائقهم قائمة بالموضوعات والهيكل الموصى به لترجمتها إلى جميع أنواع الأجهزة. محرك إنترنت الأشياء هذا غير ناضج ولكنه قوي. المصدر المفتوح الذي يسمح للمطورين بإعادة استخدام المعلومات لإنشاء سيناريوهات متصلة حقًا ، وبالتالي تكون ذكية.

لنذهب أعمق

بعد ذلك ، سننشئ تدفقًا ثانيًا باستخدام مكون إضافي آخر ، كاشف الضوضاء المحيطة ، لاستخدامه كمحفز لتغيير لون المصباح كإشارة ضوضاء. في هذا البرنامج التعليمي ، سنستخدم جهازًا افتراضيًا ، لذلك ليست هناك حاجة لشراء أجهزة جديدة. لنبدأ بالنقر فوق الزر "زائد" في محرر Node-RED.

انتقل مرة أخرى إلى Dashboard http: // localhost: 8000 / استكشف قسم الاستكشاف وابحث عن Volume-Plugin. إنه تطبيق ويب بدائي للغاية يستفيد من getUserMedia() داخل المتصفح لالتقاط الوسائط من تطبيق HTML بسيط. لذلك من المحتمل أن تعمل فقط على المتصفحات الحديثة!

انقر عليه لفتحه ، كما هو الحال مع اللمبة الافتراضية. سيطلب الإذن بالتسجيل من الميكروفون الخاص بك. بعد ذلك ، سترسل الرسائل إلى وسيط MQTT التابع لشركة Netbeast ، والتي ستتم مشاركتها عبر جميع لوحة التحكم ، وبالتالي سنتمكن من الاشتراك. للقيام بمثل هذا الشيء ، سنحتاج فقط إلى سحب وإفلات عقدة netbeast-trigger في محرر node-red. ثم سنقوم بإدخال دالة بين المشغل وعقدة Netbeast لذلك نقرر متى يكون الصوت مرتفعًا جدًا أم لا. أيضًا ، يجب أن نستخدم بعض عقد التصحيح للتحقق مما إذا كان كل شيء على ما يرام. سيبدو المخطط الآن إلى حد ما مثل هذا:

الآن ، دعنا نقوم بإدخال بعض التعليمات البرمجية في عقدة دالة tooLoud. نعم ، أعلم أنني وعدتك بأن تتمكن من البرمجة دون الحاجة إلى البرمجة ، لكنني أظهرت بالفعل أنه يمكنك ذلك! ويمكنك محاولة دمج العناصر المختلفة المتاحة أو العقد الأخرى من التسجيل لإنجاز ما يلي.

 var volume = msg.payload.volume node.log(volume) if (volume < 50) { return { topic: 'lights', payload: { power: 1, color: '#00CC00'}} } else if (volume < 75) { return { topic: 'lights', payload: { power: 1, color: '#CCCC00'}} } else { return { topic: 'lights', payload: { power: 1, color: '#FF0000'}} }

يقوم هذا المقتطف البسيط من الكود بإرجاع إحدى الحمولات الثلاث للعقدة التالية برمز لون محدد ، اعتمادًا على مستوى الحجم الذي تم الإبلاغ عنه بواسطة العقدة السابقة.

الآن نحن على استعداد للذهاب! دعنا نركل الزر نشر مرة أخرى ونحدث بعض الضوضاء. دعونا نرى كيف يتغير المصباح من لون إلى آخر على الفور!

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

إنشاء الإضافات الخاصة بك

هذا المصباح في CSS النقي مستوحى من cssdeck هذا.

كما لاحظت ، فإن المصباح الافتراضي من قبل بدائي للغاية ، لذلك قد ترغب في تعديله. أو حتى أفضل من ذلك ، يمكنك إنشاء وحدات التحكم في المنزل الذكي الخاصة بك. لذلك سنستمر في عملية إنشاء مكون إضافي افتراضي لـ Netbeast ، والذي سيمكنك من إنشاء وحدات التحكم الخاصة بك للأجهزة الذكية.

يمكنك استخدام حزمة netbeast-cli لإنشاء بعض التعليمات البرمجية تلقائيًا. بتشغيل netbeast create myplugin --plugin بمشروع أساسي مثل ما يلي:

 myplugin ├── README.md ├── index.js ├── package.json └── test.js

الواجهة

الآن ، لنبدأ في محاكاة المصباح بواجهة أمامية. لا تحتوي أجهزة التحكم في الجهاز عادةً على واحد ، لذلك لم يتم تضمين أي مجلد عام في أمر السقالة حتى الآن. لنقم بإنشاء مسار public داخل المشروع ووضع ملفات HTML و CSS و JS التالية هناك.

index.html

 <head> <title>Netbeast Bulb Plugin</title> <link rel="stylesheet" href="bulb.css" media="screen" charset="utf-8"> </head> <body> <div class="top-decoration"></div> <div> </div> <div class="bulb-container small"> <div class="bulb light"> <div> <div class="bulb top"></div> <div class="bulb middle-1"></div> <div class="bulb middle-2"></div> <div class="bulb middle-3"></div> <div class="bulb bottom"></div> </div> <div> <div class="screw-top"></div> <div class="screw a"></div> <div class="screw b"></div> <div class="screw a"></div> <div class="screw b"></div> <div class="screw a"></div> <div class="screw b"></div> <div class="screw c"></div> <div class="screw d"></div> </div> </div> </div> <div class="code-container"> <pre><i class="txt-red">beast</i>(<i class="txt-green">'lights'</i>).<i class="txt-blue">set</i>({ <i class="txt-green">color</i>: <i class="txt-green">"<input type="text" class="color" name="color" value="00fea5">"</i>, <i class="txt-green">power</i>: <i class="txt-green">"<input type="text" class="power" name="power" value="on">"</i> })</pre> <button> RUN </button> </div><!-- wrapper --> <!-- declares bulb features and methods --> <script type="text/javascript" src="bulb.js"></script> <!-- real time comms library --> <script type="text/javascript" src="socketio.js"></script> <!-- simulates hardware communication --> <script type="text/javascript" src="hw-api.js"></script> </body>

bulb.css

 section { float: left; padding: 20px 50px 20px 50px; } .bulb-light { border: 0; background: transparent; margin: 0 auto !important; padding: 0 !important; display: block; z-index: 1; } #bulb { opacity: 1; z-index: 3; display: block;} .bulb.top { border: 0; width: 300px; height: 300px; margin: 0 auto; padding: 0; border-radius: 999px; background: #E7E7E7; } .bulb.middle-1 { margin: -75px auto 0 auto; width: 190px; border-left: 35px solid transparent; border-right: 35px solid transparent; border-top: 55px solid #E7E7E7; } .bulb.middle-2 { margin: -22px auto 0 auto; width: 178px; border-left: 19px solid transparent; border-right: 19px solid transparent; border-top: 50px solid #E7E7E7; } .bulb.middle-3 { margin: -20px auto 0 auto; width: 182px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 30px solid #E7E7E7; } .bulb.bottom { width: 184px; height: 65px; margin: -8px auto 0 auto; padding: 0; border-radius: 0 0 999px 999px; background: #E7E7E7; } #base { position:relative; z-index: 2; } .screw { transform: rotate(-3deg); -ms-transform: rotate(-3deg); -webkit-transform: rotate(-3deg); padding: 0; } .screw-top { margin: -18px auto -4px auto; padding: 0; width: 132px; height: 0; border-left: 15px solid transparent; border-right: 15px solid transparent; border-top: 21px solid #D3D3D3; border-radius: 999px; } .screw.a { background: #DDD; width: 150px; height: 15px; border-radius: 999px; margin: -1px auto 0px; } .screw.b { background: #D9D9D9; width: 135px; height: 15px; margin: -1px auto 0px; } .screw.c { margin: -1px auto 0px; width: 78px; height: 0; border-left: 30px solid transparent; border-right: 30px solid transparent; border-top: 20px solid #DDD; border-radius: 8px; } .screw.d { margin: 0 auto; width: 15px; height: 0; border-left: 30px solid transparent; border-right: 30px solid transparent; border-top: 15px solid #444; } .on #light { -moz-opacity: 1; -khtml-opacity: 1; opacity: 1; } .bulb.top, .bulb.bottom { transition: all 0.5s ease-in-out; } .bulb.middle-1, .bulb.middle-2, .bulb.middle-3 { transition: all 0.5s ease-in-out; }

باستخدام ملفات HTML و CSS هذه ، يجب أن تكون قادرًا بالفعل على رؤية شكل لمبة في متصفحك. انطلق وافتح ملف HTML الخاص بك لتراه حيًا! إنه يعمل؟ رائع ، فلنمنحه الآن بعض الوظائف.

bulb.js

سيحاكي هذا الملف سلوك اللمبة بنقرة بسيطة ، وانقر فوق إيقاف التشغيل ، وسيقوم بإعداد وظيفتين سيتم استخدامها قليلاً لتغيير لونها من خلال Netbeast.

 var color = document.getElementById('color') var power = document.getElementById('power') var bulb = document.getElementById('bulb') var button = document.getElementById('run-btn') var light = document.getElementById('light') button.onclick = function toggleBulbState () { changeBulbParams({ color: color.value, power: power.value }) } function setBulbParams (params) { if (params.power === 'off') { params = { color: 'E7E7E7' } } console.log('set params', params) var bulb_parts = ['.bulb.middle-1', '.bulb.middle-2', '.bulb.middle-3'] document.querySelector('.bulb.top').style.boxShadow = '0px 0px 98px #' + params.color document.querySelector('.bulb.top').style.backgroundColor = params.color document.querySelector('.bulb.bottom').style.backgroundColor = params.color bulb_parts.forEach(function (className) { document.querySelector(className).style.borderTopColor = params.color }) } function changeBulbParams (params) { console.log('change params', params) /* Overwrite html fields if necessary */ color.value = params.color || color.value power.value = params.power || power.value setBulbParams({color: color.value, power: power.value}) }

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

hw-api.js

آخر إصدار من JS للواجهة الأمامية عصاميًا. إنه يسخر من الاتصال اللاسلكي بالخادم ، مثل WiFi أو مصباح Bluetooth الذي يمكن أن يفعله بوحدة التحكم عن بعد ، مثل الهاتف أو الخادم أو المحور. إنها الواجهة التي سيستخدمها رمز البرنامج المساعد الفعلي للتحكم فيه!

 var socket = io.connect() socket.on('connect', function () { console.log('ws:// bulb is online') }) socket.on('disconnect', function () { console.log('ws:// connection with bulb lost') }) socket.on('set', function (params) { changeBulbParams(params) // uses functions from bulb.js! }) socket.on('get', function () { const params = { power: power.value, color: color.value } socket.emit('params', params) })

أخيرًا ، نحتاج إلى تضمين مكتبة WebSocket من HTML لدينا ، بحيث تكون الواجهة الأمامية جاهزة. يمكنك نسخ المصدر من https://raw.githubusercontent.com/netbeast/bulb-plugin/master/public/socketio.js ولصقه في ملف يسمى socketio.js . من خلال Terminal مع curl أو wget ، يمكنك القيام بذلك ببساطة:

 curl https://raw.githubusercontent.com/netbeast/bulb-plugin/master/public/socketio.js > public/socketio.js

سيكون لدينا الآن هيكل ملف يبدو كالتالي:

 myplugin ├── README.md ├── index.js ├── package.json ├── public │ ├── bulb.css │ ├── bulb.js │ ├── hw-api.js │ ├── index.html │ └── socketio.js └── test.js

الخلفية

نحن الآن بصدد تنفيذ الواجهة مع الجهاز وتسجيلها في محرك Netbeast. سيستمع إلى websockets لاكتشاف أن المصباح قد تم تثبيته على الشبكة ، ثم يقوم بعمل POST لواجهة برمجة تطبيقات Dashboard بحيث تتوفر الموارد الجديدة.

لذلك ، دعنا نلقي نظرة على الملفات التي أنشأناها من قبل:

package.json

يحتوي هذا الملف على جميع التبعيات والمعلومات اللازمة لتشغيل تطبيقك. يستخدم Netbeast الحزمة العادية package.json أيضًا لاسترداد بعض المعلومات ، مثل الاسم أو النوع. من المهم تحديد أن هذه الحزمة عبارة عن مكون إضافي!

 { "name": "myplugin", "version": "0.0.0", "description": "Netbeast plugin for... <your description>", "main": "index.js", "netbeast": { "bootOnLoad": true, "type": "plugin" }, "dependencies": { "bluebird": "^3.3.5", "body-parser": "^1.15.0", "express": "^4.13.4", "minimist": "^1.2.0", "mocha": "^2.3.2", "morgan": "^1.6.1", "netbeast": "^1.0.6", "socket.io": "^1.4.5", "superagent": "^1.8.3" }, "devDependencies": {}, "scripts": { "test": "node test.js", "start": "node index.js" }, "repository": { "type": "git", "url": "GITHUB_REPOSITORY" }, "keywords": [ "iot", "netbeast", "plugin" ], "author": "YOUR_EMAIL", "license": "GPL 3", "bugs": { "url": "ISSUES_CHANNEL" }, "homepage": "HOMEPAGE" }

index.js

هذا هو الرمز الذي يتم استدعاؤه من Netbeast dashboard لتشغيل المكون الإضافي! سيحتاج إلى قبول المنفذ عن طريق وسيطات سطر الأوامر لمعرفة مكان قبول الطلبات الواردة. سيتم تشغيله كما لو أننا node myplugin.js --port <a free port number> . يرجى ملاحظة علامة التجزئة في البداية أيضًا! #!/usr/bin/env node .

 #!/usr/bin/env node var io = require('socket.io')() var express = require('express') var bodyParser = require('body-parser') var app = express() // Netbeast apps need to accept the port to be launched by parameters var argv = require('minimist')(process.argv.slice(2)) app.use(express.static('public')) // will serve our app in an HTTP server app.use(bodyParser.json()) // will parse JSON API calls app.use('/api', require('./plugin')(io)) var server = app.listen(argv.port || 31416, function () { console.log('Bulb plugin listening at http://%s:%s', server.address().address, server.address().port) }) // we need websockets to push updates to browser view io.listen(server)

كما ترى فقدنا ملفًا لتشغيله ، الملف الذي ينفذ بالفعل وحدات تحكم socket.io . لا شيء يتوهم!

plugin.js

 var express = require('express') var netbeast = require('netbeast') var router = express.Router() var bulbParams // auxiliar variable, nasty way to transmit changes, but works module.exports = function (io) { io = io // Create resource that works on lights topic and listens on /api route netbeast('lights').create({ app: 'myplugin', hook: '/api' }) io.on('connection', function () { console.log('ws:// bulb has connected to plugin') }) io.on('disconnection', function () { console.log('ws:// bulb has disconnected from plugin') }) io.on('connect_failure', function (err) { console.trace(err) }) router.post('/', function (req, res) { io.emit('set', { power: req.body.power, color: req.body.color, }) res.status(200).json(req.body) }) router.get('/', function (req, res) { io.emit('get') var timerReference = setTimeout(function () { if (bulbParams) { res.json(bulbParams) } else { res.status(200).json({ error: 'No bulb available' }) } }, 3000) }) return router }

إطلاق التطبيق الخاص بك

حان الوقت الآن لاختبار تطبيقك. يمكنك القيام بذلك عن طريق حزمه بتنسيق tar.gz وتحميله على لوحة القيادة في قسم السحب والإفلات http: // localhost: 8000 / install.

 beast package # Compresses your app when ran in myplugin dir

هاهو! يمكنك الآن الانتقال إلى المكونات الإضافية واختبارها. انتقل إلى قسم الشبكة (http: // localhost: 8000 / الأجهزة) لرؤيتها تعمل وتغيير لونها من هناك.

إذا حدث خطأ ما أو كنت تعتقد أنك قد فاتتك إحدى التفاصيل ، فحاول تشغيله محليًا باستخدام node index.js ، وربما يكون تصحيح الأخطاء أسهل من داخل سجل netbeast start .

انشر عملك

إذا كنت تريد عرض تطبيقك في قسم استكشاف لوحة معلومات Netbeast ، فيجب عليك إنشاء مستودع في GitHub باستخدام تطبيق Netbeast أو المكون الإضافي Netbeast ، وكلاهما مضمن في الوصف و README.md .

للعثور على التطبيقات ، نستخدم واجهة برمجة تطبيقات بحث GitHub. نرى نفس النتائج التي تظهر عند تقديم طلب GET إلى: https://api.github.com/search/repositories؟q=netbeast+language:javascript

ستعرف أنه سيتم عرض تطبيقك إذا ظهر هناك!

ماذا بعد؟

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

من ناحية أخرى ، إذا كنت تريد الغوص داخل Netbeast ، فيمكنك متابعة وثائقهم أيضًا أو إلقاء نظرة على مستودع Dashboard. باستخدام Netbeast API ، لن تضطر إلى التركيز على الأجهزة أو العلامات التجارية أو التقنيات الفردية بعد الآن ، لذا جربها. يمكنك معرفة المزيد عنها هنا ، أو الانضمام إلى قناة Slack الخاصة بهم ومناقشة Node-RED أو IoT أو Node.js.

إذا كنت ترغب في تثبيت هذه الأشياء على Raspberry Pi أو Beagle Bone أو خادم قديم ، فيمكنك تحويلها إلى Smart Hub قابل للاختراق ، بدون رمز! هناك تصميمات معدة مسبقًا لهم في كلا الموقعين.

قرصنة سعيدة.

الموضوعات ذات الصلة: هل نقوم بإنشاء إنترنت غير آمن للأشياء (IoT)؟