Πίνακας περιεχομένων:
- Βήμα 1: Θεωρία
- Βήμα 2: Σχεδιασμός
- Βήμα 3: Τεχνικές λεπτομέρειες: το API
- Βήμα 4: Τεχνικές λεπτομέρειες: Υλικό
- Βήμα 5: Τεχνικές λεπτομέρειες: Σύνδεση των κουκίδων | Οικιακός αυτοματισμός
- Βήμα 6: Ολοκλήρωση
Βίντεο: Φώτα του Ραμαζανιού - Οικιακός αυτοματισμός IOT: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Καθώς το Ραμαζάνι χτυπά την πόρτα, οι πόλεις σε όλο τον κόσμο φωτίζονται και προετοιμάζονται για τον μήνα της νηστείας. Τα φώτα είναι κρεμασμένα στις δημόσιες πλατείες και στους δρόμους της πόλης, καθώς και στους εξωτερικούς τοίχους των σπιτιών που φωτίζονται τις νύχτες μέχρι να βγει ο ήλιος το πρωί.
Σε αυτό το έργο, θα ήθελα να μοιραστώ τη συμβολή μου, στην οποία αυτοματοποιώ τον φωτισμό αυτών των διακοσμητικών με βάση την εποχή του Adhan και προσθέτοντας αυτό στο σύστημα έξυπνου σπιτιού μου.
Βήμα 1: Θεωρία
Βασικά, είναι πιο εύκολο και πιο εφαρμόσιμο να αυτοματοποιήσετε τον φωτισμό με βάση την ένταση του ηλιακού φωτός, για παράδειγμα. Ωστόσο, θα ήθελα αυτό να έχει το πνεύμα του ιερού μήνα, δηλαδή, τα φώτα θα ανάβουν όσο επιτρέπεται στους ανθρώπους να τρώνε κατά τη διάρκεια του μήνα νηστείας. Συγκεκριμένα, τα φώτα ανάβουν από το Maghrib Adhan μέχρι το Fajr Adhan κάθε μέρα χωρίς καμία ανθρώπινη αλληλεπίδραση.
Βήμα 2: Σχεδιασμός
Παρακάτω θα αναφέρω τις απαιτήσεις/δυνατότητες αυτού του έργου:
- Το σύστημα θα πρέπει να μπορεί να επεξεργάζεται αυτόματα κατά την εκκίνηση.
- Το σύστημα θα πρέπει να είναι σε θέση να εκτελεί περιοδικά τον αλγόριθμο απόφασης (ON/OFF).
- Το σύστημα θα πρέπει να μπορεί να καλεί API σε καθημερινή βάση.
- Το σύστημα θα πρέπει να είναι σε θέση να ανακτήσει από μη προγραμματισμένη επανεκκίνηση.
- Το σύστημα θα πρέπει να εκτελέσει τον αλγόριθμο απόφασης (ON/OFF) μόλις λάβει δεδομένα άμεσα.
- Το σύστημα θα πρέπει να παρέχει έναν διακόπτη για την ενεργοποίηση της λειτουργίας αυτόματου πιλότου (Αυτόματη λειτουργία).
- Το σύστημα πρέπει να παρέχει διακόπτη για χειροκίνητη ενεργοποίηση/απενεργοποίηση των φώτων.
- Η ενεργοποίηση του χειροκίνητου διακόπτη πρέπει να θέσει τη χειροκίνητη λειτουργία σε OFF.
- Όταν η Αυτόματη λειτουργία είναι ενεργοποιημένη, το αποτέλεσμα του αλγορίθμου απόφασης θα πρέπει να αντικατοπτρίζεται στο χειροκίνητο διακόπτη ON/OFF.
Βήμα 3: Τεχνικές λεπτομέρειες: το API
Για να καταστεί η θεωρία εφαρμόσιμη, απαιτείται να γνωρίζουμε την ώρα του Adhan σε καθημερινή βάση από τη μεταβλητή της και να την ενεργούμε για να ανάβουμε/σβήνουμε τα φώτα/διακοσμητικά.
Για το σκοπό αυτό, αποφάσισα να χρησιμοποιήσω ένα API βάσει τοποθεσίας για την εξυπηρέτηση των δεδομένων (ώρα για Adhan)
muslimsalat.com/api/#location
- Αυτό το API παρέχει μια ποικιλία επιλογών και παραμέτρων διαμόρφωσης που περιγράφονται στον παραπάνω σύνδεσμο τεκμηρίωσης.
- Συνιστάται να χρησιμοποιείτε το δικό σας κλειδί API το οποίο είναι δωρεάν κατά την εγγραφή.
- Στο σχεδιασμό μου, με ενδιαφέρει ένα καθημερινό χρονοδιάγραμμα.
- Ο χρόνος επιστροφής είναι σε μορφή 12 ωρών (ΠΜ/ΜΜ).
- Όσον αφορά την τοποθεσία, θα ήθελα αν αυτό το API μπορούσε να παρέχει ακριβέστερες επιλογές για τοποθεσίες όπως το σύστημα συντεταγμένων γεωγραφικών συντεταγμένων (Γεωγραφικό πλάτος και Γεωγραφικό μήκος). Για αυτόν τον τρόπο, αυτό το API μπορεί να παρέχεται με όνομα πόλης για παράδειγμα και αυτό είναι αρκετά αρκετό στις περισσότερες περιπτώσεις. Δυστυχώς, τα αποτελέσματα της συγκεκριμένης πόλης μου ήταν αρκετά προκατειλημμένα σε πολλαπλές δοκιμές και υπήρχαν μερικά λεπτά διαφοράς κατά τη σύγκριση του χρόνου Adhan μεταξύ των αποτελεσμάτων API και του πραγματικού χρόνου Adhan στην πόλη μου. Από την άλλη πλευρά, τα αποτελέσματα ταίριαζαν απόλυτα όταν παρείχα μια κοντινή πόλη στα βόρεια και τηρούσα!
- Το url API που χρησιμοποιώ είναι: https://muslimsalat.com/.json? Key =
Βήμα 4: Τεχνικές λεπτομέρειες: Υλικό
Για λόγους απλότητας, αφήνω το υλικό εκτός της διαδικασίας συγχρονισμού με το API και τον υπολογισμό του χρόνου με την ανάθεση αυτών των λειτουργιών στο Σύστημα οικιακού αυτοματισμού. Αυτό θα μου δώσει περισσότερο έλεγχο εάν θέλω να τροποποιήσω την πηγή API και τον αλγόριθμο υπολογισμού.
Τούτου λεχθέντος, χρησιμοποίησα ένα ESP8266 (NodeMCU) για σύνδεση στο τοπικό δίκτυο μέσω WIFI και μια μονάδα ρελέ ως ενεργοποιητή. Το NodeMCU θα χρησιμοποιήσει το πρωτόκολλο MQTT και θα ακούσει ένα συγκεκριμένο θέμα για να λάβει εντολές για ενεργοποίηση/απενεργοποίηση του ρελέ. Τόσο απλό!
Βήμα 5: Τεχνικές λεπτομέρειες: Σύνδεση των κουκίδων | Οικιακός αυτοματισμός
Το My RaspberryPi διαθέτει μια περίπτωση που δεν μπορεί να χειριστεί όλα όσα χρειάζομαι για αυτό το έργο. Έχει επίσης εγκατεστημένο διακομιστή MQTT για τη δημοσίευση των μηνυμάτων μας.
Αρχικά, σκέφτηκα ότι μπορώ να ανακτήσω τα δεδομένα API σε καθημερινές βάσεις στις 9 το πρωί και να εξαγάγω και τους χρόνους Fajr και Mahgrib Adhan και να συνεχίσω να συγκρίνω την τρέχουσα ώρα με αυτές τις μεταβλητές, δηλαδή:
κάθε 30 δευτερόλεπτα:
αν: Mahgrib <ΤΩΡΑ <Fajr true | ανάψτε τα φώτα | δημοσιεύστε ένα μήνυμα ON στο καθορισμένο θέμα MQTT αλλιώς: απενεργοποιήστε
Για σύγκριση ώρας, μετατρέπω τις ώρες που παρέχονται από το API από hh: mm (ΠΜ/ΜΜ) σε μορφή πλήρους ημερομηνίας, ορίζοντας το τμήμα ημερομηνίας σε αμελητέα ημερομηνία στο ιστορικό, π.χ. (1/1/1970) αφού συγκρίνουμε την ώρα μόνο στην τρέχουσα ώρα (το τμήμα ημερομηνίας μετατρέπεται επίσης).
Δυστυχώς, αυτό θα λειτουργήσει μόνο σε άμεσες περιπτώσεις. Ας υποθέσουμε ότι η διακοπή ρεύματος ή η επανεκκίνηση του συστήματος για απρογραμμάτιστο λόγο. Εάν αυτή η περίπτωση συμβεί πριν από τις 12 το πρωί, είμαστε ακόμα στην ασφαλή πλευρά, αλλά μετά τις 12 το πρωί αυτό θα αποτύχει στον απλό μας αλγόριθμο.
Για να δώσουμε ένα παράδειγμα, ας έχουμε τον Magrib Adhan στις 7:30 μ.μ. και το Fajr στις 4:10 π.μ. Όταν το σύστημα εκκινήσει θα στείλει ένα νέο αίτημα για την ανάκτηση των δεδομένων που αναφέρθηκαν νωρίτερα. Εάν η ώρα τώρα είναι 1:45 π.μ., αναμένουμε ότι ο αλγόριθμός μας θα επιστρέψει αληθινός, αλλά στην πραγματικότητα δεν θα είναι επειδή η 1:45 π.μ. Αυτό συμβαίνει επειδή ενώνουμε την ημερομηνία μεταξύ όλων των μεταβλητών. Παρακάτω είναι η τελική έκδοση του αλγορίθμου (μέχρι στιγμής):
κάθε 30 δευτερόλεπτα:
εάν ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // χειρισμός εκτάσεων ημερών endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // χειρισμός ημερών που καλύπτουν currentTime}} // παρακάτω είναι το προηγούμενο μπλοκ κωδικών εάν: Mahgrib <ΤΩΡΑ <Fajr true | ανάψτε τα φώτα | δημοσιεύστε ένα μήνυμα ON στο καθορισμένο θέμα MQTT αλλού: false | σβήνω
Η πλήρης ροή της διαδικασίας σημειώνεται στην παραπάνω εικόνα.
Όσον αφορά το περιβάλλον χρήστη, πρόσθεσα 2 διακόπτες στη διεπαφή χρήστη/διεπαφή:
- Διακόπτης για να ενεργοποιήσετε αυτήν τη διαδικασία Αυτόματα ή Χειροκίνητα.
- Διακόπτης χειροκίνητης ενεργοποίησης/απενεργοποίησης των φώτων.
Βήμα 6: Ολοκλήρωση
Ο χρόνος κυλάει για να μην τον ξαναθυμηθούμε. Κάνοντας τέτοια απλά έργα 1 ημέρας σας επιτρέπει να πάρετε μια ανάσα σε αυτή τη γρήγορη λωρίδα και να σας βοηθήσει να αναβιώσετε τις απαλές σας δεξιότητες με την πάροδο του χρόνου.
Προσπάθησα τόσο πολύ σε αυτό το έργο να το κρατήσω απλό και επαναχρησιμοποιήσιμο σε όλο τον κόσμο.
Vηφίστε ευγενικά για αυτό το διδακτικό, αν νομίζετε ότι αυτό το έργο αξίζει.
Χαρούμενο Ραμαζάνι!
Συνιστάται:
Η μέτρηση του καρδιακού ρυθμού σας βρίσκεται στην άκρη του δακτύλου σας: Προσέγγιση φωτοπληθυσμογραφίας για τον προσδιορισμό του καρδιακού ρυθμού: 7 βήματα
Η μέτρηση του καρδιακού ρυθμού σας βρίσκεται στην άκρη του δακτύλου σας: Προσέγγιση φωτοπληθυσμογραφίας για τον προσδιορισμό του καρδιακού ρυθμού: Ο φωτοπληθυσμογράφος (PPG) είναι μια απλή και χαμηλού κόστους οπτική τεχνική που χρησιμοποιείται συχνά για τον εντοπισμό αλλαγών στον όγκο αίματος σε μια μικροαγγειακή κλίνη ιστού. Χρησιμοποιείται κυρίως μη επεμβατικά για την πραγματοποίηση μετρήσεων στην επιφάνεια του δέρματος, συνήθως
Αυτοματισμός σπιτιού με χρήση του Captive Portal: 9 βήματα
Αυτοματισμός σπιτιού χρησιμοποιώντας Captive Portal: Εδώ, θα δημιουργήσουμε ένα πολύ ενδιαφέρον έργο αυτοματισμού σπιτιού με βάση το Captive Portal χρησιμοποιώντας το nodeMCU από την αρχή..Έτσι, ας ξεκινήσουμε
Διαδραστικά φώτα αυλής, φώτα πεζοδρομίου: 3 βήματα
Interactive Yard Lights, Walkway Lights: wantedθελα να φτιάξω ένα είδος διαδραστικών φώτων αυλής για την πίσω αυλή μου. Η ιδέα ήταν, όταν κάποιος περπατούσε με έναν τρόπο, θα ξεκινούσε ένα κινούμενο σχέδιο προς την κατεύθυνση που περπατούσατε. Ξεκίνησα με Dollar General $ 1,00 ηλιακά φώτα
Χρήση του PSP ως Joystick του υπολογιστή και στη συνέχεια έλεγχος του υπολογιστή σας με το PSP: 5 βήματα (με εικόνες)
Χρήση του PSP ως Joystick του υπολογιστή και στη συνέχεια έλεγχος του υπολογιστή σας με το PSP: Μπορείτε να κάνετε πολλά ωραία πράγματα με το PSP homebrew και σε αυτό το εκπαιδευτικό πρόγραμμα θα σας μάθω πώς να χρησιμοποιείτε το PSP σας ως χειριστήριο για παιχνίδια, αλλά υπάρχει επίσης ένα πρόγραμμα που σας επιτρέπει να χρησιμοποιείτε το joystick ως ποντίκι. Εδώ είναι η μητέρα
DIY Χριστουγεννιάτικα φώτα μελοποιημένα - Χορογραφημένα φώτα σπιτιού: 15 βήματα (με εικόνες)
DIY Χριστουγεννιάτικα φώτα σε μουσική - Χορογραφημένα φώτα σπιτιού: DIY Χριστουγεννιάτικα φώτα σε μουσική - Χορογραφημένα φώτα σπιτιού Αυτό ΔΕΝ είναι ένα αρχικό DIY. Θα χρειαστείτε μια σταθερή γνώση των ηλεκτρονικών, της κυκλικότητας, του BASIC προγραμματισμού και των γενικών έξυπνων για την ηλεκτρική ασφάλεια. Αυτό το DIY είναι για ένα έμπειρο άτομο, οπότε