التحكم في الأجهزة الكهربائية المنزلية ("المنزل الذكي") من خلال روبوت محادثة على Raspberry Pi. نحن نبني نظامًا منزليًا ذكيًا غير مكلف يعمل بنفسك استنادًا إلى حل المنزل الذكي Raspberry Pi Raspberry Pi

بفضل مجموعة كبيرة من الوحدات الإضافية ، يعد الكمبيوتر المصغر Raspberry Pi الأنسب لأولئك الذين يرغبون في بناء أنظمة منزلية ذكية غير مكلفة (المنزل الذكي) بأيديهم.

يمكن استخدام Raspbian ، المستند إلى Linux kernel ، كنظام تشغيل ، إلى جانب امتدادات مثل Pimatic. من الأسهل أيضًا تجميع "المنزل الذكي" باستخدام حلول البرامج والأجهزة المتكاملة على "منصة مفتوحة" ، مثل openHAB أو Fhem أو SHC (التحكم في المنزل الذكي) أو wiButler.

وحدات المنزل الذكي لـ Raspberry Pi

يكون بناء نظام المنزل الذكي على Raspberry Pi أمرًا منطقيًا فقط عندما يمكن استخدامه للتحكم في الأجهزة المختلفة ، وهذا يتطلب الوحدات المناسبة.

نظرًا لأن Raspberry Pi هو منتج شائع لعشاق DIY ، فهناك مجموعة كبيرة من وحدات Smart Home في السوق. سنعرض لك بعضًا من أكثرها إثارة للاهتمام.

433 ميجا هرتز - جهاز استقبال وجهاز إرسال لـ Raspberry Pi

غالبًا ما يتم استخدام التردد 433 ميجاهرتز في مكونات نظام المنزل الذكي بأسعار معقولة ، مثل مفاتيح الرادياتير وأجهزة تنظيم الحرارة الموجودة في متاجر الأجهزة.

تعتبر أجهزة الإرسال والاستقبال هذه مثالية للتثبيت في نظام المنزل الذكي المبني على Raspberry Pi. يمكن شراء حزمة من هاتين الوحدتين بسهولة مقابل حوالي 600 روبل.

وحدة الكاميرا لـ Raspberry Pi


مع وحدة الكاميرا المرفقة ، يمكن استخدام Raspberry Pi كنظام مراقبة.

الكاميرا متوافقة مع نظام التشغيل Raspbian ، ويمكنها تسجيل الفيديو بدقة Full HD والتقاط صور بدقة 5 ميجابكسل.

هذه الوحدة متاحة مع فلتر الأشعة تحت الحمراء وبدونه بسعر 2000 روبل.

مستشعر الحركة لـ Raspberry Pi

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

وتجدر الإشارة بشكل خاص في السعر إلى حزمة من خمسة "مجسات حركة تعمل بالأشعة تحت الحمراء تعمل بالكهرباء الحرارية".

يمكنك شراء هذه الحزمة مقابل 480 روبل فقط.

مستشعر الرطوبة ودرجة الحرارة لـ Raspberry Pi

وظائف محطة الطقس أساسية للمنزل الذكي. يعد تلقي بيانات الطقس ومعالجتها باستخدام Raspberry Pi أمرًا سهلاً للغاية. كل ما تحتاجه هو جهاز استشعار رخيص واحد تقوم بتوصيله بجهاز الكمبيوتر الصغير الخاص بك: جهاز DHT11 مثالي ، حيث يكلف أقل من 600 روبل.

وحدة Enocean لـ Rapsberry Pi

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

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

للتحكم في الأجهزة باستخدام تقنية Enocean من خلال Rapsberry Pi ، ستحتاج إلى وحدة مناسبة يمكن شراؤها مقابل 3600 روبل فقط.

إنذار حريق لـ Raspberry Pi

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

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

وحدة Homematic لـ Rapsberry Pi

Homematic هو أحد أشهر أنظمة المنزل الذكي في أوروبا. للتفاعل بين جميع مكوناته ، كقاعدة عامة ، يلزم وجود وحدة تحكم مركزية CCU2 (MATIC Home Gateway).

يمكنك الآن توصيل الوحدة اللاسلكية المناسبة بـ Raspberry الخاص بك. واحد من هؤلاء ، من ELV ، يكلف حوالي 1700 روبل.

باستخدام الوحدات المعروضة في هذه المقالة ، يمكنك بناء نظام المنزل الذكي متعدد الاستخدامات. ومع ذلك ، هناك العديد من الوحدات النمطية الأخرى لـ Rapsberry Pi ، على سبيل المثال ، للعمل مع معايير Z-Wave و Zigbee اللاسلكية.

صورة:شركات التصنيع ، CHIP.de

تمت كتابة هذا المقال لتذكيرك بأن المنزل الذكي أصبح أقرب بكثير مما كنا نظن.

Home Assistant هو عبارة عن منصة أتمتة مفتوحة المصدر مدعومة من Python 3. يسمح لك بمراقبة جميع الأجهزة في منزلك والتحكم فيها وأتمتة الإجراءات. يمكن أن تعمل بشكل مثالي على كمبيوتر Raspberry PI ذو اللوحة الواحدة.

دعنا نذهب بالترتيب:

1. جوهر مركزي

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

الكمبيوتر-خيار رائع إذا كنت بحاجة إلى حمولة كبيرة على الخادم ، tk. حتى أجهزة الكمبيوتر المحمولة القديمة ستكون أداءً كافيًا (ما لم تشغل فيديو بدقة 4K أو تستخدم 10 كاميرات بترميز HEVC). من بين السلبيات ، في 95٪ من الحالات التبريد النشط ومن أجل توصيل مرحل تقليدي ، عليك دائمًا استخدام عكازات إضافية.

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

وهنا نأتي إلى الإصدار الأحدث- هذه أجهزة كمبيوتر رخيصة أحادية اللوحة تعتمد على معمارية ARM. الآن اختيارهم ضخم بكل بساطة ، لكن السلف الأكثر شهرة هو Raspberri pi. من المزايا ، انخفاض استهلاك الطاقة ، هناك مخرجات مستخدم وأداء مرضٍ لتشغيل البرامج البسيطة.

هناك العديد من الخيارات الغريبة لأتمتة الموقد الخاص بك ، مثل المنبه السرير في 1851 World's Fair (اخترعها Theophile Carter). أو الانحراف المفضل لديك - اردوينو مع الدروع (آسف على meme التافهة)

2. أجهزة الاستشعار الخارجية ، وأجهزة التحكم ، والضوابط.

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

حلول DIY والحلول الشبيهة بالاردوينو
- الحلول الصينية (مثال Sonoff)
- حلول جميلة باهظة الثمن (مثال عش)

3. لينة

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

أ) عدد كبير من الخدمات المدعومة ،
ب) سهل ومجاني للتثبيت ،
ج) واجهة جميلة.

4. خدمات الطرف الثالث

إنها تساعد على توصيل الحلول الحالية المختلفة وأتمتة الإجراءات على الهواتف الذكية وأجهزة الكمبيوتر. مثال نموذجي IFTTT.

ماذا لو كنت لا أعرف كيف أبرمج أو كان لدي مال؟
بشكل منفصل ، هناك حلول للأنظمة البيئية الحديثة من Samsung و Xiaomi و Amazon و Apple و Google وما إلى ذلك. أوافق على أن قراراتهم تبدو أحيانًا أكثر جمالًا ، لكن متوسط ​​راتب الشخص الروسي يبلغ حوالي 500 دولار ، وهو ما لا يسمح لك بالشعور بمجموعة كاملة من الأذواق.

1. Raspberry Pi 3 (ربما يعمل كبار السن أيضًا) 35 دولارًا
2. MicroSD 16 جيجا ليس أقل من الفئة 10 (الأسرع كان الأفضل) مع محول لجهاز كمبيوتر 7 دولار
3. شاحن MicroUSB لـ 5V وأكثر من 2A 0 $ (صادر من هاتف قديم)
4. وقتك الثمين. لا يقدر بثمن.
5. شاشة اختيارية مع HDMI

لنثبّت:

1. قم بتنزيل برنامج مناسب للتسجيل على محرك أقراص فلاش USB. أوصي النسخة المحمولة
2. اذهب إلى الموقع وقم بتنزيل أحدث إصدار من برنامج حسبيان
3. قم بفك ضغط الصورة الرئيسية إلى أي مجلد.
4. افتح Etcher
5. اختر صورتنا الرئيسية
6. حدد محرك أقراص فلاش للتسجيل
7. اضغط على زر البداية
8. ???
9. الربح

بعد التسجيل ، قم بإزالة محرك أقراص فلاش USB وأدخله في raspberry pi.

من الإلزامي إدخال سلك الإنترنت في التوت !!!

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

بعد ذلك ، نحتاج إلى العثور على واجهة الويب لنظام المنزل الذكي الخاص بنا. هناك عدة طرق للقيام بذلك:

