Raspberry Pi | Φτιάχνουμε το δικό μας smart home server και ενώνουμε όλες τις έξυπνες συσκευές μας σε μία εφαρμογή!


Οι περισσότερες εταιρίες στις μέρες μας, προσφέρουν μαζί με τις ηλεκτρονικές συσκευές τους ένα είδος smart υπηρεσίας, που μας επιτρέπει να τις χειριζόμαστε από το κινητό τηλέφωνο. Αν όμως έχεις πολλές από αυτές θα καταλήξεις να χρησιμοποιείς τρεις, τέσσερις ή και περισσότερες εφαρμογές για να τις διαχειριστείς, ενώ δεν μπορείς σε καμία περίπτωση να τις κάνεις να αλληλεπιδράσουν μεταξύ τους. Η λύση σε αυτό το πρόβλημα βρίσκεται στο Home Assistant ή Hass.io, μία υπηρεσία που μας επιτρέπει να συνδυάσουμε όλες τις συσκευές σε μία μόνο εφαρμογή, άσχετα με τον κατασκευαστή τους!

Τι είναι το Home Assistant


Το Home Assistant είναι μία εφαρμογή ανοιχτού κώδικα, γραμμένη σε Python, η οποία μας επιτρέπει να συνδυάσουμε όλες τις έξυπνες συσκευές μας σε μία υπηρεσία. Με τη βοήθειά του μπορούμε να φτιάξουμε ένα hub το οποίο μας δίνει πληροφορίες για την κατάσταση του χώρου (θερμοκρασία, υγρασία, συσκευές που είναι σε λειτουργία, ανοιχτά παράθυρα κλπ.), μας επιτρέπει να χειριστούμε ζωντανά τις συσκευές μας και να φτιάξουμε αυτόματους κανόνες συνδυάζοντάς τις όλες μαζί.


Μας προσφέρει επίσης απόλυτη ελευθερία και δε μας "δένει" σε κάποιο εταιρικό οικοσύστημα. Για παράδειγμα μπορούμε να αγοράσουμε τους αισθητήρες της Xiaomi (M<br />i Home), τις κάμερες της Amazon (Ring) και τις λάμπες Philips (Hue) ή να φτιάξουμε δικές μας συσκευές (Arduino & Raspberry Pi) και να τις συνδυάσουμε όλες μαζί.

Διαφήμιση

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

Το παράδειγμα


Στον προσωπικό μου χώρο έχω μεταξύ άλλων τις εξής συσκευές:

  • 25 smart αισθητήρες και συσκευές της Xiaomi
  • 4 λάμπες Yeelight
  • 4 Raspberry Pi
  • 3 Chromecast
  • 1 λάμπα LiFX
  • 1 Samsung Smart TV
  • 1 Sony PS4
  • 1 Android TV-Box 
  • 1 Smart αφυγραντήρας

Για όλες αυτές τις συσκευές λοιπόν υπάρχει και μία ξεχωριστή εφαρμογή στο κινητό μου. Συνολικά έχω πάνω δέκα εφαρμογές για τις smart συσκευές μου, από τις οποίες πρέπει να ψάχνω κάθε φορά τη σωστή για να χειριστώ το "έξυπνο" σπίτι μου. Όχι και τόσο "έξυπνο". Το Home Assistant λοιπόν μου επιτρέπει να προσθέσω όλες τις παραπάνω υπηρεσίες σε μία μόνο εφαρμογή, να τις χειρίζομαι από ένα μενού και να φτιάξω αυτόματους κανόνες με τους οποίους θα αλληλεπιδρούν μεταξύ τους!


Μπορώ για παράδειγμα να παίζω έναν ήχο καλοσωρίσματος από το Android TV-Box, στα ηχεία που είναι συνδεδεμένα στο Chromecast, κάθε φορά που ο Xiaomi αισθητήρας της πόρτας, αντιλαμβάνεται ότι μπήκα στο σπίτι. Στην πράξη δηλαδή συνδυάζω τρεις υπηρεσίες (Xiaomi, Google, Android), κάτι που είναι αδύνατο με τις εργοστασιακές τους εφαρμογές (γίνεται όμως με άλλες υπηρεσίες όπως το IFTTT).

Πέρα από τις ευκολίες που μου προσφέρει, έχω απαλλαγεί από τον τραγικό server της Xiaomi (Mi Home), ο οποίος αρκετές φορές είναι πολύ αργός, ενώ κάποιες άλλες απλά δε λειτουργεί καθόλου. Απολαμβάνω επίσης ένα ακόμη bonus για εμένα προσωπικά που δε θέλω να φεύγουν τα προσωπικά μου δεδομένα σε τρίτους server, όπως εξηγήσαμε εκτενώς στη σειρά άρθρων "Φεύγω απ' την Google".

Αν δεν έχεις ψηθεί ακόμη, ρίξε μια ματιά στα επίσημα διαδραστικά demo του Home Assistant που βρίσκονται εδώ. Τώρα λοιπόν που ψήθηκες, έλα να δούμε πώς γίνεται η εγκατάσταση.

Διαφήμιση

Εγκατάσταση


Το Home Assistant μπορεί να εγκατασταθεί με διάφορους τρόπους, ο ευκολότερος όμως γίνεται μέσω του HassOS, μίας custom έκδοσης του Buildroot (Linux), πάνω στην οποία εγκαθίσταται το Docker και στη συνέχεια το Home Assistant. Εφόσον ο server μας θα είναι συνέχεια ανοιχτός, η καλύτερη λύση είναι να χρησιμοποιήσουμε ένα Raspberry Pi (το έχουμε δοκιμάσει με επιτυχία σε Pi 3B+ και Pi 4) που έχει χαμηλή κατανάλωση.

Το γεγονός ότι το Home Assistant τρέχει σε Docker container, μας δίνει τη δυνατότητα να το εγκαταστήσουμε σε οποιοδήποτε υπολογιστή, ασχέτως λειτουργικού συστήματος! Είναι πραγματικά πολύ έξυπνο αυτό που έχουν κάνει οι δημιουργοί του, καθώς ακόμη και αν τρέχεις το server σου σε Windows, μπορείς μέσω του Docker να τον μεταφέρεις σε Linux ή Mac OS με ευκολία! Αυτό μειώνει λοιπόν κατά πολύ τη συντήρηση του server.



Κατεβάζουμε λοιπόν το Hassio από εδώ και το φλασάρουμε στη microSD κάρτα του Raspberry Pi με το Etcher, με τον κλασικό τρόπο. Αν δε θέλουμε να ρυθμίσουμε στατική IP στο Pi και αν χρησιμοποιήσουμε καλώδιο ethernet για τη σύνδεση στο δίκτυό μας, δε χρειάζεται να κάνουμε κάτι άλλο. Βάζουμε λοιπόν την κάρτα στο Pi, το ενεργοποιούμε και περιμένουμε 20 περίπου λεπτά για να γίνει η αρχικοποίηση.

Για να μπούμε στο μενού του Home Assistant, ανοίγουμε τον browser σε οποιαδήποτε συσκευή βρίσκεται στο δίκτυό μας ή κατεβάζουμε την επίσημη Android εφαρμογή και δίνουμε την IP του Pi μαζί με την πόρτα 8123 στην οποία τρέχει το Home Assistant. Αν για παράδειγμα η IP μας είναι το 192.168.1.25, θα δώσουμε το εξής:

http://192.168.1.25:8123


Οι πρώτες ρυθμίσεις


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


Στη συνέχεια πρέπει να δώσουμε ένα όνομα στο σπίτι μας, να ορίσουμε την τοποθεσία του (αν θέλουμε) και να επιλέξουμε το μετρικό σύστημα μονάδων.


Στην επόμενη οθόνη το Home Assistant θα μας εμφανίσει τις υπηρεσίες / συσκευές που μπόρεσε να βρει στο δίκτυό μας. Τις προσθέτουμε και προχωράμε.


Φτάνουμε τέλος στη βασική οθόνη του Home Assistant στην οποία μπορούμε να προσθέσουμε τα widget για όλες μας τις συσκευές. Για να κάνουμε αναζήτηση και άλλων συσκευών, πατάμε "Ρυθμίσεις" από το πλαϊνό μενού και στη συνέχεια "Ενσωματώσεις" για να τις σετάρουμε.


Χειροκίνητη προσθήκη συσκευών


Μερικές συσκευές χρειάζονται έξτρα βήματα για να εγκατασταθούν και για αυτό θα πρέπει να τις προσθέσουμε χειροκίνητα. Πρέπει λοιπόν να αποθηκεύσουμε τις πληροφορίες τους στο αρχείο "configuration.yaml" και ο πιο εύκολος τρόπος για να το κάνουμε αυτό είναι να εγκαταστήσουμε το πρόσθετο "Configurator".


Πατάμε λοιπόν το "Supervisor" από το πλαϊνό μενού, πηγαίνουμε στην καρτέλα "Add-on Store" και επιλέγουμε το "Configurator". Πατάμε "Install" και περιμένουμε να εγκατασταθεί. Πατάμε "Start" για να ξεκινήσει η υπηρεσία και μετά "Open web UI" για να μπούμε σε αυτή.


Το Configurator είναι στην ουσία ένας διαχειριστής αρχείων που μας δίνει τη δυνατότητα να τα επεξεργαστούμε κιόλας. Μας βοηθάει λοιπόν να προσθέσουμε χειροκίνητα όλες τις υπηρεσίες που δεν μπορεί να βρει αυτόματα το Home Assistant. Η λίστα με όλες τις υπηρεσίες βρίσκεται εδώ, από την οποία θα εγκαταστήσουμε τις λάμπες Yeelight για να δώσουμε ένα παράδειγμα.


Στη σελίδα πληροφοριών του Yeelight που βρίσκεται εδώ, μπορούμε να δούμε όλες τις ρυθμίσεις που πρέπει να προσθέσουμε στο αρχείο "configuration.yaml". Το πιο απλό πράγμα που μπορούμε να κάνουμε σε αυτή την περίπτωση είναι να δηλώσουμε την υπηρεσία (yeelight), τη διεύθυνση IP της λάμπας (πχ.χ 192.168.1.15) και το όνομά της (Είσοδος). Αυτό που θα προσθέσουμε λοιπόν στο "configuration.yaml" θα μοιάζει κάπως έτσι:

# Λάμπες Yeelight
yeelight:
devices:
192.168.100.15:
name: Είσοδος
192.168.100.19:
name: Σαλόνι
192.168.100.24:
name: Δωμάτιο
192.168.100.16:
name: Σαλόνι

Pro tip:
Η παραπάνω διαδικασία προϋποθέτει ότι έχεις ήδη ρυθμίσει τις συσκευές σου στην εφαρμογή Yeelight. Μετά τη ρύθμιση μπορείς να απεγκαταστήσεις την εφαρμογή, αλλά όχι να διαγράψεις το λογαριασμό σου ή να αφαιρέσεις τις λάμπες σου από αυτόν. Μπορείς λοιπόν να προσθέσεις τις συσκευές σου απ' ευθείας στο Home Assistant, χρησιμοποιώντας έναν MQTT broker.

Προσθήκη widget στο μενού


Τώρα που προσθέσαμε την υπηρεσία μας, μπορούμε να φτιάξουμε μία κάρτα με κουμπιά, για να ανοίγουμε τα φώτα μας από το μενού. Επιστρέφουμε λοιπόν στην κεντρική οθόνη, πατάμε το εικονίδιο των ρυθμίσεων πάνω δεξιά και επιλέγουμε "Ρύθμιση UI". Πατάμε το πορτοκαλί εικονίδιο της προσθήκης κάτω δεξιά και εκεί θα δούμε μία λίστα με κάρτες. Επειδή θέλουμε να προσθέσουμε φώτα, επιλέγουμε την κάρτα με το όνομα "Φως".


Στο πεδίο "Οντότητα" επιλέγουμε τη λάμπα την οποία θέλουμε να χειριζόμαστε από τη συγκεκριμένη κάρτα. Μπορούμε προαιρετικά να αλλάξουμε το όνομα της συσκευής και το προεπιλεγμένο εικονίδιο, ενώ αν έχουμε εγκαταστήσει έξτρα θέματα στο Home Assistant, μπορούμε να τα εφαρμόσουμε αποκλειστικά στη συγκεκριμένη κάρτα, για να της δώσουμε έμφαση.


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


Κάπως έτσι λοιπόν μπορούμε να προσθέσουμε όλες τις συσκευές μας στο αρχείο "configuration.yaml" και στη συνέχεια να φτιάξουμε ένα widget για να τις χειριζόμαστε από το κεντρικό μενού.

Προσθήκη αυτοματισμών


Το έξυπνο σπίτι πρέπει να κάνει και κάποια πράγματα μόνο του, ειδάλλως δεν έχει και τόσο μεγάλη ουσία. Μπορούμε λοιπόν να φτιάξουμε μερικούς κανόνες οι οποίοι θα μας απαλλάξουν από καθημερινές εργασίες, όπως για παράδειγμα το άναμμα των φώτων όταν πέφτει το σκοτάδι. Πατάμε λοιπόν "Ρυθμίσεις" και στη συνέχεια "Αυτοματισμοί".

Δημιουργούμε ένα νέο κανόνα και στην περίπτωσή μας τον ονομάζουμε "Νυχτερινό φως". Στα "Εναύσματα" πρέπει να προσθέσουμε ένα γεγονός το οποίο θα ξεκινάει τον αυτοματισμό μας. Στην περίπτωσή μας η δύση του ηλίου.


Τώρα πάμε στις "Ενέργειες" για να δηλώσουμε τί θέλουμε να συμβαίνει όταν δύει ο ήλιος. Θέλουμε λοιπόν να ανάβει αυτόματα το φως, οπότε καλούμε την υπηρεσία "light.turn_on" και δηλώνουμε τη συσκευή / οντότητα που θέλουμε να ανάβει. Στην περίπτωσή μας είναι η συσκευή "light.gateway_xxx". Αποθηκεύουμε τον αυτοματισμό μας και περιμένουμε τη δύση του ηλίου για να απολαύσουμε το αυτόματο άναμμα των φώτων!

Προσθήκη θεμάτων (dark theme)


Το κλασικό theme του Home Assistant είναι αυτή η μίξη γαλάζιου και λευκού που βλέπουμε στις εικόνες. Μπορούμε όμως να εγκαταστήσουμε και άλλα θέματα, όπως για παράδειγμα ένα σκούρο, που είναι και της μόδας. Οι ρυθμίσεις των θεμάτων αποθηκεύονται στο αντίστοιχο αρχείο "themes.yaml" το οποίο θα βρούμε στον "Configurator".


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


Αποθηκεύουμε λοιπόν τον κώδικα που ακολουθεί στο "themes.yaml" και τον ενεργοποιούμε πατώντας το όνομα χρήστη κάτω αριστερά και επιλέγοντας "Dark - Green" στο πεδίο "Θέμα":

Dark - Green:
### Main Interface Colors ###
primary-color: "#03B14B"
light-primary-color: "#47FC92"
primary-background-color: "#1F1F28"
secondary-background-color: var(--primary-background-color)
divider-color: "#2F2F3D"
### Text ###
primary-text-color: "#FFFFFF"
secondary-text-color: "#47FC92"
text-primary-color: "#FFFFFF"
disabled-text-color: "#464653"
### Sidebar Menu ###
sidebar-icon-color: "#B6B6C1"
sidebar-text-color: "#F1F1F1"
sidebar-selected-background-color: var(--primary-background-color)
sidebar-selected-icon-color: "#47FC92"
sidebar-selected-text-color: var(--sidebar-selected-icon-color)
### States and Badges ###
state-icon-color: "#04E762"
state-icon-active-color: "#FBD150"
state-icon-unavailable-color: var(--disabled-text-color)
### Sliders ###
paper-slider-knob-color: "#04E762"
paper-slider-knob-start-color: var(--paper-slider-knob-color)
paper-slider-pin-color: var(--paper-slider-knob-color)
paper-slider-active-color: var(--paper-slider-knob-color)
paper-slider-secondary-color: var(--light-primary-color)
### Labels ###
label-badge-background-color: "#464653"
label-badge-text-color: "#FFFFFF"
label-badge-red: "#343443"
### Cards ###
paper-card-background-color: "#23232E"
paper-listbox-background-color: var(--primary-background-color)
### Toggles ###
paper-toggle-button-checked-button-color: "#04E762"
paper-toggle-button-checked-bar-color: "#47FC92"
paper-toggle-button-unchecked-button-color: var(--paper-toggle-button-checked-button-color)
paper-toggle-button-unchecked-bar-color: "#343443"
### Table row ###
table-row-background-color: var(--primary-background-color)
table-row-alternative-background-color: var(--secondary-background-color)

Εγκατάσταση περισσότερων Add-on


Είναι πολύ σημαντικό το γεγονός ότι το Home Assistant τρέχει σε Docker container, γιατί αυτό μας επιτρέπει να εγκαταστήσουμε και άλλες υπηρεσίες με τρομερή ευκολία. Μπορούμε για παράδειγμα να εγκαταστήσουμε το "Portainer" μέσα από το οποίο θα κατεβάσουμε άλλα container όπως για παράδειγμα το Nextcloud αν θέλουμε να κάνουμε τη συσκευή μας και cloud server.


Με αυτό το γνώμονα η κοινότητα του Home Assistant έχει μεταφέρει πολλές γνωστές υπηρεσίες στα "Add-on" του, μετατρέποντάς τις σε "image". Μπορούμε λοιπόν με ελάχιστη προσπάθεια να εγκαταστήσουμε για παράδειγμα το Pi-hole, μία υπηρεσία η οποία κόβει όλες τις διαφημίσεις στο δίκτυό μας!


Το Pi-hole όπως και όλα τα Add-on του Home Assistant τρέχουν μέσα στο δικό του container, οπότε αν το αποφασίσουμε μπορούμε εύκολα και γρήγορα να τα διαγράψουμε όλα, χωρίς να επηρεάσουμε το υπόλοιπο λειτουργικό μας σύστημα. Αυτή είναι στην ουσία και η μαγκιά του Docker, το οποίο όπως είπαμε τρέχει σε όλα τα λειτουργικά συστήματα.

Εν κατακλείδι


Είδαμε λοιπόν πώς μπορούμε να μετατρέψουμε το Raspberry Pi σε smart home server για να χειριζόμαστε το σπίτι μας από μία μόνο εφαρμογή. Κερδίσαμε επίσης έξτρα ταχύτητα και ασφάλεια, καθώς μιλάμε για έναν τοπικό server, ενώ με την ιδιαιτερότητα των Add-on και του Docker που είπαμε πιο πάνω, μπορούμε να επεκτείνουμε εύκολα και γρήγορα τις λειτουργίες του.

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

Σχόλια

Διαβάστε επίσης...

Android Basics | Πώς λειτουργούν και σε τι χρησιμεύουν οι ρυθμίσεις στο ''Δίκτυο και διαδίκτυο''

Smart Home | Κάμερα ασφαλείας με μπαταρία για να παρακολουθείς ακόμη και χώρους που δεν έχουν ηλεκτροδότηση!

Android | Παίξε τα παιχνίδια του PlayStation στο Android smartphone ή tablet σου με το PS4 Remote Play!

3D Printing | Δέκα χρήσιμα πράγματα που μπορείς να εκτυπώσεις για το γραφείο σου

Οδηγός αγοράς | Τα καλύτερα Android smartphone του 2018 για το 2019

Μάθε παιδί μου Linux | Οι βασικές εντολές του τερματικού που πρέπει όλοι να γνωρίζουμε

Raspberry Pi | Μετατρέπουμε το Pi σε Chromecast και προβάλουμε τα βίντεό μας στην τηλεόραση

Raspberry Pi 4 | Τρομερά αναβαθμισμένο με 4GB RAM και υποστήριξη για διπλή 4K οθόνη!

Mr. Robot | Οι 12 φορές που η τηλεοπτική σειρά μας δίδαξε πόσο ευάλωτοι είμαστε στην εποχή του ίντερνετ