الإعلانات
مآخذ الطاقة الذكية هي أبسط طريقة لأتمتة منزلك ، ولكن بسعر حوالي 40 دولارًا لكل مقبس قائم على Wi-Fi أو ZWave ، فمن غير المحتمل أن تشتري أكثر من القليل.
قد يكون لديك بالفعل بعض المقابس الرخيصة المستندة إلى RF - على الرغم من ذلك النوع الذي يأتي مع جهاز التحكم عن بعد المخصص الخاص بهم ، ولديك بعض محددات القنوات والمعرفات في الخلف. لسوء الحظ ، لا يوجد محاور المنزل الذكي في السوق معركة محاور المنزل الذكي: ما هو موجود وما هو قادم؟ قراءة المزيد التي تعمل مع هؤلاء. ألن يكون رائعًا إذا تمكنت من ربطها بنظام المنزل الذكي DIY بطريقة أو بأخرى؟ حسنًا ، يمكنك - بكل سهولة - أن تحصل على 10 دولارات.
مع المزيد من العمل ، يمكنك أيضًا دمج بعض الأجهزة البعيدة الأخرى المستندة إلى الترددات اللاسلكية ، مثل هذه شاشة السينما الميزانية.
ماذا تحتاج:
- ESP8266 لوحة تطوير NodeMCU v12E (النموذج الدقيق لا يهم ، يجب أن يكون الإصدار v1 أو v3 جيدًا أيضًا). السبب في أننا نستخدم لوحة NodeMCU هو أننا نريد اتصال Wi-Fi السهل لاحقًا. الرابط هو لحزمة من 2 ، والتي تعمل بسعر 7 دولارات لكل منها.
- حزمة 433 ميجا هرتز الارسال والاستقبال (حوالي 3 دولارات).
- مكتبات RCSwitch و MQTT ، وكودنا - كل ذلك متاحة للتنزيل من جيثب.
- خادم MQTT محلي أو بعيد.
- تعمل بعض مقابس التحكم في التردد اللاسلكي على نطاق 433 ميجاهرتز (يجب أن تظهر على وحدة التحكم عن بُعد). اشتريت خاصتي من Maplin كحزمة من 3 مقابل 20 جنيهًا إسترلينيًا (25.89 دولارًا).
إذا كانت هذه هي المرة الأولى التي تقوم فيها ببرمجة لوحة NodeMCU ، فستحتاج إلى تنزيل مكونات Arduino الإضافية لها: تابع مع الجزء الأول من اردوينو القاتل دليل تمهيدي تعرف على Arduino Killer: ESP8266ماذا لو أخبرتك بوجود لوحة مطورة متوافقة مع Arduino مزودة بشبكة Wi-Fi مدمجة بأقل من 10 دولارات؟ حسنًا ، هناك. قراءة المزيد لشريحة NodeMCU / ESP8266. ستحتاج أيضًا السائقين CH430. يمكنك إيجاد وقع السائقين macOS CH430 هناأو نوافذ هنا.
لقد استخدمت v1.6.5 من Arduino لأن أي شيء أعلى يطرح مشاكل أكثر مما يحل. الرجوع إلى إصدار سابق إذا لم تكن قد فعلت ذلك من قبل.
قبل المتابعة ، سأفترض مستوى أساسيًا من المعرفة حول برمجة اردوينو برمجة Arduino للمبتدئين: البرنامج التعليمي لمشروع التحكم في إشارات المروريساعدك بناء وحدة التحكم في إشارات المرور Arduino على تطوير مهارات الترميز الأساسية! نحن نبدأ. قراءة المزيد ، وأن لديك إعداد NodeMCU في مجلس الإدارة ، وأنك قادر على تحميل بعض التعليمات البرمجية بشكل صحيح. كان يجب عليك أيضًا إضافة المكتبات المدرجة في تنزيلنا إلى اردوينو / مكتبات مجلد.
إذا كان لديك موجود مكتبة PubSubClient أو MQTTونسخه احتياطيًا وإزالته - الشيء الذي أدرجته في التنزيل هو الوحيد الذي يمكنني فيه تلقي الرسائل بشكل موثوق به على NodeMCU ، وحاولت كثير!
استنشاق التردد اللاسلكي (اختياري)
هذه الخطوة ليست ضرورية إذا كنت تريد فقط التحكم في مفتاح DIP أو مقابس التوصيل المحددة - يتم دعمها من خارج الصندوق ، و ستحتاج إلى الحد الأدنى من تعديل الشفرة (لا يزال هذا مثيرًا للاهتمام أولاً ، على الرغم من ذلك ، ستفهم ما يحدث خلف مشاهد).
إذا كانت لديك أجهزة تحكم عن بعد أخرى ترغب في محاولة إضافتها ، فستحتاج أولاً إلى "التعرف" على رموز الترددات اللاسلكية التي يتم إرسالها. للقيام بذلك ، قم بتحميل تلقيت Demo_Advanced رسم من القائمة -> أمثلة -> RCSwitch مجلد ، وقم بتغيير السطر التالي من 0
mySwitch.enableReceive (0) ؛ // Receiver on interrupt 0 => أي رقم التعريف الشخصي رقم 2
إلى 2.
mySwitch.enableReceive (2) ؛ // Receiver on GPIO 2 / D4.
قم بتوصيل وحدة الاستقبال على النحو التالي. بالنظر إلى الجزء الأمامي من لوحة جهاز الاستقبال (وهو أطول جهازين ، يكون جهاز الإرسال مربعًا) - الجانب مع المكونات:
- أقصى اليمين هو GND. قم بالاتصال بـ GND على لوحة NodeMCU.
- أقصى اليسار هو VCC. الاتصال VIN على لوحة NodeMCU.
- منتصف دبابيس هي الإشارة. قم بتوصيل أحدهما بـ D4 على NodeMCU (إنهما متصلان معًا ، لذا لا يهم أيهما).
الآن تحميل التعديل تلقيت Demo_Advanced، وعند الانتهاء ، افتح الشاشة التسلسلية وابدأ بالضغط على الأزرار الموجودة على أجهزة التحكم عن بُعد. انسخ العلامة العشرية (بما في ذلك طول البت) ، وطول النبض ، والبروتوكول عند الضغط على زر.
بعد القيام بذلك ، وجدت أن شاشة العرض الخاصة بي كانت تستخدم
- SCREEN UP: تم تلقيه 8694273/24 بت ؛ طول النبض: 355 أو 356 ؛ بروتوكول: 1
- SCREEN DOWN: تم استلام 8694276/24 بت ؛طول النبض: 355 أو 356 ؛ بروتوكول: 1
استمر في الأزرار بقدر ما تحتاج.
اختبار جهاز الإرسال
بعد ذلك ، سنحاول إرسال الرموز باستخدام جهاز الإرسال. قم بتوصيل وحدة الإرسال (المربع المربع) على النحو التالي. كن حذرا: وضع العلامات على هذه الدبابيس فظيع.
يقع دبوس VCC بالفعل في المنتصف ، وليس على الجانب الأيسر. لقد دمرت وحدة واحدة في عملية اكتشاف ذلك. هذا الشيء الذي يقول "ATAD" هو في الواقع "DATA" ، مكتوبة إلى الخلف. مرة أخرى ، تنتقل البيانات إلى D4 و VCC إلى VIN و GND إلى GND (قم بإزالة وحدة الاستقبال ، ولم تعد بحاجة إليها).
تحميل أمثلة -> RCSwitch -> TypeB_WithRotaryOrSlidingSwitchesومرة أخرى ، قم بتغيير دبوس البيانات:
mySwitch.enableTransmit (10) ؛
إلى
mySwitch.enableTransmit (2) ؛
ملاحظة ، يتم تضمين مجموعة متنوعة من الأمثلة في المكتبة ، وأي منها يعمل لك يعتمد على نوع المفتاح الذي لديك. النوع A (مفاتيح dip) و B (الأقراص أو أشرطة التمرير) هما الأكثر شيوعًا - الرجوع إلى الصور الموجودة في صفحة RCSwitch. بالنسبة للنوع B ، يكون تشغيل مأخذ التوصيل وإيقافه بسيطًا مثل:
mySwitch.switchOn (1، 4) ؛ mySwitch.switchOff (1 ، 4) ؛
حيث 1 هو معرف القناة (الاتصال الهاتفي العلوي) ، و 4 هو معرف مأخذ التوصيل (الاتصال الهاتفي السفلي). كُتبت بأرقام رومانية على مقابسي. وبالتالي يمكن معالجة 16 مقبسًا فرديًا كحد أقصى ، على الرغم من أن العديد من المقابس يمكنها استخدام نفس العنوان إذا كان لديك عدة أجهزة للتشغيل في آن واحد.
ومع ذلك ، كانت شاشة جهاز العرض مختلفة قليلاً - فقد استخدمت طولًا مختلفًا للنبض. لذلك ، لتشغيل هذه ، عملت ما يلي. لاحظ أنه يمكنك أيضًا تحديد بروتوكول مختلف إذا احتاج جهاز التحكم عن بُعد إليه ، ولكن تأكد من تحديد البروتوكول قبل طول النبض. يتم استبدال طول النبض عند تغيير البروتوكول.
// لاحظ أن شاشتي تتطلب في الواقع الضغط على زرين (ليس ضغطًا طويلاً ، ولكن ضغطتين جسديتين يضغط) ، لذلك أنا أتأخر قليلاً ثم أرسل نفس الإشارة مرة أخرى باطلة screenUp () { mySwitch.setPulseLength (358) ؛ mySwitch.send (8694273،24) ؛ // (الكود العشري ، عدد البتات) تأخير (2000) ؛ mySwitch.send (8694273،24) ؛ } void screenDown () {mySwitch.setPulseLength (358) ؛ mySwitch.send (8694276،24) ؛ تأخير (2000) ؛ mySwitch.send (8694276،24) ؛ }
اختبر جميع رموزك تعمل أولاً قبل الانتقال إلى الخطوة التالية.
التحكم عبر MQTT
افتح الرسم الذي قمت بتنزيله من Github المسمى mqtt_rcswitch.ino، وابدأ بتعديل SSID للشبكة وكلمة المرور لمنزلك. بعد ذلك ، قم بتغيير اسم القناة إذا أردت ، وقم بتعيين خادم MQTT. إذا لم يكن لديك خادم MQTT يعمل على تثبيت OpenHAB ، اقرأ الجزء الثاني من دليل المبتدئين في OpenHAB دليل OpenHAB للمبتدئين الجزء 2: ZWave و MQTT والقواعد والرسوم البيانيةOpenHAB ، برنامج التشغيل الآلي للمنزل مفتوح المصدر ، يتجاوز بكثير قدرات أنظمة التشغيل الآلي للمنزل الأخرى في السوق - ولكن ليس من السهل إعداده. في الواقع ، يمكن أن يكون محبطًا تمامًا. قراءة المزيد . لاحظ أن الرمز الخاص بي مصمم لمقابس من النوع B (مفتاح دوار) ، على الرغم من أنه يمكنك تعديله بسهولة لمفاتيح DIP أيضًا.
أهم جزء من الكود هو وصلت الرساله() الدالة ، التي تستجيب لأوامر MQTT الواردة. في هذه الوظيفة ، نتحقق أولاً من الكلمة الرئيسية الرئيسية - اخترت "التبديل" و "الشاشة". في حالة "التبديل" ، نقوم بعد ذلك بتحليل القناة ومعرف التوصيل ؛ ثم تحقق من نص الحمولة للأمر.
رسالة باطلة مستلمة (موضوع السلسلة ، حمولة السلسلة ، حرف * بايت ، طول int غير الموقع) {if (topic.indexOf ("switch")> = 0) {/ تحكم بالتبديل ، قم بتحليل القناة ومعرف المكونات int channel = getValue (الموضوع ، '/' ، 3) .toInt () ؛ int plug = getValue (topic، '/'، 4) .toInt ()؛ if (payload == "on") {mySwitch.switchOn (channel، plug) ؛ } آخر {mySwitch.switchOff (channel، plug)؛ }} else if (topic.indexOf ("screen")> = 0) {// screen control if (payload == "up") {screenUp ()؛ } آخر إذا (payload == "down") {screenDown () ، }} / * أضف آخر آخر إذا كنت هنا للاستماع لمزيد من الأوامر (أو فقط قم بتعديل الأمر أعلاه إذا كنت لا تريد الشاشة) * / }
افتراضيًا ، تعمل أوامر MQTT التالية:
غرفة المعيشة / التحكم / التبديل / X / Y (حيث X هي القناة و Y هي معرف القابس ؛ مع نص الرسالة قيد التشغيل أو الإيقاف)
غرفة المعيشة / التحكم / الشاشة (مع نص الرسالة لأعلى أو لأسفل)
استخدم سطر الأوامر أو عميل GUI MQTT لاختبار أجهزتك قبل إضافتها إلى OpenHAB.
إضافة إلى OpenHAB
كخطوة أخيرة ، نحتاج فقط إلى إنشاء بعض العناصر لمفاتيح التبديل هذه في OpenHAB. لقد حددت العناصر التالية في الوقت الحالي ، ولكن يجب أن تتمكن من معرفة كيفية إضافة المزيد:
/ * أجهزة RF433mHz * / تبديل شاشة السينما "Screen" (السينما) {mqtt = "> [broker: livingroom / control / screen: command: ON: down]،> [broker: livingroom / control / screen: command: OFF: up]"} Switch Switch41 "Switch41" (Cinema) {mqtt = "> [broker: livingroom / control / switch / 4/1: command: ON: on]،> [broker: livingroom / control / switch / 4/1: command: OFF: إيقاف]"} Switch Switch42 "Switch42" (Cinema) {mqtt = "> [broker: livingroom / control / switch / 4/2: command: ON: on]،> [broker: livingroom / control / switch / 4/2: command: OFF: إيقاف]"}
يجب أن تكون الآن قادرًا على التحكم في أجهزة RF الخاصة بك من OpenHAB! الشيء الوحيد الذي فوجئت به كان النطاق - كانت عقدة واحدة قادرة على تغطية معظم منزلي. يمكنك بالطبع إضافة عقدة أخرى ، والاستماع إلى نفس القناة ، والتي ببساطة تكرر نفس الأوامر ، إذا كنت بحاجة إلى مزيد من التغطية.
القيد الوحيد الذي يجب أخذه في الاعتبار هو أن المقابس نفسها لا يمكنها الإبلاغ عن حالتها ، لذلك إذا كنت استخدام جهاز التحكم عن بعد الأصلي ، والتحكم في حالة المقبس قد لا تنعكس بدقة داخل OpenHAB. التزم باستخدام واجهة OpenHAB فقط ويجب أن تكون بخير.
أسئلة أو مشاكل؟ اسأل في التعليقات ، وسأبذل قصارى جهدي للمساعدة. إذا كنت ترغب في تحسين الرمز الخاص بي ، فلا تتردد في إرسال طلب سحب.
جيمس حاصل على درجة البكالوريوس في الذكاء الاصطناعي ، وهو حاصل على شهادة CompTIA A + و Network +. وهو المطور الرئيسي لـ MakeUseOf ، ويقضي وقت فراغه في لعب كرة الطلاء VR وألعاب الطاولة. لقد كان يبني أجهزة الكمبيوتر منذ أن كان طفلاً.