Εγκατάσταση Animal Shelter Manager στο Raspberry Pi


Το Animal Shelter Manager είναι ένα πρόγραμμα που φτιάχτηκε κυρίως για να κρατάει ιστορικό των ζώων που φιλοξενούνται σε καταφύγια ζώων. Με λίγα λόγια αδέσποτων σκύλων και γατιών (αυτά είναι τα 2 ζώα στην χώρα μας). Επειδή είναι φτιαγμένο με τα Αμερικάνικα δεδομένα, σκοπός του είναι να "εκδίδει" τα ζώα που υπάρχουν, σε ιστοσελίδες που προωθούν την υιοθεσία. Για το τι προσφέρει το πρόγραμμα, μπορείτε να ψάξετε την ιστοσελίδα του.

Στο παρελθόν επιχείρησα να φτιάξω ένα livecd μιας διανομής Linux με στημένο το πρόγραμμα. Για περισσότερες πληροφορίες, μπορείτε να δείτε στην ιστοσελίδα στο blog μου. Το συγκεκριμένο, περιέχει την έκδοση 2 του προγράμματος και είναι απαρχαιωμένο. Θέλει αναβάθμιση το λειτουργικό σύστημα του livecd. Δεν είναι τίποτα δύσκολο.

Όμως ο λόγος αυτού του post δεν είναι να σας γνωρίσω το πρόγραμμα (αρκετοί από εσάς θα το γνωρίζετε ήδη). Σκοπός είναι να δείξω στους φίλους Κτηνιάτρους μια φθηνή λύση να κρατάνε ιστορικό των πελατών-ζώων τους. Η λύση έρχεται με το Raspberry Pi.

Στον οδηγό αυτό θα δούμε:



Υλικά που θα χρειαστούν, συνδεσμολογία


Τα υλικά που θα χρειαστούν είναι:
* Raspberry Pi: Το κόστος του είναι στα 41€
* Κάρτα SD (4 ή 8GB)
* Καλώδιο ρεύματος (είναι το ίδιο με αυτό που φορτίζετε το κινητό σας. Προτιμήστε να βγάζει έξοδο σε USB)
* Κουτάκι (για να μην σκονίζεται. Μπορείτε να το φτιάξετε και μόνοι σας από χαρτί).

Το κουτάκι με το raspberry pi, θα το έχετε στην ethernet (καλώδιο δικτύου) στο router σας. Ρεύμα μπορεί να παίρνει από την USB που βγάζει το router σας (δείτε την φωτογραφία παρακάτω, όπως το έχω βάλει εγώ). Γι' αυτό ανέφερα παραπάνω, το καλώδιο ρεύματος να βγάζει σε USB.

Raspberry Pi on router

Εάν δεν έχει USB το router σας, τότε πρέπει να βάλετε ρεύμα από πρίζα κοντά στο router σας.
Αυτή τη συνδεσμολογία μπορείτε να την έχετε είτε στο ιατρείο σας, είτε στο σπίτι σας για λόγους ασφαλείας. Εάν είναι στο σπίτι σας, θα πρέπει να ορίσετε στο router σας port forward καθώς και dyndns (θα αναφέρω παρακάτω πως γίνεται).


Προετοιμασία κάρτας SD


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

1. Εάν δεν έχετε κάρτα SD, μπορείτε να αγοράσετε, όταν θα αγοράζετε το raspberry pi. Υπάρχουν κάποιες με προεγκατεστημένο το Raspbian, άλλες που έχουν το εργαλείο NOOBS.

2. Εάν έχετε μια κάρτα SD, μπορείτε να χρησιμοποιήσετε το εργαλείο NOOBS. Αυτό στην ουσία είναι ένα script που επιλέγετε ποια διανομή θέλετε να εγκατασταθεί, και απλά περιμένετε να την κατεβάσει και να την εγκαταστήσει. Επειδή δεν το έχω χρησιμοποιήσει ποτέ, σας παραθέτω δυο βίντεο, πως γίνεται μέσω windows (επειδή δεν χρησιμοποιώ windows, δεν ξέρω να σας αναφέρω κάποια tips).



3. Εάν έχετε μια κάρτα SD και θέλετε να βάλετε μόνοι σας το Raspbian. Κατεβάστε το από την διεύθυνση των λήψεων και αποσυμπιέστε το. Επειδή δεν χρησιμοποιώ windows, μπορώ να σας αναφέρω την διαδικασία σε linux.

Δώστε τις εντολές στο τερματικό:

cat /proc/partitions

Θα σας δείξει σαν ποια συσκευή είναι προσαρτημένη η κάρτα SD (πχ sdg). Αποπροσαρτήστε την κάρτα με την εντολή:

umount /dev/sdg1

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

sudo dd if=2013-12-20-wheezy-raspbian.img of=/dev/sdg bs=4M;sync

Προσοχή στην παραπάνω εντολή:
- Πρέπει να είστε στον ίδιο κατάλογο που βρίσκεται το αποσυμπιεσμένο αρχείο που κατεβάσατε. Αλλιώς πρέπει να δώσετε πλήρη διαδρομή. Επίσης η έκδοση που έχετε κατεβάσει, μπορεί να διαφέρει, οπότε αλλάζει η "ημερομηνία".
- Η συσκευή θα είναι μόνο το γράμμα (χωρίς τον αριθμό αναγνώρισης), πχ sdg.

Θα σας ζητήσει κωδικό διαχειριστή. Μετά περιμένετε να ολοκληρωθεί.


Εγκατάσταση προγράμματος ASM


Σειρά έχει η εγκατάσταση του προγράμματος και ορισμένες ρυθμίσεις-εγκαταστάσεις.
Μόλις πάρετε την κάρτα, τοποθετήστε την στο raspberry pi και ξεκινήστε το. Οι εντολές που θα δοθούν είναι εντολές linux.

Μπορείτε να συνδέσετε το raspberry pi όπως ανέφερα επάνω (στο router) και να δώσετε εντολές μέσα από το linux σταθερό υπολογιστή σας. Εάν χρησιμοποιείτε windows, επειδή δεν γνωρίζω πως μπορείτε να μπείτε, ίσως θα πρέπει να συνδέσετε το raspberry pi επάνω στην tv (όπως κάνει στο παραπάνω video) και να δώσετε τις παρακάτω εντολές. Εδώ θα δούμε την διαδικασία εάν έχετε linux ως βασικό λειτουργικό σύστημα.

1. Ανοίξτε το router σας (συνήθως 192.168.1.1 ή 192.168.1.254 και κωδικοί admin/admin). Δείτε ποια IP έχει δώσει στο raspberry pi. Έστω ότι είναι 192.168.1.65.

2. Ανοίξτε το τερματικό σας και δώστε την εντολή:

ssh pi@192.168.1.65

Θα σας ζητήσει κωδικό. Ο κωδικός είναι raspberry.

3. Κάντε μια αναβάθμιση.

sudo apt-get update && sudo apt-get upgrade

4. Δώστε στατική IP στο raspberry. Αυτό θεωρητικά δεν είναι απαραίτητο. Εάν όμως κλείσει το ρεύμα και εκκινήσουν όλα εκ νέου, πιθανό το raspberry να πάρει άλλη IP, οπότε θα ψάχνεστε. Γι'αυτό δώστε την εντολή.

sudo nano /etc/network/interfaces

Και μετά επεξεργαστείτε και δώστε τα εξής

auto eth0
iface eth0 inet static
address 192.168.1.65
netmask 255.255.255.0
gateway 192.168.1.1

Προσοχή. Το 192.168.1.65 είναι η IP που αναγνωρίζει το raspberry και 192.168.1.1 είναι η IP που μπαίνετε στο router για να κάνετε ρυθμίσεις.

Για αποθήκευση, πατήστε Ctrl+X και μετά Y.

5. Πάμε να εγκαταστήσουμε τα προαπαιτούμενα. Δώστε αυτή την εντολή.

sudo apt-get install make python python-imaging python-webpy python-mysqldb python-psycopg2 python-pisa ghostscript nodejs pychecker dpkg tar apache2 php5 php5-gd php5-sqlite libcurl4-openssl-dev php5-curl php5-common php-xml-parser sqlite

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

Κατεβάστε το πρόγραμμα με την χρήση τερματικού

wget https://downloads.sourceforge.net/project/sheltermanager/sheltermanager/3.3.0/sheltermanager3_3.3.0_all.deb

Και εγκαταστήστε το με το τερματικό

sudo dpkg -i sheltermanager3_3.3.0_all.deb

Στο αρχείο README, μας λέει να πειράξουμε ένα αρχείο. Δώστε την εντολη:

sudo nano /usr/lib/sheltermanager3/sitedefs.py

Εκεί άλλαξα την γραμμή

ASM3_DBTYPE (POSTGRESQL, MYSQL or SQLITE)

από MYSQL σε SQLITE.

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

sudo reboot

7. Λογικά τώρα είναι όλα έτοιμα. Ανοίξτε την διεύθυνση http://192.168.1.65:5000/database (η IP είναι αυτή που δώσατε στο Raspberry Pi. Επίσης η πόρτα 5000 είναι η προεπιλεγμένη. Μπορείτε να την αλλάξετε στο παραπάνω αρχείο που αλλάξαμε σε SLQITE), και θα δείτε

Create Database

Αλλάξτε σε Ελληνικά

Create Database

Και πατήστε Create Database. Θα πρέπει να περιμένετε μέχρι να το δημιουργήσει. Εάν παγώσει, μην παγώσετε. Το κάνει.

Create Database

8. Κλείστε τον browser και ανοίξτε τον εκ νέου στην διεύθυνση http://192.168.1.65:5000/ και είστε έτοιμοι να μπείτε στο πρόγραμμα.

Login Screen

Σας λέει να εισάγετε user/letmein. Μετά την είσοδο αλλάξτε αυτούς τους κωδικούς.

Login Screen

Αυτή είναι η πρώτη σελίδα που θα δείτε.

ASM

Μπορείτε να αλλάξετε σε Ελληνικά. Δεν είναι όμως ολοκληρωμένη η μετάφραση. Μπορείτε να βοηθήσετε να μεταφραστεί όμως. Δημιουργήστε ένα λογαριασμό στο Launchpad και στη συνέχεια μπείτε στην διεύθυνση του Animal Shelter Manager. Εκεί μπορείτε πολύ εύκολα να βλέπετε την αγγλική λέξη και να την μεταφράζετε στα Ελληνικά. Αυτή είναι η σελίδα των μεταφράσεων.

Σε περίπτωση που θέλετε να δοκιμάσετε πως δουλεύει και τις λειτουργίες του, αλλά και να βλέπετε που υπάρχει το κείμενο που μεταφράζετε, δείτε το online demo.


Port forward και dyndns


Ωραία. Το έχουμε εγκαταστήσει και μπορούμε να το βλέπουμε τοπικά. Όμως τι γίνεται εάν θέλουμε να έχουμε πρόσβαση από απόσταση; Πχ εάν το έχουμε στο σπίτι και θέλουμε να έχουμε πρόσβαση από το ιατρείο (ή το αντίθετο).

Η λύση έρχεται με την "τεχνολογία" dynamic dns. Τι σημαίνει αυτό; Είναι υπηρεσίες που φτιάχνετε λογαριασμό και τον εισάγετε στο router σας στην αντίστοιχη κατηγορία. Τώρα, κάθε φορά που αλλάζει η IP του router σας (από τον πάροχο Ιντερνετ), το router στέλνει την νέα IP στην υπηρεσία dynamic dns. Υπάρχουν δωρεάν όπως η no-ip (σας στέλνει ενημερωτικό mail για να ενεργοποιήσετε ξανά τον λογαριασμό σας. Υπάρχουν άτομα που δημιουργούν λογαριασμό και δεν τον χρησιμοποιούν ποτέ, οπότε γι'αυτό κάνουν εκκαθάριση) και κάποιες επί πληρωμή. Εσείς πρώτα μπείτε στο router σας και ψάξτε εκεί που λέει DDNS ή κάτι αντίστοιχο. Δείτε ποιες υπηρεσίες υποστηρίζει το router σας, και δημιουργήστε λογαριασμό εκεί.

Δεύτερη κίνηση είναι να ανοίξετε την πόρτα 5000 (είναι η προεπιλεγμένη. Πρέπει να την ανοίξουμε στο router). Επειδή υπάρχουν πολλά είδη router που κυκλοφορούν στην Ελληνική αγορά, θα βρείτε τον τρόπο στο http://portforward.com/ (στα αριστερά έχει τα περισσότερα routers). Γενικά θα βρείτε ως Port Forward, NAT>Virtual Server, Application & Gaming>Port Range Forward κλπ.

Αφού βρείτε πως είναι στο δικό σας, πρέπει να ανοίξετε την πόρτα 5000 (Start-End κλπ) στην IP που δώσαμε παραπάνω (http://192.168.1.65).

Με την παραπάνω διαδικασία, θα δίνουμε στον browser μας http://ONOMA-APO-DYNDNS:5000 και θα μπαίνουμε στο ASM. Δεν μας ενδιαφέρει εάν αλλάξει η εξωτερική IP από τον πάροχο Ιντερνετ. Εμείς θα βλέπουμε κανονικά το πρόγραμμα.


Επιπρόσθετες ρυθμίσεις


Οι ρυθμίσεις αυτές στην ουσία δεν είναι απαραίτητες για την εύρυθμη λειτουργία του προγράμματος.

1. Αφού το Raspberry Pi θα χρησιμοποιηθεί ως "server", καλό θα ήταν να σβήσετε το γραφικό περιβάλλον που έχει εγκατεστημένο (LXDE). Αυτό μπορεί να γίνει με τις εντολές (αφού έχετε μπει με ssh):

sudo apt-get remove libx11-6 libgtk-3-common xkb-data lxde-icon-theme raspberrypi-artwork penguinspuzzle

και μετά

sudo apt-get autoremove

2. Το λειτουργικό σύστημα συνήθως πιάνει 2GB. Οπότε εάν έχετε κάρτα 8GB, τα υπόλοιπα 6GB θα είναι αδιάθετα. Σε περίπτωση που χρησιμοποιήσετε το εργαλείο NOOBS, σας δημιουργεί τα υπόλοιπα ως αποθηκευτικό χώρο (απ'όσο βλέπω στα βίντεο). Σε περίπτωση που το κάνετε με το χέρι, η διαδικασία που πρέπει να ακολουθήσετε είναι:

Τσεκάρετε τα partitions
cat /proc/partitions

Θα δείτε κάτι σαν το
major minor #blocks name

179 0 7761920 mmcblk0
179 1 57344 mmcblk0p1
179 2 1832960 mmcblk0p2
179 3 5867520 mmcblk0p3

Χρησιμοποιήστε το fdisk για να δημιουργήσετε το parititon.
sudo fdisk /dev/mmcblk0p3
πατήστε n
πατήστε p
πατήστε enter
πατήστε enter
πατήστε w

Διαμορφώστε το partition:
sudo mkfs.ext4 /dev/mmcblk0p3

Ξεκινήστε για να γίνεται προσάρτηση του partition:
sudo mkdir /media/data

Και προσθέστε το στο fstab για αυτόματη προσάρτηση κάθε φορά που γίνεται reboot.

sudo nano /etc/fstab

# προσθέστε την παρακάτω γραμμή
/dev/mmcblk0p3 /media/data defaults 1 0