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

Raspberry PI Camera and Light Control Death Star: 5 βήματα (με εικόνες)
Raspberry PI Camera and Light Control Death Star: 5 βήματα (με εικόνες)

Βίντεο: Raspberry PI Camera and Light Control Death Star: 5 βήματα (με εικόνες)

Βίντεο: Raspberry PI Camera and Light Control Death Star: 5 βήματα (με εικόνες)
Βίντεο: Νέα Raspberry Pi 3 Tutorial - Πώς να δημιουργήσει για Gaming & Entertainment Έργα 2024, Ιούλιος
Anonim
Raspberry PI Camera και Light Control Death Star
Raspberry PI Camera και Light Control Death Star
Raspberry PI Camera και Light Control Death Star
Raspberry PI Camera και Light Control Death Star
Raspberry PI Camera και Light Control Death Star
Raspberry PI Camera και Light Control Death Star

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

Ακολουθεί ένα ακόμη σπουδαίο έργο, που ονομάστηκε αρχικά Shadow 0f Phoenix, μια ασπίδα Raspberry PI σε συνδυασμό με την ανίχνευση κίνησης και τα χειριστήρια φωτός που βασίζονται σε Arduino.

Βήμα 1: Η κατάσταση των εμπορικών καμερών IP

Η κατάσταση των εμπορικών καμερών IP
Η κατάσταση των εμπορικών καμερών IP
Η κατάσταση των εμπορικών καμερών IP
Η κατάσταση των εμπορικών καμερών IP
Η κατάσταση των εμπορικών καμερών IP
Η κατάσταση των εμπορικών καμερών IP

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

Θα το συγκρίνω με τη σειρά ασύρματης IP κάμερας NEO COOLCAM Full HD 1080P αφού έχω πολλά από αυτά τα διάφορα μοντέλα φωτογραφικών μηχανών neo coolcams (ONVIF). Έρχονται σε διαφορετικά σχήματα και μεγέθη, σε εξωτερικούς και εσωτερικούς χώρους, τα περισσότερα από αυτά έχουν ενσωματωμένη υποστήριξη wifi, αλλά ας δούμε τις επιφυλάξεις τους:

  • Οι Κινέζοι κατασκευαστές που πωλούν αυτές τις κάμερες λένε σχεδόν πάντα την ενσωματωμένη ανάλυση αισθητήρα εικόνας, όταν αγοράζετε μια κάμερα 5MP/8MP στο Ebay μπορεί να καταλήξετε με μια φθηνή κάμερα 2MP με κακή εικόνα (λειτουργεί, αλλά η ποιότητα είναι σκουπίδια). Όταν αγοράζετε την κάμερα Raspberry PI v2 8MP από τον αρχικό πωλητή λιανικής, θα λάβετε αυτό που πληρώσατε και πραγματικό αισθητήρα 8MP με ανάλυση 3280 × 2464 pixel =>
  • Από την άποψη της ασφάλειας, αυτές οι κάμερες (ακόμη και τα πιο ακριβά Dlink και άλλα μοντέλα) είναι φοβερά, χρησιμοποιούν προεπιλεγμένους κωδικούς πρόσβασης όπως το 123456 ή ενσωματωμένους σε χρήστες όπως διαχειριστή/διαχειριστή/χειριστή, κάτι που δεν θα μπορείτε καν να αλλάξετε ή η αλλαγή έχει φύγει μετά από επανεκκίνηση. Συμπληρώστε με πολλές από αυτές τις τηλεφωνικές κάμερες στο σπίτι (συνδεθείτε με τους διακομιστές τους στην Κίνα, ορισμένες μεταδίδουν βίντεο/εικόνες χωρίς να σας ζητήσουν απλώς για να το κάνετε ευκολότερο σε περίπτωση που αποφασίσετε να εγκαταστήσετε την εφαρμογή Android/Iphone τους μια μέρα για να ελέγξετε Σπίτι). Ακόμα κι αν τοποθετήσετε αυτές τις συσκευές πίσω από ένα δρομολογητή, δεν είναι αρκετά καλό, το καλύτερο είναι αν δεν ορίσετε μια προεπιλεγμένη πύλη σε αυτές, να τις απενεργοποιήσετε ή να τις τοποθετήσετε σε ένα VLAN, ώστε να είναι αδύνατο να βγουν το Διαδίκτυο ή ακόμα καλύτερα: μην τα χρησιμοποιείτε καθόλου.
  • Είναι πιο αξιόπιστα; Όχι, πολλά από αυτά ακόμη και τα πιο ακριβά DLINK έχουν την επιλογή να επανεκκινήσουν την κάμερα καθημερινά/εβδομαδιαίως κλπ. Αυτή η επιλογή υπάρχει για κάποιο λόγο, επειδή μετά από X ημέρες συχνά χάνουν τη σύνδεση Wifi ή κακή συμπεριφορά με άλλους τρόπους. Απλά σκεφτείτε τα ως καλά παλιά κουτιά Win95 που χρειάζονταν επανεκκίνηση συχνότερα από ό, τι όχι:) Δεν λέω ότι το υλικό που βασίζεται στο Raspi είναι τόσο σταθερό ώστε να μπορείτε να τα ενσωματώσετε σε πυρηνικούς σταθμούς ελέγχου αλλά με κατάλληλο υλικό/λογισμικό διαμόρφωση, ψύκτρες ψύξης, αυτόματοι ανεμιστήρες ψύξης και ελαχιστοποίηση της λειτουργίας RW στην κάρτα SDCARD μπορούν εύκολα να χτυπήσουν αυτό το χρόνο λειτουργίας 100+ ημερών χωρίς πρόβλημα. Τη στιγμή που γράφω το DeathStar λειτουργεί από 34 ημέρες, ήταν πάνω από 100, αλλά μερικές φορές έκανα χακάρισμα στη ροή της πηγής ενέργειας που τροφοδοτεί κάποια άλλα κυκλώματά μου, οπότε έπρεπε να το κλείσω:(
  • Στοχευμένο υλικό: είναι κατασκευασμένα για 1 συγκεκριμένο σκοπό, συχνά συνοδεύονται από μια μικρή περιοχή nvram και busybox, αλλά ορισμένα μοντέλα καθιστούν αδύνατη την πρόσβαση σε αυτό το κέλυφος, οπότε το μόνο που μπορείτε να τα χρησιμοποιήσετε είναι αυτό για το οποίο προορίζονταν να χρησιμοποιηθούν όσο μπορείτε χρησιμοποιήστε την κάμερα που βασίζεται σε Raspi για οποιαδήποτε άλλη εργασία: διακομιστής αρχείων, διακομιστής tftp/dhcp, διακομιστής ιστού, διακομιστής σεισμών … οι επιλογές είναι απεριόριστες.
  • Χώρος αποθήκευσης: είτε δεν έχουν καμία είτε χρησιμοποιούν κάρτες microsd με σύστημα αρχείων FAT32 VS στο βατόμουρο, μπορείτε ακόμη και να επισυνάψετε έναν σκληρό δίσκο 2 TB, αν θέλετε.
  • Φώτα ελέγχου: ορισμένα έχουν έξοδο ALARM όπου μπορεί να μπορείτε να συνδέσετε ένα μικρό ρελέ για να ενεργοποιηθούν τα φώτα. Όπως θα σας δείξω σε αυτό το σεμινάριο, η χρήση υπερύθρων καμερών είναι πλήρης χάσιμο χρόνου, καθώς δεν θα μπορείτε να αναγνωρίσετε κανέναν στις εικόνες IR λόγω της κακής ποιότητας. Εάν πρέπει να εγγράψετε ένα βίντεο στο σκοτάδι, ο καλύτερος τρόπος για να το κάνετε είναι να ανάψετε λίγο φως και στη συνέχεια να εγγράψετε το βίντεο.

Mightσως αναρωτηθείτε ότι υπάρχουν επαγγελματίες που χρησιμοποιούν κάμερα εκτός ραφιού; Ναι για επιχειρήσεις όπου οι ώρες εργασίας για τη ρύθμιση του θα ήταν πιο ακριβές από το να ασχολείσαι με το Raspberry pis (όχι για μένα έτσι κι αλλιώς:)) και ναι υπάρχουν κορυφαίες κάμερες (500 $+ με καλύτερη ανάλυση από την κάμερα pi του σειρά μαθημάτων). Ως άλλο πλεονέκτημα θα μπορούσα να πω ότι οι κάμερες που ακολουθούν το πρότυπο ONVIF διευκόλυναν την κεντρική παροχή. Αυτό παρέχει μια τυπική διεπαφή που μπορεί να χρησιμοποιηθεί για την αποστολή εντολών στην κάμερα για να ρυθμίσετε την IP/μάσκα δικτύου/Gateway και άλλα πράγματα. Για αυτό, μπορείτε να κατεβάσετε τη διαχείριση συσκευών Onvif από το Sourceforge. Πολλές από αυτές τις συσκευές συνοδεύονται από άθλια σπασμένα προσόψεις ιστού όπου, για παράδειγμα, δεν σας επιτρέπεται να ορίσετε σωστά το ip ή τη μάσκα δικτύου, επειδή η javascript που επικυρώνει αυτά τα πεδία δυσλειτουργεί και ο μόνος τρόπος για να ρυθμίσετε σωστά αυτές τις παραμέτρους είναι μέσω του ONVIF.

Βήμα 2: Σχέδια του Αστέρα του Θανάτου

Σχέδια του Αστέρα του Θανάτου
Σχέδια του Αστέρα του Θανάτου
Σχέδια του Αστέρα του Θανάτου
Σχέδια του Αστέρα του Θανάτου
Σχέδια του Αστέρα του Θανάτου
Σχέδια του Αστέρα του Θανάτου

Μπορείτε να δημιουργήσετε αυτήν τη συσκευή με οποιοδήποτε από τα Raspberry PIs ξεκινώντας από 1 έως 3B+. Ακόμα και το μηδέν έχει θύρες κάμερας, αλλά δεδομένου ότι υπάρχουν τόσα πολλά διαφορετικά μεταχειρισμένα raspis στην αγορά, ίσως αναρωτιέστε ποιο είναι το ιδανικότερο για αυτήν την κατασκευή.

Η απάντηση εξαρτάται από το πού θέλετε να επεξεργαστείτε τη ροή βίντεο.

Υπάρχουν δύο επιλογές:

1, Επεξεργαστείτε τα βίντεο τοπικά με κίνηση και προωθήστε μια ροή βίντεο όταν εντοπιστεί κίνηση (σημείωση: η κίνηση προωθεί μια αργή σταθερή ροή στον διακομιστή ό, τι και να γίνει, αυτό μπορεί να εξαρτάται από την ανάλυση και τους ρυθμούς καρέ που χρησιμοποιείτε από δύο εκατό megabytes έως πολλά gigabytes την ημέρα, απλώς μια υπενθύμιση εάν θέλετε να κάνετε μια ρύθμιση σε μια μετρημένη σύνδεση). Εδώ η CPU έχει σημασία και δυστυχώς η κίνηση (τη στιγμή της γραφής) δεν εκμεταλλεύεται πολλαπλούς πυρήνες, ωστόσο το λειτουργικό σύστημα θα προσπαθήσει να ισορροπήσει ελαφρώς το φορτίο. Θα έχετε πάντα έναν από τους πυρήνες σε 100% χρήση.

2, Επεξεργαστείτε τα βίντεο σε έναν κεντρικό διακομιστή: εδώ απλά προωθείτε την ακατέργαστη ροή βίντεο από την κάμερα σε εξωτερικό διακομιστή ροής (όπως το iSpy που εκτελείται σε υπολογιστή x86 ή το MotionEyeOS που εκτελείται σε άλλο ειδικό μικροϋπολογιστή). Δεδομένου ότι δεν υπάρχει τοπική επεξεργασία το μοντέλο του PI που χρησιμοποιείτε δεν έχει σημασία, ένα PI1 θα στείλει την ίδια ροή με ένα PI3B+.

