Πώς να ελέγχετε τα φώτα απόχρωσης Philips από ένα Arduino (και να προσθέσετε έναν αισθητήρα κίνησης)

Σήμερα θα σας δείξω πώς να ελέγχετε τα φώτα Hue από ένα Arduino - προσθέτοντας έναν απλό αισθητήρα κίνησης.

Σήμερα θα σας δείξω πώς να ελέγχετε τα φώτα Hue από ένα Arduino - προσθέτοντας έναν απλό αισθητήρα κίνησης.
Διαφήμιση

Η σειρά φωτισμού Philips Hue δεν είναι σίγουρα φθηνή (υπάρχουν κάποιες εναλλακτικές λύσεις) Η Philips Hue Εναλλακτικές λύσεις που πραγματικά αξίζει τον κόπο Οι εναλλακτικές λύσεις της Philips Hue που πραγματικά αξίζει τον κόπο Το σύστημα Philips Hue οδηγεί το φορτίο όταν πρόκειται για έξυπνο φωτισμό, (Read More), αλλά ένα πράγμα που εκτιμώ πραγματικά είναι το καλά τεκμηριωμένο API Τι είναι τα API και πώς είναι τα ανοικτά API που αλλάζουν το Internet Τι είναι τα APIs, Και πώς είναι τα ανοικτά API Αλλαγή του Διαδικτύου Έχετε ποτέ αναρωτηθεί πώς τα προγράμματα στον υπολογιστή σας και τις ιστοσελίδες που επισκέπτεστε "μιλούν" ο ένας στον άλλο; Διαβάστε περισσότερα για τη δημιουργία των δικών σας εφαρμογών Hue. Σήμερα θα σας δείξω πώς να ελέγχετε τα φώτα Hue από ένα Arduino - προσθέτοντας έναν απλό αισθητήρα κίνησης.

Γιατί το κάνουμε αυτό; Επειδή τα συστήματα αυτοματισμού στο σπίτι μπορεί να είναι αρκετά άκαμπτα και ακριβά. Με το να μάθετε πώς να ελέγχετε το Hue από το Arduino, ανοίγετε τις πόρτες σε μια ποικιλία έργων αυτοματοποίησης οικιακών κατασκευών, τα οποία απλά δεν μπορούν να χτυπηθούν από τα εξαρτήματα εκτός του ράφι. Εάν τα πράγματα χάκερ μαζί δεν είναι το πράγμα σας, δοκιμάστε αυτές τις 8 υπέροχες εφαρμογές Hue 8 Fabulous Apps για Φωτιστικά Hue Philips 8 Fabulous Apps για Φωτιστικά Hue Philips Το σύστημα Philips Hue έχει τη δική του εφαρμογή, αλλά γιατί να εγκατασταθεί στην προεπιλογή όταν υπάρχουν τόσα πολλά πιο δροσερές επιλογές εκεί έξω; Αυτές οι 8 εφαρμογές σας δίνουν θαυμάσιες επιλογές για κάποια πραγματικά δροσερά εφέ. Διαβάστε περισσότερα αντί.

Το Σύστημα Hue

Ας πάρουμε τεχνική για λίγο, ώστε να γνωρίζετε τα υποκείμενα συστήματα με τα οποία εργάζεστε. Τα φώτα χρώματος δημιουργούν ένα δίκτυο ματιών Δίκτυα ματιών: Το μέλλον των δικτύων δικτύων επικοινωνίας: Το μέλλον των δικτύων δικτύωσης είναι σχεδόν άτρωτα. Σε ένα δίκτυο ματιών, δεν υπάρχουν σημεία στραγγαλισμού μέσω των οποίων περνά όλη η κίνηση. Αντίθετα, οι πληροφορίες μεταφέρονται από τη μια συσκευή στην άλλη μέχρι να φτάσει στον προορισμό της. Διαβάστε περισσότερα, χρησιμοποιώντας ένα ασύρματο πρωτόκολλο μικρού εύρους που ονομάζεται ZigBee - συγκεκριμένα, είναι πιστοποιημένα με ZigBee Light Link, πράγμα που σημαίνει ότι άλλα προϊόντα ZLL πρέπει επίσης να λειτουργούν μαζί με το Hue (θεωρητικά).

Αν και τεχνικά μικρής εμβέλειας, το χαρακτηριστικό δικτύωσης δικτύου του ZigBee σημαίνει ότι κάθε νέος βολβός επεκτείνει το δίκτυο, μεταδίδοντας μηνύματα σε άλλους λαμπτήρες. Αυτό σημαίνει ότι εάν έχετε πρόβλημα να ελέγξετε ένα φως στην άλλη πλευρά του σπιτιού, δοκιμάστε να τοποθετήσετε ένα άλλο φως μεταξύ των δύο.

Το Zigbee είναι ένα εξαιρετικό πρωτόκολλο, αλλά είναι εντελώς διαφορετικό από το Wi-Fi ή ένα ενσύρματο δίκτυο υπολογιστών, οπότε χρειαζόμαστε τη γέφυρα Philips Hue για να ενώσουμε τα δύο μαζί. Η γέφυρα Hue τρέχει ένα τροποποιημένο firmware ανοιχτού κώδικα linux, το οποίο μεταδίδει έναν βασικό διακομιστή ιστού.

Αυτό θα δείτε αν πληκτρολογείτε ακριβώς τη διεύθυνση IP της γέφυρας Hue στο πρόγραμμα περιήγησής σας. Δεν μπορείτε να κάνετε πολλά από εδώ εν τούτοις.
Αυτό θα δείτε αν πληκτρολογείτε ακριβώς τη διεύθυνση IP της γέφυρας Hue στο πρόγραμμα περιήγησής σας. Δεν μπορείτε να κάνετε πολλά από εδώ εν τούτοις.

Είναι με την αλληλεπίδραση με αυτόν τον τοπικό διακομιστή ιστού που μπορείτε να μάθετε την τρέχουσα κατάσταση των φώτων και να τα ελέγχετε.

Είναι ένα όμορφα απλό σύστημα και ώριμο για έργα DIY. Kudos στη Philips για να κάνει αυτό το πράγμα τόσο διασκεδαστικό.

Αρχίζοντας

Προτού μπορέσετε να αποκτήσετε πρόσβαση στην τεκμηρίωση του API, θα πρέπει να εγγραφείτε ως προγραμματιστής. Είναι δωρεάν, αλλά πρέπει να αποδεχτείτε τους όρους και τις προϋποθέσεις. Κάνετε αυτό τώρα.

Οποιοσδήποτε είναι εξοικειωμένος με τις τυπικές υπηρεσίες ιστού ή τη Javascript θα πρέπει να μπορεί να συνεργάζεται με την Απόχρωση: όλα τα δεδομένα διαβιβάζονται και λαμβάνονται ως πακέτα JSON Τι είναι το JSON; A Layman's Επισκόπηση Τι είναι το JSON; Μια επισκόπηση του Layman Είτε πρόκειται να είστε web developer είτε όχι, είναι καλή ιδέα να γνωρίζετε τουλάχιστον τι είναι το JSON, γιατί είναι σημαντικό και γιατί χρησιμοποιείται σε όλο τον ιστό. Διαβάστε περισσότερα .

Για να ρίξετε μια ματιά σε αυτό σε δράση, θα πρέπει να γνωρίζετε τη διεύθυνση IP της γέφυρας Hue. Υπάρχουν μερικοί τρόποι για να το κάνετε αυτό:

  • Ανατρέξτε στον πίνακα αντιστοιχίας διευθύνσεων DHCP στη διεπαφή διαχείρισης του δρομολογητή
  • Εκτελέστε ένα πρόγραμμα χαρτογράφησης δικτύου όπως το IP Scanner Home
  • Δοκιμάστε το εργαλείο μεσίτη Philips UPnP
  • Ping "philips-hue.home"

χαρτογράφηση δικτύου για την εύρεση γέφυρας

Όταν τελειώσετε, προχωρήστε και πληκτρολογήστε τη στη γραμμή διευθύνσεων του προγράμματος περιήγησης με το debug / clip.html που επισυνάπτεται στη διεύθυνση URL. Στην περίπτωσή μου, αυτό ήταν:

http://192.168.1.216/debug/clip.html 

Αυτό είναι ένα εργαλείο εντοπισμού σφαλμάτων που σας επιτρέπει να στέλνετε και να λαμβάνετε τα πακέτα JSON μέσω μιας απλής διεπαφής ιστού. Το πρώτο βήμα είναι να ενεργοποιήσετε το προφίλ προγραμματιστή στην ίδια τη γέφυρα Hue - η οποία είναι απενεργοποιημένη από προεπιλογή για λόγους ασφαλείας. Επικολλήστε τα παρακάτω στο πεδίο BODY, αφήστε τη διεύθυνση URL ως / api / και στείλτε ένα αίτημα POST κάνοντας κλικ στο κουμπί Post :

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

Την πρώτη φορά που το κάνετε αυτό, θα δείτε ένα "κουμπί σύνδεσης που δεν πατήθηκε" κάπου στην απάντηση. Αυτό είναι ένα χαρακτηριστικό ασφάλειας που απαιτεί τη φυσική εξουσιοδότηση κάθε νέας εφαρμογής που χρησιμοποιείτε. Πηγαίνετε και βρείτε τη Γέφυρα σας, πατήστε το κουμπί και στείλτε ξανά το ίδιο αίτημα μέσα σε 30 δευτερόλεπτα . Αυτή τη φορά θα λάβετε μια διαφορετική απάντηση και ο χρήστης θα είναι εξουσιοδοτημένος. Αν θέλετε να χρησιμοποιήσετε ένα διαφορετικό όνομα χρήστη, διαβάστε τα αρχεία API σχετικά με τη δημιουργία χρηστών. Προς το παρόν, αυτό αρκεί.

Μόλις ο χρήστης σας έχει ρυθμίσει, η βασική διεύθυνση URL με την οποία πρέπει να αλληλεπιδράσετε γίνεται / api / newdeveloper / . Μπορείτε να στείλετε ένα αίτημα GET για να μάθετε όλα όσα ενημερώνει η Γέφυρα σχετικά με τα συνδεδεμένα φώτα, συναγερμοί, σκηνές και ένα σύντομο ημερολόγιο εφαρμογών που έχουν χρησιμοποιηθεί. Ακολουθεί ένα δείγμα μερικών από τις πληροφορίες κατάστασης που περιέχονται για έναν μόνο λαμπτήρα.

 "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": η πραγματική κατάσταση δεν σας δείχνει αν ο λαμπτήρας είναι ενεργοποιημένος ή όχι. μόνο ότι σύμφωνα με τις ρυθμίσεις Bridge, πρέπει να είναι ενεργοποιημένη. "Reachable": false μπορεί να υποδηλώνει τόσο έναν λαμπτήρα που είναι πολύ μακριά, είτε απλά απενεργοποιημένος στον διακόπτη τροφοδοσίας.

Ένα τελευταίο παράδειγμα πριν την ενσωμάτωσή μας στο Arduino: βεβαιωθείτε ότι ένα από τα φώτα σας είναι ορατό και αναμμένο και ότι γνωρίζετε ποιος αριθμός είναι. Αλλάξτε τη διεύθυνση URL σε / api / newdevelopers / lights / 1 / state (αλλάζοντας τον αριθμό στο φως σας) και στείλετε ένα αίτημα PUT με τα ακόλουθα δεδομένα:

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

Θα πρέπει να δούμε ότι το φως σας αντιδρά όπως αυτό:

απόχρωση επίδειξης

Αυτό που κάνατε είναι να πιέσετε μια νέα κατάσταση στο βολβό. Μπορείτε επίσης να προσθέσετε το "transitiontime", το οποίο είναι μια πρωτότυπη μέθοδος κινούμενης εικόνας που δείχνει πόσα δευτερόλεπτα θα θέλατε να αλλάξει η πολιτεία.

Το χρώμα μπορεί να ρυθμιστεί με διάφορους τρόπους, αλλά δυστυχώς δεν υπάρχει εύκολος τρόπος για να στείλετε μια τιμή RGB. Στο παραπάνω παράδειγμα, στέλναμε το χρώμα, τη διόρθωση και τη βαρύτητα. Δοκιμάστε να αλλάξετε την τιμή απόχρωσης και να αποστείλετε ξανά την αίτηση PUT.

Εργασία από Arduino

Υπάρχει μια υπάρχουσα βιβλιοθήκη Hue / Arduino που ονομάζεται ArduinoHue την οποία συνδέουν οι ίδιες η Philips με την τεκμηρίωση του API, αλλά το πρόβλημα με αυτή τη βιβλιοθήκη είναι ότι επικοινωνεί μέσω της σύνδεσης USB με τον υπολογιστή σας, ο οποίος χρειάζεται επίσης να τρέχει συνεχώς μια εφαρμογή Python. Eugh . Μπορείτε να αφήσετε τον υπολογιστή σας να τρέξει ολόκληρο το σημείο εκείνο το σημείο και να κόψει το Arduino εξ ολοκλήρου.

Αντ 'αυτού, θα σας δείξω πώς να ελέγχετε την απόχρωση από το Arduino χρησιμοποιώντας μια ασπίδα Ethernet . Το Arduino σας δεν χρειάζεται να είναι συνδεδεμένο με έναν υπολογιστή, έτσι ώστε να μπορεί να λειτουργεί ανεξάρτητα από οποιοδήποτε σημείο μπορείτε να βάλετε ένα καλώδιο Ethernet. Στην πραγματικότητα, θα πρέπει επίσης να λειτουργήσει με ασπίδα Wi-Fi, αλλά δεν έχω να παίξει.

ehternet-sheild-box

Αν θέλετε να προχωρήσετε μπροστά, ο πλήρης κώδικας δείγματος είναι ενσωματωμένος παρακάτω ή είναι διαθέσιμος εδώ. Το έχω προσαρμόσει από ένα παράδειγμα που δημοσιεύτηκε από τον Gilson Oguime. Εάν δεν έχετε παίξει ποτέ με την ασπίδα Ethernet σας, ίσως να θέλετε να κάνετε γρήγορη εκμάθηση μέσω του διαδικτυακού προγράμματος-πελάτη - θα υποθέσω κάποιο βαθμό εξοικείωσης με αυτό και δεν θα καλύπτει τον κώδικα που χρησιμοποιείται για τη δημιουργία ενός δικτύου IP, κ.λπ. Σας έχουμε επίσης δείξει πώς να δημιουργήσετε ένα mini web server με την θύρα Ethernet Give Your Arduino Project Το δικό του Mini-Webserver με μια θωράκιση Ethernet Δώστε στο Arduino το δικό του mini-webserver με μια θωράκιση Ethernet A ενώ πριν, σας έδειξα πώς να ρυθμίσετε ένα σύστημα ελέγχου Internet για το Arduino σας - αλλά έπρεπε να παραμείνει συνδεδεμένο με έναν υπολογιστή μέσω USB, προκειμένου να διατηρηθεί η σύνδεση στο διαδίκτυο .... Διαβάστε περισσότερα.

Δημιουργία αλλαγών κράτους

Η δημιουργία μιας νέας κατάστασης που ωθεί τους βολβούς είναι μια απλή περίπτωση δημιουργίας μιας νέας μεταβλητής String και διαφυγής από όλα τα διπλά εισαγωγικά. Έχω προσθέσει μια τυχαία () λειτουργία και εκεί για να δημιουργήσω μια κάπως δυναμική κινούμενη εικόνα. Δοκιμάστε να κάνετε την χρωματική μεταβλητή τυχαία επίσης για διαφορετικά χρώματα.

 String command = "{\"on":true, \"hue\":50100, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}"; 

Αποστολή της εντολής

Για να στείλετε πραγματικά την εντολή, έχετε μια λειτουργία helper που ονομάζεται setHue (), η οποία παίρνει τον αριθμό φωτός και την συμβολοσειρά εντολών ως ένα επιχείρημα, όπως έτσι:

 setHue(1, command); 

Το μόνο που κάνει τότε είναι ότι συνδέεται με τη γέφυρα, εκτοξεύει την εντολή ως αίτημα PUT, μαζί με όλες τις άλλες ανοησίες που δημιουργεί ένα αίτημα HTTP συνεπάγεται.

 client.print("PUT /api/"); client.print(hueUsername); client.print("/lights/"); client.print(lightNum); client.println("/state HTTP/1.1"); client.println("keep-alive"); client.print("Host: "); client.println(hueHubIP); client.print("Content-Length: "); client.println(command.length()); client.println("Content-Type: text/plain;charset=UTF-8"); client.println(); // blank line before body client.println(command); // Hue command 

Προσθήκη αισθητήρα κίνησης

Τέλος, έβαλα έναν απλό αισθητήρα κίνησης HC-SR501 στον ψηφιακό ακροδέκτη I / O 2. Όταν εντοπιστεί η κίνηση, μια σειρά καταστάσεων πιέζεται στη γέφυρα για 2 βολβοί για να δημιουργήσει ένα αργό, δυναμικό κινούμενο σχέδιο. Όταν ο αισθητήρας κίνησης απενεργοποιηθεί, αποστέλλεται μία και μοναδική εντολή εκτός λειτουργίας. Στην ιδανική περίπτωση, θα επανέλθουν στην κατάσταση στην οποία βρισκόταν πριν εντοπιστεί η κίνηση, αλλά η λογική δεν είναι τόσο έξυπνη - απλά πρόκειται να τις ενεργοποιήσουμε και να την απενεργοποιήσουμε.

Περιορισμοί

Παρόλο που ο κώδικας είναι οπωσδήποτε μη εξειδικευμένος, χρειάζονται σχεδόν ένα δευτερόλεπτο για τη διεπαφή δικτύου του Arduino να στείλει ένα μόνο αίτημα εντολής. Δοκίμασα την ίδια εντολή από έναν Mac, χρησιμοποιώντας την ίδια σύνδεση Ethernet και ήταν ικανή να φτάσει δέκα έως είκοσι φορές εκείνη την ταχύτητα (εδώ είναι το AppleScript σε περίπτωση που θέλετε να δοκιμάσετε). Κατά συνέπεια, κάθε είδους γρήγορη κινούμενη εικόνα (προσπαθούσα να δημιουργήσω μια φλεγόμενη κερί) απλά δεν είναι δυνατή από ένα Arduino. Αυτό δεν πρέπει να αποτελεί πρόβλημα για τα περισσότερα έργα, μόνο για κινούμενα σχέδια υψηλής ταχύτητας φωτός, αλλά είναι καλό να γνωρίζουμε τον περιορισμό.

Είναι επίσης δύσκολο να αναλύσετε πλήρως την απάντηση JSON που παίρνετε πίσω από τη γέφυρα. απλά δεν υπάρχει αρκετή μνήμη RAM στο Arduino για να αποθηκεύσετε όλα τα ακατέργαστα δεδομένα. Για το λόγο αυτό, ίσως θέλετε να περιορίσετε τον εαυτό σας στην αποστολή.

Hack Hue

Τώρα που είστε οπλισμένοι με τη γνώση του πώς να ελέγχετε την Hue εντελώς ανεξάρτητα, ανοίγει έναν κόσμο Hue αυτοματισμού σπίτι αυτοματισμούς. Το πραγματικό ερώτημα είναι: τι θα κάνετε;

In this article