الإعلانات

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

لماذا نفعل ذلك؟ لأن أنظمة التشغيل الآلي للمنزل يمكن أن تكون جامدة ومكلفة للغاية. من خلال تعلم كيفية التحكم في Hue من Arduino ، فإنك تفتح الأبواب لمجموعة متنوعة من مشاريع الأتمتة المنزلية المخصصة التي لا يمكن التغلب عليها ببساطة من المكونات الجاهزة. إذا كان اختراق الأشياء معًا ليس شيئًا لك ، فجرّب ذلك 8 تطبيقات Hue رائعة أفضل 7 تطبيقات من Philips Hue لأجهزة Android و iPhone

instagram viewer
هل تبحث عن أفضل تطبيقات Philips Hue لاستخدامها مع الأضواء الذكية الخاصة بك؟ إليك العديد من التطبيقات الرائعة لأجهزة iPhone و Android. اقرأ أكثر في حين أن.

نظام هيو

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

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

Zigbee هو بروتوكول رائع ، لكنه مختلف تمامًا عن Wi-Fi أو شبكة كمبيوتر سلكية ، لذلك نحتاج إلى Philips Hue Bridge لربط الاثنين معًا. يقوم جسر Hue بتشغيل برنامج لينكس ثابت مفتوح المصدر معدّل يقوم ببث خادم ويب أساسي.

هذا ما ستراه إذا قمت فقط بكتابة عنوان IP الخاص بجسر Hue في متصفحك. لا يمكنك فعل الكثير من هنا بالرغم من ذلك.
هذا ما ستراه إذا كتبت فقط عنوان IP الخاص بجسر Hue في متصفحك. لا يمكنك فعل الكثير من هنا بالرغم من ذلك.

من خلال التفاعل مع خادم الويب المحلي هذا يمكنك معرفة الحالة الحالية للأضواء والتحكم فيها.

إنه نظام بسيط بشكل جميل ومناسب لمشاريع DIY. مجد لشركة Philips لجعل هذا الشيء قابلاً للاختراق.

يبدأ

قبل أن تتمكن من الوصول إلى وثائق API ، ستحتاج إلى تسجيل كمطور. إنه مجاني ، ولكن عليك قبول الشروط والأحكام. افعل ذلك الآن.

يجب أن يكون أي شخص على دراية بخدمات الويب القياسية أو جافا سكريبت قادرًا على العمل مع Hue: يتم تمرير جميع البيانات واستلامها حزم JSON ما هو JSON؟ نظرة عامة ليمانسواء كنت تخطط لتكون مطور ويب أم لا ، فمن الجيد أن تعرف على الأقل ما هو JSON ، وسبب أهميته ، وسبب استخدامه في جميع أنحاء الويب. اقرأ أكثر .

لإلقاء نظرة على هذا عمليًا ، ستحتاج إلى معرفة عنوان IP الخاص بجسر Hue. هناك بضعة طرق لفعل هذا:

  • انظر إلى جدول تعيين عنوان DHCP في واجهة المشرف الخاصة بالموجه
  • تشغيل برنامج خرائط الشبكة مثل الصفحة الرئيسية الماسح IP
  • جرب ال أداة وسيط UPnP من Philips
  • بينغ "philips-hue.home"
خرائط الشبكة لإيجاد الجسر

عند الانتهاء ، امض قدما واكتبه في شريط عنوان المتصفح الخاص بك تصحيح / مقطع. html ملحقة بعنوان URL. في حالتي ، كان هذا:

http://192.168.1.216/debug/clip.html

هذه أداة تصحيح تسمح لك بإرسال واستقبال حزم JSON من خلال واجهة ويب بسيطة. تتمثل الخطوة الأولى في تمكين ملف تعريف المطور على Hue Bridge نفسه - والذي يتم تعطيله افتراضيًا لأسباب أمنية. قم بلصق التالي في حقل BODY ، اترك عنوان URL كـ /api/، وأرسل طلب POST بالضغط على زر المشاركة:

{"devicetype": "test user"، "username": "newdeveloper"}

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