Σε αυτό το σεμινάριο θα πάω με την πρώτη επιλογή.

Ο βασικός κανόνας εδώ είναι ότι όσο πιο γρήγορη CPU ρίχνετε σε κίνηση τόσο καλύτερα αποτελέσματα θα έχετε. Για παράδειγμα, η κάμερα με βάση το Raspi 2 που κοιτούσε έναν διάδρομο μερικές φορές δεν την έπαιρνε όταν κάποιος περνούσε γρήγορα και όταν ηχογραφούσε η εγγραφή ήταν υποτονική, έριχνε πολλά καρέ σε σύγκριση με το μοντέλο 3. Το μοντέλο 3 διαθέτει επίσης το 802.11 abgn wifi που είναι βολικό για να μπορείτε να μεταδίδετε βίντεο υψηλότερης ποιότητας, λειτουργεί εκτός κιβωτίου και είναι αρκετά αξιόπιστο. Κατά τη στιγμή που γράφω ότι το μοντέλο 3B+ είναι εκτός, θα συνιστούσα να το πάρετε με επεξεργαστή 1.4 Ghz Quad Core.

Κατάλογος υλικών

  • 30 εκατοστά πλαστικό DeathStar:)
  • Raspberry Pi 3 B+
  • PiCam v2 (8MP)
  • Arduino Pro Micro 5.5v
  • 2x ρελέ διακοπτών καλαμιών SIP-1A05
  • 1x PCS HC-SR501 IR Πυροηλεκτρική υπέρυθρη υπέρυθρη υπέρυθρη μονάδα ανιχνευτή κίνησης αισθητήρα
  • 1x αντίσταση 10kohm για LDR
  • 1x LDR
  • Προσαρμογέας DC 1x12V 4A
  • Λάμπα 1xWarm White LED 5050 SMD Ευέλικτη λωρίδα φωτισμού 12V DC
  • 1xBuck ρυθμιστής τάσης

Όπως μπορείτε να δείτε στα σχηματικά, αυτό το έργο σχεδιάστηκε αρχικά για τον έλεγχο ενός μόνο φωτός με ένα ρελέ, επειδή δεν σχεδίαζα να προσθέσω εσωτερικό φωτισμό (που είναι αρκετά δροσερό), οπότε απλώς συνδέσα ένα δεύτερο ρελέ στο Arduino. Το υπέροχο με το SIP-1A05 είναι ότι έχει εσωτερική δίοδο flyback και η κατανάλωση σε mA είναι πολύ κάτω από τον περιορισμό ισχύος του Arduino ανά pin.

Ο λόγος για τον οποίο το PIR βρίσκεται στην ασπίδα στις εικόνες επειδή στην αρχή το S0P σχεδιάστηκε να τοποθετηθεί σε ένα απλό πλαστικό κουτί IP αντί για ένα DeathStar. Όπως μαντέψατε, η κάμερα βρίσκεται ακριβώς στο πιστόλι λέιζερ, το PIR και το LDR χρειάστηκαν άλλες τρύπες και είναι κολλημένες, καθώς δεν σκοπεύω να τις αφαιρέσω.

Μια τρύπα άνοιξε στο κάτω μέρος του DeathStar όπου κόλλησα σε ένα μεγάλο μπουλόνι με μια ισχυρή κόλλα 2 συστατικών. Αυτό μπορεί να βιδωθεί στην αρχική βάση Neo Coolcams (ήταν καλό για κάτι τελικά:)). Για πρόσθετη υποστήριξη χρησιμοποιώ καλώδια από σκληρό χαλκό για να κρατήσω στην κορυφή του αστεριού.

Σημαντική σημείωση σχετικά με το τροφοδοτικό: δεδομένου ότι η ίδια τροφοδοσία θα τροφοδοτεί τόσο το PI, το Arduino όσο και τη λωρίδα LED, πρέπει να είναι αρκετά σκληρό για να μπορεί να τα χειριστεί όλα, έτσι θα βασίζεται στη λωρίδα LED που θα επιλέξετε για το έργο. Μια εμπορική λωρίδα LED 5050 12v 3 μέτρων αποστραγγίζεται γύρω στα 2Α, αυτό είναι πολύ. Για το PI και το Arduino πρέπει να υπολογίσετε στο +2A (αν και αυτό είναι υπερμεγέθη δεν θα βλάψει). Η χρήση λωρίδας LED πάνω από τυπικούς λαμπτήρες αλογόνου, νέον ή άλλο φωτισμό υψηλής ισχύος είναι ότι μπορείτε να βάλετε ολόκληρο αυτό το κύκλωμα σε μια ωραία μπαταρία μολύβδου 12V@10Ah ως εφεδρική, ώστε να λειτουργεί ακόμη και σε περίπτωση διακοπής ρεύματος.

Το buck θα μειώσει την τάση από 12-> 5V για την τροφοδοσία του Arduino και του PI ενώ η απευθείας τροφοδοσία 12V είναι συνδεδεμένη στο ρελέ για να ανάψει η λωρίδα LED.

Βήμα 3: Λογισμικό Arduino

Λογισμικό Arduino
Λογισμικό Arduino

Μπορείτε να βρείτε τον πλήρη πηγαίο κώδικα παρακάτω, ο οποίος σχολιάζεται καλά, αλλά εδώ είναι μια σύντομη εξήγηση για το πώς λειτουργεί: Στην αρχή κάθε βρόχου καλείται η συνήθης λειτουργία xcomm () για να διαπιστωθεί εάν υπάρχει εντολή που προέρχεται από το Raspberry PI το οποίο μπορεί να είναι LIGHT_ON/OFF για να ανάψετε τα φώτα του διαδρόμου ή DS_ON/OFF για να ενεργοποιήσετε/απενεργοποιήσετε τον οπίσθιο φωτισμό DeathStar, τα έχω εφαρμόσει μόνο για λόγους υπέρβασης της τελειότητας, καθώς αν κάποιος περάσει από το PIR θα πρέπει να το σηκώσει και να το ανάψει τα φώτα αλλά ίσως θέλετε να κοιτάξετε το μέρος για κάποιο λόγο ακόμα και όταν δεν υπάρχει κανείς εκεί.

Μετά από αυτό, η τιμή του φωτοκύτταρου διαβάζεται και ο πείρος κίνησης ελέγχεται για κίνηση. Εάν υπάρχει κίνηση, ο κωδικός ελέγχει εάν είναι αρκετά σκοτεινός, ελέγχει εάν δεν είμαστε σε αναμονή. Εάν περάσουν όλα αυτά, τότε απλώς ανάβει το φως του διαδρόμου και στέλνει πίσω PHOENIX_MOTION_DETECTED στο Raspberry PI, εάν δεν είναι αρκετά σκοτεινό, εξακολουθεί να δίνει σήματα στον υπολογιστή, αλλά δεν ανάβει το φως. Μόλις εντοπιστεί μια κίνηση, ξεκινά ένα χρονόμετρο κράτησης 5 λεπτών.

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

Έχουμε έναν άλλο χρονοδιακόπτη για τον εσωτερικό φωτισμό του DeathStar, ο οποίος εξαρτάται καθαρά από το photocellReading <dark_limit.

Παρόλο που οι δύο ρουτίνες δεν γνωρίζουν ο ένας τον άλλον, θα λειτουργούν τέλεια μαζί, αφού όταν ανάψει το φως του διαδρόμου παρέχει τόσο πολύ φως που το LDR θα νομίζει ότι είναι και πάλι μέρα και απενεργοποιεί τον εσωτερικό φωτισμό. Ωστόσο, υπήρξαν κάποιες προειδοποιήσεις σχετικά με αυτήν τη διαδικασία, η οποία εξηγείται στον κώδικα αν σας ενδιαφέρει, αν όχι, τότε πάρτε την απάντηση της Nvidia ότι "απλά λειτουργεί!".

Βήμα 4: Λογισμικό Raspberry PI

Λογισμικό Raspberry PI
Λογισμικό Raspberry PI
Λογισμικό Raspberry PI
Λογισμικό Raspberry PI
Λογισμικό Raspberry PI
Λογισμικό Raspberry PI

Τα πιο πρόσφατα Raspbian λειτουργούν για μένα:

Raspbian GNU/Linux 9.4 (stretch)

Linux Phoenix 4.9.35-v7+ #1014 SMP Παρ 30 Ιουνίου 14:47:43 BST 2017 armv7l GNU/Linux ii motion 4.0-1 armhf V4L πρόγραμμα λήψης που υποστηρίζει ανίχνευση κίνησης

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

Η κίνηση μπορεί επίσης να δημιουργηθεί από την πηγή εύκολα:

apt-get -y install autoconf automake pkgconf libtool libjpeg8-dev build-essential libzip-dev apt-get install libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libavdevice-dev

apt-get -y install libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libavdevice-dev apt-get -y install git git clone https://github.com/Motion-Project/motion cd motion/autoreconf -fiv. /configure --prefix =/usr/motion make && make install/usr/motion/bin/motion -v

Προτείνω το iSpy ως διακομιστή εγγραφής βίντεο/συλλέκτη. Δυστυχώς κατά τη στιγμή της σύνταξης δεν υπάρχουν καλές εναλλακτικές λύσεις για το Linux. Η κάμερα μπορεί να προστεθεί με url MJPEG https:// CAMERA_IP: 8081 την προεπιλεγμένη θύρα.

Η επεξεργασία κίνησης μπορεί να είναι χρήσιμη, για παράδειγμα δεν χρειάζεται να συνεχίσετε να κοιτάτε τον διακομιστή iSpy όλη μέρα, μπορείτε να λαμβάνετε ένα email σε περίπτωση κίνησης. Παρόλο που το iSpy έχει αυτήν τη λειτουργικότητα για ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου σε περίπτωση κίνησης, ενεργοποιεί την εγγραφή κατά καιρούς για διάφορα γεγονότα όπως κάποιο φως που αντανακλάται στην περιοχή. Με την ανίχνευση κίνησης PIR δεν είχα ποτέ έναν ψευδή συναγερμό. Οι ειδοποιήσεις μπορούν να υποβληθούν σε επεξεργασία τοπικά:

Ανιχνεύθηκε συμβάν κίνησης Pir στον αισθητήρα> Ειδοποίηση Arduino> Το Raspberry pi λαμβάνει στην κονσόλα> Πρόγραμμα επεξεργασίας C> Εφαρμογή εξωτερικής αλληλογραφίας

Ωστόσο, προτιμώ να επεξεργάζομαι τόσο τα αρχεία καταγραφής όσο και τα βίντεο από απόσταση, οπότε σε αυτήν την περίπτωση έχω προσθέσει μια ενότητα στο πρόγραμμα ελέγχου C, ενώ καταγράφει τα αρχεία καταγραφής τοπικά σε ένα απλό αρχείο κειμένου, επίσης το καταγράφει στο syslog και προωθείται σε ένα SIEM για περαιτέρω επεξεργασία.

void logger (char *text) {

ΑΡΧΕΙΟ *f = fopen ("phoenix.log", "a"); if (f == NULL) {printf ("Σφάλμα κατά το άνοιγμα του αρχείου καταγραφής! / n"); ΕΠΙΣΤΡΟΦΗ; } fprintf (f, " %s => %s / n", cur_time (0), κείμενο); fclose (f); #ifdef SYSLOG char loggy [500]; sprintf (loggy, " %s => %s / n", cur_time (0), κείμενο); μάσκα setlogmas (LOG_UPTO (LOG_NOTICE)); openlog ("DeathStar", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER); // syslog (LOG_NOTICE, "Έναρξη προγράμματος από τον χρήστη %d", getuid ()); syslog (LOG_NOTICE, loggy); closelog (); #endif επιστροφή? }

Στο άκρο λήψης, το syslog-ng μπορεί να αποσυνδέσει αυτά τα συμβάντα από την κύρια ροή καταγραφής:

φίλτρο f_phx {

αγώνα ("DeathStar")? }; προορισμός d_phx {αρχείο ("/var/log/phoenix/deathstar.log"); }; log {source (s_net); φίλτρο (f_phx); προορισμός (d_phx); };

και μπορεί να περάσει σε άλλο εργαλείο (motion.php δείτε συνημμένο) για ανάλυση και ειδοποίηση.

Σε αυτό το σενάριο μπορείτε απλά να ορίσετε τη συνηθισμένη ώρα κατά τη διάρκεια της εβδομάδας όταν δεν είστε στο σπίτι:

$ opt ['alert_after'] = '09:00:00'; // Πρωινά $ opt ['alert_before'] = '17:00:00'; // Βράδυ

Το πρόγραμμα php χρησιμοποιεί το εξαιρετικό βοηθητικό πρόγραμμα logtail για την ανάλυση των αρχείων καταγραφής.

$ cmd = "logtail -o". $ offsetfile. ' '. $ logfile.'> '. $ logfile2;

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

Το Motion.php μπορεί να εκτελεστεί από το crontab με ένα μικρό κόλπο για τα Σαββατοκύριακα, όταν θα περάσει από τα αρχεία καταγραφής, αλλά μην κάνετε περαιτέρω επεξεργασία.

*/5 * * * 1-5/usr/local/bin/php ~/motion.php &>/dev/null */5 * * * 6-7/usr/local/bin/php ~/motion.php Σαββατοκύριακο &>/dev/null

Βήμα 5: Ζητήματα και λίστα εργασιών

Προβλήματα και λίστα εργασιών
Προβλήματα και λίστα εργασιών
Προβλήματα και λίστα εργασιών
Προβλήματα και λίστα εργασιών

Εάν χρησιμοποιείτε Raspberry pi 3 ή νεότερη έκδοση, μπορείτε να παραλείψετε αυτήν την ενότητα, πιθανότατα δεν θα αντιμετωπίσετε αυτά τα προβλήματα πια.

Κατά τη διάρκεια των ετών είχα κάποια προβλήματα με τους πίνακες που βασίζονταν στο Raspberry pi 2, οι οποίοι θα μπορούσαν να τρέχουν την ίδια στοίβα λογισμικού, αλλά αγοράστηκαν σε διαφορετικούς χρόνους από διαφορετικά μέρη. Μετά από ένα ορισμένο χρονικό διάστημα που θα μπορούσε να είναι 2 ημέρες ή 20 ημέρες όταν η σύνδεση SSH στη συσκευή, το SSH θα κρεμάσει, έτσι τόσο ο δαίμονας κίνησης όσο και ο τοπικός κωδικός C που συνομιλούσε με το Arduino φορτώθηκαν στο ram, επομένως η συσκευή λειτουργούσε αλλά ήταν αδύνατο να κάνουμε κάτι άλλο πια σε αυτήν την κατάσταση.

Μετά από πολλά προβλήματα αντιμετώπισης προβλημάτων, βρήκα μια λύση:

homesync.sh

#!/bin/sh -e

### ΕΚΚΙΝΗΣΗ ΠΛΗΡΟΦΟΡΙΩΝ # Παρέχει: homesync # Required-Start: mountkernfs $ local_fs # Required-Stop: camera phoenix # Default-Start: S # Default-Stop: 0 6 # Short-Description: Home synchronizer # Περιγραφή: Home synchronizer από NLD ### END INIT INFO NAME = home DESC = "Ramdisk Home Synchronizer" RAM = "/home/" DISK = "/realhome/" set -e case "$ 1" in start | 4th) echo -n "Starting $ DESC: "rsync -az --numeric -ids -διαγραφή $ DISK $ RAM &> /dev /null echo" $ NAME. ";; stop | back) echo -n "Διακοπή $ DESC:" rsync -az --numeric -ids -διαγραφή $ RAM $ DISK &> /dev /null echo "$ NAME.";; *) echo "Usage: $ 0 {start | stop}" exit 1;; έξοδος esac 0

Το σενάριο συνδυάζεται με μια τροποποίηση fstab:

tmpfs /home tmpfs rw, μέγεθος = 80%, nosuid, nodev 0 0

Το διαμέρισμα του σπιτιού είναι τοποθετημένο ως ramdisk, το οποίο θα παράγει περίπου 600 MB ελεύθερο χώρο στο Raspberry pi 2, το οποίο είναι περισσότερο από αρκετό για την αποθήκευση δυαδικών και μικρών αρχείων καταγραφής:

tmpfs 690M 8,6M 682M 2% /σπίτι

Αποδείχθηκε ότι το PI hang αποδόθηκε στις λειτουργίες εγγραφής στην κάρτα SD, αν και έχω δοκιμάσει διαφορετικές κάρτες (Samsung EVO, Sandisk) οι οποίες έχουν σαρωθεί για σφάλματα πολλές φορές πριν και μετά και δεν είχαν κανένα πρόβλημα σε άλλους φορητούς υπολογιστές. στη συνέχεια. Δεν είχα το ίδιο πρόβλημα (ακόμα) με το Raspberry PI 3s και το υψηλότερο υλικό, γι 'αυτό επίσης τους προτείνω σε αυτό το σεμινάριο.

Αν και η τρέχουσα κίνηση σε ένα Raspberry PI 3 είναι αρκετά καλή για μένα, εδώ είναι μερικές ιδέες που αξίζει να εξερευνήσετε:

  1. Μην χρησιμοποιείτε κίνηση, αλλά χρησιμοποιήστε μια ευρεία ροή μέσω του δικτύου και αφήστε έναν ισχυρό διακομιστή να κάνει την ανίχνευση κίνησης και την κωδικοποίηση βίντεο (π.χ. iSpy). -> Πρόβλημα: σταθερό άνοιγμα εύρους ζώνης δικτύου.
  2. Χρησιμοποιήστε κίνηση και αφήστε το ffmpeg να κάνει την κωδικοποίηση βίντεο. -> Πρόβλημα: Η CPU δεν μπορεί να χειριστεί τις υψηλότερες αναλύσεις
  3. Χρησιμοποιήστε κίνηση, καταγράψτε ακατέργαστο βίντεο και αφήστε έναν ισχυρό διακομιστή να κάνει την κωδικοποίηση. -> Η χρήση της CPU στο RPi είναι χαμηλή και το εύρος ζώνης δικτύου περιορίζεται όταν υπάρχει πραγματική κίνηση. Για αυτό το σενάριο, θα μπορούσαμε να γράψουμε σε μια κάρτα SD/ramdisk για μέγιστη απόδοση και στη συνέχεια να διαγράψουμε το αντίγραφο του βίντεο σε άλλο διακομιστή.

Θα ήθελα επίσης να σημειώσω ότι η κατασκευή αυτού του έργου είναι δυνατή κατασκευή χωρίς Arduino. Όλα τα εξαρτήματα (ρελέ, LDR, PIR) θα μπορούσαν να συνδεθούν με το raspberry pi με κάποιο τρόπο, αλλά προτιμώ τους μικροελεγκτές σε πραγματικό χρόνο να αλληλεπιδρούν με αισθητήρες και συσκευές εξόδου. Στις περιπτώσεις όπου το raspberry pi μου κρεμόταν για παράδειγμα ή έπεσε, ο έλεγχος φωτός που εκτελείται από το Arduino λειτούργησε μια χαρά.

Αν σας άρεσε αυτό το διδακτικό έμεινε συντονισμένο καθώς θα συνεχίσω τη σειρά με την εξωτερική μου κάμερα 360 βαθμού βατόμουρου pi zero το επόμενο έτος.

Συνιστάται: