Πίνακας περιεχομένων:
- Βήμα 1: Παρακολούθηση θερμοκρασίας
- Βήμα 2: Ρύθμιση του Cloud4Rpi.io
- Βήμα 3: Παρακολούθηση UPS
- Βήμα 4: Προετοιμασία για «παραγωγή»
- Βήμα 5: Δημιουργία πίνακα ελέγχου
Βίντεο: DIY House Monitoring With RaspberryPi και Cloud4Rpi: 5 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Ένα χειμερινό Σαββατοκύριακο πήγα στο εξοχικό μου και διαπίστωσα ότι έκανε πολύ κρύο εκεί. Κάτι είχε συμβεί με την ηλεκτρική ενέργεια και ο διακόπτης RCD τον είχε απενεργοποιήσει και η θέρμανση έσβησε επίσης. Wasμουν τυχερός που ήρθα εκεί, αλλιώς σε αρκετές ημέρες όλα θα είχαν παγώσει, κάτι που είναι πολύ κακό για τους σωλήνες και τα καλοριφέρ.
Είχα αρκετά Raspberry Pi και έναν θερμικό αισθητήρα, οπότε σκέφτηκα - γιατί δεν φτιάχνω μια απλή συσκευή παρακολούθησης; Οι παρακάτω οδηγίες υποθέτουν ότι έχετε ρυθμίσει ένα Raspberry Pi με Raspbian και σύνδεση δικτύου. Στην περίπτωσή μου είναι το Raspberry Pi B+ με Raspbian (2018–06–27-raspbian-stretch-lite).
Βήμα 1: Παρακολούθηση θερμοκρασίας
Πώς να συνδέσετε έναν αισθητήρα θερμοκρασίας DS18B20; Απλώς κάντε google πώς να το κάνετε αυτό και θα δείτε πολλές εικόνες όπως αυτή:
Στην περίπτωσή μου είχα μαύρα, κίτρινα και κόκκινα καλώδια. Το μαύρο είναι αλεσμένο, πηγαίνει στην καρφίτσα γείωσης, το κόκκινο είναι ισχύς - πηγαίνει στον ακροδέκτη 3,3v και το κίτρινο είναι δεδομένα - πρέπει να μεταβεί στην καρφίτσα GPIO4, με αντίσταση 4,7 kOm συνδεδεμένη μεταξύ δεδομένων και ισχύος. Σημείωση, μπορείτε να συνδέσετε πολλούς αισθητήρες παράλληλα (είναι ψηφιακές και έχουν διαφορετικές διευθύνσεις), χρειάζεστε μόνο μία αντίσταση. Αφού συνδέσετε τον αισθητήρα σας, θα πρέπει να ενεργοποιήσετε το 1Wire στο raspi-config:
sudo raspi-config
Μεταβείτε στις 5 επιλογές διασύνδεσης, ενεργοποιήστε το P7 1-Wire και επανεκκινήστε.
Στη συνέχεια, μπορείτε να δοκιμάσετε αν μπορείτε να δείτε τον αισθητήρα:
sudo modprobe w1-gpiosudo modprobe w1-thermls/sys/bus/w1/devices/
Θα πρέπει να δείτε κάτι σαν αυτό:
pi@vcontrol: ~ $ ls/sys/bus/w1/devices/28–00044eae2dff w1_bus_master1
28–00044eae2dff είναι ο αισθητήρας θερμοκρασίας μας.
Το υλικό είναι έτοιμο. Τώρα πρέπει να δημιουργήσω το τμήμα παρακολούθησης. Χρειάζομαι κάτι που θα μου έδειχνε τα δεδομένα και θα με ειδοποιούσε εάν η συσκευή αποσυνδεθεί για λίγο ή δεν υπάρχει ρεύμα ή η θερμοκρασία είναι χαμηλή. Προφανώς αυτό δεν μπορεί να είναι το ίδιο το raspberry pi, θα πρέπει να υπάρχει κάποιος διακομιστής ή υπηρεσία στο διαδίκτυο που παρακολουθεί τη συσκευή μου.
Μπορώ να δημιουργήσω έναν απλό διακομιστή, να πάρω μια φιλοξενία και να τα ρυθμίσω όλα, αλλά γοργά, δεν το θέλω. Ευτυχώς, κάποιος το έχει σκεφτεί ήδη και έχει δημιουργήσει το cloud4rpi.io - έναν πίνακα ελέγχου cloud για τη συσκευή σας.
Βήμα 2: Ρύθμιση του Cloud4Rpi.io
Το Cloud4Rpi παρέχει μια υπηρεσία που επιτρέπει στη συσκευή σας να στέλνει και να λαμβάνει δεδομένα χρησιμοποιώντας πρωτόκολλα MQTT ή HTTP. Έχουν μια βιβλιοθήκη πελάτη για την Python, οπότε θα χρησιμοποιήσω την Python.
Τα παραδείγματα Python που συνοδεύουν την υπηρεσία Cloud4Rpi περιέχουν ήδη κωδικό για τον αισθητήρα θερμοκρασίας DS18B20.
Πήγα λοιπόν στο https://cloud4rpi.io, δημιούργησα έναν λογαριασμό και πρόσθεσα μια νέα συσκευή εκεί. Η σελίδα της συσκευής έχει ένα διακριτικό - μια συμβολοσειρά που προσδιορίζει τη συσκευή και η οποία πρέπει να καθοριστεί στο πρόγραμμα που στέλνει δεδομένα.
Αρχικά, είναι πάντα καλή ιδέα να ενημερώσετε έναν διαχειριστή πακέτων και να αναβαθμίσετε πακέτα (σημείωση: μπορεί να χρειαστούν ώρες εάν δεν έχετε αναβαθμίσει για λίγο):
sudo apt-get ενημέρωση && sudo apt-get αναβάθμιση
Στη συνέχεια, εγκαταστήστε το git, Python και το διαχειριστή πακέτων Pip:
sudo apt-get install git python python-pip
Στη συνέχεια, εγκαταστήστε τη βιβλιοθήκη cloud4rpi Python:
sudo pip εγκατάσταση cloud4rpi
Τέλος, είμαι έτοιμος να γράψω το πρόγραμμα ελέγχου μου. Ξεκινώ από το διαθέσιμο παράδειγμα στη διεύθυνση
git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi… cloud4rpicd cloud4rpi
Το κύριο αρχείο προγράμματος είναι control.py - πρέπει να το τροποποιήσω για τις ανάγκες μου. Αρχικά, επεξεργαστείτε το πρόγραμμα και επικολλήστε ένα διακριτικό:
sudo nano control.py
Βρείτε μια γραμμή DEVICE_TOKEN = '…'] και καθορίστε ένα διακριτικό συσκευής εκεί. Μετά από αυτό, μπορώ απλά να εκτελέσω το πρόγραμμα: Λειτουργεί και αναφέρει μια θερμοκρασία στη μεταβλητή RoomTemp:
sudo python control.py
Λειτουργεί και αναφέρει μια θερμοκρασία στη μεταβλητή RoomTemp.
Σημειώστε ότι ανακαλύπτει όλους τους onewire αισθητήρες ds18b20
ds_sensors = ds18b20. DS18B20.find_all ()
και χρησιμοποιεί τον πρώτο εντοπισμένο αισθητήρα:
RoomTemp ': {' type ':' numeric ',' bind ': ds_sensors [0] if ds_sensors else None}
Εντάξει, ήταν εύκολο, επειδή το δείγμα προγράμματος έχει όλα όσα απαιτούνται για να λειτουργήσει με αισθητήρα ds18b20 στο Raspberry Pi. Τώρα πρέπει να βρω τον τρόπο να αναφέρω την κατάσταση ισχύος.
Βήμα 3: Παρακολούθηση UPS
Το επόμενο πράγμα που θέλω να παρακολουθήσω είναι η κατάσταση του UPS, οπότε αν υπάρχει διακοπή ρεύματος, θα το μάθω πριν αποσυνδεθούν όλα.
Έχω ένα APC UPS με χειριστήριο USB, οπότε έψαξα γρήγορα στο Google και διαπίστωσα ότι χρειάζομαι apcupsd. https://www.anites.com/2013/09/monitoring-ups.html… Προσπάθησα αρκετές φορές να το εγκαταστήσω μέσω του apt-get και δεν λειτουργούσε για μένα για διάφορους λόγους. Θα δείξω πώς να το εγκαταστήσετε από τις πηγές.
wget https://sourceforge.net/projects/apcupsd/files/ap…tar xvf apcupsd-3.14.14.tar.gz cd apcupsd-3.14.14./configure --enable-usb sudo make sudo make install
Στη συνέχεια, επεξεργάζομαι το apcupsd.conf για σύνδεση στο UPS μου μέσω usb.
sudo nano /etc/apcupsd/apcupsd.conf# #UPSCABLE smart UPSCABLE usb ##UPSTYPE apcsmart #DEVICE/dev/ttyS0 UPSTYPE usb DEVICE
Τώρα μπορώ να συνδέσω το καλώδιο USB από το UPS στο RaspberryPi και να δοκιμάσω αν θα βρεθεί UPS.
sudo apctest
Δεν πρέπει να σας δίνει μηνύματα σφάλματος.
Τώρα η υπηρεσία apcupsd πρέπει να ξεκινήσει:
sudo systemctl εκκίνηση apcupsd
Για να ρωτήσω την κατάσταση του UPS, μπορώ να χρησιμοποιήσω μια εντολή κατάστασης:
sudo /etc/init.d/apcupsd κατάσταση
Και θα έβγαινε κάπως έτσι:
APC: 001, 035, 0855 ΗΜΕΡΟΜΗΝΙΑ: 2018-10-14 16:55:30 +0300 HOSTNAME: vcontrol VERSION: 3.14.14 (31 Μαΐου 2016) debian UPSNAME: vcontrol CABLE: USB Cable DRIVER: USB UPS Driver UPSMODE: Stand Alone ΧΡΟΝΟΣ ΕΝΑΡΞΗΣ: 2018-10-14 16:54:28 +0300 ΜΟΝΤΕΛΟ: Back-UPS XS 650CI STATUS: ONLINE LINEV: 238.0 Volts LOADPCT: 0.0 Percent BCHARGE: 100.0 Percent TIMELEFT: 293.3 Minutes MBATTCHG: 5 Percent MINTIMEL: 3 Minutes MAX 0 Δευτερόλεπτα ΑΙΣΘΗΣΗ: Μεσαίο LOTRANS: 140.0 Volts HITRANS: 300.0 Volts ALARMDEL: 30 Seconds BATTV: 14.2 Volts LASTXFER: No Transfers since turnon NUMXFERS: 0 TONBATT: 0 Seconds CUMONBATT: 0 Seconds XOFFBATT00: 2014-06-10 NOMINV: 230 Volts NOMBATTV: 12.0 Volts NOMPOWER: 390 Watt FIRMWARE: 892. R3. I USB FW: R3 END APC: 2018-10-14 16:55:38 +0300
Χρειάζομαι μια κατάσταση - η οποία είναι η γραμμή "STATUS:".
Η βιβλιοθήκη Cloud4rpi περιέχει μια ενότητα «rpy.py» που επιστρέφει τις παραμέτρους του συστήματος Raspberry Pi, όπως το όνομα κεντρικού υπολογιστή ή τη θερμοκρασία του cpu. Δεδομένου ότι όλα αυτά τα παράθυρα είναι αποτελέσματα εκτέλεσης ορισμένων εντολών και ανάλυσης εξόδου, περιέχει επίσης μια εύχρηστη λειτουργία "parse_output" που κάνει ακριβώς αυτό που χρειάζομαι. Αυτός είναι ο τρόπος για να αποκτήσω την κατάσταση του UPS μου:
def ups_status (): result = rpi.parse_output (r'STATUS / s+: / s+(S+) ', [' /etc/init.d/apcupsd ',' status '])) εάν αποτέλεσμα: επιστροφή άλλου αποτελέσματος: επιστροφή 'ΑΓΝΩΣΤΟΣ'
Για να στείλω αυτήν την κατάσταση στο cloud4rpi, πρέπει να δηλώσω μια μεταβλητή UPSStatus και να την συνδέσω με τη λειτουργία ups_status: Τώρα μπορώ να εκτελέσω το πρόγραμμά μου:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Και μπορώ να δω αμέσως τη μεταβλητή μου στη σελίδα της συσκευής cloud4rpi.
Βήμα 4: Προετοιμασία για «παραγωγή»
Όλα λειτουργούν και τώρα πρέπει να προετοιμάσω τη συσκευή μου σε λειτουργία χωρίς επίβλεψη.
Αρχικά, θα προσαρμόσω τα χρονικά διαστήματα. Το διάστημα δημοσκόπησης καθορίζει πόσο συχνά το πρόγραμμα ελέγχει τη θερμοκρασία και την κατάσταση του UPS - ρυθμίστε το σε ένα δευτερόλεπτο.
Τα αποτελέσματα αποστέλλονται στο cloud κάθε 5 λεπτά και διαγνωστικές πληροφορίες - κάθε ώρα.
# ConstantsDATA_SENDING_INTERVAL = 300 # δευτ. DIAG_SENDING_INTERVAL = 3600 # δευτερόλεπτο POLL_INTERVAL = 1 # δευτ.
Όταν αλλάζει η κατάσταση του UPS - δεν θέλω η συσκευή μου να περιμένει για 5 λεπτά και στέλνω δεδομένα αμέσως. Έτσι, έχω τροποποιήσει ελαφρώς τον κύριο βρόχο και μοιάζει με αυτό:
data_timer = 0diag_timer = 0 prevUPS = 'ONLINE' ενώ True: newUPS = ups_status () if (data_timer <= 0) ή (newUPS! = prevUPS): device.publish_data () data_timer = DATA_SENDING_INTERVAL prevUPS = new_timer: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL sleep (POLL_INTERVAL) diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
Δοκιμή: εκτέλεση σεναρίου:
sudo python control.py
Και μπορώ να παρακολουθώ την κατάσταση του UPS στη σελίδα της συσκευής μου.
Εάν απενεργοποιήσω το UPS, η κατάσταση αλλάζει σε μερικά δευτερόλεπτα, οπότε όλα λειτουργούν. Τώρα πρέπει να ξεκινήσω το apcupsd και το control.py μου κατά την εκκίνηση του συστήματος. Η υπηρεσία Apcupsd είναι παλιά και για να την ξεκινήσω σε σύγχρονο raspbian, θα πρέπει να τροποποιήσω το αρχείο /etc/init.d/apcupsd, προσθέτοντας αυτές τις γραμμές κάπου στο επάνω μέρος:
### ΕΚΚΙΝΗΣΗ ΠΛΗΡΟΦΟΡΙΩΝ # Παρέχει: apcupsd # Απαιτείται-Έναρξη: $ all # Απαιτείται-Διακοπή: # Προεπιλογή-Έναρξη: 2 3 4 5 # Προεπιλογή-Διακοπή: # Σύντομη περιγραφή: Δαίμονας APC UPS… ### ΤΕΛΟΣ ΕΝΑΡΞΗ ΠΛΗΡΟΦΟΡΙΕΣ#
Στη συνέχεια, ενεργοποιήστε την υπηρεσία:
sudo systemctl ενεργοποίηση apcupsd
Στη συνέχεια, ξεκινήστε την υπηρεσία:
sudo systemctl εκκίνηση apcupsd
Τώρα θα ξεκινήσει το apcupsd κατά την εκκίνηση του συστήματος.
Για να εγκαταστήσω το control.py ως υπηρεσία, χρησιμοποίησα το σενάριο service_install.sh που παρέχεται:
sudo bash service_install.sh/cloud4rpi/control.py
Τώρα η υπηρεσία έχει ξεκινήσει και θα επιβιώσει από μια επανεκκίνηση.
Βήμα 5: Δημιουργία πίνακα ελέγχου
Το Cloud4rpi μου επιτρέπει να δημιουργήσω έναν πίνακα ελέγχου για τη συσκευή μου. Μπορείτε να προσθέσετε "widgets" και να τα συνδέσετε σε μεταβλητές συσκευής.
Η συσκευή μου παρέχει δύο μεταβλητές μόνο για ανάγνωση - RoomTemp και UPSStatus:
variables = {'RoomTemp': {'type': 'numeric', 'bind': ds_sensors [0]}, 'UPSStatus': {'type': 'string', 'bind': ups_status}}
Πρόσθεσα 3 widget - Αριθμός για RoomTemp, Κείμενο για UPSStatus και Διάγραμμα για RoomTemp.
Μπορώ να ρυθμίσω ειδοποιήσεις, οπότε λαμβάνω ένα μήνυμα ηλεκτρονικού ταχυδρομείου όταν η θερμοκρασία είναι εκτός του καθορισμένου εύρους, το UPS είναι εκτός σύνδεσης ή η ίδια η συσκευή δεν στέλνει δεδομένα όταν πρέπει. Τώρα μπορώ να είμαι σίγουρος ότι το εξοχικό μου είναι εντάξει και μπορώ να ειδοποιηθώ όταν κάτι δεν πάει καλά, έτσι μπορώ να τηλεφωνήσω στους γείτονες και να τους ζητήσω να ελέγξουν τι συμβαίνει. Εδώ είναι ο πραγματικός κώδικας του control.py.
Συνιστάται:
Πώς να δημιουργήσετε και να εισαγάγετε έναν πίνακα και να προσθέσετε επιπλέον στήλες και/ή σειρές σε αυτόν τον πίνακα στο Microsoft Office Word 2007: 11 βήματα
Πώς να δημιουργήσετε και να εισαγάγετε έναν πίνακα και να προσθέσετε επιπλέον στήλες και/ή σειρές σε αυτόν τον πίνακα στο Microsoft Office Word 2007: Είχατε ποτέ πολλά δεδομένα με τα οποία εργάζεστε και σκεφτήκατε τον εαυτό σας … " πώς μπορώ να κάνω όλα αυτά τα δεδομένα φαίνονται καλύτερα και είναι πιο εύκολα κατανοητά; " Αν ναι, τότε η απάντησή σας μπορεί να είναι ένας πίνακας στο Microsoft Office Word 2007
Σύνδεση επεξεργασίας και Arduino και Make 7 Segment και Servo GUI Controller: 4 βήματα
Connecting Processing and Arduino and Make 7 Segment and Servo GUI Controller: Για ορισμένα έργα που κάνατε πρέπει να χρησιμοποιήσετε το Arduino καθώς παρέχει μια εύκολη πλατφόρμα πρωτοτύπων, αλλά η εμφάνιση γραφικών σε σειριακή οθόνη του Arduino μπορεί να διαρκέσει πολύ και είναι ακόμη και δύσκολο να γίνει. Μπορείτε να εμφανίσετε γραφήματα στο Arduino Serial Monitor bu
Παρακολούθηση και εγγραφή θερμοκρασίας με Bluetooth LE και RaspberryPi: 9 βήματα (με εικόνες)
Παρακολούθηση και καταγραφή θερμοκρασίας με Bluetooth LE και RaspberryPi: Αυτό το διδακτικό είναι πώς να συνδυάσετε ένα σύστημα παρακολούθησης θερμοκρασίας πολλαπλών κόμβων με σφάλμα αισθητήρα Bluetooth LE από Blue Radios (BLEHome) και RaspberryPi 3B Χάρη στην ανάπτυξη του προτύπου Bluetooth LE, υπάρχει τώρα άμεσα διαθέσιμο
8 Έλεγχος ρελέ με NodeMCU και δέκτη IR χρησιμοποιώντας WiFi και IR Τηλεχειριστήριο και εφαρμογή Android: 5 βήματα (με εικόνες)
8 Έλεγχος ρελέ με δέκτη NodeMCU και IR χρησιμοποιώντας WiFi και IR Τηλεχειριστήριο και εφαρμογή Android: Έλεγχος 8 διακοπτών ρελέ χρησιμοποιώντας nodemcu και δέκτη ir μέσω wifi και ir απομακρυσμένης και εφαρμογής Android. Το ir remote λειτουργεί ανεξάρτητα από τη σύνδεση wifi. ΕΔΩ ΕΙΝΑΙ ΕΝΗΜΕΡΩΜΕΝΗ ΚΛΙΚ ΕΔΩ
Ένδειξη θερμοκρασίας και υγρασίας και συλλογή δεδομένων με Arduino και επεξεργασία: 13 βήματα (με εικόνες)
Εμφάνιση θερμοκρασίας και υγρασίας και συλλογή δεδομένων με Arduino και επεξεργασία: Εισαγωγή: Πρόκειται για ένα έργο που χρησιμοποιεί έναν πίνακα Arduino, έναν αισθητήρα (DHT11), έναν υπολογιστή Windows και ένα πρόγραμμα επεξεργασίας (δωρεάν λήψη) για την εμφάνιση δεδομένων θερμοκρασίας, υγρασίας σε ψηφιακή και φόρμα γραφήματος, εμφάνιση ώρας και ημερομηνίας και εκτέλεση χρόνου αντίστροφης μέτρησης