بمجرد إعداد المستخدم ، يصبح عنوان URL الأساسي الذي يجب أن تتفاعل معه /api/newdeveloper/. يمكنك إرسال طلب GET لمعرفة كل شيء يعرفه جهاز Bridge الخاص بك حاليًا عن الأضواء المتصلة والإنذارات والمشاهد وسجل قصير للتطبيقات التي تم استخدامها. إليك عينة من بعض معلومات الحالة الموجودة في لمبة واحدة.


"state": {"on": true، "bri": 254، "hue": 14910، "sat": 144، "effect": "none"، "xy": [0.4596، 0.4105]، "ct": 369 ، "alert": "none"، "colormode": "ct"، "reachable": false}، "type": "Extended color light"، "name": "Bedroom 1"، "modelid": "LCT001" ، 

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

مثال أخير قبل دمج هذا في Arduino: تأكد من أن أحد أضواءك مرئيًا ومضاء ، وأنك تعرف أي رقم هو. قم بتغيير عنوان URL إلى /api/newdevelopers/lights/1/state (تغيير الرقم إلى الضوء الخاص بك) ، وإرسال طلب PUT مع البيانات التالية:

{"hue": 50100، "sat": 255، "bri": 255}

يجب أن ترى رد فعل الضوء الخاص بك مثل هذا:

عرض هوى

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

يمكن تعيين اللون عدد من الطرق المختلفة، ولكن للأسف لا توجد طريقة بسيطة لإرسال قيمة RGB. في المثال أعلاه ، أرسلنا مسحة, جلسuration و بريghtness. حاول تغيير قيمة الصبغة وإرسال طلب PUT مرة أخرى.

العمل من اردوينو

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

بدلاً من ذلك ، سأوضح لك كيفية التحكم في Hue من Arduino باستخدام درع إيثرنت. لا يلزم توصيل Arduino بجهاز كمبيوتر ، لذا يمكن أن يعمل بشكل مستقل في أي مكان يمكنك وضع كابل إيثرنت فيه. في الواقع ، يجب أن تعمل أيضًا مع درع Wi-Fi ، ولكن ليس لدي واحد ألعب به.

ehternet-sheild-box

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

خلق تغييرات الدولة

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

الأمر String = "{\" on ": true، \" hue \ ": 50100، \" sat \ ": 255، \" bri \ ": 255، \" الانتقاليةtime \ ":" + String (عشوائي (15، 25)) + "}" ؛

إرسال الأمر

لإرسال الأمر بالفعل ، لديك وظيفة مساعد تسمى setHue () تأخذ رقم الضوء وسلسلة الأوامر كوسيطة ، كما يلي:

setHue (1 ، أمر) ؛

كل ما يفعله هو أنه يتصل بالجسر ، يبصق الأمر كطلب PUT ، إلى جانب كل الهراء الآخر الذي ينطوي عليه إنشاء طلب HTTP.


client.print ("PUT / api /") ؛ client.print (hueUsername) ؛ العميل. print ("/ lights /") ؛ العميل. بصمة (lightNum) ؛ client.println ("/ state HTTP / 1.1") ؛ client.println ("إبقاء على قيد الحياة") ؛ client.print ("Host:") ؛ client.println (hueHubIP) ؛ client.print ("طول المحتوى:") ؛ client.println (command.length ()) ؛ client.println ("نوع المحتوى: نص / عادي ؛ charset = UTF-8 ") ؛ client.println () ؛ // سطر فارغ قبل الجسم. client.println (الأمر) ؛ // Hue command. 

إضافة مستشعر الحركة

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

محددات

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

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

الإختراق

الآن بعد أن أصبحت مسلحًا بمعرفة كيفية التحكم في Hue بشكل مستقل تمامًا ، فإنه يفتح عالمًا من الاختراق التلقائي في Hue. السؤال الحقيقي هو: ماذا ستفعل؟

جيمس حاصل على درجة البكالوريوس في الذكاء الاصطناعي ، وهو حاصل على شهادة CompTIA A + و Network +. وهو المطور الرئيسي لـ MakeUseOf ، ويقضي وقت فراغه في لعب كرة الطلاء VR وألعاب الطاولة. لقد كان يبني أجهزة الكمبيوتر منذ أن كان طفلاً.