Οδηγίες για να γίνει το RPi ένα μικρό σύστημα καταγραφής.
Σημειώσεις:
1. Ακολουθήστε με δική σας ευθύνη!
2. Στα παρακάτω υποτίθεται πως έχετε έναν λογαριασμό στο Gmail της μορφής AGmailUserName@gmail.com με κωδικό TheGmailPassword. Σε αυτόν τον λογαριασμό θα πρέπει να επιτρέπονται οι λιγότερο ασφαλείς εφαρμογές (επιλογή από https://myaccount.google.com/lesssecureapps)
Για τα παρακάτω είναι καλό να υπάρχει πρόσβαση στο RPi όποτε αυτό χρειάζεται. Αν δεν υπάρχει δεσμευμένη οθόνη και πληκτρολόγιο για το RPi, τότε η καλύτερη λύση είναι η πρόσβαση μέσω της εφαρμογής putty, η οποία μπορεί να γίνει εγκατάσταση από το διαχειριστή λογισμικού της διανομής linux.
Σημείωση: Αν μετά την εισαγωγή της κάρτας με το φρεσκοεγκατεστημένο Raspbian προσπαθείτε με το Putty να αποκτήσετε πρόσβαση στο RPi και λαμβάνετε μήνυμα Fatal error τότε πιθανώς να πρέπει να την βγάλετε ξανά, να την βάλετε στον μητρικό υπολογιστή και να δημιουργήσετε στην κάρτα ένα κενό αρχείο με όνομα "ssh" στο φάκελο boot της κάρτας.
Πηγή: https://hackernoon.com/raspberry-pi-headless-install-462ccabd75d0
Για την εφαρμογή putty, πρέπει να είναι γνωστή η διεύθυνση IP που έχει αποδοθεί στο RPi από το router, η οποία μπορεί να βρεθεί από το ίδιο το Router το οποίο (συνήθως) είναι διαθέσιμο στη διεύθυνση 192.168.1.1.
Αν η διεύθυνση του RPi είναι γνωστή τότε αρκεί να εκτελεστεί το putty, να εισαχθεί η διεύθυνση στο πεδίο Host Name (or IP address) και να επιλεγεί Open.
Μετά το Open θα εμφανιστεί ένα παράθυρο terminal για το RPi, στο οποίο πρέπει να δοθεί το όνομα χρήστη (pi?) και το password (raspberry?).
Μετά τη σύνδεση, αν είναι η πρώτη χρήση τότε είναι καλό να δώσετε την εντολή
sudo raspi-config
για να γίνει η αλλαγή κωδικού (επιλέγοντας "Change User Password") και η επέκταση της διαθέσιμης χωρητικότητας της κάρτας στο μέγιστο δυνατό (επιλέγοντας "Advanced Options" και στη συνέχεια "Expand Filesystem").
1. Μετατροπή του Raspberry Pi σε FTP server.
(Οδηγίες από https://www.raspberrypi.org/documentation/remote-access/ftp.md)
sudo apt-get install pure-ftpd
sudo groupadd ftpgroup
sudo useradd ftpuser -g ftpgroup -s /sbin/nologin -d /dev/null
sudo mkdir /home/pi/FTP
sudo chown -R ftpuser:ftpgroup /home/pi/FTP
sudo pure-pw useradd upload -u ftpuser -g ftpgroup -d /home/pi/FTP -m
[ΣΤΗΝ ΤΕΛΕΥΤΑΙΑ ΕΝΤΟΛΗ ΟΡΙΖΕΤΑΙ Ο ΧΡΗΣΤΗΣ upload ΚΑΙ Ο ΚΩΔΙΚΟΣ ΤΟΥ]
[Αν είναι επιθυμητός ο ορισμός περισσότερων χρηστών που θα αντιστοιχούν σε άλλους φακέλους, πρέπει να επαναληφθούν οι τελευταίες 4 γραμμές κώδικα αλλάζοντας για κάθε τριάδα ftpuser1 - upload1 - FTP1, ftpuser2 - upload2 - FTP2 κλπ...]
sudo pure-pw mkdb
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60puredb
sudo service pure-ftpd restart
Μετά τις παραπάνω εντολές είναι εφικτή η πρόσβαση στο RPi με το FileZilla, βάζοντας τα στοιχεία:
Κόμβος: [Η διεύθυνση του RPi στο δίκτυο]
Πρωτόκολλο: [FTP: Πρωτόκολλο μεταφοράς αρχείων]
Κρυπτογράφηση: [Χρήση ρητής απαίτησης FTP με TLS, εάν είναι διαθέσιμη]
Τύπος σύνδεσης: [Τυπικός]
Χρήστης: [upload] (ή όποιος άλλος χρήστης έχει οριστεί στα προηγούμενα βήματα)
Κωδικός πρόσβασης: [Ο κωδικός του χρήστη]
Αν το RPi χρησιμοποιείται ως σύστημα αποθήκευσης για φώτο από κάμερες τότε τα παραπάνω στοιχεία μπορούν να χρησιμοποιηθούν και στις κάμερες με αλλαγή της θύρας σε 21.
Σημείωση: Αν θέλεις να επαληθεύσεις πως ορίστηκε ο χρήστης upload (ή όποιο άλλο είναι το όνομά του) μπορείς να δώσεις την εντολή:
sudo pure-pw list
και να επαληθεύσεις πως εμφανίζεται, μαζί με τον αντίστοιχο φάκελο.
(πηγή: http://www.upubuntu.com/2012/03/how-to-create-new-ftp-user-or-reset.html)
2. Αποστολή email από το Raspberry Pi
Αν το RPi χρησιμοποιείται για αποθήκευση φώτο από κάμερες τότε είναι χρήσιμη η αποστολή email με τις φώτο όταν αυτό κρίνεται απαραίτητο.
(Οδηγίες από http://www.raspberry-projects.com/pi/software_utilities/email/ssmtp-to-send-emails και https://wiki.archlinux.org/index.php/SSMTP)
sudo apt-get install ssmtp
sudo apt-get install mailutils
sudo nano /etc/ssmtp/ssmtp.conf
Στο περιβάλλον του nano γράφονται τα εξής στο αρχείο ssmtp.conf
root=AGmailUserName@gmail.com
mailhub=smtp.gmail.com:587
hostname=raspberrypi
AuthUser=AGmailUserName@gmail.com
AuthPass=TheGmailPassword
FromLineOverride=YES
UseSTARTTLS=YES
Για να στείλει email με συνημμένο πρέπει:
sudo apt-get install mpack
ή ακόμα καλύτερα
sudo apt-get install mutt
Κάποιες τροποποιήσεις είναι απαραίτητες...
sudo nano /etc/ssmtp/revaliases
Στο αρχείο αυτό πρέπει να προστεθούν οι γραμμές
root:AGmailUserName@gmail.com:smtp.gmail.com:587
pi:AGmailUserName@gmail.com:smtp.gmail.com:587
postmaster:AGmailUserName@gmail.com:smtp.gmail.com:587
3. Ενδεικτική χρήση
Αν είναι επιθυμητή η αποθήκευση των φωτογραφιών σε έναν φάκελο FTPBackup και η λήψη email με όλες τις πρόσφατες φώτο από τις κάμερες τότε
πρέπει να δημιουργηθεί ένα αρχείο εντολών bash δίνοντας
nano autocam.sh
το οποίο θα περιέχει τις γραμμές:
# Ο παρακάτω κώδικας ελέγχει αν υπάρχουν αρχεία στον φάκελο _camerafolder και αν βρει τότε
# 1. Τα συμπιέζει σε tar.gz μορφή
# 2. Στέλνει το αρχείο με email στη διεύθυνση _correspondenceemail
# 3. Τα μεταφέρει στον κατάλογο _camerabackupfolder.
# 4. Διαγράφει όλα τα αρχεία από τους φακέλους _camerafolder, _camera2folder
# 5. Διαγράφει τo αρχείο tar.gz που δημιούργησε στο βήμα 1.
_correspondenceemail="ΤΟ EMAIL Π.Χ. toemailmou@gmail.com"
_camerafolder="O ΦΑΚΕΛΟΣ ΟΠΟΥ ΑΠΟΘΗΚΕΥΟΝΤΑΙ ΟΙ ΦΩΤΟΓΡΑΦΙΕΣ ΑΠΟ ΤΗΝ ΚΑΜΕΡΑ Π.Χ. /home/pi/camerafolder"
_camerabackupfolder="Ο ΦΑΚΕΛΟΣ ΟΠΟΥ ΘΑ ΑΝΤΙΓΡΑΦΟΝΤΑΙ ΟΙ ΦΩΤΟ ΠΡΙΝ ΝΑ ΣΒΗΣΤΟΥΝ Π.Χ. /mnt/usb/camerabackup"
_now=$(date +%Y_%m_%d_%H_%M)
_SIZECAMERA=$(du -s -B1 $_camerafolder | awk '{print $1}')
_SIZECAMERABackup=$(du -s -B1 $_camerabackupfolder | awk '{print $1}')
_SIZECAMERAHuman=$(du -h $_camerafolder | awk '{print $1}')
_SIZECAMERABackupHuman=$(du -h $_camerabackupfolder | awk '{print $1}')
_lines=$(find $_camera1folder -mindepth 1 -maxdepth 1 -not -empty -type d | wc -l)
_bodymessage="Just to inform you. $_camerafolder/ Size: $_SIZECAMERA ($_SIZECAMERAHuman), $_camerabackupfolder Size: $_SIZECAMERABackup ($_SIZECAMERABackupHuman)"
if [ $_lines -eq 0 ] ; then
echo $_bodymessage | mail -s "No pics at $_now" $_correspondenceemail
fi
if [ $_lines -gt 0 ] ; then
tar -cpzf "CAMERA$_now.tar.gz" $_camerafolder/ --ignore-failed-read --absolute-names
echo $_bodymessage | mutt -a "CAMERA$_now.tar.gz" -s "Camera pics_$_now." -- $_correspondenceemail
find $_camerafolder/ -type f -print0 | xargs -0 mv -t $_camerabackupfolder
rm -rf $_camerafolder/*
rm "CAMERA1$_now.tar.gz"
fi
Μετά με Ctrl - O αποθηκεύεις το αρχείο, με Ctrl - X κλείνει το nano και γίνεται εκτελέσιμο το αρχείο με την εντολή
chmod u+x autocam.sh
Σε αυτό το σημείο, καλό είναι να ελεγχθεί πως ο κώδικας που θα εκτελείται αυτόματα λειτουργεί όπως προβλέπεται, δίνοντας
sudo bash autocam.sh
και παρατηρώντας το output. Κανονικά, δεν πρέπει να υπάρχει κάποιο μήνυμα...
Αν εμφανίζεται το μήνυμα
GPGME: CMS protocol not available
τότε αυτό οφείλεται στην έλλειψη κάποιων πακέτων τα οποία μπορούν να εγκατασταθούν με τις εντολές:sudo apt-get install gpgsmsudo apt-mark auto gpgsmΠηγή: https://github.com/neomutt/neomutt/issues/398 Σημείωση: Αν ως backup έχει επιλεγεί ένα usb drive τότε αυτό πρέπει να έχει γίνει mount πριν από την εκτέλεση του παραπάνω κώδικα. Για να γίνει αυτό πρέπει να δοθεί η εντολή:
sudo ls /dev/sd*
και αν υποτεθεί πως η εξωτερική μνήμη έχει προσαρτηθεί στο /dev/sda1 πρέπει να δοθεί επιπλέον:
sudo mount -t vfat /dev/sda1 /mnt/usb
αφού πρώτα δημιουργηθεί το σημείο προσάρτησης με την εντολή:
sudo mkdir /mnt/usb
Επίσης είναι απαραίτητο να γίνεται προσάρτηση ύστερα από κάθε reboot...
4. Ορισμός αυτόματης εκτέλεσης του autocam.sh
Αυτό γίνεται με την εντολή:
sudo crontab -e
Στο περιβάλλον nano που θα εμφανιστεί γράφεται:
*/20 0,1,2,3,4,5,6 * * * /home/pi/autocam.sh
*/20 21,22,23 * * * /home/pi/autocam.sh
*/30 7,8,9,10,11,12,13,14,15,16,17,18,19,20 * * * /home/pi/autocam.sh
[Οι παραπάνω ενδεικτικές εντολές εκτελούν το autocam.sh κάθε 20 λεπτά το βράδυ και κάθε 30 λεπτά το πρωί]
5. Καθαρισμός μνήμης του RaspberryPi.
Η αποστολή email με συνημμένα αφήνει στο δίσκο κάποια σημάδια, δηλαδή αντίγραφα (στο φάκελο root/send) τα οποία αργά ή γρήγορα θα γεμίσουν το δίσκο καθιστώντας αδύνατη την εκτέλεση των παραπάνω διαδικασιών. Ο χρήστης όταν πλησιάζει η συμπλήρωση του δίσκου (μπορεί να βλέπει το ποσοστό συμπλήρωσης δίνοντας την εντολή df) πρέπει να σβήνει το αρχείο send, και ο καλύτερος τρόπος είναι με την εντολή:
sudo ncdu -x /
Τέλος, ενδέχεται ο φάκελος _camerabackupfolder να έχει πάρα πολλές φωτογραφίες ώστε η εντολή sudo rm * να μην μπορεί να εκτελεστεί λόγω υπερβολικού πλήθους ορισμάτων. Σε αυτήν την περίπτωση αρκεί να εκτελεστεί περισσότερες φορές σβήνοντας σε κάθε μία επανάληψη ένα μέρος των αρχείων όπως για παράδειγμα sudo rm *001*, εντολή που σβήνει όλα τα αρχεία που περιλαμβάνουν το 001 στο όνομά τους.
Ελπίζω τα παραπάνω να φανούν χρήσιμα σε όποιον ενδιαφέρεται!
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου