Ρύθμιση Raspberry Pi Home Automation

Set Up Raspberry Pi Home Automation



Ένα από τα πιο σημαντικά πράγματα για τον αυτοματισμό του σπιτιού είναι ο έλεγχος AC υψηλής τάσης χρησιμοποιώντας DC χαμηλής τάσης. Για να ελέγξετε το AC υψηλής τάσης από το Raspberry Pi, θα χρειαστείτε έναν διακόπτη ρελέ 5V. Μπορείτε να ελέγξετε τον διακόπτη ρελέ χρησιμοποιώντας τις καρφίτσες GPIO του Raspberry Pi. Ο διακόπτης ρελέ μπορεί στη συνέχεια να ελέγξει τις οικιακές συσκευές AC μέσω του Raspberry Pi.

Αυτό το άρθρο θα σας δείξει πώς να χρησιμοποιήσετε το Raspberry Pi και τον διακόπτη ρελέ 5V για να ενεργοποιήσετε και να απενεργοποιήσετε μια λάμπα από την κινητή συσκευή σας. Το άρθρο περιλαμβάνει μια εφαρμογή ιστού στην οποία μπορείτε να έχετε πρόσβαση από οποιαδήποτε συσκευή στο δίκτυό σας και να ελέγχετε ασύρματα όλες τις οικιακές συσκευές AC στο σπίτι σας. Ας ξεκινήσουμε λοιπόν με το απλό μας πείραμα αυτοματισμού σπιτιού Raspberry Pi.







Πράγματα που θα χρειαστείτε

Εάν θέλετε να χρησιμοποιήσετε το Raspberry Pi χωρίς ακέφαλο (μέσω SSH ή VNC), θα χρειαστείτε τα ακόλουθα πράγματα:



1) Raspberry Pi 3 ή Raspberry Pi 4.
2) Διακόπτης ρελέ 5V.
3) Ηλεκτρικά καλώδια.
4) 3 καλώδια σύνδεσης από γυναίκα σε γυναίκα.
5) Λάμπα AC.
6) Στήριγμα λαμπτήρα AC.
7) Βύσμα AC.
8) Εργαλείο κοπτήρων και απογυμνωτή.
9) κατσαβίδι CR-V 3.
10) Προσαρμογέας τροφοδοσίας Micro-USB (Raspberry Pi 3) ή USB Type-C (Raspberry Pi 4).
11) Έλαμψε κάρτα microSD 16 GB ή 32 GB με Raspberry Pi OS.
12) Συνδεσιμότητα δικτύου στο Raspberry Pi.
13) Φορητός υπολογιστής ή επιτραπέζιος υπολογιστής για απομακρυσμένη πρόσβαση επιτραπέζιου υπολογιστή VNC ή πρόσβαση SSH στο Raspberry Pi.



Εάν δεν θέλετε να αποκτήσετε πρόσβαση στο Raspberry Pi από απόσταση μέσω SSH ή VNC, θα χρειαστείτε επίσης τα ακόλουθα:





14) Μια οθόνη.
15) Καλώδιο HDMI ή micro-HDMI.
16) Ένα πληκτρολόγιο.
17) Ένα ποντίκι.

Εάν χρειάζεστε βοήθεια με το φλας του Raspberry Pi OS στην κάρτα microSD, ανατρέξτε στο άρθρο Πώς να εγκαταστήσετε και να χρησιμοποιήσετε το Raspberry Pi Imager.



Εάν είστε αρχάριος Raspberry Pi και χρειάζεστε βοήθεια με την εγκατάσταση του Raspberry Pi OS στο Raspberry Pi, δείτε το άρθρο Πώς να εγκαταστήσετε το Raspberry Pi OS στο Raspberry Pi 4.

Επίσης, εάν χρειάζεστε βοήθεια με την ακέφαλη εγκατάσταση του Raspberry Pi, ανατρέξτε στο άρθρο Πώς να εγκαταστήσετε και να διαμορφώσετε το Raspberry Pi OS στο Raspberry Pi 4 χωρίς εξωτερική οθόνη.

Οι εικόνες όλων των απαιτούμενων εργαλείων δίνονται παρακάτω.

Ενεργοποίηση του Raspberry Pi

Στη συνέχεια, συνδέστε το καλώδιο τροφοδοσίας στο Raspberry Pi και ενεργοποιήστε το Raspberry Pi.

Μόλις ενεργοποιηθεί το Raspberry Pi, μπορείτε να συνδεθείτε στο Raspberry Pi μέσω VNC ή SSH. Or, μπορείτε να συνδέσετε ένα πληκτρολόγιο, ένα ποντίκι και μια οθόνη στο Raspberry Pi για άμεση πρόσβαση σε αυτό.

5V Ρελέ Pinouts

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

Το ρελέ 5V είναι πολύ εύκολο στη χρήση. Έχει δύο πλευρές: η μία πλευρά χρησιμοποιείται για τον έλεγχο του ρελέ μέσω DC χαμηλής τάσης (από το Raspberry Pi) και η άλλη πλευρά για τον έλεγχο της υψηλής τάσης AC (δηλαδή, η λάμπα), ανάλογα με την κατάσταση του ρελέ Το


Από τη μία πλευρά, το ρελέ διαθέτει δύο LED (ένα κόκκινο και ένα πράσινο) και τρεις ακίδες ( IN, GND, και VCC ). Αυτές οι τρεις ακίδες χρησιμοποιούνται για τον έλεγχο του ρελέ από το Raspberry Pi.

Οι δύο πρώτες ακίδες από την άλλη πλευρά χρησιμοποιούνται για τον έλεγχο της οικιακής συσκευής AC.

Σύνδεση του ρελέ 5V στο Raspberry Pi

Για να συνδέσετε το ρελέ 5V στο Raspberry Pi, θα χρειαστείτε τρία καλώδια σύνδεσης από γυναίκα σε γυναίκα.

Συνδέστε τη μία πλευρά των καλωδίων σύνδεσης στο ΣΕ (κίτρινο σύρμα), GND (μαύρο σύρμα), και VCC (κόκκινο σύρμα) ακίδες στο ρελέ 5V, όπως φαίνεται παρακάτω.


Η άλλη πλευρά των καλωδίων μπαίνει στις καρφίτσες κεφαλίδας GPIO του Raspberry Pi, όπως φαίνεται στην παρακάτω εικόνα.

Το κόκκινο σύρμα πρέπει να μπει στο PIN 2 (VCC) του Raspberry Pi.
Το μαύρο καλώδιο πρέπει να μπει στο PIN 6 (GND) του Raspberry Pi.
Το κίτρινο σύρμα πρέπει να μπει στο PIN 7 (GPIO 4) του Raspberry Pi.


Μόλις συνδεθεί το ρελέ 5V στο Raspberry Pi, θα πρέπει να φαίνεται όπως φαίνεται στην παρακάτω εικόνα.

Επιτρέποντας την πρόσβαση GPIO στον χρήστη σύνδεσης

Για να επιτρέψετε την πρόσβαση στις καρφίτσες GPIO, τον προεπιλεγμένο χρήστη σύνδεσης του Raspberry Pi OS πι πρέπει να προστεθεί στο gpio ομάδα.

Μπορείτε να προσθέσετε το πι χρήστης στο gpio ομάδα με την ακόλουθη εντολή:

$sudousermod-αΓgpio $(ποιός είμαι)


Για να ισχύσουν οι αλλαγές, επανεκκινήστε το Raspberry Pi με την ακόλουθη εντολή:

$sudoεπανεκκίνηση

Δημιουργία καταλόγου έργου

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

Για να διατηρήσετε τα αρχεία του έργου οργανωμένα, δημιουργήστε τον κατάλογο έργου ~/www και τους απαιτούμενους υποκαταλόγους με την ακόλουθη εντολή:

$mkdir -pv~/www/{πρότυπα, στατικά}


Μόλις δημιουργηθεί ο κατάλογος έργου, μεταβείτε στον κατάλογο έργου ως εξής:

$CD~/www

Αλλαγή του ρελέ 5V από το Raspberry Pi

Τώρα που συνδέσατε το ρελέ 5V στο Raspberry Pi, θα αλλάξετε το ρελέ από το Raspberry Pi χρησιμοποιώντας τη γλώσσα προγραμματισμού Python.

ΣΗΜΕΙΩΣΗ: Αλλαγή είναι ένας όρος που χρησιμοποιείται στην ηλεκτρονική. Διακόπτης σημαίνει τον έλεγχο (δηλαδή ενεργοποίηση/απενεργοποίηση) μιας συγκεκριμένης ηλεκτρονικής συσκευής.

Για να πειραματιστείτε με την αλλαγή του ρελέ χρησιμοποιώντας τη γλώσσα προγραμματισμού Python, δημιουργήστε το νέο test.py script Python στον κατάλογο έργου ως εξής:

$νανοtest.py


Πληκτρολογήστε τις ακόλουθες γραμμές κωδικών στο σενάριο test.py Python.

απόgpiozeroεισαγωγήLED
από χρόνος εισαγωγήύπνος

ενώ Αληθής:
αναμετάδοση=LED(4)
Τυπώνω('Relay: On')
ύπνος(5)

αναμετάδοση.Κλείσε()
Τυπώνω('Relay: Off')
ύπνος(5)

Μόλις τελειώσετε, πατήστε + Χ ακολουθούμενη από ΚΑΙ και να σώσει το test.py Python script.


Εδώ, εισαγωγές γραμμής 1 LED από το gpiozero βιβλιοθήκη και η γραμμή 2 εισάγει το ύπνος λειτουργία από το χρόνος βιβλιοθήκη.


Οι γραμμές 6-14 βρίσκονται μέσα σε ένα άπειρο βρόχο.


Η γραμμή 6 προετοιμάζει ένα LED στο GPIO 4 του Raspberry Pi, το οποίο συνδέεται με το ΣΕ καρφίτσα του ρελέ.


Η γραμμή 8 ενεργοποιεί το ρελέ χρησιμοποιώντας το επί() μέθοδος.

Η γραμμή 9 εκτυπώνει ένα μήνυμα στην κονσόλα χρησιμοποιώντας το Τυπώνω() λειτουργία.

Η γραμμή 10 καθυστερεί την εκτέλεση της επόμενης γραμμής κώδικα για πέντε δευτερόλεπτα χρησιμοποιώντας το ύπνος() λειτουργία.


Η γραμμή 12 απενεργοποιεί το ρελέ χρησιμοποιώντας το Κλείσε() μέθοδος.

Με τον ίδιο τρόπο, η γραμμή 9 εκτυπώνει ένα μήνυμα στην κονσόλα χρησιμοποιώντας το Τυπώνω() λειτουργία και η γραμμή 10 καθυστερεί την εκτέλεση της επόμενης γραμμής κώδικα για 5 δευτερόλεπτα χρησιμοποιώντας το ύπνος() λειτουργία.


Στη συνέχεια, εκτελέστε το test.py Το σενάριο Python ως εξής:

$python3 test.py


ο test.py Το σενάριο Python θα πρέπει να αρχίσει να αλλάζει το ρελέ 5V. Θα πρέπει να ακούτε έναν ήχο κλικ κάθε πέντε δευτερόλεπτα. Όταν το ρελέ αλλάζει κατάσταση (από ενεργοποίηση σε απενεργοποίηση ή απενεργοποίηση σε ενεργοποίηση), κάνει ένα θόρυβο κλικ. Αυτό σημαίνει ότι το ρελέ λειτουργεί σωστά.


Όταν το ρελέ είναι εκτός λειτουργίας (κανονική λειτουργία-το φορτίο AC αποσυνδέεται), μόνο το καθαρά Το LED πρέπει να ανάψει, όπως μπορείτε να δείτε στην παρακάτω εικόνα.


Όταν το ρελέ είναι σε κατάσταση λειτουργίας (το φορτίο AC είναι συνδεδεμένο), και τα δύο πράσινος LED και ο καθαρά Το LED πρέπει να ανάψει, όπως μπορείτε να δείτε στην παρακάτω εικόνα.


Μόλις ολοκληρωθεί ο έλεγχος, πατήστε + Γ να τερματίσει το test.py γραφή.

Σύνδεση του λαμπτήρα AC στο ρελέ 5V

Το ρελέ 5V θα πρέπει τώρα να λειτουργεί σωστά. Τώρα, θα συνδέσετε την οικιακή σας συσκευή εναλλασσόμενου ρεύματος (μια λάμπα, σε αυτήν την περίπτωση) στο ρελέ 5V.

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


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


Στη συνέχεια, αφαιρέστε το εξωτερικό στρώμα για να εκθέσετε περίπου ½ ίντσα του ηλεκτρικού σύρματος, όπως φαίνεται στην παρακάτω εικόνα.


Στη συνέχεια, διπλώστε τα εκτεθειμένα καλώδια, όπως φαίνεται στην παρακάτω εικόνα.


Χαλαρώστε τις σημαδεμένες βίδες του ρελέ με ένα κατσαβίδι CV-3.


Τοποθετήστε τα εκτεθειμένα καλώδια που απογυμνώσατε και διπλώσατε νωρίτερα στους δύο ακροδέκτες βιδών και σφίξτε τις βίδες με ένα κατσαβίδι CV-3.

Δοκιμή εναλλαγής ρελέ μετά τη σύνδεση φορτίου AC

Μόλις το φορτίο AC συνδεθεί στο ρελέ 5V, συνδέστε το βύσμα του λαμπτήρα στην πρίζα τοίχου.


Εκτελέστε το test.py Σενάριο Python από τον κατάλογο έργου ως εξής:

$python3 test.py


ο test.py Το σενάριο Python θα πρέπει να αρχίσει να αλλάζει το ρελέ 5V, το οποίο, με τη σειρά του, θα αλλάξει τον λαμπτήρα AC υψηλής τάσης σε διαστήματα πέντε δευτερολέπτων. Ο λαμπτήρας εναλλασσόμενου ρεύματος πρέπει να παραμείνει αναμμένος για πέντε δευτερόλεπτα, στη συνέχεια να παραμείνει σβηστός για πέντε δευτερόλεπτα και ούτω καθεξής.

Ο λαμπτήρας είναι σβηστός στην παρακάτω εικόνα.


Ο λαμπτήρας είναι αναμμένος στην παρακάτω εικόνα.


Όπως μπορείτε να δείτε, μπορούμε να αλλάξουμε το ρελέ και να ελέγξουμε τον λαμπτήρα AC υψηλής τάσης χρησιμοποιώντας τη γλώσσα προγραμματισμού Python. Πατήστε λοιπόν + Γ να τερματίσει το test.py γραφή.

Ας περάσουμε τώρα στην επόμενη ενότητα.

Γράφοντας την εφαρμογή Web Home Automation

Σε αυτήν την ενότητα, θα σας δείξω πώς να γράψετε μια εφαρμογή Ιστού που βασίζεται σε API χρησιμοποιώντας τη γλώσσα προγραμματισμού Python. Μπορείτε να χρησιμοποιήσετε την εφαρμογή ιστού για τον έλεγχο του ρελέ και των οικιακών συσκευών ή των ηλεκτρικών συσκευών ή των ηλεκτρικών συσκευών που είναι συνδεδεμένες στο ρελέ από ένα πρόγραμμα περιήγησης ιστού.

ΣΗΜΕΙΩΣΗ: Όλοι οι κωδικοί που εμφανίζονται σε αυτήν την ενότητα είναι διαθέσιμοι στο αποθετήριο GitHub μου shovon8 / raspberry-pi-home-automation Το Εάν θέλετε, μπορείτε να κλωνοποιήσετε το αποθετήριο GitHub μου και να παραλείψετε όλους τους κωδικούς.

Δημιουργήστε το σενάριο server.py Python στον κατάλογο έργου ως εξής:

$νανοserver.py


Πληκτρολογήστε τις ακόλουθες γραμμές κωδικών στο server.py Python script.

απόφλάσκαεισαγωγήΦλάσκα,jsonify,url_for,render_template
απόgpiozeroεισαγωγήLED
απόuuidεισαγωγήuuid4
δωμάτια= {}
δωμάτια['Δωμάτιο 1'] = [{
'ταυτότητα': uuid4(),
'όνομα':'Φως 1',
'εικόνισμα':'fa fa-lightbulb',
'κατάσταση':Ψευδής,
'relayPin':4,
'relayInstance':Ψευδής
}, {
'ταυτότητα': uuid4(),
'όνομα':'Οπαδός 1',
'εικόνισμα':'fa fa-fan',
'κατάσταση':Ψευδής,
'relayPin':6,
'relayInstance':Ψευδής
}]
δωμάτια['Μπάνιο 1'] = [{
'ταυτότητα': uuid4(),
'όνομα':'Φως 1',
'εικόνισμα':'fa fa-lightbulb',
'κατάσταση':Ψευδής,
'relayPin':5,
'relayInstance':Ψευδής
}]
εφαρμογή=Φλάσκα(__όνομα__)
εφαρμογήδιαμόρφωση['SEND_FILE_MAX_AGE_DEFAULT'] = 0
@εφαρμογήΔιαδρομή('/')
defΣπίτι():
ΕΠΙΣΤΡΟΦΗrender_template('./index.html',δωμάτια=δωμάτια)
deftoggle_appliance_status(ταυτότητα):
Γιαδωμάτιοσεδωμάτια:
Γιασυσκευήσεδωμάτια[δωμάτιο]:
αν Π(συσκευή['ταυτότητα']) == ταυτότητα:
ανσυσκευή['relayInstance']:
συσκευή['relayInstance']ΤοΚλείσε()
συσκευή['relayInstance'] = Ψευδής
αλλού:
συσκευή['relayInstance'] =LED(συσκευή['relayPin'])
συσκευή['relayInstance']Τοεπί()
συσκευή['κατάσταση'] = δενσυσκευή['κατάσταση']
ΕΠΙΣΤΡΟΦΗ Αληθής
ΕΠΙΣΤΡΟΦΗ Ψευδής
@εφαρμογήΔιαδρομή('/appliance/εναλλαγή/')
defappliance_toggle(ταυτότητα):
ΕΠΙΣΤΡΟΦΗjsonify({'κατάσταση': toggle_appliance_status(ταυτότητα)})

Μόλις τελειώσετε, πατήστε + Χ ακολουθούμενη από ΚΑΙ και να σώσει το server.py Python script.


Εδώ, οι γραμμές 1-3 εισάγουν όλα τα απαραίτητα στοιχεία από τις αντίστοιχες βιβλιοθήκες τους.


Η γραμμή 5 δημιουργεί ένα κενό δωμάτια λεξικό. Σε αυτό το λεξικό, θα αποθηκεύσουμε όλες τις λεπτομέρειες της συσκευής AC που θέλουμε να ελέγξουμε από την εφαρμογή ιστού.


ο δωμάτια Τα στοιχεία αποθηκεύονται στις γραμμές 7-29.


Ας συζητήσουμε τη δομή δεδομένων ενός από τα δωμάτια.

Εδώ, το όνομα του δωματίου θα είναι Δωμάτιο 1. Ετσι, Δωμάτιο 1 είναι το κλειδί για το δωμάτια λεξικό.


ο Δωμάτιο 1 Το κλειδί κρατά έναν πίνακα ως τιμή. Ο αριθμός των στοιχείων συστοιχίας είναι ίσος με τον αριθμό των οικιακών συσκευών AC που έχετε σε εκείνο το δωμάτιο που θέλετε επίσης να ελέγξετε από την εφαρμογή ιστού. Σε αυτήν την περίπτωση, έχουμε δύο οικιακές συσκευές AC που θέλουμε να ελέγχουμε: Φως 1 και Ανεμιστήρας 1 Το


Κάθε ορισμός οικιακής συσκευής έχει ένα ταυτότητα Το ο ταυτότητα είναι ένα τυχαία δημιουργημένο UUID. Αυτό χρησιμοποιείται για τον προσδιορισμό του δωματίου που θέλουμε να ελέγξουμε χρησιμοποιώντας το API.

Μια οικιακή συσκευή έχει επίσης όλα τα ακόλουθα:

  • όνομα (Φως 1 σε αυτήν την περίπτωση)
  • εικόνισμα (Τάξη εικονιδίων Font Awesome, καθώς θα χρησιμοποιούμε το Font Awesome για τα εικονίδια)
  • κατάσταση (Αληθινή αν επί και Ψευδής αν μακριά από )
  • relayPin (ο αριθμός καρφιτσών GPIO που χρησιμοποιείται για τον έλεγχο του ρελέ που είναι συνδεδεμένο στην οικιακή συσκευή AC)
  • ρελέ (η αρχικοποιημένη LED αντικείμενο του gpiozero βιβλιοθήκη υπεύθυνη για τον έλεγχο της αντίστοιχης καρφίτσας GPIO - relayPin )


Η γραμμή 31 προετοιμάζει έναν διακομιστή ιστού φιάλης Python.

Η γραμμή 32 διαμορφώνει τον διακομιστή ιστού φιάλης.


Οι γραμμές 34-36 στέλνουν το index.html αρχείο από το πρότυπα/ κατάλογο όταν επισκέπτεστε την εφαρμογή Ιστού οικιακής αυτοματοποίησης.

Χρήσεις φιάλης Jinja2 πρότυπο γλώσσας για απόδοση του index.html αρχείο. Έτσι, έχω περάσει το δωμάτια λεξικό προς το index.html αρχείο. Jinja2 θα αποδώσει την αρχική σελίδα χρησιμοποιώντας το δωμάτια δεδομένα.


Η λειτουργία toggle_appliance_status () στις γραμμές 39-52 χρησιμοποιείται για να ενεργοποιήσετε την οικιακή συσκευή εάν είναι απενεργοποιημένη και να απενεργοποιήσετε τη οικιακή συσκευή εάν είναι σε χρήση με τη συσκευή ταυτότητα Το

Επιστρέφει Αληθής εάν η λειτουργία εναλλαγής είναι επιτυχής. Εάν υπάρχει σφάλμα, θα επιστρέψει Ψευδής Το


Οι γραμμές 55-57 χρησιμοποιούνται για την εναλλαγή μιας οικιακής συσκευής χρησιμοποιώντας το /συσκευή/εναλλαγή/ Τελικό σημείο API του διακομιστή ιστού. Εδώ, ταυτότητα είναι η ταυτότητα της οικιακής συσκευής.


Δημιουργήστε το index.html αρχείο στο πρότυπα/ κατάλογο του έργου σας ως εξής:

$νανοπρότυπα/index.html

Πληκτρολογήστε τις ακόλουθες γραμμές κωδικών στο index.html γραφή.


< html lang='επί'>>
< κεφάλι >>
< μετα σετ='UTF-8'>>
< μετα όνομα='Θέα' περιεχόμενο='πλάτος = πλάτος συσκευής, αρχική κλίμακα = 1,0'>>
< Σύνδεσμος σχετ='φύλλο στυλ' href='{{url_for (' static ', filename =' fontawesome/css/all.min.css ')}}'>>
< Σύνδεσμος σχετ='φύλλο στυλ' href='{{url_for (' static ', filename =' style.css ')}}'>>
< τίτλος >>Οικιακός αυτοματισμός με Raspberry Pi</ τίτλος >>
</ κεφάλι >>
< σώμα >>
< div ταυτότητα='περιεχόμενο'>>
< η1 >>Raspberry Pi Home Automation</ η1 >>

{ % για δωμάτιο στα δωμάτια %}
< div τάξη='δωμάτιο'>>
< η2 >>{{ δωμάτιο }}</ η2 >>
< div τάξη=«συσκευές»>>
{ % για συσκευές σε δωμάτια [δωμάτιο] %}
< div τάξη='συσκευή' ταυτότητα='{{appliance [' id ']}}'> ='ενεργός'>>
< Εγώ τάξη='{{appliance [' icon ']}}'>></ Εγώ >>
< σπιθαμή >>{{appliance ['name']}}</ σπιθαμή >>
</ div >>
{ % endfor %}
</ div >>
</ div >>
{ % endfor %}

</ div >>

< γραφή src='{{url_for (' static ', filename =' app.js ')}}' τύπος='κείμενο/javascript'>></ γραφή >>
</ σώμα >>
</ html >>

Μόλις τελειώσετε, πατήστε + Χ ακολουθούμενη από ΚΑΙ και να σώσει το index.html αρχείο.


Δημιουργώ ένα style.css αρχείο στο στατικός/ κατάλογο του έργου σας ως εξής:

$νανοστατικός/style.css


Πληκτρολογήστε τις ακόλουθες γραμμές κωδικών στο style.css αρχείο.

@εισαγωγή url('https://fonts.googleapis.com/css2?family=BenchNine: [email protected]; 400; 700 & display = swap')?

* {
περιθώριο: 0?
υλικό παραγεμίσματος: 0?
γραμματοσειρά-οικογένεια: 'BenchNine', Σανς σέριφ?
}

#περιεχόμενο >>η1{
Ιστορικό:γραμμική-κλίση(προς τοσωστά, rgb(112, 24, 163), rgb(86, 127, 240))?
χρώμα: #fff?
στοίχιση κειμένου: κέντρο?
υλικό παραγεμίσματος: .5εμ 0?
}

div.δωμάτιο {
περιθώριο: .5εμ?
σύνορο: 2 εικονοστοιχεία στερεός rgb(112, 24, 163)?
περιθώριο-ακτίνα: 5 εικονοστοιχεία?
}

div.δωμάτιοη2{
/* φόντο: rgb (9, 76, 121); */
Ιστορικό:γραμμική-κλίση(προς τοσωστά, rgb(112, 24, 163), rgb(86, 127, 240))?
υλικό παραγεμίσματος: 0 0 0 .5εμ?
χρώμα: #fff?
}

div.συσκευές {
περιθώριο: .5εμ .5εμ 0 0?
απεικόνιση:καλώδιο?
flex-wrap:κάλυμμα?
}

div.συσκευή {
σύνορο: 2 εικονοστοιχεία στερεός rgb(112, 24, 163)?
περιθώριο-ακτίνα: 5 εικονοστοιχεία?
πλάτος: 110 εικονοστοιχεία?
ύψος: 120 εικονοστοιχεία?
στοίχιση κειμένου: κέντρο?
περιθώριο: 0 0 .5εμ .5εμ?
απεικόνιση:καλώδιο?
flex-direction:στήλη?
}

div.συσκευήΕγώ.φά {
μέγεθος γραμματοσειράς: 4εμ?
κάμψω-μεγαλώνω: 1?
επένδυση: 0,3εκ?
χρώμα: rgb(204, πενήντα, πενήντα)?
}

div. συσκευή[ενεργά δεδομένα='ενεργός']Εγώ.φά {
χρώμα: rgb(32, 177, 51)?
}

div.συσκευήσπιθαμή{
απεικόνιση: ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ?
γραμματοσειρά-βάρος: τολμηρός?
Ιστορικό: rgb(112, 24, 163)?
χρώμα: #fff?
}

Μόλις τελειώσετε, πατήστε + Χ ακολουθούμενη από ΚΑΙ και να σώσει το style.css αρχείο.


Δημιουργήστε ένα app.js αρχείο στο στατικός/ κατάλογο του έργου σας ως εξής:

$νανοστατικός/app.js


Πληκτρολογήστε τις ακόλουθες γραμμές κωδικών στο app.js αρχείο.

παράθυρο.addEventListener('φορτώνω',κύριος)?

λειτουργίακύριος() {
λειτουργίαtoggleApplianceState(Και) {
όπουταυτότητα=Και.μονοπάτι[1]Τοταυτότητα?

όπουhttp= νέοςXMLHttpRequest()?

httponrightstatechange = λειτουργία() {
αν(ΑυτόΤοreadyState === 4 && ΑυτόΤοκατάσταση === 200) {
αν(JSON.αναλύω πρόταση(ΑυτόΤοreplyText)Τοκατάσταση === αληθής) {
αν(Και.μονοπάτι[1]ΤοhasAttribute('ενεργά δεδομένα')) {
Και.μονοπάτι[1]ΤοremoveAttribute('ενεργά δεδομένα')
} αλλού {
Και.μονοπάτι[1]ΤοsetAttribute('ενεργά δεδομένα', 'ενεργός')
}
}
}
}

httpΆνοιξε('ΠΑΙΡΝΩ','/συσκευή/μεταβάλλω/${ταυτότητα}', αληθής)?
httpστείλετε()?
}


όπουσυσκευές=έγγραφο.getElementsByClassName('συσκευή')?
Για(Εγώ=0?Εγώ<συσκευές.μήκος?Εγώ++) {
συσκευές[Εγώ]ΤοaddEventListener('Κάντε κλικ',toggleApplianceState)?
}
}

Μόλις τελειώσετε, πατήστε + Χ ακολουθούμενη από ΚΑΙ και για να σώσει το app.js αρχείο.


Εδώ, η γραμμή 1 εκτελεί το κύριος() λειτουργία όταν τελειώσει η φόρτωση της ιστοσελίδας.

Στο index.html κάθε οικιακή συσκευή περικλείεται σε ένα συσκευή τάξη. Οι γραμμές 26-29 χρησιμοποιούνται για την επιλογή κάθε οικιακής συσκευής από την ιστοσελίδα και την επισύναψη της Κάντε κλικ συμβάν στη συσκευή. Όταν κάποιος κάνει κλικ σε μια οικιακή συσκευή από την ιστοσελίδα, το toggleApplianceState () η λειτουργία θα εκτελεστεί.


Στις γραμμές 4-23, το toggleApplianceState () η συνάρτηση χρησιμοποιείται για να ζητήσει το /συσκευή/εναλλαγή/ τελικό σημείο του διακομιστή ιστού για να αλλάξετε την κατάσταση της οικιακής συσκευής. Το αίτημα γίνεται στο παρασκήνιο μέσω AJAX. Μόλις ληφθεί η απάντηση, η ιστοσελίδα ενημερώνεται αναλόγως.


Πλοηγηθείτε στο στατικός/ στον κατάλογο του έργου σας ως εξής:

$CDστατικός/


Κατεβάστε το Font Awesome με την ακόλουθη εντολή:

$wgethttps://use.fontawesome.com/κυκλοφορίες/v5.15.1/fontawesome-free-5.15.1-web.zip


Μόλις γίνει λήψη του Font Awesome, θα πρέπει να βρείτε το νέο αρχείο zip fontawesome-free-5.15.1-web.zip στο στατικός/ Ευρετήριο.

$ls


Αποσυμπιέστε το fontawesome-free-5.15.1-web.zip αρχείο με την ακόλουθη εντολή:

$ανοίγω φερμουάρfontawesome-free-5.15.1-web.zip


ο fontawesome-free-5.15.1-web.zip το αρχείο θα πρέπει τώρα να αποσυμπιέζεται.


Ο νέος κατάλογος fontawesome-free-5.15.1-web/ θα πρέπει να δημιουργηθεί στο στατικό/ κατάλογο, όπως μπορείτε να δείτε στο παρακάτω στιγμιότυπο οθόνης.

$ls

Μετονομάστε τον κατάλογο fontawesome-free-5.15.1-web/ προς το fontawesome/ με την ακόλουθη εντολή:

$mv fontawesome-free-5.15.1-web fontawesome


Τώρα, δεν χρειάζεστε πλέον το fontawesome-free-5.15.1-web.zip αρχείο. Έτσι, αφαιρέστε το fontawesome-free-5.15.1-web.zip αρχείο με την ακόλουθη εντολή:

$rm fontawesome-free-5.15.1-web.zip


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

$ls


Επιστρέψτε στον κατάλογο του έργου ~/www ως εξής:

$CD..

Δοκιμή της εφαρμογής Web Automation Home

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

$FLASK_APP= εκτέλεση φιάλης server.py


Η εφαρμογή ιστού πρέπει να είναι διαθέσιμη στη θύρα 5000 του Raspberry Pi.


Από το πρόγραμμα περιήγησης ιστού Chromium, επισκεφτείτε http: // localhost: 5000 Το Η εφαρμογή ιστού οικιακής αυτοματοποίησης πρέπει να φορτωθεί.

Κάντε κλικ στο εικονίδιο του λαμπτήρα, που υποδεικνύεται στην παρακάτω εικόνα.


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


Έτσι, η εφαρμογή Ιστού αυτοματισμού σπιτιού λειτουργεί. Τύπος + Γ για τερματισμό του διακομιστή ιστού.

Δημιουργία υπηρεσίας Systemd για την εφαρμογή Web αυτοματισμού σπιτιού

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

Αρχικά, δημιουργήστε το raspi-home-automation.service στον κατάλογο του έργου σας ως εξής:

$νανοraspi-home-automation.service

Πληκτρολογήστε τις ακόλουθες γραμμές στο αρχείο raspi-home-automation.service.

[Μονάδα]
Περιγραφή= Raspberry Pi Home Automation Web Service
Μετά= network.target
[Υπηρεσία]
Κατάλογος εργασίας=/Σπίτι/πι/www
περιβάλλον=FLASK_APP= server.py
περιβάλλον=FLASK_ENV= παραγωγή
ExecStart=/usr/είμαι/τρέξιμο φιάλης--πλήθος= 0,0,0,0
StandardOutput= κληρονομώ
StandardError= κληρονομώ
Επανεκκίνηση= πάντα
Χρήστης= πι
[Εγκαθιστώ]
WantedBy= multi-user.target

Μόλις τελειώσετε, πατήστε + Χ ακολουθούμενη από ΚΑΙ και για να σώσει το raspi-home-automation.service αρχείο.


Αντιγράψτε το raspi-home-automation.service αρχείο στο /etc/systemd/system/ κατάλογο με την ακόλουθη εντολή:

$sudo cp raspi-home-automation.service/και τα λοιπά/Σύστημα/Σύστημα/


Φορτώστε ξανά τους δαιμόνιους του συστήματος για να ισχύσουν οι αλλαγές ως εξής:

$sudosystemctl daemon-reload


Πρόσθεσε το raspi-home-automation υπηρεσία στην εκκίνηση συστήματος του Raspberry Pi OS με την ακόλουθη εντολή:

$sudosystemctlεπιτρέπωraspi-home-automation.service


Επανεκκινήστε το Raspberry Pi με την ακόλουθη εντολή:

$sudoεπανεκκίνηση


Κάποτε μπότες Raspberry Pi, το raspi-home-automation η υπηρεσία πρέπει να είναι ενεργή/σε λειτουργία, όπως μπορείτε να δείτε στο παρακάτω στιγμιότυπο οθόνης.

$sudosystemctl status raspi-home-automation.service

Πρόσβαση στην εφαρμογή Web Automation Home από άλλες συσκευές

Για να αποκτήσετε πρόσβαση στην εφαρμογή ιστού οικιακής αυτοματοποίησης από άλλες συσκευές στο οικιακό σας δίκτυο, θα πρέπει να γνωρίζετε τη διεύθυνση IP της συσκευής σας Raspberry Pi.

Μπορείτε να βρείτε τη διεύθυνση IP της συσκευής Raspberry Pi 4 από τη διεπαφή διαχείρισης ιστού του οικιακού δρομολογητή σας. Στην περίπτωσή μου, η διεύθυνση IP είναι 192.168.0.103. Αυτό θα είναι διαφορετικό για εσάς. Έτσι, φροντίστε να αντικαταστήσετε την IP μου με τη δική σας από εδώ και στο εξής.


Εάν έχετε πρόσβαση στην κονσόλα Raspberry Pi, μπορείτε επίσης να εκτελέσετε την ακόλουθη εντολή για να βρείτε τη διεύθυνση IP.

$όνομα κεντρικού υπολογιστή -ΕΓΩ


Αφού γνωρίζετε τη διεύθυνση IP της συσκευής Raspberry Pi, μπορείτε να έχετε πρόσβαση σε αυτήν από οποιαδήποτε συσκευή στο οικιακό σας δίκτυο.

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


Βεβαιωθείτε ότι έχετε συνδέσει το βύσμα του λαμπτήρα στην πρίζα τοίχου.


Ο λαμπτήρας πρέπει να είναι απενεργοποιημένος από προεπιλογή.


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


Όπως μπορείτε να δείτε στην παρακάτω εικόνα, ο λαμπτήρας είναι αναμμένος.

συμπέρασμα

Αυτό το άρθρο σας έδειξε πώς να χρησιμοποιήσετε ένα ρελέ 5V για τον έλεγχο μιας ηλεκτρικής συσκευής AC υψηλής τάσης από το Raspberry Pi χρησιμοποιώντας τη γλώσσα προγραμματισμού Python. Το άρθρο σας έδειξε επίσης πώς να γράψετε μια εφαρμογή Ιστού Python flask βασισμένη σε API για τον έλεγχο του ρελέ από το πρόγραμμα περιήγησης ιστού. Αυτό το άρθρο θα σας βοηθήσει να ξεκινήσετε με τον αυτοματισμό του σπιτιού χρησιμοποιώντας το Raspberry Pi.