1) استعرض سطر الأوامر عبر hdmi وابحث عن عنوان IP مثل 192.168.1.x (أو أي عنوان آخر)
2) ابحث في إعدادات جهاز التوجيه التي قام خادم DHCP بتعيين العنوان للجهاز الجديد
3) استخدم ماسح ضوئي للشبكة (على سبيل المثال ،

اكتسب النموذج على الفور شعبية واسعة بين المستخدمين ، كما يتضح من الحجم المتزايد باستمرار لمبيعاته.

رسم تخطيطي هيكلي لنظام "المنزل الذكي" على أساس Raspberry Pi 3

تم تصميم Smart Home على أساس Raspberry Pi 3 ، ولا يسمح فقط بالتحكم وإدارة جميع الاتصالات في المنزل تقريبًا ، ولكن أيضًا لزيادة الوظائف بشكل تعسفي أثناء التشغيل.

الميزات الرئيسية لـ Raspberry Pi 3

تلقى الكمبيوتر الصغير الجديد:

  1. معالج ARM Cortex-A53 ؛
  2. ذاكرة وصول عشوائي واحدة جيجابايت ؛
  3. واي فاي مدمج وبلوتوث 4.1 ؛
  4. التوافق التام مع الموديلات السابقة.

يحتوي المعالج على أربعة أنوية ، 64 بت ، بتردد 1.2 جيجاهرتز ، وهو أعلى 10 مرات من أداء النموذج الأول.

معيار WiFi 802.11b / g / n مع القدرة على نقل البيانات بسرعات تصل إلى 600 ميجابت / ثانية بتردد 5.0 جيجاهرتز.

بأمر من Raspberry Pi ، طورت Broadcom وأصدرت بلورة واحدة جديدة BCM2837 بهندسة معمارية مماثلة لبلورات BCM2835 و BCM2836 ، مما يضمن التوافق مع الطرز السابقة.

أجهزة كمبيوتر Raspberry Pi 3 و Arduino أحادية اللوحة - الاختلافات الرئيسية

المقارنة بين هذه المنصات ليست صحيحة تماما. بادئ ذي بدء ، لأن Raspberry Pi 3 في محتواه عبارة عن كمبيوتر به مجموعة كاملة من الوظائف ، ومن الصعب تصنيف Arduino كجهاز كمبيوتر.

يعمل Raspberry Pi 3 بمعالج قوي رباعي النواة يعمل أسرع 40 مرة من ساعة Arduino. تبلغ سعة ذاكرة الوصول العشوائي Raspberry Pi 3 128000 ضعف سعة ذاكرة الوصول العشوائي من Arduino.

لكن هذه الأرقام لا تعني أن Raspberry Pi 3 يتفوق على Arduino ، ولكن هذه الأجهزة مصممة لحل مشاكل مختلفة.

المهام التي يمكن لـ Raspberry Pi 3 حلها مع البرنامج تتجاوز قوة Arduino البسيطة. لكنها تقوم بعمل ممتاز مع مهام مشاريع الأجهزة البحتة ، مع قراءة ومعالجة الإشارات التناظرية.

تتم معالجة الإشارات التناظرية في الوقت الفعلي ، ويمكن أن تأتي هذه الإشارات من شرائح من أي نوع ومصنع. لكي يقوم Raspberry Pi 3 بمعالجة الإشارات التناظرية بنفس الطريقة ، فإنه يحتاج إلى أجهزة إضافية.

تنفيذ مشروع "المنزل الذكي" على أساس Raspberry Pi 3

بالنسبة لأولئك الذين قرروا إنشاء Raspberry Pi 3 "المنزل الذكي" بأيديهم ، فأنت بحاجة أولاً إلى تحديد الوظائف التي سيتم تنفيذها ، وكيف سيتم تضمينها في تكوين العمل. ووفقًا لهذا ، أكمل النظام المستقبلي بالأجهزة اللازمة.

ملحقات المنزل الذكي

لتنفيذ مشروع Raspberry Pi 3 Smart Home ، ستحتاج إلى الوحدات التالية:

  • وحدة ؛
  • وحدة دعم الاتصالات اللاسلكية ؛
  • مستشعر قياس الرطوبة و ؛

بالإضافة إلى ذلك ، سيتطلب نظام المنزل الذكي Raspberry Pi 3 بطاقة ذاكرة MicroSD بسعة 32 جيجا بايت ، ومصدر طاقة ، وترحيل بخمسة فولت.

أحد أهم الأجهزة الإضافية لتنفيذ مشروع Raspberry Smart Home هو وحدة NodeMCU ESP-12E مع واجهة راديو Wi-Fi وهوائي microstrip مدمج في لوحة الوحدة.

أنظمة التشغيل

مثل أي كمبيوتر ، فإن Raspberry Pi 3 بدون برنامج هو مجرد مجموعة غير مجدية من المكونات الإلكترونية.

من أجل تحويل هذه المجموعة إلى أداة تنفذ وظائفها ، يجب أن "تنفخ في الحياة" ، أي مليئة بالبرنامج المناسب.

تتم هذه العملية على عدة مراحل. تحتاج أولاً إلى تحديد وتنزيل Raspberry Pi 3 "Smart Home" iOS - وهو نظام تشغيل محمول.

يستخدم Raspberry Pi 3 بطاقة ذاكرة micro SD كحامل لنظام التشغيل وبرامج الاستضافة الموجودة عليه. يمكنك اختيار إحدى الطرق الثلاث لتثبيت نظام التشغيل:

  1. شراء بطاقة SD تم تثبيت نظام التشغيل عليها مسبقًا ؛
  2. قم بتنزيل NOOBS (New Out Of the Box Software) - مثبت نظام التشغيل على بطاقة الذاكرة ، ثم قم بتثبيت نظام التشغيل مباشرة من البطاقة ؛
  3. قم بتركيب صورة نظام التشغيل مباشرة على بطاقة SD.

تم تطوير أكثر من 40 نظام تشغيل مختلفًا لنظام Raspberry Smart Home. أكثر أنظمة التشغيل شيوعًا هي Raspbian OS و Ubuntu Mate و Windows 10 IoT و RICS OS.

الأكثر تكيفًا مع أجهزة Raspberry Pi 3

نظام التشغيل هو Raspbian OS ، مثبت من برنامج التثبيت NOOBS الذي تم تنزيله على بطاقة SD.

تركيب نظام التشغيل

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

في الجولة الأولى ، ستحتاج إلى:

  • بطاقة microSD بسعة أربعة غيغابايت على الأقل (يفضل 32 غيغابايت) ؛
  • مزود طاقة بخمسة فولت ؛
  • كابل مع موصلات HDMI ؛
  • مراقبة مع اتصال HDMI ؛
  • لوحة المفاتيح والماوس مع اتصال USB ؛
  • كمبيوتر مع فتحة بطاقة SD ؛
  • اتصال الإنترنت - إيثرنت.

الخطوات التالية هي:

  1. تنسيق بطاقة SD ؛
  2. تنزيل أرشيف مثبت NOOBS واستخراجه إلى الدليل الجذر لبطاقة SD ؛
  3. يتم إدخال البطاقة في فتحة الحواسيب الصغيرة ، وجميع الأجهزة متصلة ، وإمدادات الطاقة قيد التشغيل ؛
  4. في البداية ، يتم تحديد نظام التشغيل المطلوب من القائمة ويبدأ التثبيت ؛
  5. عند الانتهاء من التثبيت ، قم بتثبيت وتهيئة برامج Raspberry Pi 3 "المنزل الذكي".

تثبيت خادم Homebridge وتكوين الوحدات النمطية

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

يعمل خادم Homebridge كنوع من الجسر بين جميع الأجهزة في المنزل و Home Kit. هذا الخادم يحاكي Home Kit API.

تتوفر المئات من المكونات الإضافية المختلفة للخادم ، وبفضل ذلك أصبح من الممكن إدارة جميع الأجهزة المنزلية التي لم يتم تصميمها هيكليًا للعمل مع Home Kit. الميزة الرئيسية لـ Homebridge هي أنه يمكن تشغيله على أي جهاز كمبيوتر ، بما في ذلك Raspberry Pi 3.

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

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

خاتمة

سيكلف نظام "المنزل الذكي" الذي يعمل بنفسك والذي يعتمد على Raspberry Pi 3 عدة مرات أرخص من نظام مماثل جاهز ، ويمكن زيادة وظائفه بشكل غير محدود تقريبًا.

فيديو: Raspberry Pi Model 3 B - تثبيت نظام التحكم بالمنزل الذكي Domoticz

مرحبا يا اصدقاء

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

مقدمة - بضع كلمات عن Domoticz

1. ما هو Domoticz؟
هذا برنامج مفتوح المصدر متعدد المنصات يركز على إنشاء نظام تحكم منزلي ذكي. يدعم عددًا كبيرًا من الأجهزة المختلفة من بائعين مختلفين ، بما في ذلك العمل مع أجهزة Xiaomi.
2. ما هي أجهزة Xiaomi التي يمكن لـ Domoticz التحكم فيها؟
سأتحدث فقط عن الأجهزة التي اختبرتها شخصيًا. في الوقت الحالي ، يمكنك التحكم في بوابة Xiaomi - وجميع الأجهزة التي تتحكم فيها - الأزرار ، ومستشعرات الفتح والحركة ، ومآخذ ZigBee ، ومفاتيح Aqara. يتم دعم أدوات الإضاءة Yeelight أيضًا - مصابيح RGBW ومصابيح بيضاء ، ومصباح سقف Celling Light.
قرأت عن العمل مع مستشعرات بلوتوث miflora.
3. لماذا أحتاج Domoticz؟
يحتوي النظام على خيارات أكثر مرونة لتكوين البرامج النصية - على سبيل المثال ، التحقق من نشاط الجهاز ، الذي ليس في MiHome ، أو إنشاء متغيرات - التي تسمح بشرط واحد - على سبيل المثال ، الضغط على مفتاح - لتنفيذ إجراءات مختلفة ، اعتمادًا على قيمة المتغير.
السيناريوهات التي تم إنشاؤها في Domoticz لا تعتمد على الخوادم الصينية والوصول إلى الإنترنت.
يوسع Domoticz وظائف الأجهزة - على سبيل المثال ، إجراءات "السقوط الحر" أو "التنبيه" الجديدة لنرد ، أو "تحرير النقرة الطويلة" للزر.
4. إذا كنت أستخدم Domoticz ، فلن أتمكن من العمل مع MiHome؟
يعيش كلا النظامين بشكل متوازي تمامًا - يتم الحفاظ على وظائف MiHome تمامًا ، لكن بعض البرامج النصية ستعيش في نظام واحد - بعضها في نظام آخر. يمكن أن تعيش جميع البرامج النصية بشكل أساسي في Domoticz.
5. لماذا أحتاج إلى MiHome إذا كنت أستخدم Domoticz؟
على الأقل لإضافة أجهزة جديدة. الخيار لك - لكن رأيي - في الوقت الحالي ، من الأفضل استخدام Domoticz كإضافة إلى MiHome
6. ما الذي أحتاجه لتوصيل أجهزة Xiaomi بـ Domoticz؟
أريد أن أطمئنكم على الفور - ليست هناك حاجة لحام الحديد والمبرمجين والرقصات باستخدام الدفوف. أيضًا ، لن تحتاج إلى Linux أو أجهزة افتراضية - يمكنك تجربة كل شيء بشكل صحيح على نظام التشغيل Windows الخاص بك ، وإذا كنت ترغب في ذلك ، فمن المنطقي تخصيص منصة أجهزة منفصلة لها ، على سبيل المثال ، بطل مراجعة اليوم.
حرفيًا بعد التجارب الأولى الناجحة على جهاز الكمبيوتر المكتبي ، تحمست لفكرة إنشاء قاعدة أجهزة منفصلة لـ Domoticz. لقد توقفت عن خياري ، بعد دراسة الجمهور - على Raspberry Pi Model 3 B - وهو كمبيوتر صغير الحجم ولكنه قوي أحادي اللوحة يعتمد على معالج BCM2837 Soc مع 4 أنوية Cortex-A53 تعمل بتردد 1.2 جيجاهرتز و 1 جيجابايت من ذاكرة الوصول العشوائي و وحدات Wi-Fi و Bluetoth 4.1 اللاسلكية.

تعيين

لقد قمت بتضمين 4 عناصر في طلبي -

شاشة الدفع


لوحة راسبيري باي موديل 3 بي -
ومن المثير للاهتمام أن المتجر يحتوي على نسختين - الصينية والإنجليزية. في وقت الشراء ، كان سعر المنتج الصيني أرخص بـ 7 دولارات ، وقد أخذته. ما هو هناك صيني - لأكون صادقًا ، إنه لغز بالنسبة لي.
حافظة Raspberry Pi موديل 3 B -
مزود الطاقة HN - 528i AC / DC 5V 2A -
خافضات حرارة نحاسية لـ Raspberry Pi -
أيضًا للحصول على مجموعة كاملة ، ستحتاج إلى بطاقة microSD - على الأقل 4 جيجابايت وكابل HDMI. كان لدي كبل وبطاقة 32 غيغابايت في مخزني ، لذلك لم أشتريه.

ماذا يوجد في العبوة

بعد تاريخ الاستحقاق - ما يزيد قليلاً عن أسبوعين ، أحضر الساعي الطرد مع طلبي.


دعونا نفكر بمزيد من التفصيل. مزود الطاقة مع قابس من النوع C وموصل micro-USB.


الحد الأقصى للتيار المعلن هو 2A بجهد 5 فولت.


اختبار التبديل مع حمل 2A - يُظهر بعض الانخفاض في الجهد ، ولكن ضمن النطاق المسموح به ، يكون مصدر الطاقة أكثر أو أقل صدقًا.


مجموعة من ثلاث مشعات نحاسية في كيس للتبريد السلبي.


جميع المشعات لها شكل مربع ، واثنين من المشعات مع دبابيس وطول الجانب حوالي 12 ملم وواحد مسطح مع جانب حوالي 15 ملم.


علبة بلاستيكية داكنة مع صورة منقوشة لتوت على الغطاء


أبعاد الهيكل - حوالي 90 × 65 ملم




يتم تفكيك العلبة إلى 5 أجزاء - جميع المزالج مثبتة ، بدون مسامير.


انتهينا من الملحقات - حان الوقت للانتقال إلى أهم شيء
RASPBERRY PI 3 موديل ب
يعتبر طراز Raspberry Pi 3 B هو الخلف المباشر لـ Raspberry Pi 2 Model B. اللوحة متوافقة تمامًا مع سابقتها ولكنها تأتي بأداء أفضل وميزات اتصال جديدة:
معالج ARM Cortex-A53 رباعي النواة 64 بت مع سرعة ساعة 1.2 جيجاهرتز على شريحة أحادية من Broadcom BCM2837 ؛ شبكة Wi-Fi 802.11n مدمجة وبلوتوث 4.1.
بالإضافة إلى ذلك ، يحتوي المعالج على بنية ARMv53 ، مما يعني أنه يمكنك استخدام نظام التشغيل المفضل لديك: Debian Wheezy و Ubuntu Mate و Fedora Remix وحتى MS Windows 10.


المواصفات أكثر
وحدة المعالجة المركزية - Broadcom BCM2837 ، رباعي النواة ARM Cortex-A53 ، 1.2 جيجاهرتز
عدد أنوية المعالج - 4
وحدة معالجة الرسومات - VideoCore IV 3D
ذاكرة الوصول العشوائي - 1 جيجابايت
التخزين - microSD
الشبكات
إيثرنت 10/100
واي فاي 2.4 جيجا 150 ميجا بايت / ثانية
إخراج الفيديو - HDMI
منافذ USB - 4
لاسلكي - بلوتوث
إخراج الصوت - 3.5 جاك
85.6 × 53.98 × 17 ملم ، 45 جرام


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


يوجد على أحد الجوانب الطويلة للكمبيوتر منافذ USB صغيرة لإمداد الطاقة ، ومنفذ HDMI كامل الحجم ، ومنفذ كاميرا CSI-2 - لتوصيل الكاميرا عبر واجهة MIPI ، ومقبس صوت 3.5 ملم. يوجد أيضًا على الجانب العلوي وحدة المعالج و Ethernet / USB Hub lan9514-jzx


يوجد على الجانب الأمامي 4 منافذ USB ومنفذ Ethernet


يوجد 40 منفذ إدخال / إخراج للأغراض العامة (GPIO) على الجانب الآخر من اللوحة الأم.


على الجانب الثاني - يوجد منفذ عرض DSI لتوصيل شاشة عرض قياسية


يوجد على الجانب السفلي من اللوحة وحدة ذاكرة LPDDR2 SDRAM - EDB8132B4PB-8D-F


وفتحة micro-SD لبطاقة ذاكرة


يتم وضع خافضات الحرارة النحاسية على USB / Ethernet Hub والمعالج على جانب واحد


وعلى شريحة الذاكرة من جهة أخرى. هذا المبرد مسطح - لا يتداخل مع تركيب لوحة الكمبيوتر في العلبة


كل شيء يتناسب تمامًا مع العلبة ، ولا توجد وصلات لولبية - إنها مثبتة على حواف بلاستيكية.


تتطابق جميع القواطع الموجودة على العلبة تمامًا مع موصلات الكمبيوتر




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

تركيب نظام التشغيل

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


وبعد التثبيت ، أدخل بطاقة الذاكرة في قارئ البطاقات (لديك قارئ بطاقات ، أليس كذلك) وقم بتشغيل SD Card Formatter. في قائمة الخيارات ، تحتاج إلى ضبط "FORMAT SIZE ADJUSTMENT" على "ON"


بعد انتظار اكتمال تنزيل مجموعة أدوات التوزيع الكبيرة ، افتح الأرشيف الناتج وافك محتوياته على محرك أقراص فلاش USB مهيأ حديثًا.
الخطوة التالية هي الإطلاق الأول لـ Raspberry Pi (محرك أقراص محمول مع مجموعة توزيع مسجلة ، بالطبع ، نقوم بتثبيته فيه). نأسف على جودة الصور القليلة القادمة - من شاشة التلفزيون :(
في البداية ، تبدأ قائمة اختيار نظام التشغيل - ما يجب تثبيته ، وتحتوي القائمة أيضًا على إصدار من WIndows 10 لـ Raspberry Pi. في هذه المرحلة ، يمكنك تحديد اللغة (في أسفل الشاشة) - اللغة الروسية متاحة وسيتم الاتصال بشبكة Wi-Fi - زر شبكات Wi-Fi


الخيار الذي أحتاجه - Raspbian المستند إلى Linux Debian - يأتي في نكهتين ، خفيف وكامل ، مع واجهة رسومية. اخترت النسخة الكاملة


بعد ذلك ، يمكننا الذهاب بأمان لشرب الشاي مع الخبز ، وسوف يستغرق التثبيت وقتًا طويلاً.


قياس درجة الحرارة بشكل دوري أثناء التثبيت ، والحد الأقصى الذي رأيته هو 38 درجة.
بعد اكتمال التثبيت وإعادة تشغيل الكمبيوتر ، يتم تحميل سطح مكتب Raspbian


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


للتحكم في Raspberry من جهاز كمبيوتر سطح المكتب ، نحتاج إلى أي برنامج طرفي ، أستخدم المعجون القديم الجيد


اسم المستخدم وكلمة المرور الافتراضيان - بيو توت العليق. لتغيير كلمة المرور ، استخدم الأمر passwd.


أوصي بتعيين عنوان IP ثابت لـ Raspberry على الفور. يمكنك معرفة العناوين الحالية باستخدام الأمر ifconfig ، أين
eth0 هو إيثرنت
lo هي الواجهة المحلية 127.0.0.1
wlan0 هي واجهة wi-fi

ومن أجل تحرير الملف بالإعدادات - أدخل الأمر
sudo nano /etc/dhcpcd.conf
وفي الملف الذي يفتح ، بالتمرير حتى النهاية ، أضف الإعدادات الضرورية ، اعتمادًا على الواجهة التي سنستخدمها.
على سبيل المثال ، نريد استخدام العنوان 192.168.0.222 ، والقناع هو 255.255.255.0 ، والبوابة وعنوان DNS هو 192.168.0.1
بالنسبة لشبكة إيثرنت ، نقوم بإدخال ملفات
واجهة eth0

الموجهات الثابتة = 192.168.0.1

لشبكة WiFi
واجهة wlan0
عنوان ip_address ثابت = 192.168.0.222 / 24
الموجهات الثابتة = 192.168.0.1
static domain_name_servers = 192.168.0.1


اضغط على ctrl + x للخروج من المحرر
لحفظ التغييرات - اضغط على "Y" ثم أدخل

تركيب Domoticz
تم بالفعل تنفيذ معظم أعمال الإعداد ، والآن نحتاج إلى تثبيت نظام Domoticz. يتم ذلك بأمر واحد -
sudo curl -L install.domoticz.com | سودو باش
الذي يهيئ عملية تمهيد النظام وتثبيته


أثناء عملية التثبيت ، سيطرح المُثبِّت أسئلة حول موقع التثبيت ، وما إلى ذلك. - تركت كل هذه اللحظات بشكل افتراضي.


بعد التثبيت الناجح ، سيقوم المثبت بكتابة عناوين ومنافذ واجهة الويب لنظام Domoticz


ولكن ، للعمل مع بوابة Xiaomi ، نحتاج إلى إصدار تجريبي من النظام. تتم الترقية إلى أحدث إصدار تجريبي بواسطة الأوامر
القرص المضغوط ~ / domoticz
sudo ./updatebeta



يتوفر الآن نظام Domoticz عبر واجهة الويب:

حان الوقت الآن لبدء إضافة أجهزة Xiaomi. لكن اولا -

العمل التحضيري

إذن ، ما الذي تحتاجه لبدء العمل مع Domoticz؟
حجز عناوين IP
تتمثل الخطوة الأولى في تعيين عناوين IP ثابتة للأجهزة التي تخطط لإدارتها - فهي الآن بوابة ومصابيح. يتم ذلك على جهاز التوجيه المنزلي الخاص بك باستخدام جدول عميل DHCP الذي يبدو كالتالي -


والمعلومات من علامات تبويب معلومات الشبكة الخاصة بالبوابة ومكونات التحكم في المصباح ، حيث تتم الإشارة إلى عناوين MAC الخاصة بالأجهزة


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

وضع المطور

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


بالنسبة للمصابيح ، كل شيء أبسط - تحتاج إلى تثبيت تطبيق Yeelight ، إذا لم تقم بتثبيته بعد ، ولكل مصباح - انتقل إلى القائمة ، وضع المطور - قم بتمكين

إضافة الأجهزة

لإضافة أجهزة ، انتقل إلى علامة التبويب الإعدادات - المعدات
127.0.0.1:8080/#/ الأجهزة (بدلاً من 127.0.0.1 - عنوان Domoticz الخاص بك)
نختار نوع جهاز Xiaomi Gateway ، ونسميه بطريقة ما ، ونشير إلى عنوان IP الخاص به ، والذي حجزناه على جهاز التوجيه ، وأدخل كلمة المرور المستلمة في نافذة وضع المطور. المنفذ - يعمل بالنسبة لي على المنفذ 54321. يصف Domotics wiki الاتصال بالمنفذ 9898


لإضافة مصابيح - فقط أضف جهاز YeeLight LED - لا تحتاج إلى تحديد العناوين ، ستسحب المصابيح نفسها.


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

الأجهزة

ستتم إضافة الأجهزة أكثر مما تتوقع :) تتوفر قائمة بها في علامة التبويب الإعدادات - الأجهزة.
127.0.0.1:8080/#/ الأجهزة


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

مفاتيح

تحتوي علامة التبويب هذه على جميع الأجهزة المُدارة
127.0.0.1:8080/#/ LightSwitches
المفاتيح والأزرار والمصابيح والمزيد. هنا يمكننا تشغيل وإيقاف وتنفيذ أي إجراءات مع الأجهزة في الوضع اليدوي.

على سبيل المثال ، اختر الصوت الذي سيصدر على البوابة ، أو لون التوهج على مصباح RGB أو سطوع المصباح الأبيض.

درجة حرارة

في علامة التبويب هذه ، يتم تجميع أجهزة استشعار المناخ - الرطوبة ودرجة الحرارة
127.0.0.1:8080/#/ درجة الحرارة
في البداية ، يُطلق عليهم جميعًا نفس الاسم ، يمكنك تحديد المكان من خلال شهادتهم والتحقق من تطبيق Mi Home ، وبعد ذلك يمكن إعادة تسميتهم وفقًا لذلك.

مساعد

تم تجميع مستشعر الضوء الخاص بالبوابة هنا - على الرغم من أن قراءاته غريبة جدًا ، وعدادات استهلاك الطاقة للمآخذ.
127.0.0.1:8080/#/ منفعة

سيناريوهات

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

أمثلة البرنامج النصي

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

بالضبط نفس البرنامج النصي في lua

أمثلة على استخدام ملفات

سأولي المزيد من الاهتمام لسيناريوهات محددة في مراجعات أخرى ، هنا كمثال سأقدم سيناريو ذلك غير ممكننفذ في Mi Home ، أي مفتاح Aqara ثنائي الزر مع فتح الأسلاك - سيعمل الزر الأيسر على النحو المنشود - قم بفصل وتوصيل المرحلة ، والزر الأيمن - غير متصل بالخط (لتشغيل المفتاح ، يكفي لتوصيل أحد الأزرار فقط) - سيتم تشغيل وإيقاف تشغيل مصباح Yeelight ، الذي ليس له اتصال مادي بالمفتاح.
في هذا السيناريو ، سيتم التحقق من حالة مصباح Yeelight ، ولن تهم قيمة مفتاح التشغيل أو الإيقاف نفسه. إذا كانت حالة المصباح مختلفة عن حالة إيقاف التشغيل ، فهذا يعني أنه يعمل وسيتم إيقاف تشغيله ، وإذا كان مطفأ ، فسيتم تشغيله.

في هذا الصدد ، سوف أكمل الجزء التمهيدي عن Domoticz ، إذا كان الموضوع مثيرًا للاهتمام ، فسأواصل ، لا يزال هناك الكثير من الأشياء المثيرة للاهتمام.

نسخة فيديو للمراجعة (جزئين) -



شكرا للاهتمام. أخطط لشراء +170 أضف إلى المفضلة أحب الاستعراض +99 +231

النظام بسيط للغاية ، فهو يسمح لك بالتحكم في الشبكة (خارجي أو محلي)تم تكوين دبابيس GPIO للإخراج والحصول على حالتها (على سبيل المثال ، انظر إلى ما هو قيد التشغيل / إيقاف التشغيل). أرسل أي أوامر يمكن معالجتها داخل Raspberry. احصل على حالة دبابيس GPIO (مثل 0 أو 1)تم تكوينه للإدخال. سيقوم المصمم بتكوين دبابيس GPIO التي تحتاجها للإدخال أو الإخراج.

إذا كنت بحاجة إلى نظام أكثر مرونة ، فمن الأفضل استخدام النظام السابق.

يحتاج المستخدم فقط إلى تجميع الواجهة في المُنشئ ، وتنزيل الأرشيف مع الملفات وفك ضغطه على RaspberryPi 2 الخاص به.
سيحتوي الأرشيف على ملفات جاهزة متعلقة بجزء الويب (html، css، js)، sh-script لتهيئة المسامير وخادم لتبادل البيانات الصفحة الرئيسية stD Rp . لا يلزم تثبيت أي برامج إضافية.

على الرغم من التعقيد الظاهري ، إلا أن كل شيء بسيط للغاية وسيستغرق حوالي 10-15 دقيقة.

مظهر

جزء تمهيدي.

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

يعمل على أي جهاز - كمبيوتر ، كمبيوتر محمول ، جهاز لوحي ، هاتف محمول.


شاشة الواجهة الرئيسية. يمكن أن يصل عدد الغرف إلى خمس غرف.

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

لنفتح المدخل:

هنا يمكن أن يكون موجودا: عدة أزرار مهيأة للإخراج (BCM0 ، BCM1 إلخ.)لتمكين شيء مع حالة إرجاع. هذا هو ، إذا كان هناك شيء (مثل الضوء العلوي)تمكين ، سيتم تمييز التسمية.

أزرار متعددة (SENTSIG1 إلخ)لإرسال أي أمر إلى RaspberryPi.

وبعض المجالات (IN_BCM2 إلخ)للحصول على حالة دبابيس GPIO (مثل 0 أو 1)تم تكوينه للإدخال. 0 - يتم سحب الدبوس إلى "الأرض" ، 1 - يوجد جهد على الدبوس.

في المستقبل ، يمكنك تغيير أسماء الأزرار وتبديلها.

عبور في الجزء العلوي الأيمن - إغلاق اللوحة.

تحت الزر معلوماتيخفي اللوحة التي تحتوي على معلومات حول حالة النظام.

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

إذا حدث خطأ ما ، فستظهر رسالة على الشاشة. خطأ، و في معلوماتسيتم وصف سبب الخطأ.

تم وصف خوارزمية النظام بالكامل في نهاية المقالة.

نهاية الجزء التمهيدي.

البناء

يمكن مشاهدة مقطع فيديو قصير عن العمل مع المصمم هنا هذا الرابط.

سيعمل "المنزل الذكي" على أي جهاز ، لكنك تحتاج إلى التصميم على جهاز كمبيوتر عادي أو كمبيوتر محمول.

يجب تمكين ملفات تعريف الارتباط في المتصفح. ومع ذلك ، فقد تم تضمينها كلها تقريبًا.

المُنشئ بسيط للغاية وبديهي. عند الفتح في علامة التبويب التالية هنا ، ستجد نفسك في الصفحة الأولى (هناك أربعة في المجموع):

لفهم وممارسة ، افعل كل شيء كما هو مكتوب أدناه.

هنا تحتاج إلى تحديد عدد الغرف (بحد أقصى 5). لنفترض أن لدينا غرفتين (المدخل والمطبخ)ثم حدد 2 وانقر فوق التالي.

في "اسم منزلك الذكي" و "أسماء الغرف" ، يمكنك فقط استخدام الأحرف والأرقام والمسافات والشُرَط السفلية.

في المستقبل ، يمكنك إصلاح ذلك في ملف index.html.

في الصفحة التالية ، تحتاج إلى ابتكار اسم "لمنزلك الذكي" (هذا ما سيتم كتابته في علامة تبويب المتصفح)وادخله في الميدان عنوان الصفحة.

في الحقول عنوان المستقبلو منفذ الخادملا شيء للكتابة (القيام به من أجل المستقبل).

أسماء الغرفلدينا بالفعل (المدخل والمطبخ)، أدخلهم وانقر على زر "التالي" ...

هنا سترى الشاشة الرئيسية لواجهتك المستقبلية:

انقر على زر "المدخل" ...

اختر زرين لتشغيل شيء ما مع إرجاع الحالة (عدد أزرار التشغيل / الإيقاف).
زر واحد لإرسال الأمر (عدد أزرار الإرسال).
ومجال واحد لاستلام الحالة من أي دبابيس (عدد الحقول لتلقي المعلومات).

يمكن تحديد خمسة أزرار كحد أقصى.

الآن أغلق اللوحة بالزر ، افعل الشيء نفسه مع "المطبخ" وانقر على زر "التالي" ...

ستظهر الشاشة الرئيسية مع زر "تنزيل الأرشيف":

هذا يكمل العمل مع المصمم ، انقر وانتقل إلى الجزء التالي.

انتباه! يحتوي Raspberry Pi 2 على إجمالي 28 GPIOs (BCM0 - BCM27). إذا قمت بعمل أكثر من 27 زرًا / حقل استلام في المُنشئ ، فسيكون كل شيء غير ضروري مليار متر مكعبرقم سيتم تعيينه 28 ولحقول الاستلام الإضافية IN_BCMستزيد القيمة ببساطة. لن يعملوا.

اتصال
لنجمع مخططًا بسيطًا لاختبار النظام:

قم بتوصيل LED بالدبوس مليار متر مكعب 1، من خلال المقاوم 500-1000 أوم. عندما تضغط على زر BCM1 في الواجهة ، سيتم تشغيل / إيقاف الضوء ، وسيتغير لون النقش.

قم أيضًا بتوصيل الأسلاك. من خلال المقاوم 500-1000 أومل BCM3، باستخدام هذا السلك ، سيكون من الممكن الوخز في +3.3 أو أرضوفي الميدان IN_BCM3من صفر إلى واحد. وبالتالي ، يمكنك تتبع بعض الأحداث.

BCM2تستخدم فقط عند الخروج. إذا تم إجراؤه كمدخل (IN_BCM2) ، فلا تستخدمه أو تعده كمخرج (BCM2).

تطبيق الزر سينتسيجهو موضح أدناه.

المنزل
بعد تفريغ الأرشيف ، سيكون لديك مجلد - mydomrpXXXXXXXXXX، أعد تسميته حتى يتضح mydomrpوتذهب فيه.

إعادة تسمية الملفات indexXXXXXXXXX.htmlفي index.htmlو initXXXXXXXXX.shفي init.sh.

في المجلد mydomrpالحصول على الملفات index.html, init.sh, jquery.jsو style.cssوالبرنامج homestdrp.

افتح الملف index.htmlوفي السطر الثاني عشر - var flagobnov = 0، قم بإعادة توجيه الصفر إلى واحد - var flagobnov = 1 (معطل في المنشئ).حفظ الملف.

وترد تفسيرات إضافية للملفات في نهاية المقال.

الآن إلى برنامج homestdrp ...

homestdrpهو خادم ويب يقبل الطلبات من العميل ، ويرسل أوامر إلى RaspberryPi ، ويقرأ حالة دبابيس GPIO ، ويرسل المعلومات / الحالة مرة أخرى إلى عميل الويب. بمعنى آخر ، الغرض منه هو تبادل البيانات بين عميل الويب (المتصفح) و RaspberryPi. إنه يعمل على بروتوكول TCP ، وفي المستقبل أيضًا على UDP.

مصدر

#تتضمن #تتضمن #تتضمن #تتضمن #تتضمن #تتضمن #تتضمن #تتضمن #تتضمن #تتضمن #تتضمن #تتضمن #تتضمن استجابة char = "HTTP / 1.1 200 موافق \ r \ n" "نوع المحتوى: text / html؛ charset = UTF-8 \ r \ n \ r \ n"؛ char response_css = "HTTP / 1.1 200 موافق \ r \ n" "نوع المحتوى: text / css؛ charset = UTF-8 \ r \ n \ r \ n"؛ char response_js = "HTTP / 1.1 200 موافق \ r \ n" "نوع المحتوى: text / js؛ charset = UTF-8 \ r \ n \ r \ n"؛ char response_text = "HTTP / 1.1 200 موافق \ r \ n" "نوع المحتوى: نص / نص ؛ charset = UTF-8 \ r \ n \ r \ n"؛ char response_403 = "HTTP / 1.1 200 موافق \ r \ n" "نوع المحتوى: text / html؛ charset = UTF-8 \ r \ n \ r \ n" "403" "" "

403

\ r \ n "؛ # تعريف BUFSIZE 1024 # تعريف ARRAY_SIZE 90000 # تعريف BSIZ 512 char send1_array = (0،)؛ char send2_array = (0،)؛ char patch_to_dir = (0،)؛ char fpfile = (0،)؛ char عازلة = (0،)؛ int count_simvol = 0؛ unsigned int PORTW = 0؛ int len_dat = 0؛ int count_warning_log = 0؛ void error_log (char * my_error) (char file_error_log = (0،)؛ snprintf (file_error_log، 26 ، "٪ s"، "/var/log/ErrorhomeRp.log")؛ time_t t؛ time (& t)؛ FILE * f؛ f = fopen (file_error_log، "a")؛ if (f == NULL) (printf ("خطأ فتح /var/log/ErrorhomeRp.log.\n") ؛ خروج (0) ؛) fprintf (f ، "٪ s" ، ctime (& t)) ؛ fprintf (f ، "خطأ٪ s \ n \ n "، my_error)؛ printf (" خطأ٪ s اكتب إلى /var/log/ErrorhomestdRp.log.\n "، my_error) ؛ fclose (f) ؛ خروج (0) ؛) تحذير باطل_access_log (char * war_ac) (count_warning_log ++ ؛ char file_Warning_Access_log = (0،)؛ snprintf (file_Warning_Access_log، 31، "٪ s"، "/var/log/Warning_AccessRp.log")؛ if (count_warning_log> 100) ("gzip -f / var / log /" Warning_AccessRp.log ") ؛ count_warning_log = 0 ؛ ti me_t t ؛ الوقت (& ر) ؛ ملف * و ؛ f = fopen (file_Warning_Access_log، "w") ؛ fprintf (f، "٪ s"، ctime (& t)) ؛ fprintf (f، "٪ s \ n \ n"، war_ac) ؛ printf ("اكتب إلى /var/log/Warning_AccessRp.log:\n٪s\n"، war_ac) ؛ fclose (و) ؛ ) else (time_t t؛ time (& t)؛ FILE * f؛ f = fopen (file_Warning_Access_log، "a")؛ fprintf (f، "٪ s"، ctime (& t))؛ fprintf (f، "٪ s \ n \ n "، war_ac)؛ printf (" اكتب إلى /var/log/Warning_AccessRp.log:\n٪s\n "، war_ac)؛ fclose (f)؛)) read_in_file (char * name_file) باطلة (count_simvol = 0 ؛ memset (send1_array، 0، ARRAY_SIZE * sizeof (char))؛ memset (fpfile، 0، 64 * sizeof (char))؛ snprintf (fpfile، (int) strlen (patch_to_dir) + (int) strlen (name_file) + 1 ، "٪ s٪ s"، patch_to_dir، name_file)؛ FILE * file؛ file = fopen (fpfile، "r")؛ if (file == NULL) error_log ("open file.")؛ int ch؛ while (ch = getc (ملف)، ch! = EOF) (send1_array = (char) ch؛ count_simvol ++؛ if (count_simvol == ARRAY_SIZE - 2) break؛) fclose (file)؛) int main (int argc، char * argv) ( if (argc! = 4) error_log ("not argumets.") ؛ PORTW = strtoul (argv، NULL، 0)؛ // منفذ لخادم الويب 80 strncpy (patch_to_dir، argv، 63) ؛ // مسار المجلد len_dat = atoi (argv) ؛ // عدد الأحرف warning_access_log ("START") ؛ /////////////////////// /////////////////////////// WEB ////////////////////////// // /////////////// int one = 1، client_fd؛ هيكل sockaddr_in svr_addr ، cli_addr ؛ socklen_t sin_len = sizeof (cli_addr) ؛ int sock = المقبس (AF_INET ، SOCK_STREAM ، IPPROTO_TCP) ؛ إذا (جورب< 0) error_log("not socket."); setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(int)); svr_addr.sin_family = AF_INET; svr_addr.sin_addr.s_addr = INADDR_ANY; svr_addr.sin_port = htons(PORTW); if(bind(sock, (struct sockaddr *) &svr_addr, sizeof(svr_addr)) == -1) { close(sock); error_log("bind."); } if(listen(sock, 10) == -1) { close(sock); error_log("listen."); } ////////////////////////////////////////// work file ////////////////////////////////////////////////// char flin_fldb = {0,}; snprintf(flin_fldb, (int)strlen(patch_to_dir) + (int)strlen("init.sh 1 "), "%s%s", patch_to_dir, "init.sh 1"); system(flin_fldb); char bufRec = {0,}; char To_GPIO = {0,}; FILE *mf; char in_data = {0,}; char gp_file = {0,}; printf("Receive data from RPi\n\n"); for(;;) { client_fd = accept(sock, (struct sockaddr *) &cli_addr, &sin_len); if(client_fd == -1) continue; memset(buffer, 0, BUFSIZE * sizeof(char)); read(client_fd, buffer, BUFSIZE - 1); if((strstr(buffer, "file.db")) != NULL) { memset(in_data, 0, 256 * sizeof(char)); memset(bufRec, 0, BSIZ * sizeof(char)); int i = 0; int ip = 0; for(i = 0; i < len_dat; i++) { memset(gp_file, 0, 32 * sizeof(char)); snprintf(gp_file, 29, "%s%d%s", "/sys/class/gpio/gpio", i, "/value"); if(ip >54) (in_data = "0"؛ ip ++؛ in_data = ""؛ ip ++؛) else (mf = fopen (gp_file، "r") ؛ إذا (mf == NULL) error_log ("gpio ، فشل الوسيطة الأخيرة.") ؛ in_data = getc (mf)؛ ip ++؛ in_data = ""؛ ip ++؛ fclose (mf)؛)) printf ("Data:٪ s \ n"، in_data)؛ int len_ara = (int) strlen (in_data) + 59 ؛ snprintf (bufRec، len_ara، "٪ s٪ s"، response_text، in_data) ؛ الكتابة (client_fd ، bufRec ، len_ara - 1) ؛ إغلاق (client_fd) ؛ ) وإلا إذا ((strstr (buffer، "comanda"))! = NULL) /////////// comand (memset (To_GPIO، 0، 64)؛ snprintf (To_GPIO، (int) strlen (patch_to_dir ) + (int) strlen ("init.sh 0") + 4، "٪ sinit.sh 0٪ c٪ c٪ c"، patch_to_dir، buffer، buffer، buffer)؛ النظام (To_GPIO)؛ إغلاق (client_fd)؛ Warning_access_log (المخزن المؤقت) ؛ printf ("إلى Gpio:٪ s \ n" ، To_GPIO) ؛) وإلا إذا ((strstr (المخزن المؤقت ، "GET /"))! = NULL) (read_in_file ("index.html") ؛ int len_ara = count_simvol + (int) strlen (response) + 1؛ memset (send2_array، 0، len_ara * sizeof (char))؛ snprintf (send2_array، len_ara، "٪ s٪ s"، response، send1_array)؛ اكتب (client_fd، send2_array ، count_simvol + 59) ؛ إغلاق (client_fd) ؛ warning_access_log (مخزن مؤقت) ؛ printf ("Trans index.html. \ n \ n") ؛) وإلا إذا ((strstr (المخزن المؤقت ، "style.css"))! = NULL) (read_in_file ("style.css") ؛ int len_ara = count_simvol + (int) strlen (response_css) + 1 ؛ memset (send2_array، 0، len_ara * sizeof (char))؛ snprintf (send2_array، len_ara، "٪ s ٪ s "، response_css ، send1_array) ؛ اكتب (client_fd ، send2 _array ، count_simvol + 58) ؛ إغلاق (client_fd) ؛ Warning_access_log (المخزن المؤقت) ؛ printf ("Transstyle.css. \ n \ n") ؛ ) else if ((strstr (buffer، "jquery.js"))! = NULL) (read_in_file ("jquery.js")؛ int len_ara = count_simvol + (int) strlen (response_js) + 1؛ memset (send2_array، 0 ، len_ara * sizeof (char))؛ snprintf (send2_array، len_ara، "٪ s٪ s"، response_js، send1_array)؛ اكتب (client_fd، send2_array، count_simvol + 57)؛ close (client_fd)؛ warning_access_log (مخزن مؤقت)؛ printf ( "Trans jquery.js. \ n \ n")؛) else (write (client_fd، response_403، sizeof (response_403) - 1)؛ close (client_fd)؛ warning_access_log (المخزن المؤقت) ؛))) // END main // gcc -Wall -Wextra -Werror homestdrp.c -o homestdrp

الآن انسخ المجلد mydomrpإلى أي مكان مناسب على RaspberryPi ، على سبيل المثال ، إلى الجذر ، - / mydomrpأو إنشاء ملفات homestdrpو init.shتنفيذ...

sudo chmod + x / mydomrp / homestdrp sudo chmod + x /mydomrp/init.sh

ونقوم بتشغيل البرنامج بثلاث معاملات:

sudo / mydomrp / homestdrp 80 / mydomrp / 6

لاحقًا ، لأتمتة بدء التشغيل ، أضف هذا الأمر إلى الملف rc.local

نانو /etc/rc.local

أدخل ما يصل إلى الخط خروج 0، مثله:

... (/ mydomrp / homestdrp 80 / mydomrp / 6) والخروج 0

حول المعلمات:

المعلمة الأولى - TCP ميناء. يمكنك تحديد أي منفذ ، ولكن إذا لم يعد لديك أي خوادم تشغل المنفذ القياسي (80) ، فحدده ، حسنًا ، إذا كان مشغولًا ، فاكتب شيئًا آخر ، على سبيل المثال 82 (ستدخل "المنزل الذكي" مثل هذا - العنوان :82 ) .

المعلمة الثانية- المسار إلى المجلد / mydomrp / (بشرطة اجبارية / في النهاية).

المعلمة الرابعة- كمية البيانات المرسلة للعميل (لا يستحق الخوض في تفاصيل هذه النقطة ، على الأقل في الوقت الحالي)، تحتاج إلى إلقاء نظرة سريعة على هذا الرقم في الملف index.htmlفي النسق إذا (vars.length == 6). في الكود يوجد هنا:

يعرض()؛ setInterval (إظهار ، 680) ؛ عرض الوظيفة () (if (flagobnov == 1) ($ .ajax ((type: "POST"، url: "file.db"، timeout: 560، cache: false، Success: function (data) (var vars = data.split ("") ؛ إذا (vars.length == 6) هذا الرقم (count_obnov ++ ؛ ...

بعد بداية ناجحة ، homestdrpبادئ ذي بدء ، يتم تشغيل البرنامج النصي init.sh (ابدأ init.sh)، الذي يزيل أولاً جميع الروابط إلى جميع كائنات GPI ، ثم ينشئ ملف (تصدير الدبوس المحدد)وتعيين أوضاعهم (داخل / خارج) (تهيئة الدبوس المحدد) .


للأخطاء - sh: صدى: خطأ I / Oلا تهتم ، هذا ما يجب أن يكون عليه الأمر. بعد كل شيء ، يقوم البرنامج النصي بمسح GPIOs غير الموجودة على أي حال.

الآن ، عندما تفتح الصفحة في المتصفح ، سترى رسائل مختلفة في الجهاز وترسل بيانات GPIO المقروءة:

كل الإجراءات homestdrp، متبوعًا بالكتابة إلى ملف /var/log/Warning_AccessRp.log، والتحذيرات مكتوبة هناك.

في حالة حدوث خطأ فادح (على سبيل المثال ، لا تضيف وسيطة)، ستتم كتابتها في ملف /var/log/ErrorhomestdRp.logوسيتوقف البرنامج.

الآن إذا توقفت homestdrp(Ctrl + c) ، ستبلغ الواجهة عن خطأ:

تفسيرات

كيفية استخدام الزر سينتسيجس؟

عن طريق فتح ملف init.sh (من مجلد mydomrp /)من بين أشياء أخرى ، ستجد الأسطر التالية:

104) # رد فعل على الزر SENTSIG1 ؛؛ 109) # رد فعل على الزر SENTSIG2 ؛؛ ...

ها هو (بدلاً من # رد فعل على الزر SENTSIG1)وتحتاج إلى إدخال أوامرك.
هذا هو ، إذا بدلا من "# رد فعل على الزر SENTSIG1" اكتب اعادة التشغيل (بدون #)، احفظ الملف وانقر فوق الزر الموجود في الواجهة SENTSIG1، ثم سيتم إعادة تشغيل التوت ، أو إذا بدلا من "رد فعل # على الزر SENTSIG2" الكتابة apt-get update && apt-get Upgrade، ثم سيتم تحديثه.

بشكل عام ، يمكنك أن تفعل ما تريد.

شروحات للملف index.html

للتوضيح ، افتح الملف الذي تم إنشاؤه بواسطة المصمم.

SetInterval (إظهار، 680) ؛ ...

... يتلقى ردا في شكل نصي (البيانات مفصولة بمسافات)ويحللها إلى متغيرات.

... / * تلقي * / if (vars == 1) ($ (". d2otkl"). show () ؛ $ (". d2vkl"). إخفاء () ؛) وإلا إذا (vars == 0) ( $ (". d2otkl"). hide ()؛ $ (". d2vkl"). show ()؛) $ ("# indata3"). html ("INDATA3" + "" + vars)؛ if (vars == 1) ($ (". d3otkl"). show ()؛ $ (". d3vkl"). hide () ؛) وإلا إذا (vars == 0) ($ (". d3otkl"). إخفاء ()؛ $ (". d3vkl"). show ()؛) ...

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

يعرض()؛ setInterval (إظهار ، 680) ؛ عرض الوظيفة () (if (flagobnov == 1) ($ .ajax ((نوع: "POST" ، url: "file.db" ، المهلة: 560 ، / * هذا الرقم (بالملي ثانية) * / ذاكرة التخزين المؤقت: خطأ ، ...

الافتراضي هو 560 مللي ثانية ، قم بزيادته بخطوات 100 مللي ثانية وحاول. تبعا لذلك ، من الضروري زيادة setInterval (إظهار، 680)، أيضًا لمدة 100 مللي ثانية.

يمكنك تغيير أسماء الأزرار (D2 ، D3 ، SENTSIG1 ، إلخ) هنا:

...

د 2
د 2
SENTSIG1
...

يمكنك تغيير أسماء الحقول لاستلام البيانات (IN_BCM3 ، IN_BCM5 ، وما إلى ذلك) هنا:

... $ ("# indata3"). html ("IN_BCM3" + "" + vars)؛ ...

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

/ * slmode ++ ؛ إذا (slmode> 70) ($ (". pansl"). show (300) ؛ flagobnov = 0 ؛ slmode = 0 ؛) * /

ثم بعد دقيقة تقريبًا ، ستغلق الصفحة بلوحة شفافة وستتوقف التحديثات. سيؤدي النقر فوق اللوحة إلى إزالتها وستستأنف التحديثات.

بعد إجراء التغييرات على index.htmlتأكد من تحديث الصفحة في متصفحك.

كل الأسئلة والأماني اكتب في التعليقات!

هذا كل شئ حتى الان،

جار التحميل...جار التحميل...