Διαφήμιση
Οι έξυπνες πρίζες ρεύματος είναι ο απλούστερος τρόπος για να αυτοματοποιήσετε το σπίτι σας, αλλά σε περίπου 40 δολάρια το καθένα για υποδοχή Wi-Fi ή ZWave, είναι απίθανο να αγοράσετε περισσότερα από λίγα.
Μπορεί να έχετε ήδη μερικές φθηνές υποδοχές με βάση το RF - το είδος που έρχεται με το δικό τους προσαρμοσμένο τηλεχειριστήριο και έχετε κάποιους επιλογείς καναλιών και αναγνωριστικών στο πίσω μέρος. Δυστυχώς, δεν υπάρχουν smart home hubs στην αγορά Μάχη των Smart Hubs στο σπίτι: Τι υπάρχει εκεί και τι έρχεται; Διαβάστε περισσότερα που συνεργάζονται με αυτά. Δεν θα ήταν υπέροχο αν μπορούσατε να συνδέσετε αυτά στο DIY έξυπνο σπίτι σας με κάποιο τρόπο; Λοιπόν, μπορείτε - αρκετά εύκολα στην πραγματικότητα - με περίπου $ 10 σε μέρη.
Με λίγο περισσότερη δουλειά, μπορείτε επίσης να ενσωματώσετε κάποιο άλλο εξειδικευμένο απομακρυσμένο υλικό που βασίζεται σε RF, όπως αυτή την οθόνη του κινηματογραφικού σταθμού.
Ο, τι χρειάζεσαι:
- ESP8266 NodeMCU έκδοση v12E dev (το ακριβές μοντέλο δεν έχει σημασία, v1 ή v3 θα πρέπει να είναι ωραία επίσης). Ο λόγος που χρησιμοποιούμε μια πλακέτα NodeMCU είναι επειδή θέλουμε αργότερα τη εύκολη σύνδεση Wi-Fi. Ο σύνδεσμος είναι για ένα πακέτο 2, το οποίο λειτουργεί σε 7 δολάρια το καθένα.
- Πακέτο από 433Mhz πομπό και δέκτη (περίπου $ 3).
- Οι βιβλιοθήκες RCSwitch και MQTT και ο κώδικας μας - όλα διαθέσιμη για λήψη από την Github.
- Ένας εξυπηρετητής MQTT, τοπικός ή απομακρυσμένος.
- Ορισμένες υποδοχές ελεγχόμενες με RF που λειτουργούν σε ζώνη 433 mHz (θα πρέπει να λένε στο τηλεχειριστήριο). Αγόρασα τη δική μου από τον Maplin ως πακέτο 3 για περίπου £ 20 ($ 25.89).
Εάν πρόκειται για τον προγραμματισμό για πρώτη φορά του πίνακα NodeMCU, θα χρειαστεί να κάνετε λήψη των plug-ins του Arduino: ακολουθήστε μαζί με το πρώτο μέρος του Arduino Killer εισαγωγικός οδηγός Γνωρίστε τον δολοφόνο του Arduino: ESP8266Τι θα συμβεί αν σας είπα ότι υπάρχει ένας πίνακας Dev συμβατός με Arduino με ενσωματωμένο Wi-Fi για λιγότερο από $ 10; Λοιπόν, υπάρχει. Διαβάστε περισσότερα για το τσιπ NodeMCU / ESP8266. Θα χρειαστείτε επίσης CH430. Μπορείς να βρεις υπογράφηκε macOS CH430 προγράμματα οδήγησης εδώ, ή Τα Windows εδώ.
Έχω χρησιμοποιήσει το v1.6.5 του Arduino γιατί κάτι υψηλότερο εισάγει περισσότερα προβλήματα από όσα λύνει. Υποβάθμιση εάν δεν το έχετε ήδη κάνει.
Προτού προχωρήσετε, θα αποκτήσω ένα βασικό επίπεδο γνώσης Προγραμματισμός Arduino Arduino Προγραμματισμός για αρχάριους: Εργαλείο Ελέγχου Εσωτερικού ΕλέγχουΗ οικοδόμηση ενός ελεγκτή φανών Arduino σας βοηθά να αναπτύξετε βασικές δεξιότητες κωδικοποίησης! Σας ξεκινήσαμε. Διαβάστε περισσότερα , και ότι έχετε τη ρύθμιση του NodeMCU στον διαχειριστή της πλατφόρμας και είστε σε θέση να φορτώσετε σωστά κάποιο κώδικα επίδειξης. Θα πρέπει επίσης να έχετε προσθέσει τις βιβλιοθήκες που περιλαμβάνονται στη λήψη μας στο δικό σας Arduino / βιβλιοθήκες ντοσιέ.
Αν έχετε ένα υπάρχον PubSubClient ή MQTT βιβλιοθήκη, να το αντιγράψετε και να το αφαιρέσετε - αυτό που έχω συμπεριλάβει στη λήψη είναι το μόνο που θα μπορούσα να λαμβάνω αξιόπιστα μηνύματα στο NodeMCU και προσπάθησα πολύ!
RF Sniffing (Προαιρετικό)
Αυτό το βήμα δεν είναι απαραίτητο εάν θέλετε να ελέγξετε μόνο το διακόπτη DIP ή τις υποδοχές βύσματος επιλογέα - αυτές υποστηρίζονται εκτός κιβωτίου και θα χρειαστεί ελάχιστη τροποποίηση κώδικα (αυτό είναι ακόμα ενδιαφέρον να το κάνετε πρώτα, όμως, έτσι θα καταλάβετε τι συμβαίνει πίσω από το σκηνές).
Αν έχετε άλλα τηλεχειριστήρια RF που θέλετε να προσθέσετε, θα πρέπει πρώτα να "μυρίσετε" τους κωδικούς RF που μεταδίδονται. Για να το κάνετε, φορτώστε το ReceiveDemo_Advanced σκίτσο από το Μενού -> Παραδείγματα -> RCSwitch φάκελο και αλλάξτε την ακόλουθη γραμμή από το 0
mySwitch.enableReceive (0); // Receiver on interrupt 0 => που είναι pin # 2
έως 2.
mySwitch.enableReceive (2); // Δέκτης στο GPIO 2 / D4.
Συνδέστε τη μονάδα δέκτη ως εξής. Κοιτάζοντας το μπροστινό μέρος του δέκτη (είναι το μεγαλύτερο από τα δύο, ο πομπός είναι τετράγωνος) - η πλευρά με τα εξαρτήματα σε:
- Ακριβώς δεξιά είναι το GND. Συνδεθείτε στο GND στην πλακέτα NodeMCU.
- Ακριβώς αριστερά είναι η VCC. Συνδεθείτε στο VIN στην πλακέτα NodeMCU.
- Μέσες δύο καρφίτσες είναι το σήμα. Συνδέστε είτε ένα με το D4 στο NodeMCU (συνδέονται μαζί, οπότε δεν έχει σημασία ποιο).
Τώρα μεταφορτώστε το τροποποιημένο ReceiveDemo_Advanced, και όταν ολοκληρωθεί, ανοίξτε τη σειριακή οθόνη και ξεκινήστε να πιέζετε τα πλήκτρα στα τηλεχειριστήρια. Αντιγράψτε το δεκαδικό (συμπεριλαμβανομένου του μήκους bit), το μήκος παλμού και το πρωτόκολλο όταν πατάτε ένα κουμπί.
Μετά από αυτό, βρήκα την οθόνη του βιντεοπροβολέα μου
- SCREEN UP: Λήψη 8694273 / 24bit; Μήκος παλμού: 355 ή 356. Πρωτόκολλο: 1
- SCREEN DOWN: Λήψη 8694276 / 24bit;Μήκος παλμού: 355 ή 356. Πρωτόκολλο: 1
Συνεχίστε για όσα κουμπιά χρειάζεστε.
Δοκιμή του πομπού
Στη συνέχεια, θα προσπαθήσουμε να στέλνουμε κωδικούς χρησιμοποιώντας τον πομπό. Συνδέστε το δομοστοιχείο πομπού (το τετράγωνο) ως εξής. Προσέξτε: η επισήμανση σε αυτές τις καρφίτσες είναι ατρόμητη.
Η καρφίτσα VCC βρίσκεται στη μέση, όχι στην αριστερή πλευρά. Καταστρέψα μια μονάδα στην προσπάθεια να το καταλάβω. Το πράγμα που λέει "ATAD" είναι στην πραγματικότητα "DATA", γραμμένο προς τα πίσω. Και πάλι, τα δεδομένα πηγαίνουν σε D4, VCC σε VIN, και GND σε GND (αφαιρέστε τη μονάδα δέκτη, δεν το χρειάζεστε πλέον).
Τοποθετήστε το Παραδείγματα -> RCSwitch -> TypeB_WithRotaryOrSlidingSwitches, και πάλι, αλλάξτε την ακίδα δεδομένων:
mySwitch.enableTransmit (10);
προς το
mySwitch.enableTransmit (2);
Σημειώστε ότι μια ποικιλία παραδειγμάτων περιλαμβάνεται στη βιβλιοθήκη και ποια εργασία για εσάς θα εξαρτηθεί από τον ακριβή τύπο του διακόπτη που έχετε. Οι τύποι A (διακόπτες dip) και B (διαλέξεις ή συρόμενα) είναι οι πιο συνηθισμένοι - ανατρέξτε στις εικόνες στη σελίδα RCSwitch. Για τον τύπο Β, η ενεργοποίηση και απενεργοποίηση μιας υποδοχής είναι τόσο απλή όσο:
mySwitch.switchOn (1, 4). mySwitch.switchOff (1, 4);
όπου 1 είναι το αναγνωριστικό καναλιού (ο κορυφαίος επιλογέας) και 4 είναι το αναγνωριστικό υποδοχής (ο κατώτερος επιλογέας). Αυτά γράφτηκαν με ρωμαϊκούς αριθμούς στις πρίζες μου. Επομένως, μπορούν να αντιμετωπιστούν το πολύ 16 μεμονωμένες υποδοχές, αν και πολλαπλές υποδοχές μπορούν να χρησιμοποιήσουν την ίδια διεύθυνση εάν έχετε πολλές συσκευές για να ενεργοποιήσετε ταυτόχρονα.
Ωστόσο, η οθόνη του προβολέα μου ήταν λίγο διαφορετική - χρησιμοποίησε διαφορετικό μήκος παλμού. Έτσι, για να λειτουργούν αυτές, οι ακόλουθες λειτουργούσαν. Σημειώστε ότι μπορείτε επίσης να ορίσετε ένα διαφορετικό πρωτόκολλο εάν το τηλεχειριστήριο το χρειάζεται, ΑΛΛΑ, βεβαιωθείτε ότι ορίζετε το πρωτόκολλο ΠΡΙΝ το μήκος του παλμού. Το μήκος παλμού αντικαθίσταται κατά την αλλαγή πρωτοκόλλου.
// Σημειώστε ότι η οθόνη μου απαιτεί πραγματικά ΔΥΟ πλήκτρα πατώντας (όχι ένα μακρύ πάτημα, αλλά δύο φυσικά πατώντας), έτσι καθυστερώ λίγο και έπειτα στέλνω το ίδιο σήμα ξανά void screenUp () { mySwitch.setPulseLength (358); mySwitch.send (8694273,24); // (δεκαδικός κώδικας, αριθμός bits) καθυστέρηση (2000); mySwitch.send (8694273,24); } void screenDown () {mySwitch.setPulseLength (358); mySwitch.send (8694276,24); καθυστέρηση (2000). mySwitch.send (8694276,24); }
Δοκιμάστε πρώτα όλους τους κωδικούς σας πριν προχωρήσετε στο επόμενο βήμα.
Έλεγχος μέσω του MQTT
Ανοίξτε το σκίτσο που κατεβάσατε από το όνομα Github mqtt_rcswitch.ino, και ξεκινήστε τροποποιώντας το SSID δικτύου και τον κωδικό πρόσβασης για το σπίτι σας. Στη συνέχεια, αλλάξτε το όνομα του καναλιού εάν το επιθυμείτε και ρυθμίστε τον διακομιστή MQTT. Εάν δεν διαθέτετε ήδη ένα διακομιστή MQTT στην εγκατάσταση του OpenHAB, διαβάστε το μέρος 2 του οδηγού μας για αρχάριους του OpenHAB Οδηγός για αρχάριους OpenHAB Μέρος 2: ZWave, MQTT, κανόνες και χαρτογράφησηΤο OpenHAB, το λογισμικό αυτοματισμού ανοιχτού κώδικα, ξεπερνά κατά πολύ τις δυνατότητες άλλων συστημάτων αυτοματισμού στο σπίτι της αγοράς - αλλά δεν είναι εύκολο να εγκατασταθεί. Στην πραγματικότητα, μπορεί να είναι απογοητευτικό. Διαβάστε περισσότερα . Σημειώστε ότι ο κώδικας μου έχει σχεδιαστεί για υποδοχές τύπου Β (περιστροφικού διακόπτη), αν και θα μπορούσατε εύκολα να το τροποποιήσετε και για τους μικροδιακόπτες.
Το πιο σημαντικό μέρος του κώδικα είναι το μήνυμα ελήφθη() που ανταποκρίνεται στις εισερχόμενες εντολές MQTT. Σε αυτή τη λειτουργία, ελέγχουμε πρώτα την κύρια λέξη-κλειδί - επέλεξα "διακόπτη" και "οθόνη". Στην περίπτωση του "διακόπτη", αναλύουμε στη συνέχεια το κανάλι και την ταυτότητα plug, στη συνέχεια, ελέγξτε το σώμα ωφέλιμου φορτίου για την εντολή.
void messageReceived (Θέμα συμβολοσειράς, ωφέλιμο φορτίο συμβολοσειρών, char * bytes, μη υπογεγραμμένο int μήκος) {if (topic.indexOf ("switch")> = 0) {// έλεγχος διακόπτη, ανάλυση του καναλιού και προσθήκη id int channel = getValue (θέμα, '/', 3) .toInt (); int plug = getValue (θέμα, '/', 4) .toInt (); αν (payload == "on") {mySwitch.switchOn (κανάλι, βύσμα); } else {mySwitch.switchOff (κανάλι, βύσμα); }} αλλιώς εάν (topic.indexOf ("οθόνη")> = 0) {// έλεγχος οθόνης εάν (payload == "up") {screenUp (); } else αν (payload == "κάτω") {screenDown (); }} / * προσθέστε άλλο, αν εδώ ακούσετε περισσότερες εντολές (ή απλά τροποποιήστε το παραπάνω εάν δεν θέλετε οθόνη) * / }
Από προεπιλογή, επομένως, λειτουργούν οι ακόλουθες εντολές MQTT:
σαλόνι / διακόπτης / διακόπτης / X / Y (όπου το Χ είναι κανάλι και το Y είναι το αναγνωριστικό υποδοχής. με το σώμα μηνυμάτων ενεργοποιημένο ή απενεργοποιημένο)
καθιστικό / έλεγχο / οθόνη (με σώμα μηνυμάτων επάνω ή κάτω)
Χρησιμοποιήστε τη γραμμή εντολών ή ένα πρόγραμμα-πελάτη GQ MQTT για να δοκιμάσετε τις συσκευές σας πριν προσθέσετε στο OpenHAB.
Προσθήκη στο OpenHAB
Ως τελευταίο βήμα, πρέπει απλά να δημιουργήσουμε ορισμένα στοιχεία για αυτούς τους διακόπτες στο OpenHAB. Έχω ορίσει τα παρακάτω στοιχεία για τώρα, αλλά θα πρέπει να είστε σε θέση να καταλάβετε πώς να προσθέσετε περισσότερα:
/ * Συσκευές RF433mHz * / Αλλαγή CinemaScreen "Οθόνη" (Κινηματογράφος) {mqtt = "> [μεσίτης: καθιστικό / έλεγχος / οθόνη: εντολή: Διακόπτης Switch41 "Switch41" (Κινηματογράφος) {mqtt = "> [μεσίτης: σαλόνι / διακόπτης / διακόπτης / 4/1: εντολή: ON]: off] "} Διακόπτης Switch42 "Switch42" (Κινηματογράφος) {mqtt = "> [μεσίτης: σαλόνι / διακόπτης / διακόπτης / 4/2: εντολή: ON]: off] "}
Θα πρέπει τώρα να μπορείτε να ελέγχετε τις συσκευές RF από το OpenHAB! Ένα πράγμα που μου εκπλήσσει ευχάριστα ήταν η σειρά - ένας μοναδικός κόμβος ήταν σε θέση να καλύψει το μεγαλύτερο μέρος του σπιτιού μου. Μπορείτε φυσικά να προσθέσετε έναν άλλο κόμβο, ακούγοντας το ίδιο κανάλι, το οποίο απλά επαναλαμβάνει τις ίδιες εντολές, εάν χρειάζεστε περαιτέρω κάλυψη.
Ο μόνος περιορισμός που πρέπει να ληφθεί υπόψη είναι ότι οι ίδιες οι υποδοχές δεν μπορούν να αναφέρουν την κατάστασή τους, οπότε αν εσείς χρησιμοποιήστε το αρχικό τηλεχειριστήριο, ο έλεγχος της κατάστασης της υποδοχής ενδέχεται να μην αντικατοπτρίζεται με ακρίβεια εντός OpenHAB. Προσέξτε να χρησιμοποιείτε μόνο τη διεπαφή OpenHAB και θα πρέπει να είστε εντάξει.
Ερωτήσεις ή προβλήματα; Ρωτήστε μακριά στα σχόλια και θα κάνω το καλύτερο δυνατό για να βοηθήσω. Αν θέλετε να βελτιώσετε τον κώδικα μου, μπορείτε να υποβάλετε ένα αίτημα έλξης.
Ο James έχει πτυχίο στην Τεχνητή Νοημοσύνη και είναι πιστοποιημένος με CompTIA A + και Network +. Είναι ο κύριος προγραμματιστής της MakeUseOf, και ξοδεύει τον ελεύθερο χρόνο του παίζοντας VR paintball και boardgames. Κατασκευάζει υπολογιστές από τότε που ήταν παιδί.