جدول المحتويات:

Hue Magic: 4 خطوات (بالصور)
Hue Magic: 4 خطوات (بالصور)

فيديو: Hue Magic: 4 خطوات (بالصور)

فيديو: Hue Magic: 4 خطوات (بالصور)
فيديو: Growing Watermelon From Seed 2024, شهر نوفمبر
Anonim
Image
Image

مرحبًا بك معالجات!

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

بعد بضع ثوانٍ ، يتلاشى اللون ويعود مصباح الطاولة إلى حالته قبل التعويذة. حتى يتم إلقاء تعويذة جديدة …

الخطوة 1: ما تحتاجه لإنشاء هذا المشروع

ما تحتاجه لإنشاء هذا المشروع
ما تحتاجه لإنشاء هذا المشروع
ما تحتاجه لإنشاء هذا المشروع
ما تحتاجه لإنشاء هذا المشروع
ما تحتاجه لإنشاء هذا المشروع
ما تحتاجه لإنشاء هذا المشروع

لإنشاء هذا المشروع ، ستحتاج إلى المواد التالية:

    • 1 (أو أكثر) لمبة لون Philips Hue وجسر Hue
    • 1 Wemos D1 mini أو متحكم دقيق قائم على esp8266
    • 1 مستشعر لمس (Arduino) (مثل TTP223R)
    • 1 زر مؤقت (Arduino)
    • 1 10 فائق التوهج مكثف
    • 1 RGB led (نوع الأنود المشترك)
    • 5 مقاومات (10 ، 22 ، 47 أوم ، 2 × 10 كيلو أوم)
    • 2x3 بوصة أو حوالي 5x7 سم يجب أن تكون كبيرة بما يكفي) 2 نماذج أولية من ثنائي الفينيل متعدد الكلور
    • بعض الأسلاك (الطائر)
    • لحام الحديد
    • عصا سحرية (يمكن شراؤها على أنها جاهزة في متجر ألعاب ، أو يمكنك صنعها بنفسك)
    • صندوق صغير مصنوع من الورق المقوى أو الخشب (يمكن أن يكون صندوقًا موجودًا ، ولكن يمكنك أيضًا بناء صندوق من الصفر بالطبع)
    • بعض الشريط
    • بعض الغراء و / أو الصواميل والمسامير لتركيب ثنائي الفينيل متعدد الكلور في الصندوق.
    • اختياري: ورق التغليف للصندوق

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

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

الخطوة 2: الصندوق والعصا

الصندوق والعصا
الصندوق والعصا
الصندوق والعصا
الصندوق والعصا

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

عندما تقوم بإعادة الغرض من صندوق موجود ، فإن الشيء الوحيد الذي عليك القيام به هو عمل فتحتين في الجزء العلوي من الصندوق: ثقب صغير (الحجم 5 مم = 0.2 بوصة) لمصباح RGB وثقب أكبر (حوالي 12- 14 ملم أو حوالي 0.5 بوصة) لمستشعر اللمس.

لا يعد الموضع الدقيق للثقوب أمرًا بالغ الأهمية ، ما عليك سوى وضعها وفقًا لحس جمالك ولكن ضع في اعتبارك بعض الأشياء:

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

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

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

مهما كان المسار الذي تختاره ، فقد حان الوقت الآن لاستكشاف الجزء الداخلي من الصندوق.

الخطوة 3: الجهاز بالداخل

الأجهزة بالداخل
الأجهزة بالداخل
الأجهزة بالداخل
الأجهزة بالداخل
الأجهزة بالداخل
الأجهزة بالداخل

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

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

إلى البرنامج!

الخطوة 4: البرنامج

