Სარჩევი:

IoT სკოლის პროექტი Philips ელფერი: 19 ნაბიჯი
IoT სკოლის პროექტი Philips ელფერი: 19 ნაბიჯი

ვიდეო: IoT სკოლის პროექტი Philips ელფერი: 19 ნაბიჯი

ვიდეო: IoT სკოლის პროექტი Philips ელფერი: 19 ნაბიჯი
ვიდეო: ჯენიფერ გეიზი - "უკიდურესი სიმაღლე" - აუდიო წიგნი 2024, ნოემბერი
Anonim
IoT სკოლის პროექტი Philips Hue
IoT სკოლის პროექტი Philips Hue

ეს არის სახელმძღვანელო, რომელიც უნდა დამეწერა სკოლისთვის. ეს არ არის სრულყოფილი და დარწმუნებული არ ვარ, შეგიძლია მისი გამოყენება. ჩემი ცოდნა API– ს შესახებ არის მინიმალური. ჩვენ გვინდოდა ინტერაქტიული სარკის გაკეთება შუქებით უკანა მხარეს, რომელიც რეაგირებდა ამინდზე, გარედან შუქზე და ა.

მე შევხედე როგორ შემიძლია Philips Hue ნათურის დაპროგრამება არდუინოსთან ერთად. ამაში მე ავხსნი ჩემს ყველა ნაბიჯს და რამდენად შორს მივედი. მე არ მივაღწიე პროგრამას Hue Arduino– სთან ერთად, მაგრამ ვფიქრობ, რომ ეს კარგი დასაწყისია.

მე მჭირდებოდა ეს: Arduino hue ნათურა ხიდი 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: Hue აპლიკაცია

ჩამოტვირთეთ ოფიციალური Philips Hue აპლიკაცია. შეაერთეთ თქვენი ტელეფონი იმ ქსელს, რომელზეც გსურთ იყოს Hue Bridge.

ნაბიჯი 3: დააკავშირეთ ხიდი

შეაერთეთ თქვენი ხიდი თქვენს ქსელთან და მუშაობს გამართულად. შეამოწმეთ, რომ სმარტფონის აპს შეუძლია გააკონტროლოს განათება იმავე ქსელში. ის უნდა იყოს იმავე Wi-Fi ქსელში.

ნაბიჯი 4: IP მისამართი

შემდეგ თქვენ უნდა აღმოაჩინოთ ხიდის IP მისამართი თქვენს ქსელში. დააჭირეთ ბმულს აპლიკაციაში ხიდთან დასაკავშირებლად და სცადეთ შუქების კონტროლი.

ნაბიჯი 5:

თუ ყველაფერი მუშაობს, გადადით პროგრამის პარამეტრების მენიუში. შემდეგ გადადით "ჩემს ხიდზე", გადადით "ქსელის პარამეტრები". გამორთეთ DHCP გადამრთველი და ნახავთ ხიდის IP მისამართს. გაითვალისწინეთ IP მისამართი, შემდეგ ისევ ჩართეთ DHCP.

ნაბიჯი 6: დაარეგულირეთ თქვენი ფერი

დაარეგულირეთ თქვენი ფერი
დაარეგულირეთ თქვენი ფერი

როდესაც ეს დაწერეთ, თქვენ უნდა გამოასწოროთ თქვენი ტონი. ამ ნაბიჯის გადასაჭრელად გჭირდებათ IP მისამართი. თქვენ უნდა ეწვიოთ შემდეგ საიტს.

/debug/clip.html

ინტერფეისი ასე გამოიყურება სურათზე. ეს არის საფუძველი ყველა ვებ ტრაფიკისა და შეფერილობის RESTful ინტერფეისისა.

მე მივიღე ეს ინფორმაცია Philips Hue საიტის Restful ინტერფეისის შესახებ.

URL: ეს არის რეალურად კონკრეტული რესურსის (ნივთის) ადგილობრივი მისამართი შეფერილობის სისტემაში. ეს შეიძლება იყოს მსუბუქი, შუქების ჯგუფი ან მრავალი სხვა რამ. ეს არის ობიექტი, რომელსაც თქვენ დაუკავშირდებით ამ ბრძანების ფარგლებში.

სხეული: ეს არის შეტყობინების ის ნაწილი, რომელიც აღწერს რისი შეცვლა გსურთ და როგორ. აქ თქვენ შეიყვანთ, JSON ფორმატში, რესურსის სახელს და მნიშვნელობას, რომლის შეცვლა/დამატება გსურთ.

მეთოდი: აქ თქვენ გაქვთ არჩევანი იმ 4 HTTP მეთოდისგან, რომელთა გამოყენებაც შეიძლება შეფერილობის ზარს.

GET: ეს არის ბრძანება, მოიძიოს ყველა ინფორმაცია მიმართული რესურსის შესახებ

PUT: ეს არის ბრძანება მიმართული რესურსის შესაცვლელად

POST: ეს არის ბრძანება ახალი რესურსის შესაქმნელად მიმართული რესურსის შიგნით

წაშლა: ეს არის ბრძანება მიმართული რესურსის წაშლის შესახებ პასუხი: ამ მხარეში თქვენ ნახავთ პასუხს თქვენს ბრძანებაზე. ასევე JSON ფორმატში.

ნაბიჯი 7: დავიწყოთ

Დავიწყოთ
Დავიწყოთ

ახლა ჩვენ გვჭირდება შემთხვევით გენერირებული მომხმარებლის სახელი, რომელსაც ხიდი ქმნის თქვენთვის. თქვენ მიიღებთ ერთს ამის შევსებით.

შეიყვანეთ URL:

/api/

ჩადეთ სხეულში:

და დააჭირეთ GET

ეს ბრძანება ძირითადად ამბობს "გთხოვთ შექმნათ ახალი რესურსი შიგნით /api" (სადაც მომხმარებლის სახელები ზის) შემდეგი თვისებებით. თავდაპირველად, თქვენ მიიღებთ შეცდომას და ეს იმიტომ, რომ ეს არის Philips Hue– ის უსაფრთხოების ნაბიჯი. ღილაკის დაჭერით ისინი ადასტურებენ, რომ თქვენ გაქვთ ფიზიკური წვდომა ხიდზე.

ნაბიჯი 8:

გამოსახულება
გამოსახულება

ახლა დააჭირეთ ღილაკს ხიდზე და კვლავ დააჭირეთ POST.

ახლა თქვენ მიიღებთ მომხმარებლის სახელს, რომელიც ხიდმა გააკეთა თქვენთვის.

ნაბიჯი 9: მოდით გავაკეთოთ რამე შუქებით

მოდით გავაკეთოთ რამე შუქებით
მოდით გავაკეთოთ რამე შუქებით

დააკოპირეთ თქვენი მომხმარებლის სახელი და განათავსეთ იგი შემდეგ სტრიქონში.

განათავსეთ ეს თქვენს URL- ში

/api//განათება

დააჭირეთ GET

თქვენ უნდა მიიღოთ JSON პასუხი თქვენი სისტემის ყველა შუქით და მათი სახელებით.

ნაბიჯი 10:

გამოსახულება
გამოსახულება

მე ნასესხები მაქვს Hue Lights სკოლიდან, ის, რასაც მე ვიყენებ, არის id 3. მინდა კონკრეტული ინფორმაცია ამ შუქის შესახებ.

განათავსეთ ეს იმ URL– ის გვერდით, რომელიც უკვე გქონდათ:

/api//lights/3

დააჭირეთ GET

ახლა თქვენ მიიღებთ ინფორმაციას Led 3 – ის შესახებ (თუ თქვენ გაქვთ სხვა 1 ნომერი, თქვენ ნახავთ ინფორმაციას ამ ერთის შესახებ).

ნაბიჯი 11: მოდით გავაკონტროლოთ შუქი

მოდით გავაკონტროლოთ შუქი
მოდით გავაკონტროლოთ შუქი

თქვენ ხედავთ "მდგომარეობაში", რომ ჩემი led არის "on". ჩვენ გვინდა გავაკონტროლოთ შუქი "მდგომარეობაში".

განათავსეთ ეს იმ URL– ის გვერდით, რომელიც უკვე გქონდათ: https:/// api// lights/ 3/ სახელმწიფო

მოათავსეთ შემდეგი ხაზი სხეულში

დააჭირეთ PUT

ახლა შენი შუქი ჩაქრება! შეცვალეთ მნიშვნელობა სხეულში ჭეშმარიტი და შუქი კვლავ აანთებს.

ნაბიჯი 12:

ახლა ყველაფერი მუშაობს, მინდა ამის გაკეთება ჩემს არდუინოსთან ერთად. მე შევხედე ბმულს, რომელიც ფილიპს ჰუემ მისცა ღია ფერის შეცვლის მიზნით. მაგრამ თქვენ გჭირდებათ პითონი, მე არასოდეს ვმუშაობ პითონთან, ასე რომ მე ვეძებდი სხვა რამეს.

თუ გსურთ გადახედოთ ამ კოდს, მე მაქვს Github ბმული აქ:

github.com/bsalinas/ArduinoHue

ნაბიჯი 13:

მე შევხედე, როგორ შემეძლო ინფორმაციის მიღება დეველოპერის საიტიდან ჩემს არდუინოში. უმეტესად მე არ მესმოდა ენა. მაგრამ მე ვიპოვე კოდი ჯეიმს ბრიუსის ვებგვერდზე.

ეს არის ბმული ვებსაიტზე.

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

ნაბიჯი 14:

პირველად დავინახე, რომ ის იყენებდა Ethernet კაბელს. მე მხოლოდ Hue Light ნათურა და Bridge 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;

// Hue ცვლადები bool hueOn; // ჩართვა/გამორთვა int hueBri; // სიკაშკაშის მნიშვნელობა long hueHue; // hue მნიშვნელობა String hueCmd; // Hue ბრძანება

ხელმოუწერელი გრძელი ბუფერი = 0; // ბუფერი მიღებული მონაცემების შესანახად ხელმოუწერელი გრძელი დამატებით;

ნაბიჯი 15:

ბათილი კონფიგურაციისთვის, მე გავაკეთე ყველაზე მეტი ინტერნეტ კავშირისთვის. ამ კოდში არდუინო ეძებს შეუძლია თუ არა ქსელთან დაკავშირება.

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

Serial.println ();

Serial.printf (" %s- თან დაკავშირება", ssid);

WiFi.begin (ssid, პაროლი);

ხოლო (WiFi.status ()! = WL_CONNECTED) {

დაგვიანება (500);

Serial.print ("."); }

Serial.println ("დაკავშირებული"); }

ნაბიჯი 16:

ჯეიმსის მარყუჟში მე დავინახე, რომ მას ჰქონდა If და else განცხადება. მაგრამ ეს იყო Ethernet კაბელისთვის, ამიტომ შევეცადე ეს გამომეტოვებინა. მეც ზოგჯერ ვცდილობდი მის მორგებას, მაგრამ ჯერ არ ვიცოდი ბევრი მონაცემით. კოდში არის რაღაცეები რაც მე გავიგე, სტრიქონში არის მონაცემები, რომლებიც მოცემულია Hue შუქზე.

ბათილი მარყუჟი () {

// ოთხი ნიმუშის ბრძანების სერია, რომელიც ფერს აქრობს ორ შუქს წითელსა და ვარდისფერს შორის. წაიკითხეთ Hue API // დოკუმენტაცია უფრო ზუსტი ბრძანებების შესახებ, მაგრამ გაითვალისწინეთ, რომ ციტირების ნიშნები უნდა გაქრეს.

სიმებიანი ბრძანება = "{" on / ": 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 client;". ამიტომ ვიყენებდი და მუშაობდა.

If განცხადებაში ხშირად ხედავთ client.print. თუ გადახედავთ კოდს, ნახავთ, რომ ადრე შეყვანილი URL იყოფა ნაწილებად. ახლა შეიყვანეთ თქვენი საკუთარი კოდი. მე უნდა ავირჩიო მე -3 LED შუქი.

/ * 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 ("/განათება/"); client.print (lightNum); // hueLight ნულოვანი, დაამატეთ 1 client.println ("3/მდგომარეობა"); // აქ შევცვალე შეფერილობის სახელი და stateclient.print ("მასპინძელი:"); client.println (hueHubIP); client.print ("შინაარსი-სიგრძე:"); client.println (command.length ()); client.println ("შინაარსი-ტიპი: ტექსტი/უბრალო; charset = UTF-8"); client.println (); // ცარიელი ხაზი body client.println (ბრძანება); // Hue ბრძანება

} client.stop (); ჭეშმარიტი დაბრუნება; // ბრძანება შესრულებულია}

სხვაგვარად ცრუ დაბრუნება; // ბრძანება ვერ შესრულდა}

ნაბიჯი 18:

მეორე ლოგიკურში, იგივე გავაკეთე რამდენიმე სიტყვის შეცვლით. ავტვირთე თუ არა მუშაობს.

/* დამხმარე ფუნქცია იმ შემთხვევაში, თუ თქვენი ლოგიკა დამოკიდებულია სინათლის ამჟამინდელ მდგომარეობაზე. * ეს ადგენს მთელ რიგ გლობალურ ცვლადებს, რომელთა შემოწმება შეგიძლიათ იმის გასარკვევად, არის თუ არა შუქი ამჟამად * და ელფერი და ა.შ. არ არის საჭირო მხოლოდ ბრძანებების გაგზავნა */

bool getHue (int lightNum) {

WiFiClient კლიენტი;

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

client.print ("GET /api /"); client.print (hueUsername); client.print ("/განათება/"); 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 client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // ცვლადის დაყენება brightness value client.findUntil ("\" ელფერი / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // ცვლადის დაყენება შეფერილობის მნიშვნელობის შესვენებისათვის; // სხვა მსუბუქი ატრიბუტები ჯერ არ არის გადაღებული}} client.stop (); ჭეშმარიტი დაბრუნება; // დაკავებული, bri, hue} სხვაგვარად დაბრუნება false; // შეცდომა წაკითხვისას, bri, hue}

ნაბიჯი 19:

გამოსახულება
გამოსახულება

მე ვფიქრობ, რომ შემეძლო კავშირის დამყარება ფილიპსის ელფერით. მე ვიღებ ინფორმაციას, მაგრამ ის მაინც უნდა იქნას გამოყენებული.

სამწუხაროდ, ეს სცილდება იმას, რისი კოდირებაც შემიძლია. თუ თქვენ იცით პასუხი, ან თუ არსებობს რეალური შეცდომები, რომლებიც უნდა გამოსწორდეს, დიდი სიამოვნებით მოვისმენდი მას.:-)

გირჩევთ: