Το Lytko ενώνει

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

Το Lytko ενώνει

Σχετικά με τον αυτοματισμό

Συμβατικά, όλοι οι αυτοματισμοί μπορούν να χωριστούν σε τρεις κατηγορίες:
Κατηγορία 1 — ξεχωριστές «έξυπνες» συσκευές. Αγοράζετε λαμπτήρες, τσαγιέρες κ.λπ. από διαφορετικούς κατασκευαστές. Πλεονεκτήματα: Κάθε συσκευή διευρύνει τις δυνατότητες και αυξάνει την άνεση. Μειονεκτήματα: Κάθε νέος κατασκευαστής απαιτεί τη δική του εφαρμογή. Τα πρωτόκολλα συσκευών διαφορετικών κατασκευαστών συχνά δεν είναι συμβατά μεταξύ τους.

Κατηγορία 2 — εγκατάσταση υπολογιστή με μία πλακέτα ή συμβατό με x86. Αυτό καταργεί τους περιορισμούς στην υπολογιστική ισχύ και το MajorDoMo ή οποιαδήποτε άλλη διανομή διακομιστή για τη διαχείριση ενός έξυπνου σπιτιού εγκαθίσταται σε αυτό το μηχάνημα. Έτσι, συσκευές από τους περισσότερους κατασκευαστές συνδέονται σε έναν ενιαίο χώρο πληροφοριών. Εκείνοι. εμφανίζεται ο δικός σας διακομιστής για ένα έξυπνο σπίτι. Πλεονεκτήματα: συμβατότητα κάτω από ένα ενιαίο κέντρο, το οποίο παρέχει βελτιωμένες δυνατότητες διαχείρισης. Μειονεκτήματα: εάν ο διακομιστής αποτύχει, ολόκληρο το σύστημα επιστρέφει στο στάδιο 1, π.χ. κατακερματίζεται ή γίνεται άχρηστο.

Κατηγορία 3 - η πιο σκληροπυρηνική επιλογή. Στο στάδιο της επισκευής, όλες οι επικοινωνίες τοποθετούνται και όλα τα συστήματα αντιγράφονται. Πλεονεκτήματα: όλα φτάνουν στην τελειότητα και τότε το σπίτι γίνεται πραγματικά έξυπνο. Μειονεκτήματα: εξαιρετικά ακριβό σε σύγκριση με τις κατηγορίες 1 και 2, η ανάγκη να σκεφτείτε τα πάντα εκ των προτέρων και να λάβετε υπόψη κάθε μικρή λεπτομέρεια.

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

Υπάρχει όμως μια επιλογή που μπορεί να ονομαστεί κατανεμημένο σύστημα: κάθε μεμονωμένη συσκευή θα είναι ταυτόχρονα διακομιστής και πελάτης. Ουσιαστικά, αυτή είναι μια προσπάθεια να πάρουμε και να συνδυάσουμε την επιλογή 1 και την επιλογή 2. Πάρτε όλα τα πλεονεκτήματα τους και εξαλείψτε τα μειονεκτήματα, για να πιάσετε τη χρυσή τομή.

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

Ας δούμε την ενσωμάτωση στο σύστημά μας χρησιμοποιώντας ένα παράδειγμα.

Ας φανταστούμε ότι έχουμε 8 μονάδες Sonoff στο δίκτυό μας. Για ορισμένους χρήστες, ο έλεγχος μέσω του cloud Sonoff (κατηγορία 1) θα είναι επαρκής. Ορισμένοι θα αρχίσουν να χρησιμοποιούν υλικολογισμικό τρίτων κατασκευαστών και θα μετακινηθούν ομαλά στην κατηγορία 2. Το μεγαλύτερο μέρος του υλικολογισμικού τρίτων λειτουργεί με την ίδια αρχή: μεταφορά δεδομένων σε διακομιστή MQTT. Το OpenHub, το Majordomo ή οποιοσδήποτε άλλος εξυπηρετεί έναν σκοπό - να ενώσει ανόμοιες συσκευές σε έναν ενιαίο χώρο πληροφοριών που βρίσκεται είτε στο Διαδίκτυο είτε σε ένα τοπικό δίκτυο. Επομένως, η παρουσία διακομιστή είναι υποχρεωτική. Εδώ προκύπτει το κύριο πρόβλημα - εάν ο διακομιστής αποτύχει, ολόκληρο το σύστημα σταματά να λειτουργεί αυτόνομα. Για να αποφευχθεί αυτό, τα συστήματα γίνονται πιο περίπλοκα, προστίθενται μέθοδοι χειροκίνητου ελέγχου που επαναλαμβάνουν την αυτοματοποίηση σε περίπτωση αποτυχίας διακομιστή.

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

Ας επιστρέψουμε στο σκεπτικό πείραμα. Ας πάρουμε ξανά τις ίδιες 8 μονάδες Sonoff και ας εγκαταστήσουμε το υλικολογισμικό Lytko σε αυτές. Όλα τα υλικολογισμικά Lytko έχουν τη λειτουργία SSDP. Το SSDP είναι ένα πρωτόκολλο δικτύου που βασίζεται στη σουίτα πρωτοκόλλων Διαδικτύου για διαφήμιση και ανακάλυψη υπηρεσιών δικτύου. Η απάντηση σε ένα αίτημα μπορεί να είναι είτε τυπική είτε εκτεταμένη. Εκτός από τις τυπικές λειτουργίες, συμπεριλάβαμε σε αυτήν την απάντηση τη δημιουργία λίστας συσκευών στο δίκτυο. Έτσι, οι ίδιες οι συσκευές βρίσκουν η μία την άλλη και καθεμία από αυτές θα έχει μια τέτοια λίστα. Παράδειγμα φύλλου SSDP:

"ssdpList": 
	{
		"id": 94967291,  
		"ip": "192.168.x.x",
                "type": "thermostat"
	}, 
	{
		"id": 94967282,
		"ip": "192.168.x.x",
                "type": "thermostat"
	}

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

Το Lytko ενώνει

Τι γίνεται όμως αν άλλοι ραδιοαισθητήρες συνδέονται στο esp8266/esp32 μέσω cc2530 (ZigBee) ή nrf24 (MySensors);

Σχετικά με έργα

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

Παρακάτω είναι έργα που με τον ένα ή τον άλλο τρόπο προσπαθούν να αλλάξουν την κατάσταση με την ασυμβατότητα διαφορετικών κατασκευαστών μεταξύ τους. Αυτό είναι, για παράδειγμα, SLS Gateway, MySensors ή ZESP32. ZigBee2MQTT είναι συνδεδεμένο με διακομιστή MQTT, επομένως δεν είναι κατάλληλο για το παράδειγμα.

Μια επιλογή για την υλοποίηση του MySensors είναι μια πύλη που βασίζεται στο ESP8266. Τα υπόλοιπα παραδείγματα βρίσκονται στο ESP32. Και σε αυτά μπορείτε να εφαρμόσετε την αρχή λειτουργίας μας για τον εντοπισμό και τη δημιουργία λίστας συσκευών.

Ας κάνουμε ένα άλλο πείραμα σκέψης. Έχουμε μια πύλη ZESP32 ή SLS ή MySensors. Πώς μπορούν να συνδυαστούν σε έναν ενιαίο χώρο πληροφοριών; Θα προσθέσουμε τη βιβλιοθήκη πρωτοκόλλου SSDP στις τυπικές λειτουργίες αυτών των πυλών. Κατά την πρόσβαση σε αυτόν τον ελεγκτή μέσω SSDP, θα προσθέσει μια λίστα συσκευών που είναι συνδεδεμένες σε αυτόν στην τυπική απόκριση. Με βάση αυτές τις πληροφορίες, το πρόγραμμα περιήγησης θα δημιουργήσει μια σελίδα. Σε γενικές γραμμές θα μοιάζει με αυτό:

Το Lytko ενώνει
Διασύνδεση Ιστού

Το Lytko ενώνει
Εφαρμογή PWA

"ssdpList": 
{
   "id": 94967291, // уникальный идентификатор устройства
   "ip": "192.168.x.x", // ip адрес в сети
   "type": "thermostat" // тип устройства
},
{
   "id": 94967292,
   "ip": "192.168.x.x",
   "type": "thermostat"
},
{
   "id": 94967293,
   "ip": "192.168.x.x",
   "type": "thermostat"
},
{  
   "id": 13587532, 
   "type": "switch"  
},
{  
   "id": 98412557, 
   "type": "smoke"
},
{  
   "id": 57995113, 
   "type": "contact_sensor"
},
{  
   "id": 74123668,
   "type": "temperature_humidity_pressure_sensor"
},
{
    "id": 74621883, 
    "type": "temperature_humidity_sensor"
}

Το παράδειγμα δείχνει ότι οι συσκευές προστίθενται ανεξάρτητα η μία από την άλλη. Συνδέονται 3 θερμοστάτες με τις δικές τους διευθύνσεις IP και 5 διαφορετικοί αισθητήρες με μοναδικά αναγνωριστικά. Εάν ο αισθητήρας είναι συνδεδεμένος σε δίκτυο Wi-Fi, θα έχει τη δική του IP· εάν είναι συνδεδεμένος σε πύλη, τότε η διεύθυνση IP της συσκευής θα είναι η διεύθυνση IP της πύλης.

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

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

Η πρώτη προσπάθεια εφαρμογής αυτής της προσέγγισης ήταν μια εφαρμογή PWA. Αυτό σας επιτρέπει να αποθηκεύσετε μια βάση μπλοκ στη συσκευή του χρήστη και να ζητήσετε μόνο τα απαραίτητα δεδομένα. Αλλά λόγω των ιδιαιτεροτήτων της δομής, αυτή η επιλογή είναι ελλιπής. Και υπάρχει μόνο μία διέξοδος - μια εγγενής εφαρμογή για Android και IOS, η οποία αυτή τη στιγμή βρίσκεται υπό ενεργό ανάπτυξη. Από προεπιλογή, η εφαρμογή θα λειτουργεί μόνο στο εσωτερικό δίκτυο. Εάν είναι απαραίτητο, μπορείτε να μεταφέρετε τα πάντα σε εξωτερικό έλεγχο. Έτσι, όταν ο χρήστης αποχωρεί από το τοπικό δίκτυο, η εφαρμογή μεταβαίνει αυτόματα στο cloud.

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

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

Σχετικά με τον θερμοστάτη

Ας δούμε το σύστημα ελέγχου χρησιμοποιώντας τον θερμοστάτη μας ως παράδειγμα.

Υπό την προϋπόθεση:

  1. Έλεγχος θερμοκρασίας για κάθε θερμοστάτη (εμφανίζεται ως ξεχωριστό μπλοκ).
  2. Ρύθμιση του προγράμματος λειτουργίας του θερμοστάτη (πρωί, απόγευμα, βράδυ, βράδυ).
  3. Επιλογή δικτύου Wi-Fi και σύνδεση μιας συσκευής σε αυτό.
  4. Ενημέρωση της συσκευής "over the air"
  5. Ρύθμιση του MQTT.
  6. Διαμορφώστε το δίκτυο στο οποίο είναι συνδεδεμένη η συσκευή.

Το Lytko ενώνει

Εκτός από τον έλεγχο μέσω της διεπαφής ιστού, παρέχουμε την κλασική - κάνοντας κλικ στην οθόνη. Υπάρχει μια οθόνη Nextion NX3224T024 2.4 ιντσών στο σκάφος. Η επιλογή έπεσε πάνω του λόγω της ευκολίας εργασίας με τη συσκευή. Αλλά αναπτύσσουμε τη δική μας οθόνη που βασίζεται στο STM32. Η λειτουργικότητά του δεν είναι χειρότερη από αυτή του Nextion, αλλά θα κοστίζει λιγότερο, κάτι που θα έχει θετικό αντίκτυπο στην τελική τιμή της συσκευής.

Το Lytko ενώνει

Όπως κάθε οθόνη θερμοστάτη που σέβεται τον εαυτό του, το Nextion μας μπορεί:

  • ρυθμίστε τη θερμοκρασία που απαιτείται από τον χρήστη (χρησιμοποιώντας τα κουμπιά στα δεξιά).
  • ενεργοποίηση και απενεργοποίηση της προγραμματισμένης λειτουργίας λειτουργίας (κουμπί H).
  • λειτουργία ρελέ οθόνης (βέλος στα αριστερά).
  • διαθέτει προστασία παιδιών (τα φυσικά κλικ μπλοκάρονται μέχρι να αφαιρεθεί η κλειδαριά).
  • εμφανίζει την ισχύ του σήματος WiFi.

Επιπλέον, χρησιμοποιώντας την οθόνη μπορείτε:

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

Το Lytko ενώνει

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

Το Lytko ενώνει

Επίδειξη εργασίας με την οθόνη:

Το Lytko ενώνει

Έχουμε αναπτύξει δοκιμαστική σελίδα με τρεις συνδεδεμένους θερμοστάτες.

Μπορείτε να ρωτήσετε, "Τι το ιδιαίτερο έχει ο θερμοστάτης σας;" Τώρα στην αγορά υπάρχουν πολλοί θερμοστάτες με λειτουργία Wi-Fi, προγραμματισμένη λειτουργία και έλεγχο αφής. Και οι λάτρεις έχουν γράψει ενότητες για να αλληλεπιδρούν με τα πιο δημοφιλή συστήματα έξυπνων σπιτιών (Majordomo, HomeAssistant, κ.λπ.).

Ο θερμοστάτης μας είναι συμβατός με τέτοια συστήματα και έχει όλα τα παραπάνω. Το χαρακτηριστικό όμως είναι ότι ο θερμοστάτης βελτιώνεται συνεχώς, χάρη στην ευελιξία του συστήματος. Με κάθε ενημέρωση η λειτουργικότητα θα επεκτείνεται. Στην τυπική μέθοδο διαχείρισης συστήματος (σύμφωνα με ένα χρονοδιάγραμμα), θα προσθέσουμε μια προσαρμοστική. Η εφαρμογή σάς επιτρέπει να αποκτήσετε τη γεωγραφική θέση του χρήστη. Χάρη σε αυτό, το σύστημα θα αλλάζει δυναμικά τους τρόπους λειτουργίας ανάλογα με τη θέση του. Και η μονάδα καιρού θα σας επιτρέψει να προσαρμοστείτε στις καιρικές συνθήκες.

Και επεκτασιμότητα. Οποιοσδήποτε μπορεί να αντικαταστήσει τον υπάρχοντα συμβατικό θερμοστάτη του με τον δικό μας. Με ελάχιστη προσπάθεια. Επιλέξαμε 5 από τους πιο δημοφιλείς αισθητήρες της αγοράς και προσθέσαμε υποστήριξη για αυτούς. Αλλά ακόμα κι αν ο αισθητήρας έχει αποκλειστικά χαρακτηριστικά, ο χρήστης θα μπορεί να τον συνδέσει στον θερμοστάτη μας. Για να το κάνετε αυτό, θα χρειαστεί να βαθμονομήσετε τον θερμοστάτη ώστε να λειτουργεί με έναν συγκεκριμένο αισθητήρα. Θα δώσουμε οδηγίες.

Όταν συνδέετε έναν θερμοστάτη ή οποιαδήποτε άλλη συσκευή, εμφανίζεται ταυτόχρονα παντού: τόσο στη διεπαφή ιστού όσο και στην εφαρμογή PWA. Η προσθήκη μιας συσκευής πραγματοποιείται αυτόματα: πρέπει απλώς να τη συνδέσετε στο δίκτυο Wi-Fi.

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

Για όσους ενδιαφέρονται, τα κοινωνικά μας δίκτυα: Telegram, Instagram, News Telegram, VK, Facebook.

Mail: [προστασία μέσω email]

PS Δεν σας ενθαρρύνουμε να εγκαταλείψετε τον διακομιστή. Υποστηρίζουμε επίσης έναν διακομιστή MQTT και έχουμε το δικό μας cloud. Στόχος μας είναι να φέρουμε τη σταθερότητα και την αξιοπιστία του συστήματος σε ένα εντελώς νέο επίπεδο. Έτσι ώστε ο διακομιστής να μην είναι αδύναμο σημείο, αλλά να συμπληρώνει τη λειτουργικότητα και να κάνει το σύστημα πιο βολικό.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο