هناك القليل من المقالات حول بيئة البرمجة مثل Node-RED على الإنترنت باللغة الروسية . ستكشف هذه المقالة سر حجاب هذا المنتج وستظهر على سبيل المثال إنشاء خوارزمية للتحكم في الإضاءة لمستشعرات الحركة مدى سهولة استخدام Node-RED لتنفيذ سيناريوهات وقواعد مختلفة لأتمتة المنزل الذكي بشكل رسومي بالكامل دون كتابة أي رمز.
ما هو Node-RED؟
تحاول شركة IBM ، مثل الشركات الكبيرة الأخرى ، العثور على مكانتها في تطور إنترنت الأشياء. عادة ما يرتبط هذا بإصدار تطبيقات ومنتجات مفتوحة المصدر من أجل الترويج لمنصاتهم المدفوعة. على سبيل المثال ، في IBM ، النظام الأساسي المدفوع هو Bluemix.Node-RED هي من بنات أفكار IBM مفتوحة المصدر ، وكما هو مكتوب ببساطة على الموقع ، فهي أداة تعمل على توصيل الأجهزة وواجهات برمجة التطبيقات والخدمات بطرق جديدة ومثيرة للاهتمام.تعتمد هذه الطرق على استخدام خطوط الاتصال الرسومية التي يتم من خلالها إرسال الرسائل بين العقد. وبالتالي ، يمكنك توصيل الكتل المختلفة ببساطة بالماوس دون استخدام البرمجة.يتم تطوير Node-RED من خلال متصفح عادي ، يمكن تشغيل النواة نفسها على منصات مختلفة - الكمبيوتر الشخصي ، RPi ، السحابة ، إلخ.Node-RED للمنزل الذكي
قررت تجربة Node-RED لكتابة نصوص وقواعد للمنزل الذكي. وهذا يعني الأتمتة. يتم إجراء الاتصال نفسه مع مختلف المحركات وخدمات الويب وأجهزة الاستشعار على OpenHAB. لماذا قررت عدم تنفيذ الأتمتة هناك؟ عدة أسباب:- في OpenHAB ، تتم كتابة النصوص والقواعد بلغتهم الخاصة. لم أكن أرغب في دراستها فقط من أجل تطبيق واحد.- تصحيح القواعد نفسها يكاد يكون مستحيلاً - إذا لم تعمل القاعدة ، فمن الصعب معرفة السبب- أود أن تكون قواعدي مستقلة عن الأجهزة وقنوات الاتصال والمنصات والبرامج نفسها للتواصل مع الأجهزة. حتى أتمكن من التبديل بسهولة إلى منصة UD أخرى ، على سبيل المثال Domoticz و MajorDomo و FHEM وأخذ قواعدي معي ، وليس إعادة كتابتها تحت منصة UD الجديدة.التحكم في الإضاءة بالحركة وأجهزة استشعار الضوء
لذلك دعونا نبدأ. في الواقع المهمة الأصلية بسيطة وتافهة:لقد تحكمت في نقاط LED للإضاءة في الممر. أريد أن يضيء الضوء على الحركة ويغلق نفسه بعد 10 ثوانٍ.دعونا نعقد المهمة قليلاً:- يجب أن يضيء الضوء فقط عندما يكون خارج الظلام- يجب أن تعتمد شدة الضوء على الوقت - حتى الساعة 9 مساءً ، يجب تشغيل الضوء بكثافة كاملة ، وبعد ذلك فقط بنسبة 10٪ كإضاءة خلفية.أجهزة استشعار ، فناني الأداء ، إلخ. حديد
البروتوكولات وخيارات الاتصال مع أجهزة الاستشعار والمشغلات التي لن أصفها هنا. يكفي أن نقول أنه في بيتي الذكي يتم اختزال جميع هذه البروتوكولات إلى واحد - MQTT ، ومن خلاله يتم الاتصال مع Node-RED بالفعل.إذن ما أجهزة الاستشعار والمشغلات التي أملكها؟1. جهاز استشعار الحركة. تنشر رسالة مفتوحة إلى الموضوع / myhome / state / Hall_motion عندما تكتشف الحركة وتغلق إذا لم تكن هناك حركة لمدة ثانيتين.2. مستشعر الضوء. يقيس سطوع إضاءة الشوارع في نطاق 0-1000 لوكس. تنشر رسالة مرة واحدة في الدقيقة في الموضوع / myhome / state / Lumin_Hall بمستوى الضوء الحالي.3. مصابيح LED باهتة التحكم. تم الاشتراك في الموضوع / myhome / command / Light_Hall / state. إذا كتبت 0 هناك - سينطفئ الضوء. 100 - يعمل عند أقصى سطوع. 1-99 - سيغير شدة الضوء. للإضاءة الليلية ، كثافة كافية 1.وصف التدفق في العقدة الحمراء
من المفترض أنك قمت بالفعل بتثبيت Node-RED. إذا لم يكن الأمر كذلك ، فاتبع الرابط أعلاه وقم بتثبيت أي خيار مناسب لك - على جهاز كمبيوتر ، وتوت العليق ، وكلاب ، وما إلى ذلك. في حالتي ، تم تثبيت Node-RED على RPi2 (في رأيي ، إنه يأتي حتى مع Raspbian ، لذلك لا يلزم تثبيت أي شيء على الإطلاق). لا يتطلب هذا التدفق تركيب أي مكتبات إضافية.المدخلات والمخرجات
بادئ ذي بدء ، نقوم بإنشاء المدخلات والمخرجات اللازمة لخوارزمية لدينا. سيكون هؤلاء عملاء MQTT مشتركين في الموضوعات ذات الصلة. نقوم بسحبهم من المكتبة على اليسار والتخصيص.ملاحظة: يمكن تغيير أسماء الكتلة المعروضة في إعداداتها.بالنسبة لمستشعر الضوء ، قم بإنشاء عقدة مستشعر ضوء Hall من إدخال MQTT:
في تكوينه ، يكفي تسجيل عنوان وسيط MQTT والموضوع.
يقوم الوسيط الخاص بي بالدوران على نفس المنصة ، لذا فقط اترك localhost.نقوم بإنشاء عقدة Hall Motion Sensor لمستشعر الحركة:
كل شيء هو نفسه بالنسبة له ، ما عليك سوى تعيين موضوع آخر / myhome / state / Hall_motion.
كما ترى عنوان الوسيط ومعلماته ، فإن هذه العقدة قد انتقلت بالفعل من العقدة السابقة ، لذلك لا تحتاج إلى إدخالها في عقدة جديدة.يبقى إضافة إخراج MQTT لعمل إخراج لمصباح LED الخافت. اسحب وأفلت إخراج MQTT وأطلق عليه Hall Hall Dimmer.
في المعلمات ، مرة أخرى ، تحتاج فقط إلى تحديد الموضوع المطلوب ، حيث سيتم إرسال الرسائل للتحكم في باهتة - / myhome / command / Light_Hall / state
ونتيجة لذلك ، حصلنا على ثلاث عقد لتدفقنا .
لن يؤذي اختبارهم للوظائف. إنه سهل.نقوم بتوصيل إخراج التصحيح إلى كتل الإدخال.
وقم بتوصيل مدخلات الإدخال بكتلة الإخراج.
في إعدادات هذه العقدة ، تحتاج إلى تغيير الحمولة إلى مستوى السطوع المطلوب للمصباح. على سبيل المثال ، في هذه الحالة هو 100.
يمكننا إنشاء العديد من كتل الحقن المتطابقة عن طريق النسخ واللصق وتغيير السطوع وتوصيله بالإخراج مثل هذا:
هذا سيعمل أيضا. حان الوقت للتحقق.
نضغط على زر النشر: تحت عقد MQTT ، من المفترض أن ترى رسالة صغيرة:
هذا يعني أنها متصلة بسمسار MQTT. إذا سار كل شيء وفقًا للخطة ، فيجب أن ترى في علامة تبويب التصحيح اليمنى رسائل من المستشعرات ، وإذا نقرت على المستطيلات على يسار عقد الحقن ، فيجب أن تتغير شدة الضوء للمصباح المتصل بالعاكس. إذا كان كل شيء يعمل ، يمكنك الذهاب إلى أبعد من ذلك.دائرة التحكم في إضاءة مستشعر الحركة
من أجل البساطة ، سأشير إلى الكتل المترابطة الفردية على أنها سلاسل. بادئ ذي بدء ، دعنا نحاول إنشاء دائرة بسيطة تعمل على تشغيل الضوء بواسطة مستشعر الحركة وإيقافه بعد مرور بعض الوقت. للقيام بذلك ، وفقًا لمفهوم Node-RED ، نحتاج إلى رسالة من مستشعر الحركة للوصول إلى باهتة من خلال كتل معينة والحصول على نص معين. أولاً ، سنتعامل مع إدراج الضوء.بادئ ذي بدء ، نختار من جميع الرسائل من مستشعر الحركة رسالة تحتوي على النص OPEN - وهذا يعني أن الحركة قد ظهرت. للقيام بذلك ، استخدم كتلة التبديل. قم بتوصيله بإخراج كتلة Hall Motion Sensor التي قمنا بإنشائها بالفعل.
سنقوم بتكوينه بحيث لا ينتج عن الكتلة سوى الرسائل ذات النص OPEN
كما ترى من الصورة ، ستقارن الكتلة الحمولة مع النص OPEN وترسل الرسائل إلى الإخراج إذا تطابق النص.يتطلب باهتة اللون لدينا إدخال الرسائل ذات السطوع المطلوب 0 ... 100. لن يفهم النص مفتوح. لذلك ، نستخدم كتلة التغيير لتغيير نص الرسالة.
في إعدادات هذه الكتلة ، اكتب التغيير المطلوب - حمولة الرسالة التي نغيرها إلى 100 - شدة الإضاءة المطلوبة.وأخيرًا ، نقوم بتوصيلها جميعًا بإدخال باهتة:
إذا قمت بتشغيل هذه الدائرة ، يمكنك التأكد من أنها تعمل - سيتم تشغيل الضوء في الحركة. يبقى للتأكد من أنه يتم إيقاف تشغيله أيضًا.للقيام بذلك ، استخدم وحدة الزناد وقم بتوصيلها بإخراج مستشعر الحركة.
تتيح لك كتلة المشغل إنشاء رسائل متأخرة ، ويمكن أيضًا إعادة تعيينها بواسطة رسالة محددة. سنقوم
بتكوينه بهذه الطريقة: يعني هذا الإعداد أنه عند وصول الرسالة الأولى ، لا يقوم المشغل بإرسال أي شيء ، ولكنه يبدأ تأخيرًا زمنيًا قدره 8 ثوانٍ وبعد ذلك يرسل رسالة تحتوي على النص 0. ويتم أيضًا إعادة تعيين المشغل إذا تلقى إدخالًا مع النص OPEN. ماذا يعني هذا في حالتنا؟افترض أن مستشعر الحركة يعرض رسالة مفتوحة. ستعيد هذه الرسالة الزناد إلى حالته الأصلية دون أي رد فعل. ثم بعد مرور بعض الوقت ، سيصدر مستشعر الحركة رسالة مغلقة. ستبدأ هذه الرسالة في تأخير الوقت و 8 ثوانٍ بعد ذلك سيعرض المشغل رسالة 0.إذا تأخرت الرسالة OPEN مرة أخرى خلال هذا الوقت ، فسيعود المشغل مرة أخرى إلى حالته الأصلية وسينتظر الرسالة التالية (التي سيتم إغلاقها منطقيًا). في هذه الحالة ، لن يعرض المشغل أي رسائل.وبهذه الطريقة ، أنشأنا موقِّتًا يخدمنا في إطفاء الضوء تلقائيًا بعد تعرض معين. إذا تذكرنا وصف مستشعر الحركة ، يصبح من الواضح سبب تعيين 8 ثوانٍ هنا ، وليس إضافة 10 - 2 ثانية بسبب سرعة مصراع مستشعر الحركة نفسه.يبقى لتوصيل إخراج الزناد باهتة ويمكنك بدء الدائرة للتحقق.
ألاحظ أنه من أجل البساطة ، أنشر لقطات شاشة للسلاسل المصححة بالفعل. يمكنك تعليق الكتل مع سلسلة Debug لفهم كيفية عملها ، وقد تبدو السلسلة كما يلي:
وليس هناك ما يدعو للقلق.ويمكنك القيام بذلك
على النحو التالي : بشكل عام ، من خلال النقر على المستطيلات على يسار كتل الحقن ، يمكنك تصحيح الدائرة بدون مكواة على الإطلاق - على الكمبيوتر المحمول أثناء رحلة في مترو الأنفاق أو حتى الكمبيوتر اللوحي.ضوء تشغيل / إيقاف الدائرة اعتمادًا على سطوع إضاءة الشوارع
نحتاج الآن إلى التأكد من أن الضوء لا يضيء إذا كان الشارع خفيفًا جدًا. للقيام بذلك ، نحتاج إلى إضافة سلسلة أخرى وتغيير السلسلة الرئيسية قليلاً لأخذ هذا العامل في الاعتبار.أولاً ، خذ كتلة التبديل التي نعرفها بالفعل وقم بتوصيلها بإخراج مستشعر الضوء.
سنقوم بتكوين هذه الوحدة بحيث ترسل رسائل من مستشعر الضوء إلى أحد المخرجات ، اعتمادًا على الإضاءة الحالية.
تعني الحالة أعلاه أنه إذا كانت الإضاءة أقل من 10 لوكس ، فسيتم إرسال الرسالة إلى الإخراج 1. وإلا ، فستذهب إلى الإخراج 2. لا تنس أنك تحتاج إلى تحديد
الخيار بحيث يتم توجيه الرسالة إلى واحد فقط من المخرجات.استنادًا إلى مبدأ التشغيل ، يتبين منطقيًا أنه إذا ظهرت الرسالة على الإخراج الأول (العلوي) ، فنحن بحاجة إلى تمكين الكشف عن الحركة ، وإذا تم تشغيلها في الثانية ، فقم بإيقاف تشغيلها.هنا ، بالطبع ، هناك 1000 و 1 طرق ممكنة ، أبسطها هو ببساطة حظر الرسالة لتشغيل الضوء من مستشعر الحركة إذا كان الضوء في الخارج. نحن ندرك ذلك.وتجدر الإشارة إلى أنه في Node-RED ، يتم تنفيذ محرك التنفيذ بناءً على الرسائل. على سبيل المثال لا رسالة - لا حدث ، لا يوجد رد فعل. يفرض هذا تفاصيل معينة في حالة وصول رسائل مختلفة بشكل غير متزامن ، أي في نقاط زمنية مختلفة. على سبيل المثال ، في هذه الحالة ، تكون الرسالة من مستشعر الضوء غير متزامنة مع الرسائل من مستشعر الحركة. لذلك ، من أجل مراعاة تأثير مستشعر الضوء ، نحتاج إلى تذكر المعلومات الموجودة في رسالته ثم تطبيقها في المرة القادمة التي تأتي فيها رسالة من مستشعر الحركة.في هذه الحالة ، يأتي السياق إلى الإنقاذ - وهو حقل حيث يمكنك تخزين المعلومات أثناء تنفيذ التدفق. السياق عالمي فيما يتعلق بالبيئة بأكملها ، أو محلي لتدفق معين ، أو بشكل عام فقط لكتلة معينة.في حالتنا ، سنستخدم سياقًا محليًا لهذا التدفق. على سبيل المثال ستكون المتغيرات مرئية لجميع الكتل في هذا التدفق. دعنا ننشئ كتلة تغيير ونربطها بالإخراج الأول من كاشف عتبة الضوء.كما
نتذكر ، تظهر رسالة على هذا الإخراج إذا أبلغ مستشعر الضوء أن إضاءة الشارع أقل من 10 لوكس. ضع في اعتبارك تكوين كتلة التغيير.
في هذه الحالة ، نستخدم قاعدة Set لتعيين المتغير flow.Light_enabled إلى نعم. وبالتالي ، قمنا بتعيين قيمة للمتغير العام ، والتي يمكننا استخدامها في كتل أخرى.بنفس الطريقة ، قم بإنشاء كتلة التغيير الثانية وقم بتوصيلها بالإخراج الثاني.
سيكون تكوينه على النحو التالي:
لمعرفة ما إذا كان هذا الكاشف يعمل بشكل صحيح ، يمكننا إنشاء دائرة بسيطة مع كتل Inject و Debug.
في الوقت نفسه ، في إعدادات كتلة الحقن ، نشير إلى أنه يجب إخراج قيمة متغير التدفق كل ثانية. Light_enabled
ثم يمكن رؤية نتيجة مستشعر الضوء بسهولة في علامة التبويب "تصحيح".
ستبدو دائرة تشغيل / إيقاف الضوء العامة لمستشعر الضوء مثل هذا
الآن ، لأخذ هذا التأثير في الاعتبار دائرة التحكم في مستشعر الحركة ، يكفي لنا إدخال كتلة المفتاح في دائرة المسار لتشغيل الضوء.
وقم بإعداده بحيث يتخطى الرسائل من مستشعر الحركة فقط إذا كان تدفق المتغير العالمي الخاص بنا مضبوطًا على نعم - أي إنه مظلم بالخارج.
انتهى! الآن يبدو تدفقنا مثل هذا:
تغيير سطوع المصباح حسب الوقت
لم يبق سوى القليل جدا. نريد تغيير شدة مصباح LED. على سبيل المثال إذا كانت مظلمة معنا ، ولكن الوقت قبل الساعة 9 مساءً ، يجب أن يضيء الضوء بكامل طاقته. ولكن بعد التاسعة - فقط في الطاقة المنخفضة ، مثل الإضاءة الليلية.للقيام بذلك ، قم بإنشاء كتلة حقن:
يمكن تكوينها بحيث تعرض رسالة في وقت محدد. تعيين الساعة 21:00 كل يوم.
في الوقت نفسه ، نلاحظ أنها ستصدر رسالة بقيمة 1. ستكون هذه شدة الإضاءة الخلفية المطلوبة في الوضع الليلي. لاستخدام هذه القيمة في دائرة التحكم في الضوء ، نستخدم نفس الحيلة مع المتغيرات العالمية. قم بإنشاء تغيير: قم
بحظره وتكوينه بحيث يتم تعيين قيمة المتغير من Light_Brightness من الرسالة.
لإعادة السطوع الأولي في الصباح ، قم بإنشاء كتلة حقن ثانية ، والتي سيتم تنفيذها في الساعة 6 صباحًا وتعطي قيمة سطوع 100. قم بتوصيلها هناك.
وبالتالي ، سيتم تعيين التدفق المتغير. Light_brightness القيمة 1 كل مساء في الساعة 9 والقيمة 100 كل صباح في الساعة 6. يبقى فقط لتطبيق هذا في الدائرة الرئيسية. لهذا ، لدينا بالفعل كتلة ضبط سطوع الضوء:
التي نحتاج فقط لتغيير الإعداد بحيث لا يعين ثابتًا ، ولكن قيمة التدفق المتغير.
النتيجة النهائية
التدفق النهائي ، خالي من كتل التصحيح ، يبدو أنيقًا ونظيفًا. عند الإنشاء ، استخدمنا فقط كتل الإنشاء من تثبيت Node-RED. ومع ذلك ، يوجد في stream.nodered.org أكثر من 800 قالب ومكتبة إضافية تسمح لك بإضافة العديد من الأشياء المختلفة.
بالنسبة لأولئك الذين يرغبون في تكرار هذه الخوارزمية ، أنشر التدفق الذي استخدمته لتصحيح الأخطاء:
بالإضافة إلى كود json الخاص به ، والذي يمكن استيراده بسهولة إلى أي إصدار من Node-RED واختباره.[{"id":"5afd41b4.d61318","type":"switch","z":"2384634b.17767c","name":"Movement detected?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"OPEN","vt":"str"}],"checkall":"false","outputs":1,"x":562,"y":285,"wires":[["381b0d6d.a0bd7a"]]},{"id":"35bac8e.57dd5b8","type":"trigger","z":"2384634b.17767c","op1":"5","op2":"0","op1type":"nul","op2type":"val","duration":"8","extend":false,"units":"s","reset":"OPEN","name":"Switch off delay","x":750,"y":373,"wires":[["e995e130.1e2118","af1f191f.498098"]]},{"id":"d85623d1.29b058","type":"change","z":"2384634b.17767c","name":"Light Brightness Adjustment","rules":[{"t":"set","p":"payload","pt":"msg","to":"Light_brightness","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":1013.9999389648438,"y":284.63330078125,"wires":[["e995e130.1e2118","af1f191f.498098"]]},{"id":"934ff922.ca34f","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"OPEN","payloadType":"str","repeat":"","crontab":"","once":false,"x":258.5,"y":408,"wires":[["5afd41b4.d61318"]]},{"id":"ea0e2e99.52a6f8","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"CLOSED","payloadType":"str","repeat":"","crontab":"","once":false,"x":269,"y":459,"wires":[["35bac8e.57dd5b8","5afd41b4.d61318"]]},{"id":"4187db59.93c2dc","type":"mqtt in","z":"2384634b.17767c","name":"Hall Light Sensor","topic":"/myhome/state/Lumin_Hall","qos":"2","broker":"bfc8eee2.a46c9","x":243,"y":146,"wires":[["c94e7c4.849f48"]]},{"id":"c94e7c4.849f48","type":"switch","z":"2384634b.17767c","name":"Light Threshold Selector","property":"payload","propertyType":"msg","rules":[{"t":"lt","v":"10","vt":"num"},{"t":"else"}],"checkall":"false","outputs":2,"x":517.3333129882812,"y":145.7166748046875,"wires":[["48e6a07a.962798"],["ca8b6623.f11c7"]]},{"id":"381b0d6d.a0bd7a","type":"switch","z":"2384634b.17767c","name":"Light Enabled?","property":"Light_enabled","propertyType":"flow","rules":[{"t":"eq","v":"Yes","vt":"str"}],"checkall":"true","outputs":1,"x":775.5,"y":285,"wires":[["d85623d1.29b058"]]},{"id":"48e6a07a.962798","type":"change","z":"2384634b.17767c","name":"Enable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"Yes","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":822,"y":109,"wires":[[]]},{"id":"ca8b6623.f11c7","type":"change","z":"2384634b.17767c","name":"Disable Light","rules":[{"t":"set","p":"Light_enabled","pt":"flow","to":"No","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":824.6666259765625,"y":177.51666259765625,"wires":[[]]},{"id":"b6ea27c1.c33cd","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"Light_enabled","payloadType":"flow","repeat":"1","crontab":"","once":false,"x":330.5,"y":678,"wires":[["db66aec8.b3abc"]]},{"id":"db66aec8.b3abc","type":"debug","z":"2384634b.17767c","name":"Light_enabled","active":false,"console":"false","complete":"payload","x":670.5,"y":679,"wires":[]},{"id":"fa4b50b8.e6e0f","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"5","payloadType":"num","repeat":"","crontab":"","once":false,"x":233.5,"y":212,"wires":[["c94e7c4.849f48"]]},{"id":"e7b1a39.f9e596","type":"inject","z":"2384634b.17767c","name":"","topic":"","payload":"100","payloadType":"num","repeat":"","crontab":"","once":false,"x":235,"y":266,"wires":[["c94e7c4.849f48"]]},{"id":"4b2f3c6f.de9aac","type":"mqtt in","z":"2384634b.17767c","name":"Hall Motion Sensor","topic":"/myhome/state/Hall_motion","qos":"2","broker":"87b370d1.dd497","x":247,"y":334,"wires":[["5afd41b4.d61318","35bac8e.57dd5b8"]]},{"id":"e995e130.1e2118","type":"mqtt out","z":"2384634b.17767c","name":"Hall Light Dimmer ","topic":"/myhome/command/Light_Hall/state","qos":"0","retain":"true","broker":"87b370d1.dd497","x":1310,"y":315,"wires":[]},{"id":"781e72a7.3c0abc","type":"inject","z":"2384634b.17767c","name":"Reduce Brightness at 21:00","topic":"Night Brightness","payload":"1","payloadType":"str","repeat":"","crontab":"00 21 * * *","once":false,"x":339,"y":517,"wires":[["adbf1e2e.3f5ae"]]},{"id":"aa444315.a48ad8","type":"inject","z":"2384634b.17767c","name":"Normal Brightness at 6:00","topic":"Night Brightness","payload":"50","payloadType":"num","repeat":"","crontab":"00 6 * * *","once":false,"x":349.6666259765625,"y":604.683349609375,"wires":[["adbf1e2e.3f5ae"]]},{"id":"adbf1e2e.3f5ae","type":"change","z":"2384634b.17767c","name":"Light Brightness Adjustment","rules":[{"t":"set","p":"Light_brightness","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":692,"y":554,"wires":[[]]},{"id":"af1f191f.498098","type":"debug","z":"2384634b.17767c","name":"","active":true,"console":"false","complete":"false","x":1303.5,"y":429,"wires":[]},{"id":"bfc8eee2.a46c9","type":"mqtt-broker","z":"2384634b.17767c","broker":"localhost","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willRetain":null,"willPayload":"","birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":""},{"id":"87b370d1.dd497","type":"mqtt-broker","z":"2384634b.17767c","broker":"localhost","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willRetain":null,"willPayload":"","birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":""}]
الملخص
في هذا المقال ، حاولت توضيح وإخبار مدى سهولة تنفيذ خوارزميات التشغيل الآلي للمنزل اليومية في بيئة Node-RED. لقد حاولت أيضًا إظهار المزايا الرئيسية لبيئة البرمجة هذه ، مثل:- تمثيل رسومي منطقي للاتصالات والوظائف- سهولة البرمجة وسهولة تصحيح البرامج النصية للمستخدم- استقلالية الأجهزة والمنصات للخوارزميات الناتجة - سيعمل هذا البرنامج النصي بشكل جيد مع OpenHAB ومع ioBroker و مع أي منصات منزلية ذكية أخرى تدعم بروتوكول MQTT.- سهولة تبادل الخوارزميات الجاهزة بين المستخدمين بفضل Copy-Paste JSON code ووجود منصة على الإنترنت لتبادل الحلول الناجحة.يمكن لـ Node-RED القيام بأكثر من ذلك بكثير ، على سبيل المثال ، استقبال الطقس من الإنترنت ، أو إرسال إشعارات إلى Twitter ، أو العمل مع Nest thermostats. وعلى أساس هذا ، يمكنك إنشاء العديد من خوارزميات الأتمتة الأخرى المفيدة والمفيدة. ولكن هذه مواضيع للمقالات التالية.