حكاية كيفية أتمتة الشقة باستخدام Node-RED. الجزء الثاني

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



إضاءة


للتحكم في الإضاءة ، يتم استخدام العديد من المكونات:

  • ستائر بمحركات
  • إضاءة خافتة.

يلمع


ينقسم الضوء في الغرف إلى منطقتين. أنا استخدم مصابيح LED قابلة لتعديل الضوء. أستخدم ثلاث وحدات للتحكم:
باهتة مدمجة FIBARO Dimmer 2
باهتة مدمجة FIBARO Dimmer 2

المدمج في التتابع المزدوج FIBARO مفتاح مزدوج 2x1.5kW
مدمجة ثنائية الترحيل FIBARO Double Switch 2x1.5kW

المدمج في التتابع FIBARO مفتاح واحد 2.5KW
تتابع مدمج FIBARO Single Switch 2.5kW

Dimmer يمكن أن يختار تلقائيًا طريقة التعتيم (على الحواف الأمامية والخلفية للمرحلة) ومعايرة الحد الأدنى والحد الأقصى للسطوع. نظرًا لأن لدي نظامًا ثلاثي الأسلاك مقدمًا لجميع المقابس ، لم يكن علي استخدام ممر جانبي. لا تومض مصابيح LED ولا تضيء عندما لا يكون هناك جهد. بالنسبة للوحدات القابلة للخفت ، أستخدم مفاتيح الرنين حتى تتمكن من ضبط السطوع.


مخطط الأسلاك باهتة ثلاثة أسلاك

وإليك كيف يعمل:

  • - , ( ).
  • - , — . . , .
  • , , . — .
  • , . , 1% .
  • , 15 .
  • , .














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

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

من بين محركات 220 فولت ، كان الاختيار صغيرًا: إما Somfy الفرنسي أو Dooya الصيني. Somfy أكثر هدوءًا ولكنه أيضًا أكثر تكلفة ، لذلك وقع الاختيار على محركات Dooya DM35S. أمرت مع السحابات على "Aliexpress". يحتوي المحرك على مفتاحي حد يضبطان الوضع الأقصى والأدنى.


المحرك مع يتصاعد

كانت المشكلة التالية هي أنبوب لف الستائر. وفقًا لقواعد رسالة البريد ، يمكنك إرسال طرد لا يزيد طوله عن 180 سم ، وأحد النوافذ التي أمتلكها يزيد عن 2 متر. في أقرب سوق للبناء ، وجدت أنبوب ألومنيوم قطره المطلوب - 50 مم. بعد تثبيت المحركات في الأنابيب ، يبقى العثور على ستائر التعتيم. لقد طلبت القماش في مقاسي من "Aliexpress" بعد الاتفاق مع البائع على أنه سيرسل لي القماش فقط ، بدون آليات.


وتجميعها الستار على ثابت

يتم التحكم في الستائر باستخدام الرول مصراع FIBARO 2 Z-الموجة وحدة التحكم أعمى. كوة


وحدة التحكم

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


المجمعة

في كل غرفة وفي المطبخ. يمكنك التحكم في الستائر إما من خلال المفاتيح الموجودة بجوارها ، أو باستخدام واجهة أو برنامج نصي.

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

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








مثال العمل

نظام الوسائط المتعددة


لدي العديد من أجهزة الوسائط المتعددة مع أجهزة التحكم عن بعد المختلفة في غرفة المعيشة ، وأردت التحكم فيها بواسطة زر واحد.

على الإنترنت ، وجدت رموز IR منفصلة لتشغيل وإيقاف مكبر الصوت والتلفزيون وموزع HDMI. باستخدام البرنامج النصي pronto_broadlink Python ، تم تحويلها إلى base64 ، ثم تم تحويلها إلى صفيف من البايتات وكتابتها إلى قاعدة رمز IR. لذلك ، ليس من الضروري الآن معرفة حالة الجهاز الآن: يمكنك ببساطة إرسال الإشارة مرة أخرى.

نظرًا لأن مضخم صوتي قديم جدًا ولا يعرف كيفية معالجة صورة 4K عبر HDMI ، فقد اشتريت مقسم HDMI. يسمح لك بتقسيم إشارة الفيديو والصوت إلى منفذي HDMI منفصلين: أحدهما متصل بمكبر الصوت ، والثاني بالتلفزيون.


مكبر للصوت والأجهزة الأخرى

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

إذا غادر الجميع المنزل ، يتم إيقاف تشغيل جميع أجهزة الوسائط المتعددة. مشهد التحكم الإعلامي




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

لقد حاولت استخدام BLE ، ولكن في حالتي ، لم يكن مستقرًا جدًا واعتمد بشكل كبير على جهاز إرسال الهاتف. كشف التواجد التلقائي




أجهزة استشعار السلامة


يتم تثبيت أجهزة قفل Gidrolock على أنابيب المياه . عندما يقصر سلك التحكم في الطور ، يغلق المشغل الصنبور ؛ عند فصله ، يفتح. كلا المحركين متصلان بترحيل مدمج من Philio .

Gidrolock
يتم

التحكم في محرك Gidrolock Relay بواسطة مستشعرات NEO Coolcam Z-Wave الموجودة في مناطق التسرب المحتمل. ترتبط جميع المستشعرات بشكل مباشر مع المرحل بحيث يتم إغلاق الماء دون مشاركة وحدة التحكم. لمنع الصنبور من التورم ، يتم فتحه وإغلاقه كل أسبوعين ليلاً. محرك أتمتة محرك الأقراص عندما يدخن فيليو مستشعر




يتم إيقاف التهوية حتى لا تضخم النار. في الوقت نفسه ، يتم إرسال رسالة إلى دردشة البرقية ، والمستشعر يصرخ بشكل مقرف.

أجهزة استشعار وأجهزة أخرى



تفويض الخادم


هذه الوحدة هي تنفيذ بسيط لخدمة الترخيص.
هناك طريقتان http: سيتحقق أحدهما مما إذا كان الطلب صادرًا من الشبكة الداخلية وإذا كان الأمر كذلك ، فسيسمح للمستخدم بإصدار رمز JWT له. يتم تشفير الرمز المميز JWT باستخدام RSA 256 ، يجب تسجيل المفتاح الخاص في الملف المجاور له. إذا لم يكن الطلب من الشبكة الداخلية ، فسيتم إعادة توجيه المستخدم إلى صفحة تسجيل الدخول ، حيث يجب عليه إدخال تسجيل الدخول وكلمة المرور وتسجيل الدخول. نظرًا لأنه ليس من المفترض الفصل بين المستخدمين ، فإن ملف تسجيل الدخول وكلمة المرور في نموذج مشفر (SHA 512) قريبان في ملف التكوين.

خادم MQTT


يتم تنفيذ خادم MQTT باستخدام مكون aedes .

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

عقد حمراء مخصصة


عند كتابة الأتمتة ، كان مطلوبًا تنفيذ عقدة إضافية واثنتين للانتهاء.

اضطررت إلى تعديل node-red-contrib-openzwave ، حيث لم يتم قبول طلب السحب الخاص بي إلا بعد 7 أشهر ، ولكن الآن يمكنك استخدام المكتبة من npm. يتكون الصقل من رمي حدث إزالة العقدة.



تم أيضًا إنهاء العقدة MQTT. في الواقع ، فإن التحسين الرئيسي فيه هو سحب معرف العميل المتصل وكتابته مرة أخرى عند إرساله إلى قائمة الانتظار. هنا يمكنك الحصول على وظيفة التدفق الفرعي. كان من المفترض أيضًا نقل أي بيانات إلى إدخال عقدة MQTT ، لكنها لم تكن مفيدة.



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



أمامي


كل مكون نشط في الشقة ، والذي يتم اختتامه في التشغيل الآلي ، هو وحدة نمطية في الأمام. كل وحدة قائمة بذاتها وتحتوي على جميع المكونات اللازمة للعرض. تنقسم الوحدات إلى مجموعتين: ثابت و Z-Wave. يجب أن تنفذ الوحدات واجهة واحدة.

واجهه المستخدم
export interface INode {
    id: string;
    type: NodeTypes;
    name: string;
    addWidget: ComponentClass<AddProps> | StatelessComponent<AddProps>;
    model: INodeModelConstructor;
    service?: INodeServiceConstructor;
    smallComponent: ComponentClass<WidgetProps<any>> | StatelessComponent<WidgetProps<any>>;
    bigComponent: ComponentClass<WidgetProps<any>> | StatelessComponent<WidgetProps<any>>;
    dialogEditComponent: ComponentClass<WidgetProps<any>> | StatelessComponent<WidgetProps<any>>;
    dialogViewComponent: ComponentClass<WidgetProps<any>> | StatelessComponent<WidgetProps<any>>;
}


مثال على التنفيذ
class Widget extends BaseWidget implements INode {
    model: INodeModelConstructor = Model;
    manufacturerid: string = '0x0086';
    producttype: string = '0x1a02';
    productid: string = '0x0064';
    addWidget: StatelessComponent<AddProps> = AddWidget;
    service: INodeServiceConstructor = Service;
    smallComponent: StatelessComponent<WidgetProps<Model>> = SmallComponent;
    bigComponent: StatelessComponent<WidgetProps<Model>> = BigComponent;
    dialogEditComponent: ComponentClass<WidgetProps<Model>> = DialogEditComponent;
    dialogViewComponent: ComponentClass<WidgetProps<Model>> = DialogViewComponent;
}
export default Widget;


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

بالنسبة إلى وحدات Z-Wave ، قمت بتنظيم مستودع مشترك وتتبع جميع التغييرات عليه.

تطبق الوحدة العرض بطريقتين:

  • للشاشات "الكبيرة" (الكمبيوتر اللوحي ، الكمبيوتر) ؛
  • للهواتف.

بناءً على نوع الجهاز ، سيتم تحديد التحكم باللمس أو الماوس.

تم إنشاء التطبيق باستخدام webpack + babel: وفقًا للإعدادات الحالية ، يتم تجميعه للإصدارين الأخيرين من Firefox و Chrome و Chrome Android.

ميزات رموز المصدر




تم تعطيل جميع مصادر التدفق ، حتى لا يتم إلقاء الأخطاء في السجل. يتم حذف عقدة التكوين لـ Z-Wave: تكون عربات التي تجرها الدواب إذا لم تجد وحدة تحكم Z-Wave ، وتسقط العقدة- RED بأكملها. يجب أن يبدو شيء مثل هذا:


لكي يعمل محمل تقويم العمل ، تحتاج إلى التسجيل في data.gov.ru ، والحصول على رمز مميز هناك وإدخاله بعد access_token:


يتم تنزيل توقعات الطقس من darksky.net مرة واحدة كل 15 دقيقة. يحتاج أيضًا إلى رمز مميز ، تحتاج إلى التسجيل وإدخال الرمز المميز بعد التوقعات إلى الإحداثيات:


لإرسال إشعارات برقية ، تحتاج إلى الحصول على برنامج الروبوت الخاص بك ، وأدخله في عقدة تكوين Telegram واكتب معرف الدردشة عند الضرورة. في حالة التدفق الخاص بي ، هذا هو التدفق الفرعي:



يتم تقسيم المصادر إلى الأمام والخلف. في الجزء الخلفي يكمن:

  • تفويض الخادم.
  • خادم MQTT.
  • وحدات عقدة حمراء مخصصة.
  • التدفقات المصدرة في ملف واحد ، والتي يمكن تحميلها إما إلى حسابك الخاص أو نسخة منفصلة للاختبارات.
  • مشروع لـ Node-RED ، حيث تحتاج إلى تثبيت الوحدات ثم تحميل التدفق المصدر فقط (الوحدات موجودة بالفعل في المشروع).
  • النسخ الاحتياطي قاعدة مونغو.

يمكنك العثور على معلومات تثبيت أكثر تفصيلاً في ملف المستند التمهيدي في مستودع github .

الخطط


الخطط هي استخدام ميكروفون الهاتف الذكي أو الجهاز اللوحي المثبت على الحائط للتحكم الصوتي. أخطط لنشر نظامي مفتوح المصدر على خادم يعتمد على CMU Sphinx .

أخطط أيضًا لتجميع وحدة لأخذ قراءات عدادات السباكة والكهرباء ونقلها.

يجدر أيضًا النظر في استخدام الإحصاءات المتراكمة للعديد من المعلمات من أجل تحسين الأتمتة.

استنتاج


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

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

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

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

All Articles