تأكد من أن لديك أحدث محرر برامج Arduino (مجاني) ، والذي يمكن تنزيله من https://www.arduino.cc/en/Main/Software. لإضافة دعم للوحات Wemos D1 mini واللوحات الأخرى المستندة إلى ESP8266 ، اتبع الخطوات التالية:

  • بعد التثبيت ، ابدأ برنامج Arduino وافتح نافذة التفضيلات.
  • أدخل https://arduino.esp8266.com/stable/package_esp8266com_index.json في حقل "عناوين URL لمدير مجلس الإدارة الإضافية". يمكنك إضافة عدة عناوين URL ، مع الفصل بينها بفاصلات.
  • افتح Boards Manager من Tools> Board menu وقم بتثبيت النظام الأساسي esp8266 (ولا تنس تحديد لوحة ESP8266 من أدوات> قائمة اللوحة بعد التثبيت. "LOLIN (WEMOS) D1 R2 & mini" يعمل بشكل أفضل مع Wemos D1 mini v2 و v3 المجالس.

إذا كنت بحاجة إلى مزيد من المساعدة في تثبيت Arduino وإعداد برامج التشغيل ، يمكنك إلقاء نظرة على

في محرر Arduino ، افتح ملفًا جديدًا (ملف> جديد) وانسخ / الصق الكود أدناه في النافذة التي فتحت للتو. ما عليك سوى الكتابة فوق الأسطر الموجودة بالفعل في النافذة الجديدة (إعداد باطل وحلقة باطلة).

أنت الآن جاهز تقريبًا ، ولكن سيتعين عليك تكييف بضع أجزاء من الكود لإعدادك الخاص.

أول شيء يجب فعله هو تغيير عنوان IP في السطر 34 (في محرر Arduino ، يتم ترقيم أسطر الكود) في عنوان IP الخاص بجسر Hue. إذا كنت لا تعرف عنوان IP الخاص بـ Hue Bridge ، فتفضل بزيارة https://discovery.meethue.com/ وعنوان IP الصحيح الذي سيظهر على الفور في متصفحك. عنوان IP هو الرقم المنقط الذي يسبقه "عنوان داخلي".

للتواصل مع مصابيح Hue ، سيتعين عليك إنشاء مستخدم Hue API لـ Wemos D1 mini ، حتى يتمكن Wemos من الاتصال بضوء Hue عبر Hue API. للقيام بذلك ، اتبع التعليمات الموجودة على https://developers.meethue.com/develop/get-started-2/ وانسخ / الصق اسم المستخدم الذي تم إنشاؤه (طويل جدًا) في نافذة كود Arduino. ما عليك سوى استبدال كل "اسم مستخدم واجهة برمجة تطبيقات HUE الخاص بك" باسم مستخدم واجهة برمجة التطبيقات الذي تم إنشاؤه.

ثم تحتاج إلى تحديد ضوء Hue المناسب لتغيير اللون. في Hue API ، يحتوي كل مصباح على رقم ، لذلك تحتاج إلى معرفة الرقم الذي يتوافق مع الضوء الذي تريد استخدامه لهذا المشروع. تتمثل إحدى أسهل الطرق لمعرفة الرقم الذي يحتويه مصباح معين ، في تنزيل تطبيق Hue Viewer لنظام Android أو iOS. استبدل النص "YOUR LIGHT NUMBER" بالرقم الصحيح في كل مكان في نافذة كود Arduino.

آخر شيء يجب القيام به هو إعداد Wemos للاتصال بشبكة wifi الخاصة بك. يتم ذلك عن طريق تحميل الرمز على Wemos وعلى جهاز الكمبيوتر المحمول الخاص بك إلى شبكة wifi أخرى: إلى "AutoConnectAP". سيعرض متصفحك بعد ذلك صفحة يمكنك من خلالها إضافة SSID (الاسم) وكلمة المرور لشبكة wifi الخاصة بك التي ستستخدمها وحدة تحكم Wemos للاتصال بشبكة wifi الخاصة بك (وبجسر Hue).

ملاحظة: إذا لم ينجح تحميل الكود إلى Wemos D1 mini عبر USB ، فقد تحتاج إلى تنزيل برنامج تشغيل لشريحة USB على Wemos. يمكن تنزيل برنامج تشغيل لمنصتك (Windows ، Mac) على

أنت الآن جاهز لاختبار إبداعك!

// ESP8266 Hue Magic Wand // Richard van Kampen - 2018 // تم اختبار هذا الرمز على Wemos D1 mini ، ولكن من المحتمل أن يعمل أيضًا على لوحات تطوير أخرى قائمة على ESP8266 // لإضافة دعم للوحات Wemos D1 mini وغيرها من لوحات ESP8266 إلى محرر Arduino ، اتبع الخطوات التالية: // - ابدأ Arduino وافتح نافذة التفضيلات. // - أدخل https://arduino.esp8266.com/stable/package_esp8266com_index.json في حقل عناوين URL لمدير مجلس الإدارة الإضافي. يمكنك إضافة عدة عناوين URL ، مع الفصل بينها بفاصلات. // - افتح Boards Manager من Tools> Board menu وقم بتثبيت النظام الأساسي esp8266 (ولا تنس تحديد لوحة ESP8266 الخاصة بك من Tools> Board menu بعد التثبيت). // المكتبات المستخدمة: #include "ESP8266WiFi.h" // ESP8266 Core WiFi Library #include "DNSServer.h" // خادم DNS المحلي المستخدم لإعادة توجيه جميع الطلبات إلى بوابة تكوين WiFiManager إذا لم يكن هناك إعدادات WIFI (SSID ، كلمة المرور) لم تحدد بعد. #include "ESP8266WebServer.h" // Local WebServer المستخدمة لخدمة بوابة تكوين WiFiManager # تتضمن "WiFiManager.h" // مكتبة WiFi Configuration Magic ، إذا لم تكن مثبتة بعد ، فالرجاء الرجوع إلى https://github.com/tzapu/WiFiManager # install-through-library-manager #include "RestClient.h" // https://github.com/fabianofranca/ESP8266RestClient ، ضروري لاستخدام واجهة برمجة تطبيقات Philips Hue (راجع https://developers.meethue.com/develop/ hue-api /). # تضمين "ArduinoJson.h" // https://github.com/bblanchon/ArduinoJson ، مطلوب لتحليل استجابة Hue API ، يرجى تثبيت الإصدار 5.x عبر مدير المكتبة في Arduino (القائمة "Sketch"> تضمين مكتبة> إدارة المكتبات> ابحث عن ArduinoJson وقم بتغيير الإصدار إلى الإصدار 5.x الأحدث). الإصدار 6 (حاليًا في مرحلة تجريبية) يطرح خطأ. // المتغيرات و init: سلسلة الاستجابة ؛ const int redPin = 13 ؛ // على Wemos هذا هو d7 const int greenPin = 12 ؛ // في Wemos هذا هو d6 const int bluePin = 14 ؛ // على Wemos هذا هو d5 const int touchSensor = 5 ؛ // على Wemos هذا هو d1 const int activationPin = 4 ؛ // في Wemos هذا هو تنشيط منطقي d2 = مرتفع ؛ اتصال منطقي = منخفض ؛ const char * aan_restore ؛ int bri_restore؛ x_restore مزدوج ؛ مخزن y_r مزدوج ؛ x_magic مزدوج ؛ y_magic مزدوج ؛ منطقي أولًا = صحيح ؛ بداية طويلة بدون توقيع تيار طويل غير موقع مدة طويلة بدون توقيع عميل RestClient = RestClient ("192.168.178.23") ؛ // "عنوان IP الخاص بـ Hue Bridge" // إذا كنت لا تعرف عنوان IP الخاص بـ Hue Bridge ، فتفضل بزيارة https://discovery.meethue.com وسيظهر على الفور في متصفحك. عنوان IP هو الرقم المنقط الذي يسبقه إعداد باطل "عنوان داخلي" () {analogWriteRange (255)؛ Serial.begin (9600) ؛ // ابدأ بمصباح LED. pinMode (activationPin ، INPUT_PULLUP) ؛ pinMode (مستشعر اللمس ، الإدخال) ؛ startMillis = ميلي () ؛ checkWand () ؛ } حلقة فارغة () {// لا شيء هنا ، اتركه فارغًا…} void checkWand () {int rgbColour [3]؛ // رمز اللون RGB بواسطة James Harton ، https://gist.github.com/jamesotron/766994 // ابدأ باللون الأحمر. rgbColour [0] = 255 ؛ rgbColour [1] = 0 ؛ rgbColour [2] = 0 ؛ التنشيط = digitalRead (activationPin) ؛ // LOW يعني أن العصا قيد الاستخدام. touch = digitalRead (touchSensor) ؛ // HIGH تعني استخدام الإصبع بدلاً من العصا ، وهو ما لا ينبغي أن يكون كذلك. while (activation == LOW && touch == LOW) {// اختر الألوان للزيادة والإنقاص. لـ (int decColour = 0 ؛ decColour <3 ؛ decColour + = 1) {int incColour = decColour == 2؟ 0: decColour + 1 ؛ // = عامل ثلاثي ، يعني: int incColour؛ if (decColour == 2) {incColour = 0؛} else {incColour = decColour +1؛} // cross-fade the two color. لـ (int i = 0 ؛ i <255 ؛ i + = 1) {rgbColour [decColour] - = 1 ؛ rgbColour [incColour] + = 1 ؛ // نظرًا لأن RGB led الخاص بنا به أنود مشترك بدلاً من الكاثود (لذلك نحتاج إلى الاتصال بـ + 3.3V بدلاً من الأرض) ، نحتاج إلى قيم عكسية لـ RGB: int red = 255 - rgbColour [0]؛ كثافة العمليات الخضراء = 255 - rgbColour [1] ؛ int الأزرق = 255 - rgbColour [2] ؛ analogWrite (redPin ، أحمر) ؛ analogWrite (greenPin ، الأخضر) ؛ analogWrite (bluePin ، أزرق) ؛ تأخير (8) ؛ التنشيط = digitalRead (activationPin) ؛ إذا (التنشيط == مرتفع) {// HIGH تعني رفع العصا. الانتقال إلى التوقف }}}} stopColorCycling: currentMillis = millis ()؛ المدة ميليس = (currentMillis - startMillis) ؛ if (durationMillis> 1000) {RGBtoxy (rgbColour [0]، rgbColour [1]، rgbColour [2])؛ } else {// ضع Wemos في وضع السكون: ESP.deepSleep (0)؛ }} void RGBtoxy (int red، int green، int blue) {// راجع https://developers.meethue.com/documentation/color-conversions-rgb-xy double R = map (red، 0، 255، 0، 1000) ؛ ص / = 1000 ؛ مزدوج G = خريطة (أخضر ، 0 ، 255 ، 0 ، 1000) ؛ G / = 1000 ؛ مزدوج B = خريطة (أزرق ، 0 ، 255 ، 0 ، 1000) ؛ ب / = 1000 ؛ R = (R> 0.04045f)؟ الأسرى ((R + 0.055f) / (1.0f + 0.055f) ، 2.4f): (R / 12.92f) ؛ G = (G> 0.04045f)؟ الأسرى ((G + 0.055f) / (1.0f + 0.055f) ، 2.4f): (G / 12.92f) ؛ ب = (ب> 0.04045f)؟ الأسرى ((B + 0.055f) / (1.0f + 0.055f) ، 2.4f): (B / 12.92f) ؛ مزدوج X = R * 0.649926f + G * 0.103455f + B * 0.197109f ؛ مزدوج Y = R * 0.234327f + G * 0.743075f + B * 0.022598f ؛ مزدوج Z = R * 0.0000000f + G * 0.053077f + B * 1.035763f ؛ مزدوج x = X / (X + Y + Z) ؛ مزدوج y = Y / (X + Y + Z) ؛ // لم يكتمل التحويل بالكامل ، ولكنه ربما يكون جيدًا بما يكفي لما نريد تحقيقه ، لذا اتركه عند هذا وأرسل قيم XY إلى lamp: sendtoHue (x، y)؛ } void sendtoHue (double a، double b) {// تغيير اللون الفعلي من wand magic if (first) {// first pass: getCurrentValues ()؛ getCurrentValues ()؛ } // ثم أرسل ألوان العصا السحرية: // wait for spell: long wait؛ x_magic = أ ؛ y_magic = ب ؛ // مصباح يعمل بلون العصا السحرية: استجابة = "" ؛ int temp = عشوائي (2 ، 9) ؛ const char * state = "true" ؛ لـ (int i = 1؛ i <= temp؛ i ++) {// إنشاء مصفوفة char لإرسالها إلى الجسر: String temp_body1 = "{" on / ":" + String (state) + "، \" bri / ": 220، / "xy \": ["+ String (x_magic) +"، "+ String (y_magic) +"]، / "transfertime \": 1} "؛ int str_len1 = temp_body1.length () + 1 ؛ شار post_body1 [str_len1] ؛ temp_body1.toCharArray (post_body1، str_len1)؛ // الآن لدينا post_body1 كمصفوفة شار ؛ // إجراء مكالمة أخرى: int statusCodePut1 = client.put ("/ api / YOUR HUE API USERNAME / Lights / YOUR LIGHT NUMBER / state" ، post_body1 ، & response) ؛ انتظر = عشوائي (100 ، 600) ؛ تأخير (انتظر) ؛ إذا (state == "true") {state = "false" ؛ } else {state = "true"؛ }} // تقليل السطوع …: response = ""؛ درجة الحرارة = عشوائي (4 ، 17) ؛ // إنشاء صفيف شار لإرساله إلى الجسر: String temp_body2 = "{" on / ": true، \" bri / ": 154، \" transfertime / ":" + String (temp) + "}"؛ int str_len2 = temp_body2.length () + 1 ؛ شار post_body2 [str_len2] ؛ temp_body2.toCharArray (post_body2، str_len2)؛ // الآن لدينا post_body2 كمصفوفة شار ؛ // إجراء مكالمة أخرى: int statusCodePut2 = client.put ("/ api / YOUR HUE API USERNAME / Lights / YOUR LIGHT NUMBER / state"، post_body2، & response) ؛ انتظر = عشوائي (1000 ، 2500) ؛ تأخير (انتظر) ؛ //.. وجعلها أكثر إشراقًا مرة أخرى: رد = "" ؛ درجة الحرارة = عشوائي (4 ، 17) ؛ // إنشاء صفيف شار لإرساله إلى الجسر: String temp_body3 = "{" bri_inc / ": 100، \" transfertime / ":}"؛ int str_len3 = temp_body3.length () + 1 ، شار post_body3 [str_len3] ؛ temp_body3.toCharArray (post_body3، str_len3)؛ // الآن لدينا post_body3 كمصفوفة شار ؛ // إجراء مكالمة أخرى: int statusCodePut3 = client.put ("/ api / اسم المستخدم الخاص بواجهة برمجة تطبيقات HUE / أضواء / رقمك الخفيف / الولاية" ، post_body3 ، والاستجابة) ؛ انتظر = عشوائي (2500 ، 5000) ؛ // انتظر 2-5 ثوان تأخير (انتظر) ؛ // ثم تتلاشى مرة أخرى إلى القيمة القديمة: response = ""؛ // إنشاء صفيف محارف لإرساله إلى الجسر: String temp_body4 = "{" on / ":" + String (aan_restore) + "، \" bri / ":" + String (bri_restore) + "، \" xy / ": ["+ String (x_restore) +"، "+ String (y_restore) +"]، / "Transportationtime \": "+ String (20) +"} "؛ int str_len4 = temp_body4.length () + 1 ؛ شار post_body4 [str_len4] ؛ temp_body4.toCharArray (post_body4، str_len4)؛ // الآن لدينا post_body4 كمصفوفة شار ؛ // إجراء مكالمة أخرى: int statusCodePut4 = client.put ("/ api / اسم المستخدم الخاص بواجهة برمجة تطبيقات HUE / أضواء / رقمك الخفيف / الولاية" ، post_body4 ، والاستجابة) ؛ ESP.deepSleep (0) ، // الذهاب للنوم مرة أخرى…. } getCurrentValues () غير موقعة {connectWifi ()؛ // أول اتصال باستجابة Wifi = ""؛ // إجراء مكالمة أخرى: int statusCodeGet = client.get ("/ api / اسم المستخدم الخاص بواجهة برمجة تطبيقات HUE / أضواء / رقم الإضاءة الخاص بك" ، والاستجابة) ؛ Serial.print ("رمز الحالة من الخادم بعد GET:") ؛ Serial.println (statusCodeGet) ؛ Serial.print ("نص الاستجابة من الخادم:") ؛ Serial.println (استجابة) ؛ StaticJsonBuffer jsonBuffer ؛ // تحليل استجابة Json // جذر شجرة الكائن. // // إنها إشارة إلى JsonObject ، البايتات الفعلية موجودة داخل // jsonBuffer مع جميع العقد الأخرى لشجرة الكائن. // يتم تحرير الذاكرة عندما يخرج jsonBuffer عن النطاق. JsonObject & root = jsonBuffer.parseObject (استجابة) ؛ JsonObject & state = root ["state"] ؛ // اختبار نجاح التحليل. if (! root.success ()) {Serial.println ("parseObject () فشل")؛ } // إحضار القيم. aan_restore = الحالة ["on"] ؛ Serial.println (aan_restore) ؛ bri_restore = الحالة ["bri"] ؛ x_restore = الحالة ["xy"] [0] ؛ y_restore = الحالة ["xy"] [1] ؛ first = false ؛} void connectWifi () {// intialization المحلي.بمجرد الانتهاء من أعمالها ، ليست هناك حاجة لإبقائها حول WiFiManager wifiManager ؛ // إعادة ضبط الإعدادات - للاختبار: //wifiManager.resetSettings () ؛ // تعيين رد الاتصال الذي يتم استدعاؤه عند فشل الاتصال بشبكة WiFi السابقة ، ويدخل في وضع نقطة الوصول wifiManager.setAPCallback (configModeCallback) ؛ // fetches ssid and pass وتحاول الاتصال // إذا لم يتم الاتصال ، فإنها تبدأ نقطة وصول بالاسم المحدد // هنا "AutoConnectAP" // وتنتقل إلى حلقة حظر في انتظار التكوين إذا (! wifiManager.autoConnect ()) {Serial.println ("فشل الاتصال وضرب المهلة") ؛ // إعادة التعيين والمحاولة مرة أخرى ، أو ربما وضعه في وضع النوم العميق ESP.reset () ؛ تأخير (1000) ؛ } // إذا وصلت إلى هنا فأنت متصل بشبكة WiFi Serial.println ("متصل … yeey:)") ؛ Serial.print ("متصل بـ:") ؛ Serial.println (WiFi. SSID ()) ؛ Serial.print ("عنوان IP:") ؛ Serial.println (WiFi.localIP ()) ؛ // عنوان IP المخصص لـ ESP (Wemos) // اطبع قوة الإشارة المستلمة: long rssi = WiFi. RSSI () ؛ Serial.print ("قوة الإشارة (RSSI):") ؛ Serial.println (rssi) ؛ } configModeCallback باطلة (WiFiManager * myWiFiManager) {Serial.println ("وضع التكوين الدخول") ؛ Serial.println (WiFi.softAPIP ()) ؛ // إذا استخدمت SSID الذي تم إنشاؤه تلقائيًا ، فقم بطباعته Serial.println (myWiFiManager-> getConfigPortalSSID ()) ؛ }

موصى به: