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

SilverLight: Περιβαλλοντική οθόνη με βάση το Arduino για δωμάτια διακομιστή: 3 βήματα (με εικόνες)
SilverLight: Περιβαλλοντική οθόνη με βάση το Arduino για δωμάτια διακομιστή: 3 βήματα (με εικόνες)

Βίντεο: SilverLight: Περιβαλλοντική οθόνη με βάση το Arduino για δωμάτια διακομιστή: 3 βήματα (με εικόνες)

Βίντεο: SilverLight: Περιβαλλοντική οθόνη με βάση το Arduino για δωμάτια διακομιστή: 3 βήματα (με εικόνες)
Βίντεο: CS50 Live, Episode 001 2024, Ιούλιος
Anonim
SilverLight: Περιβαλλοντική παρακολούθηση βάσει Arduino για δωμάτια διακομιστή
SilverLight: Περιβαλλοντική παρακολούθηση βάσει Arduino για δωμάτια διακομιστή
SilverLight: Περιβαλλοντική παρακολούθηση βάσει Arduino για δωμάτια διακομιστή
SilverLight: Περιβαλλοντική παρακολούθηση βάσει Arduino για δωμάτια διακομιστή
SilverLight: Περιβαλλοντική παρακολούθηση βάσει Arduino για δωμάτια διακομιστή
SilverLight: Περιβαλλοντική παρακολούθηση βάσει Arduino για δωμάτια διακομιστή
SilverLight: Περιβαλλοντική παρακολούθηση βάσει Arduino για δωμάτια διακομιστή
SilverLight: Περιβαλλοντική παρακολούθηση βάσει Arduino για δωμάτια διακομιστή

Μόλις μου δόθηκε το καθήκον να αναζητήσω έναν περιβαλλοντικό καθετήρα για την παρακολούθηση της θερμοκρασίας στο δωμάτιο διακομιστών της εταιρείας μου. Η πρώτη μου ιδέα ήταν: γιατί να μην χρησιμοποιήσω απλώς ένα Raspberry PI και έναν αισθητήρα DHT, μπορεί να ρυθμιστεί σε λιγότερο από μία ώρα, συμπεριλαμβανομένης της εγκατάστασης του λειτουργικού συστήματος. Για αυτό έλαβα την ψυχρή απάντηση από τους αυταρχικούς με τα μάτια με δεμένα μάτια ότι δεν θα το κάνουμε αυτό γιατί θα κοστίσει περισσότερο στις ώρες εργασίας για να το ρυθμίσετε από την αγορά μιας συσκευής. Το να δέχομαι στενόμυαλους ανθρώπους σαν αυτό για ένα κομμάτι της ζωής μου ήταν ένα πράγμα και παρήγγειλα κάποια πρόχειρη επιχείρηση EATON junk στο Ebay και το κάλεσα αλλά αποφάσισα εκείνη τη στιγμή ότι για το δικό μου δωμάτιο διακομιστή θα φτιάξω ένα εντελώς ανοιχτού κώδικα Arduino βασισμένη συσκευή που θα είναι πολύ καλύτερη από αυτή που μόλις παρήγγειλα.

Αυτό το έργο φέρει τον κωδικό SilverLight, μην με ρωτήσετε από πού τα παίρνω αυτά τα ονόματα:) Μόλις κοίταξα το γυαλιστερό μισό ακρυλικό κουτί και αποφάσισα με αυτό το όνομα, δεν έχει καμία σχέση με το προϊόν microhoof για το οποίο έμαθα μετά Το

Βήμα 1: Σχεδιασμός υλικού

Σχεδιασμός υλικού
Σχεδιασμός υλικού
Σχεδιασμός υλικού
Σχεδιασμός υλικού
Σχεδιασμός υλικού
Σχεδιασμός υλικού

Επισκόπηση εμπορικού υλικού.

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

Συσκευή παρακολούθησης περιβάλλοντος ΣΥΜΒΑΤΟΤΗΤΑ

Τα δίκτυα 10/100Mb-MS, PXGUPS, PXGPDP και PXGMS.

Τα 10/100Mb ConnectUPS-X, ConnectUPS-BD και ConnectUPS-E με FW V3.01 και νεότερα. ΔΙΑΣΤΑΣΕΙΣ (LXWXH)

2,26 x 1,48 x 1,15 (ίντσες) 57,6 x 37,6 x 29,3 (mm) ΒΑΡΟΣ

1,19 ουγκιές (34 g)

Πολύ χρήσιμες πληροφορίες, έτσι δεν είναι; Μην ανησυχείτε, γιατί δεν μπορούν να κάνουν πολλά. Για να ξεκινήσετε ακόμη και το UPS σας θα χρειαστεί να έχετε μια άλλη ακριβή πρόσθετη κάρτα για αυτό που συνδέεται με τον περιβαλλοντικό αισθητήρα που αγοράζετε ξεχωριστά, συνήθως με τυπικό καλώδιο CAT5 (μην προσπαθήσετε καν να συνδέσετε τίποτα σε αυτήν τη θύρα επειδή δεν υπάρχει τίποτα τυπικό σχετικά με αυτό). Ισχυρίζονται ότι η συσκευή χρειάζεται 10 λεπτά για να «ζεσταθεί» που στην πραγματικότητα ήταν ώρες και μόλις έγινε voila εμφανίστηκε στη σιγά σιγά ανανεούμενη διεπαφή java και έχουμε θερμοκρασία και υγρασία. Η δημιουργία συνθηκών βάσει ειδοποιήσεων ήταν εύκολη από αυτό το σημείο, αλλά ποιος νοιάζεται ας χτίσει κάτι καλύτερο.

Αυτό το έργο είναι ένας συνδυασμός πολλών έργων μου: μετεωρολογικός σταθμός Natalia, Shadow of phoenix. Το κουτί μπορεί να παρακολουθεί τους ακόλουθους περιβαλλοντικούς περιορισμούς:

  • Δείκτης θερμοκρασίας/υγρασίας/θερμότητας
  • Συγκεντρώσεις υγραερίου, καπνού, αλκοόλ, προπανίου, υδρογόνου, μεθανίου και μονοξειδίου του άνθρακα στον αέρα (MQ2)
  • Ηλιακή ευαισθησία (ανάβει το φως στο δωμάτιο διακομιστή;)
  • Αισθητήρας κίνησης PIR (μπορείτε ακόμη και να ανάβετε/απενεργοποιείτε τα φώτα αυτόματα στο εξής χάρη στον αισθητήρα κίνησης όταν κάποιος εισέρχεται στο δωμάτιο)

Όλα αυτά τα δεδομένα εμφανίζονται όμορφα σε μια οθόνη LCD ενώ μεταδίδονται επίσης σε έναν υπολογιστή (Orange PI Zero) για περαιτέρω επεξεργασία και ειδοποιήσεις. Παρόλο που θα ήταν δυνατό να συνδεθούν ψηφιακοί αισθητήρες όπως το DHT και η ψηφιακή ακίδα του MQ2 στο OrangePI, προτιμώ πάντα τη χρήση αποκλειστικών μικροφώνων για αυτές τις εργασίες και όταν χρειάζεται επίσης να ενημερώσετε την οθόνη LCD και να κάνετε άλλα χαμηλά επίπεδα πράγματα το Arduino είναι απλά ασυναγώνιστο και μπορεί να λειτουργεί αξιόπιστα ασταμάτητα για πολλά χρόνια (στην πραγματικότητα ούτε ένα Arduino που τρέχει 24/7 δεν μου έχει αποτύχει ακόμα). Το OrangePI με τα μειονεκτήματά του (ας το παραδεχτούμε είναι ένας υπολογιστής 10 $) όπως αχρησιμοποίητο για μεγάλο φόρτο εργασίας, χωρίς υποστήριξη bsd, ενσωματωμένο wifi είναι φουσκωμένο κ.λπ.

Πρόκειται για ένα πολύ απλό υλικό που απαιτεί τα ακόλουθα στοιχεία:

  • Arduino PRO Micro
  • Οθόνη LCD 2x16 χαρακτήρων RGB
  • AC-DC μονάδα ισχύος διακόπτη απομόνωσης 220V σε 5V HLK-5M05 (αυτά είναι πολύ καλά για έργα Arduino/ESP), αυτή είναι η έκδοση 5V/5W!
  • Αντιστάσεις 2x300ohm
  • 2xleds (κόκκινο/πράσινο)
  • Αισθητήρας κίνησης PIR
  • Αισθητήρας MQ2
  • DHT22
  • LDR
  • Αντίσταση 2X10Kohm
  • Βομβητής
  • Πορτοκαλί PI Zero
  • μίνι καλώδιο δεδομένων USB

Δεν μπήκα καν στον κόπο να φτιάξω ένα PCB για αυτό το απλό συνηθισμένο breadboard επειδή τα εξαρτήματα μπορούν απλά να συνδεθούν με το Arduino (δείτε τις συνημμένες εικόνες):

-DHT22 θα απαιτήσει ένα 10K pullup στο VCC (ψηφιακό)

-LLDR θα απαιτήσει 10K pull -down στο GND (αναλογικό)

-MQ2 μπορεί να συνδεθεί απευθείας με οποιοδήποτε αναλογικό pin (αναλογικό) <προτιμάτε να χρησιμοποιείτε αναλογικό γιατί γιατί όχι όταν έχουμε ένα MCU με αναλογικούς ακροδέκτες όπου μπορούμε να πάρουμε την ακριβή τιμή αντί να προσαρμόσουμε κάποιο δοχείο στο πίσω μέρος της συσκευής για να πάρουμε HIGH ή LOW out of it, λόγω της κόλλησης στο σχέδιό μου που είναι ούτως ή άλλως απρόσιτη. Ελέγξτε:

-Το PIR μπορεί να συνδεθεί απευθείας με οποιαδήποτε ακίδα (ψηφιακή)

-LCD: μπορεί να οδηγηθεί με 4 ακίδες, μπορεί να συνδεθεί με οποιαδήποτε ακίδα (ψηφιακή) θα χρειαστεί +2 RS/E (ψηφιακή)

-Buzzer: μπορεί να συνδεθεί απευθείας με οποιαδήποτε καρφίτσα Arduino (ψηφιακή)

Το pinout που χρησιμοποίησα φαίνεται στον κώδικα. Συνδέοντας τα πάντα μετά από αυτό, μπορείτε να τα κάνετε ένα προς ένα, βεβαιωθείτε ότι 1 αισθητήρας λειτουργεί τέλεια και προχωρήστε στον επόμενο, το μόνο που μπορείτε να κάνετε λάθος είναι κατά λάθος να συνδέσετε καλώδια σε λάθος μέρη (π.χ. εναλλαγή vcc /gnd για έναν αισθητήρα, μέχρι στιγμής αυτό δεν σκότωσε ποτέ καμία από τις συσκευές μου). Αυτό που θα ήθελα να σημειώσω εδώ ήταν ότι υπήρχαν πάρα πολλά VCC και GND που ήταν στοιβαγμένα για μένα, δεν μπορούσα να τα στριμώξω μέσα από μια τερματική λωρίδα, έτσι τα κόλλησα όλα.

Επίσης, για τα DHT μην ξεχνάτε από τα άλλα έργα μου: εάν βάλετε τη βιβλιοθήκη DHT στον κωδικό σας και ο αισθητήρας DHT δεν είναι συνδεδεμένος ή δεν είναι συνδεδεμένος λάθος DHT (π.χ. 11 ορίζεται στον κωδικό που χρησιμοποιείτε 22) που μπορεί να οδηγήσει στο πρόγραμμα να κολλήσει για πάντα στην αρχή.

Σχετικά με τους αισθητήρες ανίχνευσης κίνησης PIR, όπως μπορείτε να δείτε στην εικόνα μου υπάρχουν τόνοι ψεύτικων απομιμήσεων αυτών, στην πραγματικότητα μάλιστα θα δυσκολευόμουν να αγοράσω ένα γνήσιο από το Ebay. Τα ψεύτικα λειτουργούν εξίσου καλά, ακόμη και μακροπρόθεσμα, αλλά έχουν το κύκλωμά τους να καθρεφτίζει, γεγονός που προκαλεί την αναστροφή των ακίδων + και -, επίσης είναι εύκολο να αναγνωριστούν από: έρχονται με μπλε pcb όχι το συνηθισμένο πράσινο, λείπουν οι ετικέτες για τα δοχεία. Wasμουν τυχερός που βρήκα ένα γνήσιο στο κουτί μου, διαφορετικά η αλλαγή της θέσης θα κάλυπτε τα 2 led για μένα. Έχω διαπιστώσει ότι και οι δύο κατσαρόλες στριφογυρίζουν για μέση δουλειά για μένα. Αυτό θα σας δώσει αρκετά μεγάλο εύρος για την ανίχνευση επίσης όταν υπάρχει κίνηση, το ψηφιακό πόδι θα διατηρείται σε θέση Υ HIGHΗΛΟΥ για περίπου ένα λεπτό, οπότε δεν χρειάζεται να συμπληρώσετε τον κωδικό για αυτό. Στα ψεύτικα είναι εύκολο να προσδιοριστεί ποια πλευρά είναι η - και + απλά κοιτάξτε τα αντίστοιχα σκέλη για τα ηλεκτρολυτικά καλύμματα που συνδέονται με τις ακίδες.

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

Βήμα 2: Σχεδιασμός λογισμικού

Σχεδιασμός λογισμικού
Σχεδιασμός λογισμικού
Σχεδιασμός λογισμικού
Σχεδιασμός λογισμικού

Ο κώδικας Arduino είναι επίσης απλός, βασικά τραβάει όλες τις ενδείξεις των αισθητήρων στην αρχή κάθε βρόχου. Ενεργοποιεί τις λυχνίες LED εάν υπάρχει κίνηση ή καπνός και παίζει επίσης έναν ήχο συναγερμού στο βομβητή εάν υπάρχει καπνός (αυτός είναι ο μόνος κωδικός αποκλεισμού, γι 'αυτό το έκανα σύντομο), στη συνέχεια εμφανίζει τα δεδομένα στην οθόνη LCD και τελικά τα στέλνει μέσω του υπολογιστή με περίοδο αναμονής 10 δευτερολέπτων, για να μην πλημμυρίσει το λιμάνι.

Αυτό το έργο χρησιμοποιεί μονόδρομη επικοινωνία από το Arduino-> OrangePI, δεν εφαρμόζονται εντολές οποιουδήποτε είδους. Αν και αυτό θα ήταν απολύτως εφικτό όπως το έκανα σε ένα από τα άλλα έργα μου, όπου ο υπολογιστής μπορεί να στείλει LCD_PRINT1 ή LCD_PRINT2 για να αντικαταστήσει μία γραμμή της οθόνης LCD με το δικό του μήνυμα (π.χ. διεύθυνση IP, ώρα λειτουργίας, ημερομηνία συστήματος, χρήση cpu), η περιοχή της οθόνης είναι τόσο μικρή για την εμφάνιση δεδομένων από 3 αισθητήρες που δεν μπήκα καν στον κόπο. Οι τιμές SOL και SMK μπορούν και οι δύο να φτάσουν στα 4 ψηφία 0000-1023 λαμβάνοντας ήδη 8 πολύτιμους χαρακτήρες στην οθόνη.

Με την οθόνη LCD μπορείτε να παρατηρήσετε ένα μικρό κόλπο στον κώδικα ότι μετά από κάθε μετρημένη τιμή εφαρμόζεται μια εκτύπωση λευκών κενών (""), στη συνέχεια μετακινώ τον κέρσορα σε σταθερές θέσεις για να τοποθετήσω τα νέα εικονίδια και δεδομένα. Αυτά είναι εκεί γιατί η οθόνη LCD δεν είναι τόσο έξυπνη για να καταλαβαίνει τους αριθμούς, απλά αντλεί ό, τι παίρνει και για παράδειγμα αν είχατε μια ηλιακή τιμή 525 η οποία ξαφνικά μειώθηκε σε 3 τότε θα εμφανίσει 325 αφήνοντας τα παλιά σκουπίδια στην οθόνη εκεί.

Ένας κωδικός ελέγχου C που εκτελείται στο OrangePI και καταγράφει τα περιβαλλοντικά δεδομένα και στέλνει ειδοποιήσεις μέσω email όταν χρειάζεται.

Το OrangePI τρέχει το Armbian (το οποίο κατά τη στιγμή της γραφής βασίζεται στο Debian Stretch). Θα το συμπεριλάβω στο κομμάτι του λογισμικού σχετικά με το ότι ήταν πρόβλημα και αυτό που έλυσε. Ακολουθεί η μέση αποστράγγιση ισχύος της συσκευής:

0,17 A - Μόνο Arduino + αισθητήρες

0,5-0,62 A - Εκκίνηση OrangePI

0,31 A - Πορτοκαλί PI σε αδράνεια

0,29 A - Orange PI απενεργοποιημένο (δεν μπορώ πραγματικά να το κλείσω, δεν έχει ACPI ή κάτι τέτοιο)

0,60 A - Stress test 100% χρήση CPU σε 4 πυρήνες

Είχα αυτό το OrangePI σε ένα κουτί από πολύ καιρό. Με τον παλιό πυρήνα η συσκευή αποστράγγισε τόσο πολύ ρεύμα (όπως είπε ο μετρητής κορυφώθηκε γύρω στο 0,63 A) αυτό που πιθανότατα δεν μπορούσε να παράσχει το PSU ότι απλώς δεν ξεκίνησε, η διαδικασία εκκίνησης κόλλησε και πήρα τα 2 led Ethernet να ανάβουν συνεχώς και να μην κάνει τίποτα.

Τώρα αυτό είναι κάπως ενοχλητικό καθώς το HLK-5M05 ισχυρίζεται ότι μπορεί να κάνει 5W σε 5V καθιστώντας το σε θέση να παρέχει 1 Amp αλλά με αυτές τις συσκευές που βγαίνουν από την Κίνα δεν γνωρίζετε ποτέ, η κορυφή 0,63 A ήταν πολύ χαμηλότερη από την ονομαστική μέγιστη αξία. Έτσι έτρεχα σε απλές δοκιμές επανεκκίνησης, από 10 επανεκκινήσεις το OrangePI θα ξεκινούσε μόνο δύο φορές με επιτυχία, κάτι που με έκανε σχεδόν να το πετάξω από το έργο, καθώς δεν μου αρέσει η ασταθής ασυνεπής συμπεριφορά στα κυκλώματα. Άρχισα λοιπόν να ψάχνω στο googling ίσως υπάρχει τρόπος να μειώσω την κατανάλωση ενέργειας κατά την εκκίνηση από το λογισμικό (αφού ήταν θέμα τότε) και βρήκα κάποιο άρθρο που μιλούσε για τροποποίηση του script.bin αλλά ήταν για το Orange PI PC και το τα αρχεία έλειπαν από τον αποθηκευτικό χώρο, οπότε ό, τι και αν έκανα ως έσχατη λύση, έκανα τη μαγική "κατάλληλη αναβάθμιση" για την αναβάθμιση του υλικολογισμικού, του πυρήνα και όλων των άλλων, ελπίζοντας ότι θα στραγγίξει λιγότερο και η συσκευή μπορεί να εκκινήσει και:

Linux silverlight 4.14.18-sunxi #24 SMP Παρ 9 Φεβ 16:24:32 CET 2018 armv7l GNU/Linux

Linux silverlight 4.19.62-sunxi #5.92 SMP Τετ 31 Ιουλ 22:07:23 CEST 2019 armv7l GNU/Linux

Δούλεψε! Η απόρριψη υλικού σε ένα πρόβλημα λογισμικού είναι συνήθως ο τεμπέλης προγραμματιστής της java, αλλά σε αυτή την περίπτωση έχουμε επιλύσει ένα πρόβλημα υλικού με το λογισμικό, μεγάλη επιτυχία. Έχω κάνει περίπου 20 δοκιμές επανεκκίνησης της συσκευής που εκκίνησε σε κάθε περίπτωση. Θα εξακολουθούσα να σημειώνω ότι η αύξηση του ρεύματος από την ενεργοποίηση του Opi (σύνδεση/αποσύνδεση) είναι τόσο μεγάλη που θα επαναφέρει το Arduino οποιαδήποτε στιγμή (μια απλή επανεκκίνηση θα αναβοσβήνει απλώς την οθόνη LCD, αλλά δεν θα προκαλέσει περαιτέρω προβλήματα), αλλά αυτό το ζήτημα παραμένει κρυμμένο αφού τα 2 θα ξεκινήσουν μαζί.

Έχω επίσης εξετάσει τις ενότητες πυρήνα:

usb_f_acm u_serial g_serial libcomposite xradio_wlan mac80211 lima sun8i_codec_analog snd_soc_simple_card gpu_sched sun8i_adda_pr_regmap sun4i_i2s snd_soc_simple_card_utils TTM sun4i_gpadc_iio snd_soc_core cfg80211 snd_pcm_dmaengine industrialio snd_pcm snd_timer SND sun8i_ths soundcore cpufreq_dt uio_pdrv_genirq UIO thermal_sys pwrseq_simple

Τι χρειαζόμαστε πραγματικά από αυτά; Εντάξει το pwr και το θερμικό μπορεί να είναι χρήσιμο αλλά ο ήχος, η σειριακή θύρα, το wifi (σπασμένο hw ήδη) δεν χρειαζόμαστε όλα αυτά μπορούν να μπουν στη μαύρη λίστα. Θα δημιουργήσω επίσης έναν προσαρμοσμένο πυρήνα με τις απαραίτητες μονάδες αργότερα.

Αυτό που χρειαζόμαστε και δεν είναι φορτωμένο από προεπιλογή είναι το CDC ACM για επικοινωνία με το Arduino, ενεργοποιήστε το με:

echo "cdc-acm" >> /etc /modules

Μετά από αυτό, μπορείτε ήδη να δοκιμάσετε τη σύνδεση με:

οθόνη /dev /ttyACM0 9600

Θα πρέπει να βλέπετε τα δεδομένα κατάστασης που αποστέλλονται κάθε 10 δευτερόλεπτα.

Ειδοποιήσεις και παρακολούθηση

Όσον αφορά τις ειδοποιήσεις, μόλις έβαλα κλήσεις συστήματος () στον κωδικό ελέγχου C, ο οποίος λαμβάνει τα δεδομένα από τη σειρά, οπότε δεν απαιτούνται εξωτερικά εργαλεία. Μερικά παραδείγματα ειδοποιήσεων:

- Η θερμοκρασία ξεπερνά τους 30 βαθμούς Κελσίου

- Η υγρασία υπερβαίνει το 70 % (δεν είναι υγιές για τους διακομιστές)

- Εντοπίστηκε κίνηση στο δωμάτιο (αυτό μπορεί να είναι ενοχλητικό αν συνεχίσετε στο δωμάτιο διακομιστή σας)

- Ανιχνεύθηκε καπνός ή αέριο (οι ειδοποιήσεις άνω των 100 μπορούν να ληφθούν σοβαρά υπόψη, έχω παίξει με αυτόν τον αισθητήρα και ενεργοποιείται για πολλά πράγματα, για παράδειγμα η δημιουργία καπνού δίπλα στον αισθητήρα με κολλητήρι είχε αποτέλεσμα πάνω από 50 ενώ κάπνιζε τσιγάρο στη συνέχεια o αυξήθηκε έως 500, ανίχνευσε ακόμη και αέριο από κανονικό αποσμητικό από μακριά)

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

apt-get install zabbix-agent

Προσθέστε στο τέλος του: /etc/zabbix/zabbix_agentd.conf

UserParameter = silverlight.hum, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 1}'

UserParameter = silverlight.tmp, head -1 /dev/shm/silverlight-zbx.log | awk -F "," "{print $ 2} 'UserParameter = silverlight.sol, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 4}' UserParameter = silverlight.mot, head -1 /dev/shm/silverlight-zbx.log | awk -F "," "{print $ 5} 'UserParameter = silverlight.smk, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 6}'

Η εκτέλεση του zabbix_agentd -p θα πρέπει να επιστρέψει τώρα τις κατάλληλες τιμές:

silverlight.hum [t | 41]

silverlight.tmp [t | 23] silverlight.sol [t | 144] silverlight.mot [t | 0] silverlight.smk [t | 19]

Ο δείκτης θερμότητας, το συλλέγω, αλλά δεν βλέπω καμία πρακτική χρήση του, έτσι απλά καταγράφεται. Στον κωδικό ελέγχου C έχω εφαρμόσει 2 λειτουργίες καταγραφής, η πρώτη θα καταγράψει όλα τα δεδομένα σε φιλική προς το χρήστη μορφή:

[SILVERLIGHT] Δεδομένα που ελήφθησαν στις 2019-09-10 23:36:08 => Υγρασία: 44, Θερμοκρασία: 22, Γεια: 25, Ηλιακή: 0, Κίνηση: 0, Καπνός: 21

[SILVERLIGHT] Δεδομένα που ελήφθησαν στις 2019-09-10 23:36:18 => Υγρασία: 44, Θερμοκρασία: 22, Γεια: 25, Ηλιακός: 0, Κίνηση: 0, Καπνός: 21 [SILVERLIGHT] Δεδομένα που ελήφθησαν στις 2019-09 -10 23:36:29 => Υγρασία: 44, Θερμοκρασία: 22, Γεια: 25, Ηλιακός: 0, Κίνηση: 0, Καπνός: 22 [SILVERLIGHT] Δεδομένα που ελήφθησαν στις 2019-09-10 23:36:39 => Υγρασία: 44, Θερμοκρασία: 22, Γεια: 25, Ηλιακός: 0, Κίνηση: 0, Καπνός: 21

Το δεύτερο:

void logger2 (char *text) {

ΑΡΧΕΙΟ *f = fopen ("/dev/shm/silverlight-zbx.log", "w"); if (f == NULL) {printf ("Σφάλμα κατά το άνοιγμα αρχείου καταγραφής μνήμης! / n"); ΕΠΙΣΤΡΟΦΗ; } fprintf (f, "%s", κείμενο); fclose (f); ΕΠΙΣΤΡΟΦΗ; }

Αυτό θα βάλει μια μνήμη 1 γραμμής στη μνήμη (θα εξαλείψει τις περιττές λειτουργίες rw στην κάρτα sdcard), η οποία θα αντικαθίσταται πάντα την επόμενη φορά. Αυτό το αρχείο καταγραφής θα περιέχει μόνο τις 6 στήλες δεδομένων και καμία χρονική σήμανση, είναι ευανάγνωστο για το Zabbix.

Ως τελευταίο μπόνους: πώς να προγραμματίσετε το Arduino απευθείας από το OrangePI, ώστε να μην χρειάζεται να περπατάτε στη συσκευή κάθε φορά και να συνδέετε το φορητό υπολογιστή σας.

Υπάρχουν 2 τρόποι:

-Εύκολος τρόπος: Εγκαταστήστε το πλήρες Arduino IDE και οι βιβλιοθήκες χρησιμοποιούν κάποια απομακρυσμένη επιφάνεια εργασίας όπως το X11 με προώθηση, Xrdp, Xvnc, Nxserver κ.λπ.

-Σκληρός τρόπος: Εγκαταστήστε το Arduino IDE και χρησιμοποιήστε τη γραμμή εντολών

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

1, Arduino IDE για ARM 32 bit ->

2, σειριακή Python-> apt-get install python-serial

3, Arduino Makefile project -> git clone

4, βιβλιοθήκη DHT

5, ορισμοί πίνακα Sparkfun

6, SilverLight.ino, κύριος κωδικός

Για να το κάνω πιο εύκολο, έχω συγκεντρώσει τα αρχεία που χρειάζονται για τους 4 τελευταίους πόντους (sketchbook.tgz), οπότε θα χρειαστείτε μόνο τα πρώτα 2

Πρώτον, είναι καλύτερο να δημιουργήσετε έναν κανονικό χρήστη που έχει πρόσβαση rw στη θύρα USB:

ασημένιο πρόσθετο

usermod -a -G ασημί dialout

SCP το sketchbook.tgz στη συσκευή στον αρχικό κατάλογο του νέου χρήστη και εξαγάγετε το ακριβώς εκεί:

cd /home /silver

tar xvzf sketchbook.tgz

Για να καταλάβετε λίγο τι συμβαίνει κάτω από το καπό όταν χρησιμοποιείτε το γραφικό IDE:

Η ροή εργασιών δημιουργίας ενός σκίτσου Arduino κατά τη χρήση του Arduino IDE περιγράφεται στον ιστότοπο Arduino https://www.arduino.cc/en/Hacking/BuildProcess και πιο λεπτομερώς εδώ: https://www.arduino.cc/ el/Hacking/BuildProcess

Γενικά, η τυπική διαδικασία κατασκευής του Arduino είναι:

Συνδυάστε αρχεία.ino στο κύριο αρχείο σκίτσων. Μετατροπή του κύριου αρχείου σκίτσου: προσθέστε τη δήλωση #include. δημιουργία δηλώσεων συναρτήσεων (πρωτότυπα) όλων των συναρτήσεων στο κύριο σκίτσο αρχείο · προσαρτήστε τα περιεχόμενα του αρχείου main.cxx του στόχου στο κύριο αρχείο σκίτσων. Μεταγλωττίστε τον κώδικα σε αρχεία αντικειμένων. Συνδέστε τα αρχεία αντικειμένων για να δημιουργήσετε ένα.hex αρχείο έτοιμο για μεταφόρτωση στο Arduino.

Υπάρχουν μερικές μικρές διαφορές μεταξύ της τυπικής διαδικασίας κατασκευής Arduino και της διαδικασίας κατασκευής χρησιμοποιώντας το Arduino-Makefile:

Υποστηρίζεται μόνο ένα αρχείο.ino. Οι δηλώσεις συνάρτησης δεν δημιουργούνται αυτόματα στο αρχείο.ino. Ο χρήστης πρέπει να φροντίσει για τη δημιουργία των σωστών δηλώσεων συνάρτησης.

Η καρδιά της διαδικασίας κατασκευής είναι το Makefile. Μην ανησυχείτε, όλα είναι έτοιμα για εσάς, είναι λίγο πιο περίπλοκο κατά τη σύνταξη με αυτόν τον τρόπο για μη τυποποιημένους πίνακες όπως η σειρά SparkFun.

BOARD_TAG = promicro

ALTERNATE_CORE = SparkFun BOARD_SUB = 16MHzatmega32U4 ARDUINO_PORT =/dev/ttyACM0 USER_LIB_PATH =/home/silver/sketchbook/libraries ARDUINO_DIR = /opt/arduino-1.8.9 include /home/silverAmino/silver

Και το μόνο που χρειάζεστε για να πληκτρολογήσετε είναι ένα: κάντε μεταφόρτωση (το οποίο θα δημιουργήσει πρώτα τα αρχεία.hex και στη συνέχεια χρησιμοποιεί το avrdude για να τα ανεβάσει), θα καταλήξει με κάτι σαν:

mkdir -p build-promicro-16MHzatmega32U4

make reset make [1]: Εισαγωγή στον κατάλογο '/home/silver/sketchbook'/home/silver/sketchbook/Arduino-Makefile/bin/ard-reset-arduino --caterina/dev/ttyACM0 make [1]: Αποχώρηση από τον κατάλογο ' /home/silver/sketchbook 'make do_upload make [1]: Εισαγωγή στον κατάλογο'/home/silver/sketchbook '/opt/arduino-1.8.9/hardware/tools/avr/bin/avrdude -q -V -p atmega32u4 - C /opt/arduino-1.8.9/hardware/tools/avr/etc/avrdude.conf -D -c avr109 -b 57600 -P/dev/ttyACM0 / -U flash: w: build -promicro -16MHzatmega32U4/sketchbook. hex: i Σύνδεση με προγραμματιστή:. Βρέθηκε προγραμματιστής: Id = "CATERIN"; type = S Έκδοση λογισμικού = 1.0; Δεν έχει δοθεί έκδοση υλικού. Ο προγραμματιστής υποστηρίζει την αυτόματη προσθήκη addr. Ο προγραμματιστής υποστηρίζει πρόσβαση μνήμης με μνήμη με μέγεθος buffer = 128 byte. Ο προγραμματιστής υποστηρίζει τις ακόλουθες συσκευές: Κωδικός συσκευής: 0x44 avrdude: Η συσκευή AVR έχει προετοιμαστεί και είναι έτοιμη να δεχτεί οδηγίες avrdude: Υπογραφή συσκευής = 0x1e9587 (πιθανότατα m32u4) (11580 byte): avrdude: 11580 bytes flash avrdude: safemode: Ασφάλειες ΟΚ (E: CB, H: D8, L: FF) avrdude done. Σας ευχαριστώ.

Λοιπόν, σας ευχαριστώ avrdude, και τώρα το Arduino μας έχει επαναφερθεί και προγραμματιστεί με τον νέο κωδικό, αυτό που μπορείτε απλά να επεξεργαστείτε με το vi ή τον αγαπημένο σας επεξεργαστή τοπικά, δεν χρειάζεται IDE. Θα ήθελα να σημειώσω ότι πρέπει να κλείσετε τόσο το πρόγραμμα ελέγχου C, την οθόνη ή οτιδήποτε άλλο έχει πρόσβαση στο arduino κατά τη μεταφόρτωση, διαφορετικά η θύρα θα επιστρέψει ως /dev /ttyACM1 μετά την επαναφορά.

Βήμα 3: Κλείσιμο και Λίστα Todo

Κλείσιμο και Λίστα Todo
Κλείσιμο και Λίστα Todo
Κλείσιμο και Λίστα Todo
Κλείσιμο και Λίστα Todo
Κλείσιμο και Λίστα Todo
Κλείσιμο και Λίστα Todo

Αν και δημιούργησα αυτό το περιβαλλοντικό κιβώτιο αισθητήρων για δωμάτια διακομιστών, μπορείτε να το χρησιμοποιήσετε για εργαστήρια χημείας/ηλεκτρονικού εξοπλισμού, αποθήκες, κανονικά δωμάτια και οτιδήποτε άλλο. Και ναι αφού χρησιμοποιεί το TCP/IP είναι μια συσκευή IoT, G θα έπρεπε να το είχα βάλει και στον τίτλο για να το κάνω πιο επιχειρηματικό:)

Μπορείτε εύκολα να τροποποιήσετε τόσο το υλικό όσο και το λογισμικό για να μπορείτε επίσης να ανάβετε αυτόματα τα φώτα στο δωμάτιο. Ρίξτε μια ματιά στο άλλο μου έργο: Shadow of Phoenix πώς λειτουργεί αυτό για τον έλεγχο του φωτός, έχετε όλο το υλικό στο χέρι για να κάνετε το ίδιο πράγμα (χρησιμοποιεί χρονοδιακόπτες κρατήματος για να διατηρεί τα φώτα αναμμένα όσο ανιχνεύθηκε κίνηση σε ένα χρονική περίοδος, εάν υπάρξει ξανά κίνηση θα χτυπήσει ένα χρονόμετρο).

Με το OrangePI να εκτελεί μια πλήρη στοίβα Armbian οι δυνατότητες είναι απεριόριστες, μπορείτε να δημιουργήσετε μια τοπική διεπαφή ιστού γραμμένη από το μηδέν σε php για την εμφάνιση ιστορικών δεδομένων σε γραφήματα. Δεν είναι ήδη καλύτερο να έχετε μια εντελώς συσκευή ανοιχτού κώδικα που παρακολουθεί το δωμάτιο διακομιστών σας και για το οποίο μπορείτε να είστε περήφανοι, αν το πιστεύετε, φτιάξτε το μόνοι σας!

Συνιστάται: