فهرست مطالب:

پروژه مدرسه اینترنت اشیاء فیلیپس رنگ: 19 مرحله
پروژه مدرسه اینترنت اشیاء فیلیپس رنگ: 19 مرحله

تصویری: پروژه مدرسه اینترنت اشیاء فیلیپس رنگ: 19 مرحله

تصویری: پروژه مدرسه اینترنت اشیاء فیلیپس رنگ: 19 مرحله
تصویری: پسر باید...🗿😐 2024, نوامبر
Anonim
پروژه مدرسه اینترنت اشیا Philips Hue
پروژه مدرسه اینترنت اشیا Philips Hue

این کتابی است که باید برای مدرسه بنویسم. این کامل نیست و من مطمئن نیستم که آیا حتی می توانید از آن استفاده کنید. حداقل دانش من در مورد API است. ما می خواستیم یک آینه تعاملی با چراغ هایی در پشت ایجاد کنیم که به آب و هوا واکنش نشان دهد ، نور از بیرون و غیره.

نگاه کردم چگونه می توانم لامپ Philips Hue را با آردوینو برنامه ریزی کنم. در این مقاله ، تمام مراحل خود و میزان پیشرفتم را توضیح می دهم. من در برنامه نویسی Hue با آردوینو موفق نشده ام اما فکر می کنم شروع خوبی است.

من به این مورد نیاز دارم: یک لامپ آردوینو a hue یک حساب توسعه دهنده Philips Hue

منابع: https://www.developers.meethue.com/documentation/g…https://github.com/bsalinas/ArduinoHuehttps://arduino-esp8266.readthedocs.io/fa/latest/e…https:// www.makeuseof.com/tag/control-philips-hue-…

مرحله 1: شروع به کار کنید

قبل از دسترسی به اسناد API ، باید به عنوان توسعه دهنده ثبت نام کنید. رایگان است ، اما باید شرایط و ضوابط را بپذیرید. می توانید یکی را در اینجا تهیه کنید>

مرحله 2: برنامه Hue

برنامه رسمی Philips Hue را بارگیری کنید. تلفن خود را به شبکه ای که می خواهید پل Hue روشن باشد متصل کنید.

مرحله 3: پل را وصل کنید

پل خود را با شبکه خود متصل کنید و به درستی کار می کند. آزمایش کنید که برنامه تلفن هوشمند می تواند چراغ های همان شبکه را کنترل کند. باید در یک شبکه Wi-Fi باشد.

مرحله 4: آدرس IP

سپس باید آدرس IP پل را در شبکه خود کشف کنید. پیوند را فشار دهید تا در برنامه به پل متصل شوید و چراغ ها را کنترل کنید.

مرحله 5:

اگر همه چیز کار می کند ، به منوی تنظیمات برنامه بروید. سپس به "پل من" بروید ، به "تنظیمات شبکه" بروید. ضامن DHCP را خاموش کنید و آدرس IP پل را مشاهده می کنید. به آدرس IP توجه کنید ، سپس DHCP را دوباره روشن کنید.

مرحله 6: رنگ خود را عیب یابی کنید

اشکال رنگ خود را عیب یابی کنید
اشکال رنگ خود را عیب یابی کنید

وقتی این را نوشتید باید Hue خود را اشکال زدایی کنید. برای این مرحله به آدرس IP نیاز دارید. باید از سایت بعدی دیدن کنید.

/debug/clip.html

رابط کاربری در تصویر به این شکل خواهد بود. این اساس تمام ترافیک وب و رابط کاربری hue RESTful است.

این اطلاعات را درباره رابط Restful سایت Philips Hue دریافت کردم.

URL: این در واقع آدرس محلی یک منبع (چیز) خاص در داخل سیستم رنگ است. این می تواند نور ، گروهی از چراغ ها یا موارد دیگر باشد. این چیزی است که شما در این دستور با آن تعامل دارید.

بدنه: این قسمتی از پیام است که توضیح می دهد چه چیزی و چگونه می خواهید تغییر دهید. در اینجا نام و مقداری که می خواهید تغییر دهید یا اضافه کنید را در قالب JSON وارد می کنید.

روش: در اینجا شما می توانید 4 روش HTTP را انتخاب کنید که تماس رنگ می تواند از آنها استفاده کند.

GET: این دستور برای واکشی تمام اطلاعات مربوط به منبع آدرس داده شده است

PUT: این دستور برای تغییر منبع آدرس داده شده است

POST: این دستور ایجاد منبع جدید در داخل منبع آدرس است

DELETE: این دستور برای حذف منبع آدرس آدرس است پاسخ: در این قسمت ، پاسخ فرمان خود را مشاهده خواهید کرد. همچنین با فرمت JSON.

مرحله 7: بیایید شروع کنیم

بیایید شروع کنیم
بیایید شروع کنیم

اکنون ما به یک نام کاربری تصادفی نیاز داریم که پل برای شما ایجاد می کند. با پر کردن این مورد ، یکی به دست خواهید آورد.

آدرس اینترنتی را وارد کنید:

/api/

در BODY قرار دهید:

و GET را فشار دهید

این دستور اساساً می گوید "لطفاً یک منبع جدید در داخل /api ایجاد کنید" (جایی که نام کاربری در آن قرار دارد) با ویژگی های زیر. در ابتدا ، خطایی دریافت خواهید کرد ، و این به این دلیل است که این مرحله امنیتی Philips Hue است. با فشردن دکمه آنها ثابت می کنند که دسترسی فیزیکی به پل دارید.

مرحله 8:

تصویر
تصویر

حالا دکمه روی پل را فشار دهید و دوباره روی POST کلیک کنید.

اکنون یک نام کاربری دریافت خواهید کرد که پل برای شما ساخته است.

مرحله 9: بیایید با چراغ ها کاری انجام دهیم

بیایید با چراغ ها کاری انجام دهیم
بیایید با چراغ ها کاری انجام دهیم

نام کاربری خود را کپی کرده و در خط زیر قرار دهید.

این را در آدرس اینترنتی خود قرار دهید

/api//چراغ

GET را فشار دهید

شما باید یک پاسخ JSON با تمام چراغ های سیستم خود و نام آنها دریافت کنید.

مرحله 10:

تصویر
تصویر

من برخی از Hue Lights را از مدرسه وام گرفتم ، چیزی که من از آن استفاده می کنم با شماره 3 است. من اطلاعات خاصی در مورد این چراغ می خواهم.

این را در کنار نشانی اینترنتی که قبلاً داشتید قرار دهید:

/api//lights/3

GET را فشار دهید

اکنون اطلاعات مربوط به Led 3 را دریافت می کنید (اگر شماره دیگری مانند 1 دارید اطلاعات مربوط به آن را مشاهده خواهید کرد).

مرحله 11: بیایید نور را کنترل کنیم

بیایید نور را کنترل کنیم
بیایید نور را کنترل کنیم

شما در "state" می بینید که led من "on" است. ما می خواهیم نور را در "حالت" کنترل کنیم.

این را در کنار نشانی اینترنتی که قبلاً داشتید قرار دهید: https:/// api// lights/ 3/ state

خط بعدی را در BODY قرار دهید

PUT را فشار دهید

حالا چراغ شما خاموش می شود! مقدار بدنه را به true تغییر دهید و چراغ دوباره روشن می شود.

مرحله 12:

اکنون همه چیز در حال کار است ، من می خواهم این کار را با آردوینو انجام دهم. من پیوندی را دیدم که Philips Hue برای تغییر رنگ روشن ایجاد کرد. اما شما برای این کار به پایتون احتیاج دارید ، من هرگز با پایتون کار نکردم بنابراین به دنبال چیز دیگری بودم.

اگر دوست دارید به این کد نگاه کنید ، پیوند Github را در اینجا دارم:

github.com/bsalinas/ArduinoHue

مرحله 13:

من نگاه کردم که چگونه می توانم اطلاعاتی را از این سایت توسعه دهنده به arduino خود بدست آورم. بیشتر اوقات من زبان را نمی فهمیدم. اما در وب سایتی از جیمز بروس تعدادی کد پیدا کردم.

این پیوند به وب سایت است.

www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/

مرحله 14:

ابتدا دیدم که از کابل اترنت استفاده می کند. من فقط یک لامپ Hue Light و Bridge a Arduino داشتم و درک کمی از کد داشتم. مدتی طول کشید تا من کد او را درک کردم ، اما هنوز واقعاً آن را درک نکرده ام.

من ابتدا این کتابخانه را برای اینترنت اضافه کردم.

#عبارتند از

این برای شبکه شما است (باید شبیه لامپ Hue Light باشد)

const char* ssid = ""؛ // اینجا شبکه WiFi خود را SSIDconst char* password = ""؛ // رمز عبور شبکه WiFi خود را در اینجا قرار دهید

اینها شناسه پل شما و نام کاربری است که پل شما به شما داده است. (نمی دانم 80 مخفف کجاست اما وقتی تحقیق کردم دیدم که برای شبکه ها استفاده می شود).

// ثابت های رنگی const char hueHubIP = ""؛ // Hue hub IP const char hueUsername = ""؛ // نام کاربری Hue const int hueHubPort = 80؛

// متغیرهای رنگ bool hueOn؛ // روشن/خاموش int hueBri؛ // مقدار روشنایی long hueHue؛ // مقدار رنگ String hueCmd؛ // دستور Hue

بافر طولانی بدون علامت = 0؛ // بافر برای ذخیره داده های دریافتی addr طولانی addr ؛

مرحله 15:

برای تنظیم void ، من بیشترین کار را برای اتصال به اینترنت انجام دادم. در این کد ، آردوینو به دنبال این است که آیا می تواند با شبکه ارتباط برقرار کند یا خیر.

void setup () {Serial.begin (9600)؛

Serial.println ()؛

Serial.printf ("اتصال به٪ s" ، ssid) ؛

WiFi.begin (ssid ، رمز عبور) ؛

while (WiFi.status ()! = WL_CONNECTED) {

تأخیر (500) ؛

Serial.print (".") ؛ }

Serial.println ("متصل") ؛ }

مرحله 16:

در حلقه جیمز ، من دیدم که او یک دستور If و else دارد. اما این مربوط به کابل اترنت بود ، بنابراین من سعی کردم این را کنار بگذارم. من نیز گاهی اوقات سعی می کردم آن را تنظیم کنم ، اما هنوز با داده های زیادی نمی دانستم. برخی از چیزهایی که در کد متوجه شدم ، در رشته داده هایی که به نور Hue داده می شود ، وجود دارد.

حلقه خالی () {

// مجموعه ای از چهار دستور نمونه ، که رنگ دو نور بین قرمز و صورتی را محو می کند. برای اطلاعات بیشتر در مورد دستورات دقیق مورد استفاده ، اسناد Hue API // را مطالعه کنید ، اما توجه داشته باشید که از علامت نقل قول باید فرار کرد.

فرمان رشته = "{" on / ": true ، \" hue / ": 50100 ، \" sat / ": 255 ، \" bri / ": 255 ، \" timetime / ":"+رشته (تصادفی (15 ، 25))+"}" ؛ setHue (1 ، فرمان) ؛

command = "{" on / ": true ، \" hue / ": 65280 ، \" sat / ": 255 ، \" bri / ": 255 ، \" timetime / ":"+رشته (تصادفی (15 ، 25))+"}" ؛ setHue (2 ، فرمان) ؛

command = "{" hue / ": 65280 ، \" sat / ": 255 ، \" bri / ": 255 ، \" timetime / ":"+رشته (تصادفی (15 ، 25))+"}"؛ setHue (1 ، فرمان) ؛

command = "{" hue / ": 50100 ، \" sat / ": 255 ، \" bri / ": 255 ، \" timetime / ":"+رشته (تصادفی (15 ، 25))+"}"؛ setHue (2 ، فرمان) ؛

}

مرحله 17:

کد بعدی بولی بود ، اما در آردوینو باید Bool بنویسید. در ابتدا به دلیل کلمه کلاینت خطاهای زیادی دریافت کردم. بنابراین من آن را جستجو کردم و دیدم که برخی از کدها از خط "WifiClient client؛" استفاده می کنند. بنابراین من از آن استفاده کردم و کار کرد.

در دستور if شما اغلب client.print را مشاهده می کنید. اگر به کد نگاه کنید ، خواهید دید که نشانی اینترنتی که قبلاً وارد کرده اید به قطعات تقسیم شده است. حالا کد خود را وارد کنید. من مجبور شدم سومین چراغ LED خود را انتخاب کنم.

/ * setHue () تابع فرمان اصلی ما است ، که باید یک عدد نور و یک رشته فرمان * به درستی فرمت شده در قالب JSON ارسال شود (اساساً مجموعه ای از متغیرها و مقادیر سبک جاوا اسکریپت * و سپس یک درخواست ساده HTTP PUT به پل در IP مشخص شده در ابتدا. */

bool setHue (int lightNum ، دستور String) {

مشتری WiFiClient ؛

if (client.connect (hueHubIP، hueHubPort)) {

while (client.connected ()) {

client.print ("PUT /api /") ؛ client.print (hueUsername) ؛ client.print ("/lights/")؛ client.print (lightNum) ؛ // hueLight مبتنی بر صفر ، 1 client.println ("3/state") اضافه کنید ؛ // در اینجا نام رنگ و stateclient.print ("میزبان:") را تغییر دادم. client.println (hueHubIP) ؛ client.print ("Content-Length:")؛ client.println (command.length ())؛ client.println ("نوع محتوا: text/plain؛ charset = UTF-8")؛ client.println ()؛ // خط خالی قبل از body client.println (فرمان) ؛ // دستور Hue

} client.stop ()؛ بازگشت واقعی ؛ // فرمان اجرا شد}

در غیر این صورت false false؛ // فرمان انجام نشد}

مرحله 18:

در بولی دوم ، من همین کار را با تغییر برخی از کلمات انجام دادم. آپلود کردم ببینم کار میکنه یا نه

/* یک تابع کمکی در صورت منطق شما به وضعیت فعلی نور بستگی دارد. * این تعدادی متغیر جهانی را تنظیم می کند که می توانید برای اطلاع از روشن بودن یا عدم روشن بودن چراغ * و رنگ و غیره ، فقط برای ارسال دستورات */

bool getHue (int lightNum) {

مشتری WiFiClient ؛

if (client.connect (hueHubIP، hueHubPort)) {

client.print ("GET /api /") ؛ client.print (hueUsername) ؛ client.print ("/lights/") ؛ client.print (lightNum) ؛ client.println ("3/state") ؛ client.print ("میزبان:")؛ client.println (hueHubIP) ؛ client.println ("نوع محتوا: application/json") ؛ client.println ("زنده نگه داشتن") ؛ client.println ()؛

while (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":"، "\ 0")؛ hueOn = (client.readStringUntil ('،') == "true") ؛ // اگر چراغ روشن است ، متغیر را روی true client.findUntil تنظیم کنید ("\" bri / ":"، "\ 0")؛ hueBri = client.readStringUntil ('،').toInt () ؛ // متغیر را روی brightness value client.findUntil تنظیم کنید ("\" hue / ":"، "\ 0")؛ hueHue = client.readStringUntil ('،').toInt () ؛ // تنظیم متغیر بر روی مقدار شکستن مقدار ؛ // هنوز ویژگی های نور دیگر را ضبط نکرده}} client.stop ()؛ بازگشت واقعی ؛ // captured on، bri، hue} else false false؛ // خطا در خواندن on، bri، hue}

مرحله 19:

تصویر
تصویر

فکر می کنم می توانم با Philips Hue ارتباط برقرار کنم. اطلاعات را دریافت می کنم اما هنوز باید از آن استفاده کرد.

متأسفانه ، این فراتر از چیزی است که می توانم کدگذاری کنم. اگر پاسخ را می دانید ، یا اگر خطاهای واقعی وجود دارد که باید اصلاح شوند ، خوشحال می شوم آن را بشنوم.:-)

توصیه شده: