תוכן עניינים:
- שלב 1: התחל
- שלב 2: אפליקציית הגוון
- שלב 3: חבר את הגשר
- שלב 4: כתובת IP
- שלב 5:
- שלב 6: איתור באגים בגוון שלך
- שלב 7: בואו נתחיל
- שלב 8:
- שלב 9: בואו נעשה משהו עם האורות
- שלב 10:
- שלב 11: בואו לשלוט באור
- שלב 12:
- שלב 13:
- שלב 14:
- שלב 15:
- שלב 16:
- שלב 17:
- שלב 18:
- שלב 19:
וִידֵאוֹ: פרויקט בית הספר IoT Philips Hue: 19 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:13
זהו מדריך שהייתי צריך לכתוב לבית הספר. זה לא שלם ואני לא בטוח אם אתה יכול אפילו להשתמש בו. הידע שלי על API הוא המינימום. רצינו ליצור מראה אינטראקטיבית עם אורות מאחור המגיבים למזג האוויר, אור מבחוץ וכו '.
הסתכלתי כיצד אוכל לתכנת מנורת Philips Hue עם ארדואינו. בכך אני מסביר את כל צעדי ועד כמה רחוק הגעתי. לא הצלחתי לתכנת את הגוון עם הארדואינו אבל אני חושב שזו התחלה טובה.
הייתי צריך את זה: מנורת Arduino, גוון, חשבון מפתח של Philips Hue
מקורות: https://www.developers.meethue.com/documentation/g…https://github.com/bsalinas/ArduinoHuehttps://arduino-esp8266.readthedocs.io/en/latest/e…https:// www.makeuseof.com/tag/control-philips-hue-…
שלב 1: התחל
לפני שתוכל לגשת לתיעוד ה- API, יהיה עליך להירשם כמפתח. זה בחינם, אך עליך לקבל את התנאים וההגבלות. אתה יכול להכין אחד כאן>
שלב 2: אפליקציית הגוון
הורד את אפליקציית Philips Hue הרשמית. חבר את הטלפון שלך לרשת שבה אתה רוצה שגשר הגוון יהיה.
שלב 3: חבר את הגשר
חבר את הגשר שלך לרשת שלך ומתפקד כראוי. בדוק שאפליקציית הסמארטפון יכולה לשלוט באורות באותה רשת. זה חייב להיות באותה רשת Wi-Fi.
שלב 4: כתובת IP
לאחר מכן עליך לגלות את כתובת ה- IP של הגשר ברשת שלך. לחץ על הקישור כדי להתחבר לגשר באפליקציה ונסה לשלוט באורות.
שלב 5:
אם הכל עובד, עבור לתפריט ההגדרות באפליקציה. עבור אל "הגשר שלי", עבור אל "הגדרות רשת". כבה את מתג DHCP ותראה את כתובת ה- IP של הגשר. שים לב לכתובת ה- IP ולאחר מכן הפעל שוב את DHCP.
שלב 6: איתור באגים בגוון שלך
כשכתבת את זה אתה צריך לאתר באגים בגוון שלך. אתה צריך את כתובת ה- IP לשלב זה. עליך לבקר באתר הבא.
/debug/clip.html
הממשק ייראה כך בתמונה. זהו הבסיס לכל תעבורת האינטרנט וממשק הגוון RESTful.
קיבלתי מידע זה אודות הממשק הרפוי של אתר Philips Hue.
כתובת URL: זוהי למעשה הכתובת המקומית של משאב (דבר) ספציפי בתוך מערכת הגוון. זה יכול להיות אור, קבוצת אורות או דברים רבים נוספים. זהו האובייקט שבו תתבצע אינטראקציה בתוך פקודה זו.
גוף: זהו החלק של המסר המתאר את מה שאתה רוצה לשנות וכיצד. כאן אתה מזין, בפורמט JSON, את שם המשאב והערך שברצונך לשנות/להוסיף.
שיטה: כאן יש לך אפשרות לבחור בין 4 שיטות HTTP שבהן ניתן להשתמש בשיחת הגוון.
GET: זוהי הפקודה לאחזר את כל המידע על המשאב המופנה
PUT: זוהי הפקודה לשינוי משאב מטופל
POST: זוהי הפקודה ליצירת משאב חדש בתוך המשאב הכתוב
מחק: זוהי הפקודה למחיקת תגובת המשאב המופנה: באזור זה תראה את התגובה לפקודה שלך. גם בפורמט JSON.
שלב 7: בואו נתחיל
כעת אנו זקוקים לשם משתמש שנוצר באופן אקראי שהגשר יוצר עבורך. אתה תקבל אחד על ידי מילוי זה.
הכנס את כתובת האתר:
/api/
הכנס את ה- BODY:
ולחץ על GET
פקודה זו בעצם אומרת "אנא צור משאב חדש בתוך /api" (היכן שמות משתמשים יושבים) עם המאפיינים הבאים. בהתחלה תקבל שגיאה, וזה בגלל שזה שלב האבטחה של Philips Hue. על ידי לחיצה על הכפתור הם מוכיחים שיש לך גישה פיזית לגשר.
שלב 8:
כעת לחץ על הלחצן בגשר ולחץ שוב על POST.
כעת תקבל שם משתמש שהגשר הכין עבורך.
שלב 9: בואו נעשה משהו עם האורות
העתק את שם המשתמש שלך ושם אותו בשורה הבאה.
שים זאת בכתובת האתר שלך
/api//lights
הקש GET
אתה אמור לקבל תגובת JSON עם כל הנורות במערכת שלך ושמותיהן.
שלב 10:
שאלתי כמה אורות גוון מבית הספר, זה שאני משתמש בו הוא זה עם מזהה 3. אני רוצה מידע ספציפי על האור הזה.
שים את זה לצד כתובת האתר שכבר הייתה לך:
/api//lights/3
הקש GET
עכשיו אתה מקבל את כל המידע על לד 3 (אם יש לך מספר אחר כמו 1 תראה מידע על זה).
שלב 11: בואו לשלוט באור
אתה רואה ב"מצב "שה- LED שלי" דולק ". אנו רוצים לשלוט באור ב"מצב ".
שים זאת לצד כתובת האתר שכבר הייתה לך: https:/// api// lights/ 3/ state
שים את השורה הבאה ב- BODY
הקש PUT
עכשיו האור שלך יכבה! שנה את הערך בגוף לאמיתי והאור יידלק שוב.
שלב 12:
עכשיו הכל עובד אני רוצה לעשות את זה עם הארדואינו שלי. הסתכלתי על הקישור שפיליפס גוון נתן כדי לשנות את הצבע הבהיר. אבל אתה צריך פייתון בשביל זה, מעולם לא עבדתי עם פייתון אז חיפשתי משהו אחר.
אם אתה רוצה להסתכל על הקוד הזה יש לי את הקישור של Github כאן:
github.com/bsalinas/ArduinoHue
שלב 13:
חיפשתי כיצד אוכל לקבל מידע מאתר מפתח זה לאדואינו. רוב הזמן לא הבנתי את השפה. אבל מצאתי איזה קוד באתר של ג'יימס ברוס.
זהו הקישור לאתר.
www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/
שלב 14:
ראשית ראיתי שהוא משתמש בכבל אתרנט. הייתה לי רק נורת גוון וגשר ארדואינו, והבנה קטנה של קוד. לקח לי זמן להבין את הקוד שלו, אבל אני עדיין לא ממש מבין אותו.
הוספתי לראשונה את הספרייה הזו לאינטרנט.
#לִכלוֹל
זה בשביל הרשת שלך (זה חייב להיות זהה לנורת הגוון)
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; // on/off int hueBri; // ערך הבהירות long hueHue; // value hue String hueCmd; // פקודת הגוון
מאגר ארוך לא חתום = 0; // מאגר לאחסון נתונים שהתקבל כתובת ארוכה ללא סימן;
שלב 15:
לצורך הגדרת הריק, עשיתי את מירב החיבור לאינטרנט. בקוד זה, הארדואינו מחפש אם הוא יכול להתחבר לרשת.
הגדרת void () {Serial.begin (9600);
Serial.println ();
Serial.printf ("מתחבר ל- %s", ssid);
WiFi.begin (ssid, סיסמא);
בעוד (WiFi.status ()! = WL_CONNECTED) {
עיכוב (500);
Serial.print ("."); }
Serial.println ("מחובר"); }
שלב 16:
בלופ של ג'יימס, ראיתי שיש לו הצהרה של If and else. אבל זה היה לכבל ה- Ethernet, אז ניסיתי לעזוב את זה. לפעמים גם ניסיתי להתאים אותו, אך עדיין לא ידעתי עם הרבה נתונים. כמה דברים בקוד אכן הבנתי, במחרוזת נמצאים הנתונים הניתנים לאור הגוון.
לולאת חלל () {
// סדרה של ארבע פקודות לדוגמא, שצבען דוהה שני אורות בין אדום לוורוד. קרא את התיעוד של Hue API // לפרטים נוספים על הפקודות המדויקות שיש להשתמש בהם, אך שים לב כי יש להימלט מסימני ציטוט.
פקודת מחרוזת = "{" ב- / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" זמן מעבר / ":"+מחרוזת (אקראי (15, 25))+"}"; setHue (1, פקודה);
command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" זמן מעבר / ":"+מחרוזת (אקראי (15, 25))+"}"; setHue (2, פקודה);
command = "{" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" זמן מעבר / ":"+מחרוזת (אקראית (15, 25))+"}"; setHue (1, פקודה);
command = "{" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" זמן מעבר / ":"+מחרוזת (אקראית (15, 25))+"}"; setHue (2, פקודה);
}
שלב 17:
הקוד הבא היה בוליאני, אבל בארדואינו אתה צריך לכתוב בול. בהתחלה קיבלתי הרבה שגיאות בגלל המילה לקוח. אז חיפשתי את זה וראיתי שקוד כלשהו משתמש בשורה "לקוח WifiClient;". אז השתמשתי בזה וזה עבד.
בהצהרת if אתה רואה לעתים קרובות client.print. אם תסתכל על הקוד, תראה שכתובת האתר שהזנת קודם מחולקת לחתיכות. כעת הזן קוד משלך. הייתי צריך לבחור את נורת הלד השלישית שלי.
/ * setHue () היא פונקציית הפקודה העיקרית שלנו, שצריכה להעביר מספר אור ומחרוזת פקודה מעוצבת כראוי בפורמט JSON (בעצם מערך סגנון Javascript של משתנים * וערכים. לאחר מכן הוא מבקש בקשה פשוטה של HTTP PUT ל- הגשר ב- IP שצוין בהתחלה. */
bool setHue (int lightNum, פקודת מחרוזת) {
לקוח 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 ("אורך התוכן:"); client.println (command.length ()); client.println ("סוג תוכן: טקסט/רגיל; charset = UTF-8"); client.println (); // שורה ריקה לפני body client.println (פקודה); // פקודת הגוון
} client.stop (); להחזיר נכון; // פקודה בוצעה}
אחרת להחזיר שקר; // הפקודה נכשלה}
שלב 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/מדינה"); client.print ("מארח:"); client.println (hueHubIP); client.println ("סוג תוכן: יישום/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 (); // הגדר משתנה לערך בהירות client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // הגדר משתנה לשבירת ערך הגוון; // עדיין לא לוכד תכונות אור אחרות}} client.stop (); להחזיר נכון; // נלכד על, bri, hue} else return false; // שגיאה בקריאה ב-, bri, hue}
שלב 19:
אני חושב שיכולתי ליצור קשר עם גוון פיליפס. אני מקבל מידע אבל עדיין צריך להשתמש בו.
למרבה הצער, זה חורג ממה שאני יכול לקודד. אם אתה יודע את התשובה, או אם יש טעויות אמיתיות שצריך לתקן אותן, אשמח לשמוע אותה.:-)
מוּמלָץ:
תיקון חתולים עצוב, צעצוע חתול לתפוס אותי - פרויקט בית ספר: 3 שלבים
תיקון חתולים עצוב, צעצוע חתול לתפוס אותי-פרויקט בית ספר: הנה המוצר שלנו, זהו עכבר צעצוע אינטראקטיבי: צעצוע Catch-Me Cat. להלן רשימה של בעיות שחתולים רבים בחברה שלנו מתמודדים איתם: חתולים הופכים בימים אלה לא פעילים ומדוכאים בלי מה לעשות רוב הבעלים עסוקים בעבודה או בלימודים ובמקרה שלך
פרויקט בית עוף אוטומטי: 7 שלבים
פרויקט בית העוף האוטומטי: כחלק מלימודי הנדסת התעשייה השנייה שלנו בהנדסת תעשייה באלקטרו -מכניקה, עלינו לממש פרויקט עם כרטיס Arduino או Raspberry Pi. הפרויקט חייב לאפשר פתרון בעיות קיימות. הפרויקט שלנו הוא בית עוף אוטומטי
קופסת לד לסימפוזיון בית הספר דלתא: 7 שלבים
קופסת LED לסימפוזיון של בית ספר דלתא:
פרויקט בית חכם EF230: 7 שלבים
פרויקט בית חכם EF230: חלקים וחומרים הדרושים: 1 לוחות Arduino MKR 10003 2 תאי צילום 1 טרנזיסטורים NPN 1 מתג מיני כוח 1 LED - RGB (4 שיניים) 1 LED (צבע לבחירתך) 1 דיודה 1N41481 נגדי 10K אוהם 5 100 Ohm Resistor1 חיישן טמפרטורה TMP361 DAGU 48: 1
זרוע ציור שנשלטת על ידי סאונד - פרויקט בית הספר Arduino: 4 שלבים (עם תמונות)
זרוע ציור שנשלטת על ידי סאונד - פרויקט בית הספר בארדואינו: זו הפעם הראשונה שאני עובדת עם ארדואינו ועובדת עם דבר כזה אי פעם, אז סליחה אם עשיתי טעויות! קיבלתי את הרעיון הזה כשחשבתי על התחביבים שלי, שהם ציור ומוסיקה. אז ניסיתי לשלב את השניים לתוך זה! סל