Πίνακας περιεχομένων:

Hue Magic: 4 βήματα (με εικόνες)
Hue Magic: 4 βήματα (με εικόνες)

Βίντεο: Hue Magic: 4 βήματα (με εικόνες)

Βίντεο: Hue Magic: 4 βήματα (με εικόνες)
Βίντεο: Μελισσοκομικές Ιστορίες επεισόδιο 4 2024, Σεπτέμβριος
Anonim
Image
Image

Καλώς ορίσατε μάγοι!

Πριν από μερικούς μήνες δημιούργησα ένα μικρό μαγικό κουτί με ραβδί για τον 3χρονο γιο μου. Όταν αγγίζει το κουτί με το ραβδί, ένα μεταβαλλόμενο χρώμα θα αρχίσει να εκπέμπει από το κουτί. Όταν βλέπει ένα χρώμα που του αρέσει ιδιαίτερα, μπορεί να δείχνει το ραβδί προς το επιτραπέζιο φωτιστικό (με λαμπτήρα Philips Hue μέσα), να κάνει ένα ξόρκι και το χρώμα από το κουτί θα μεταπηδήσει μαγικά στη λάμπα! Η λάμπα και το φως από το κουτί έχουν ξαφνικά το ίδιο χρώμα…

Μετά από μερικά δευτερόλεπτα, το χρώμα σβήνει και η επιτραπέζια λάμπα επιστρέφει στην κατάσταση πριν από το ξόρκι. Μέχρι να γίνει ένα νέο ξόρκι…

Βήμα 1: Τι χρειάζεστε για να δημιουργήσετε αυτό το έργο

Τι χρειάζεστε για να δημιουργήσετε αυτό το έργο
Τι χρειάζεστε για να δημιουργήσετε αυτό το έργο
Τι χρειάζεστε για να δημιουργήσετε αυτό το έργο
Τι χρειάζεστε για να δημιουργήσετε αυτό το έργο
Τι χρειάζεστε για να δημιουργήσετε αυτό το έργο
Τι χρειάζεστε για να δημιουργήσετε αυτό το έργο

Για να δημιουργήσετε αυτό το έργο, θα χρειαστείτε τα ακόλουθα υλικά:

    • 1 (ή περισσότερο) έγχρωμος λαμπτήρας Philips Hue και ένα Hue Bridge
    • 1 μικροελεγκτής Wemos D1 mini ή παρόμοιος esp8266
    • 1 (Arduino) αισθητήρας αφής (π.χ. TTP223R)
    • Στιγμιαίο κουμπί 1 (Arduino)
    • 1 πυκνωτής 10uF
    • 1 RGB led (κοινός τύπος ανόδου)
    • 5 αντιστάσεις (10, 22 και 47 Ohm, 2x 10K Ohm)
    • 2 μικρά πρωτότυπα PCB (2x3 ίντσες ή περίπου 5x7 cm πρέπει να είναι αρκετά μεγάλα)
    • μερικά καλώδια (άλτης)
    • ένα κολλητήρι
    • ένα μαγικό ραβδί (μπορεί να αγοραστεί ως έτοιμο σε κατάστημα παιχνιδιών ή μπορείτε να το φτιάξετε μόνοι σας)
    • ένα μικρό κουτί από χαρτόνι ή ξύλο (μπορεί να είναι υπάρχον κουτί, αλλά μπορείτε επίσης να φτιάξετε ένα κουτί από την αρχή φυσικά)
    • κάποια ταινία
    • κάποια κόλλα ή/και παξιμάδια και μπουλόνια για να τοποθετήσετε τα PCB στο κουτί.
    • προαιρετικά: χαρτί περιτυλίγματος για το κουτί

Σημείωση: Μια μικρή εμπειρία στην ανάγνωση διαγραμμάτων κυκλωμάτων είναι χρήσιμη όταν περνάτε από αυτό το διδακτικό. Το διάγραμμά μου δεν είναι υπερβολικά περίπλοκο: αν μπορείτε να διαφοροποιήσετε έναν πυκνωτή από έναν αντιστάτη, πιθανότατα θα είστε καλά.

Κάποια εμπειρία με τον προγραμματισμό Arduino χρησιμοποιώντας το Arduino IDE είναι επίσης χρήσιμη. Η βασική εμπειρία πρέπει να είναι αρκετή, καθώς θα σας δώσω τον πλήρη κώδικα για αντιγραφή/επικόλληση. Ωστόσο, θα χρειαστεί να προσαρμόσετε μερικά πράγματα, για να λειτουργήσει στη συγκεκριμένη ρύθμιση (π.χ. οι ρυθμίσεις δικτύου και ορισμένες λεπτομέρειες από τη διαμόρφωση της απόχρωσης). Εάν ακούγεται λίγο εκφοβιστικό, μην ανησυχείτε, θα σας βοηθήσω να ανακτήσετε όλες τις πληροφορίες που χρειάζεστε.

Βήμα 2: The Box & Wand

The Box & Wand
The Box & Wand
The Box & Wand
The Box & Wand

Τα πρώτα βήματα είναι συνήθως τα πιο δύσκολα, αλλά όχι σε αυτό το διδακτικό! Για μια εύκολη αρχή, μπορείτε απλώς να αγοράσετε ένα μαγικό ραβδί από ένα κατάστημα παιχνιδιών και για το κουτί θα μπορούσατε απλά να χρησιμοποιήσετε ξανά ένα υπάρχον μικρό κουτί που έχετε ήδη ξαπλώσει. Απλά βεβαιωθείτε ότι το κιβώτιο δεν είναι μεταλλικό, καθώς αυτό θα μπλοκάρει τα σήματα wifi και τα χρειαζόμαστε για τη μαγεία;-).

Όταν επαναπροσδιορίζετε ένα υπάρχον κουτί, το μόνο που έχετε να κάνετε είναι να κάνετε δύο τρύπες στο πάνω μέρος του κουτιού: 1 μικρή τρύπα (μέγεθος 5mm = 0,2 ") για το led RGB και μια μεγαλύτερη τρύπα (περίπου 12- 14mm ή περίπου 0,5 ") για τον αισθητήρα αφής.

Η ακριβής τοποθέτηση των οπών δεν είναι κρίσιμη, απλώς τοποθετήστε τις σύμφωνα με την αίσθηση της αισθητικής σας, αλλά λάβετε υπόψη μερικά πράγματα:

  • Διατηρήστε κάποια απόσταση μεταξύ των δύο οπών για να βεβαιωθείτε ότι τα εξαρτήματα που θα τοποθετηθούν κάτω από τις οπές (το led RGB και ο αισθητήρας αφής) επιτρέπεται να καταλαμβάνουν αρκετό χώρο για τοποθέτηση και καλωδίωση.
  • Η μεγαλύτερη τρύπα είναι για τον αισθητήρα αφής. Αυτός ο αισθητήρας θα τοποθετηθεί ακριβώς κάτω από την τρύπα, με τέτοιο τρόπο ώστε να μπορεί να αγγίξει (και ακόμη και να πιεστεί ελαφρώς) από το ραβδί. Βεβαιωθείτε λοιπόν ότι το ραβδί που αγοράζετε δεν είναι πολύ παχύ!

Προαιρετικά, μπορείτε να χρησιμοποιήσετε (σπρέι) χρώμα ή χαρτί περιτυλίγματος και να καλύψετε το πλαστικό για να κάνετε το κουτί σας λίγο πιο όμορφο και να το προστατέψετε από τη διαρροή τροφίμων και τα βρώμικα χέρια.

Εάν αυτό το πρώτο βήμα είναι λίγο υπερβολικά φιλόδοξο κατά την προτίμησή σας, προχωρήστε και δημιουργήστε ένα κουτί και ραβδί εξ ολοκλήρου από το μηδέν! Υπάρχουν αρκετές οδηγίες που θα σας βοηθήσουν να δημιουργήσετε ένα όμορφο ραβδί

Όποια διαδρομή και αν επιλέξετε, ήρθε η ώρα να εξερευνήσετε το εσωτερικό του κουτιού.

Βήμα 3: Το υλικό μέσα

Το υλικό μέσα
Το υλικό μέσα
Το υλικό μέσα
Το υλικό μέσα
Το υλικό μέσα
Το υλικό μέσα

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

  • Τα καλώδια μεταξύ του Wemos D1 Mini και του RGB led θα πρέπει να είναι αρκετά μακριά ώστε το led RGB να μπορεί να τοποθετηθεί στην τρύπα που έχετε κάνει στο καπάκι του κουτιού.
  • Το ίδιο ισχύει για τα καλώδια που συνδέονται με τον διακόπτη στιγμής και τον αισθητήρα αφής, καθώς αυτά πρέπει να είναι προσβάσιμα μέσω της άλλης οπής στο καπάκι.
  • Το κουμπί του στιγμιαίου διακόπτη πρέπει να είναι κολλημένο στην κάτω πλευρά (η μη ευαίσθητη πλευρά) του αισθητήρα αφής, με τέτοιο τρόπο ώστε να μπορείτε να επαναφέρετε το κουμπί στο στιγμιαίο διακόπτη με τον αισθητήρα αφής κολλημένο στο επάνω μέρος (δείτε την εικόνα). Ο αισθητήρας αφής είναι τοποθετημένος στο πάνω μέρος του στιγμιαίου διακόπτη για την ανίχνευση πιέσεων κουμπιών που γίνονται με ένα δάχτυλο, οπότε το πάτημα του κουμπιού θα αγνοηθεί. Μόνο όταν το κουμπί πατηθεί από το μαγικό ραβδί (το οποίο πρέπει να είναι μη αγώγιμο, οπότε τα πλαστικά και το ξύλο είναι εντάξει), θα ξεκινήσει ο μαγικός κύκλος.
  • Τοποθετήστε το στιγμιαίο κουμπί με αισθητήρα αφής στην κορυφή όχι πολύ βαθιά κάτω από την τρύπα στο καπάκι, επειδή πρέπει να το προσεγγίσετε με το μαγικό ραβδί για να ενεργοποιήσετε τη μαγεία.
  • Φροντίστε να τηρείτε την πολικότητα του πυκνωτή κατά τη συγκόλλησή του. Αν αντιστρέψετε τα θετικά και αρνητικά καλώδια, ο πυκνωτής πιθανότατα θα εκπέμψει μαγικό καπνό και θα βάλει το κύκλωμά σας σε έναν αιώνιο ύπνο.
  • Κολλήστε, κολλήστε ή βιδώστε τη θήκη μπαταρίας και τα PCB στη θέση τους. Δεν χρειάζεται να είναι τακτοποιημένο, καθώς δεν θα είναι ορατό. Θα πρέπει απλώς να είναι απόδειξη πτώσης.

Στο λογισμικό!

Βήμα 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, διαχωρίζοντάς τα με κόμματα.
  • Ανοίξτε τη Διαχείριση πινάκων από το Tools> Board menu και εγκαταστήστε την πλατφόρμα esp8266 (και μην ξεχάσετε να επιλέξετε τον πίνακα ESP8266 από το Tools> Board menu μετά την εγκατάσταση. Το "LOLIN (WEMOS) D1 R2 & mini" λειτουργεί καλύτερα για Wemos D1 mini v2 και v3 σανίδες.

Εάν χρειάζεστε περισσότερη βοήθεια για την εγκατάσταση του Arduino και τη ρύθμιση των προγραμμάτων οδήγησης, μπορείτε να ρίξετε μια ματιά στη διεύθυνση

Στο πρόγραμμα επεξεργασίας Arduino, ανοίξτε ένα νέο αρχείο (Αρχείο> Νέο) και αντιγράψτε/επικολλήστε τον παρακάτω κώδικα στο παράθυρο που μόλις άνοιξε. Απλώς αντικαταστήστε τις γραμμές που υπάρχουν ήδη στο νέο παράθυρο (void setup και void loop).

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

Το πρώτο πράγμα που πρέπει να κάνετε είναι να αλλάξετε τη διεύθυνση ip στη γραμμή 34 (στον επεξεργαστή Arduino οι γραμμές του κώδικα είναι αριθμημένες) στη διεύθυνση ip της γέφυρας Hue. Εάν δεν γνωρίζετε τη διεύθυνση IP της Hue Bridge, επισκεφτείτε τη διεύθυνση https://discovery.meethue.com/ και η σωστή διεύθυνση IP θα εμφανιστεί αμέσως στο πρόγραμμα περιήγησής σας. Η διεύθυνση IP είναι ο διακεκομμένος αριθμός που προηγείται "εσωτερική διεύθυνση".

Για να επικοινωνήσετε με τα φώτα Hue, θα πρέπει να δημιουργήσετε έναν χρήστη API Hue για το Wemos D1 mini, έτσι ώστε οι Wemos να μπορούν να επικοινωνούν με το φως Hue μέσω του API Hue. Για να το κάνετε αυτό, ακολουθήστε τις οδηγίες στη διεύθυνση https://developers.meethue.com/develop/get-started-2/ και αντιγράψτε/επικολλήστε το δημιουργημένο (αρκετά μεγάλο) όνομα χρήστη στο παράθυρο κώδικα Arduino. Απλώς αντικαταστήστε κάθε "ΟΝΟΜΑ ΧΡΗΣΗΣ API ΣΑΣ" με το όνομα χρήστη API που δημιουργήθηκε.

Στη συνέχεια, πρέπει να επιλέξετε το σωστό φως 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, διαχωρίζοντάς τα με κόμματα. // - Ανοίξτε τη Διαχείριση πινάκων από το Tools> Board menu και εγκαταστήστε την πλατφόρμα esp8266 (και μην ξεχάσετε να επιλέξετε τον πίνακα ESP8266 από το Tools> Board menu μετά την εγκατάσταση). // χρησιμοποιημένες βιβλιοθήκες: #include "ESP8266WiFi.h" // ESP8266 Βασική βιβλιοθήκη WiFi #include "DNSServer.h" // Τοπικός διακομιστής DNS που χρησιμοποιείται για ανακατεύθυνση όλων των αιτημάτων στην πύλη διαμόρφωσης WiFiManager, αν δεν υπάρχουν ρυθμίσεις WIFI (SSID, κωδικός πρόσβασης) δεν έχει οριστεί ακόμα. #include "ESP8266WebServer.h" // Το Local WebServer χρησιμοποιείται για την εξυπηρέτηση της πύλης διαμόρφωσης WiFiManager #include "WiFiManager.h" // WiFi Configuration Magic Library, αν δεν έχει εγκατασταθεί ακόμα, ανατρέξτε στη διεύθυνση https://github.com/tzapu/WiFiManager #install-through-Library-manager #include "RestClient.h" // https://github.com/fabianofranca/ESP8266RestClient, απαιτείται για τη χρήση του Philips Hue API (δείτε https://developers.meethue.com/develop/ απόχρωση-απί/). #include "ArduinoJson.h"/ Βιβλιοθήκες> αναζητήστε το ArduinoJson και αλλάξτε την έκδοση στο πιο πρόσφατο 5.x). Η έκδοση 6 (αυτή τη στιγμή σε έκδοση beta) παρουσιάζει σφάλμα. // μεταβλητές και 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 ενεργοποίησηPin = 4; // στο Wemos αυτό είναι d2 bool activation = HIGH? bool touch = LOW? const char* aan_restore; int bri_restore; διπλό x_restore? διπλό y_restore? διπλό x_magic; διπλό y_magic; bool first = true? ανυπόγραφο μακρύ ξεκίνημαMillis; ανυπόγραφο μακρύ ρεύμαMillis; ανυπόγραφο μεγάλης διάρκειαςMillis; RestClient client = RestClient ("192.168.178.23"); // "η διεύθυνση IP της Hue Bridge" // Εάν δεν γνωρίζετε τη διεύθυνση IP της Hue Bridge, επισκεφτείτε τη διεύθυνση https://discovery.meethue.com και θα εμφανιστεί αμέσως στο πρόγραμμα περιήγησής σας. Η διεύθυνση IP είναι ο διακεκομμένος αριθμός που προηγείται "εσωτερική διεύθυνση" void setup () {analogWriteRange (255); Serial.begin (9600); // Ξεκινήστε με το LED σβηστό. pinMode (activationPin, INPUT_PULLUP); pinMode (touchSensor, INPUT); startMillis = millis (); checkWand (); } void loop () {// τίποτα να κάνετε εδώ, αφήστε κενό…} 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 (ενεργοποίηση == LOW && touch == LOW) {// Επιλέξτε τα χρώματα για αύξηση και μείωση. για (int decColour = 0; decColour <3; decColour += 1) {int incColour = decColour == 2? 0: decColour + 1; // = ternary operator, σημαίνει: int incColour; if (decColour == 2) {incColour = 0;} else {incColour = decColour +1;} // διασταυρώνουν τα δύο χρώματα για (int i = 0; i <255; i += 1) {rgbColour [decColour] -= 1; rgbColour [incColour] += 1; // καθώς το RGB led μας έχει μια κοινή άνοδο αντί για κάθοδο (άρα πρέπει να συνδεθούμε σε +3.3V αντί για γείωση), χρειαζόμαστε αντίστροφες τιμές για το RGB: int red = 255 - rgbColour [0]; int πράσινο = 255 - rgbColour [1]; int μπλε = 255 - rgbColour [2]; analogWrite (redPin, κόκκινο); analogWrite (greenPin, πράσινο); analogWrite (bluePin, μπλε); καθυστέρηση (8)? ενεργοποίηση = digitalRead (activationPin); εάν (ενεργοποίηση == Υ HIGHΗΛΗ) {// Υ meansΗΛΗ σημαίνει ότι το ραβδί έχει σηκωθεί. πήγε να σταματήσειColorCycling; }}}} stopColorCycling: currentMillis = millis (); durationMillis = (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 (κόκκινο, 0, 255, 0, 1000); R /= 1000; διπλό G = χάρτης (πράσινο, 0, 255, 0, 1000); G /= 1000; διπλό Β = χάρτης (μπλε, 0, 255, 0, 1000); Β /= 1000; R = (R> 0.04045f); pow ((R + 0.055f) / (1.0f + 0.055f), 2.4f): (R / 12.92f); G = (G> 0,04045f); pow ((G + 0.055f) / (1.0f + 0.055f), 2.4f): (G / 12.92f); B = (B> 0.04045f); pow ((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 στη λυχνία: sendtoHue (x, y); } void sendtoHue (διπλό a, διπλό b) {// πραγματική αλλαγή χρώματος από μαγικό ραβδί εάν (πρώτο) {// πρώτο πέρασμα: λάβετε την τρέχουσα κατάσταση λαμπτήρα getCurrentValues (); } // στη συνέχεια στείλτε χρώματα μαγικού ραβδιού: // περιμένετε για ξόρκι: μεγάλη αναμονή. x_magic = a; y_magic = b; // η λάμπα αναμμένη σε χρώμα μαγικού ραβδιού: απάντηση = ""; 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) +"], / "timetime \": 1} "; int str_len1 = temp_body1.length () + 1; char post_body1 [str_len1]; temp_body1.toCharArray (post_body1, str_len1); // τώρα έχουμε post_body1 ως char array. // πραγματοποιήστε κλήση ανάπαυσης: int statusCodePut1 = client.put ("/api/YOUR HUE API USERNAME/lights/YOUR LIGHT NUMBER/state", post_body1, & reply); αναμονή = τυχαία (100, 600); καθυστέρηση (αναμονή)? if (κατάσταση == "true") {state = "false"; } else {state = "true"; }} // μειώστε τη φωτεινότητα …: respond = ""; temp = τυχαία (4, 17); // δημιουργία πίνακα char για αποστολή στη γέφυρα: String temp_body2 = "{" on / ": true, \" bri / ": 154, \" transfertime / ":" + String (temp) + "}"; int str_len2 = temp_body2.length () + 1; char post_body2 [str_len2]; temp_body2.toCharArray (post_body2, str_len2); // τώρα έχουμε post_body2 ως char array. // πραγματοποιήστε κλήση ανάπαυσης: int statusCodePut2 = client.put ("/api/YOUR HUE API USERNAME/lights/YOUR LIGHT NUMBER/state", post_body2, & reply); αναμονή = τυχαία (1000, 2500); καθυστέρηση (αναμονή)? //..και να γίνει πιο φωτεινό ξανά: reply = ""; temp = τυχαία (4, 17); // δημιουργία πίνακα char για αποστολή στη γέφυρα: String temp_body3 = "{" bri_inc / ": 100, \" timetime / ":}"; int str_len3 = temp_body3.length () + 1; char post_body3 [str_len3]; temp_body3.toCharArray (post_body3, str_len3); // τώρα έχουμε post_body3 ως char array. // πραγματοποιήστε κλήση ανάπαυσης: int statusCodePut3 = client.put ("/api/YOUR HUE API USERNAME/lights/YOUR LIGHT NUMBER/state", post_body3, & reply); αναμονή = τυχαία (2500, 5000); // αναμονή 2-5 δευτερόλεπτα καθυστέρηση (αναμονή); // και εξασθένιση πίσω στην παλιά τιμή: απόκριση = ""; // δημιουργία πίνακα char για αποστολή στη γέφυρα: String temp_body4 = "{" on / ":" + String (aan_restore) + ", \" bri / ":" + String (bri_restore) + ", \" xy / ": [" + String (x_restore) +", " + String (y_restore) +"], / "timetime \": " + String (20) +"} "; int str_len4 = temp_body4.length () + 1; char post_body4 [str_len4]; temp_body4.toCharArray (post_body4, str_len4); // τώρα έχουμε post_body4 ως char array. // πραγματοποιήστε κλήση ανάπαυσης: int statusCodePut4 = client.put ("/api/YOUR HUE API USERNAME/lights/YOUR LIGHT NUMBER/state", post_body4, & reply); ESP.deepSleep (0); // θα κοιμηθώ ξανά…. } unsigned int getCurrentValues () {connectWifi (); // πρώτα σύνδεση στο Wifi respond = ""; // πραγματοποιήστε κλήση ανάπαυσης: int statusCodeGet = client.get ("/api/YOUR HUE API USERNAME/lights/YOUR LIGHT NUMBER", & answer); Serial.print ("Κωδικός κατάστασης από διακομιστή μετά από GET:"); Serial.println (statusCodeGet); Serial.print ("Σώμα απόκρισης από διακομιστή:"); Serial.println (απάντηση); StaticJsonBuffer jsonBuffer; // Ανάλυση απόκρισης Json // Ρίζα του δέντρου αντικειμένου. // // Είναι μια αναφορά στο JsonObject, τα πραγματικά byte βρίσκονται μέσα στο // jsonBuffer με όλους τους άλλους κόμβους του δέντρου αντικειμένων. // Η μνήμη απελευθερώνεται όταν το jsonBuffer βγει εκτός εμβέλειας. JsonObject & root = jsonBuffer.parseObject (απάντηση); JsonObject & state = root ["state"]; // Δοκιμάστε αν η ανάλυση επιτύχει. εάν (! 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 () {// Local intialization. Μόλις ολοκληρωθούν οι δραστηριότητές του, δεν χρειάζεται να το διατηρείτε κοντά στο WiFiManager wifiManager. // επαναφορά ρυθμίσεων - για δοκιμή: //wifiManager.resetSettings (); // Ορισμός κλήσης που καλείται κατά τη σύνδεση σε προηγούμενο WiFi αποτυγχάνει και εισέρχεται στη λειτουργία σημείου πρόσβασης wifiManager.setAPCallback (configModeCallback). // παίρνει ssid και pass και προσπαθεί να συνδεθεί // αν δεν συνδεθεί ξεκινά ένα σημείο πρόσβασης με το καθορισμένο όνομα // εδώ "AutoConnectAP" // και μπαίνει σε έναν βρόχο αποκλεισμού που περιμένει τη διαμόρφωση εάν (! wifiManager.autoConnect ()) {Serial.println ("απέτυχε η σύνδεση και η λήξη του χρονικού ορίου λήξης"); // επαναφέρετε και δοκιμάστε ξανά ή ίσως το βάλετε σε βαθύ ύπνο ESP.reset (); καθυστέρηση (1000)? } // αν φτάσετε εδώ έχετε συνδεθεί με το WiFi Serial.println ("συνδεδεμένο … ναι:)"); 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); } void configModeCallback (WiFiManager * myWiFiManager) {Serial.println ("Μπήκε στη λειτουργία διαμόρφωσης"); Serial.println (WiFi.softAPIP ()); // εάν χρησιμοποιήσατε SSID που δημιουργήθηκε αυτόματα, εκτυπώστε το Serial.println (myWiFiManager-> getConfigPortalSSID ()); }

Συνιστάται: