Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

Σήμερα, χάρη στην ταχεία ανάπτυξη της μικροηλεκτρονικής, των καναλιών επικοινωνίας, των τεχνολογιών του Διαδικτύου και της Τεχνητής Νοημοσύνης, το θέμα των έξυπνων κατοικιών γίνεται όλο και πιο επίκαιρο. Το ανθρώπινο σπίτι έχει υποστεί σημαντικές αλλαγές από τη Λίθινη Εποχή και στην εποχή της Βιομηχανικής Επανάστασης 4.0 και του Διαδικτύου των Πραγμάτων, έχει γίνει άνετο, λειτουργικό και ασφαλές. Έρχονται λύσεις στην αγορά που μετατρέπουν ένα διαμέρισμα ή μια εξοχική κατοικία σε πολύπλοκα συστήματα πληροφοριών που ελέγχονται από οπουδήποτε στον κόσμο χρησιμοποιώντας ένα smartphone. Επιπλέον, για την αλληλεπίδραση ανθρώπου-μηχανής, δεν απαιτείται πλέον γνώση γλωσσών προγραμματισμού - χάρη στους αλγόριθμους αναγνώρισης και σύνθεσης ομιλίας, ένα άτομο μιλά με ένα έξυπνο σπίτι στη μητρική του γλώσσα.

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

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

Έξυπνος οικιακός εξοπλισμός

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

  1. αισθητήρες που μετρούν διάφορες παραμέτρους του εξωτερικού περιβάλλοντος.
  2. ενεργοποιητές που δρουν σε εξωτερικά αντικείμενα.
  3. έναν ελεγκτή που εκτελεί υπολογισμούς σύμφωνα με τις μετρήσεις των αισθητήρων και την υποκείμενη λογική και εκδίδει εντολές στους ενεργοποιητές.

Το παρακάτω σχήμα δείχνει ένα διάγραμμα ενός έξυπνου σπιτιού, το οποίο περιέχει αισθητήρες διαρροής νερού (1) στο μπάνιο, αισθητήρες θερμοκρασίας (2) και φωτισμού (3) στην κρεβατοκάμαρα, μια έξυπνη πρίζα (4) στην κουζίνα και μια παρακολούθηση βίντεο κάμερα (5) στο διάδρομο.

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

Επί του παρόντος, χρησιμοποιούνται ευρέως ασύρματοι αισθητήρες που λειτουργούν στα πρωτόκολλα RF433, Z-Wave, ZigBee, Bluetooth και WiFi. Τα κύρια πλεονεκτήματά τους είναι η ευκολία εγκατάστασης και χρήσης, καθώς και το χαμηλό κόστος και η αξιοπιστία. Οι κατασκευαστές προσπαθούν να φέρουν τις συσκευές τους στη μαζική αγορά και να τις καταστήσουν διαθέσιμες στον μέσο χρήστη.

Οι αισθητήρες και οι ενεργοποιητές, κατά κανόνα, συνδέονται μέσω ασύρματης διεπαφής στον ελεγκτή έξυπνου σπιτιού (6) - έναν εξειδικευμένο μικροϋπολογιστή που συνδυάζει όλες αυτές τις συσκευές σε ένα ενιαίο δίκτυο και τις ελέγχει.

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

Για να συνδέσετε τον ελεγκτή έξυπνου σπιτιού στο παγκόσμιο δίκτυο, μπορεί να χρησιμοποιηθεί ένας κανονικός δρομολογητής Διαδικτύου (7), ο οποίος έχει γίνει εδώ και καιρό μια οικεία οικιακή συσκευή σε κάθε σπίτι. Υπάρχει ένα άλλο επιχείρημα υπέρ του ελεγκτή έξυπνου σπιτιού - εάν χαθεί η σύνδεση με το Διαδίκτυο, τότε το έξυπνο σπίτι θα συνεχίσει να λειτουργεί κανονικά χάρη στο λογικό μπλοκ που είναι αποθηκευμένο μέσα στον ελεγκτή και όχι στην υπηρεσία cloud.

έξυπνο χειριστήριο σπιτιού

Ο ελεγκτής για το σύστημα έξυπνου σπιτιού cloud που συζητείται σε αυτό το άρθρο έχει αναπτυχθεί με βάση έναν μικροϋπολογιστή μίας πλακέτας Raspberry Pi 3 μοντέλο B+, το οποίο κυκλοφόρησε τον Μάρτιο του 2018 και διαθέτει αρκετούς πόρους και επιδόσεις για έξυπνες εργασίες στο σπίτι. Περιλαμβάνει έναν τετραπύρηνο επεξεργαστή Cortex-A53 σε αρχιτεκτονική 64-bit ARMv8-A, χρονισμένο στα 1.4 GHz, καθώς και 1 GB μνήμης RAM, Wi-Fi 802.11ac, Bluetooth 4.2 και προσαρμογέα Ethernet gigabit που λειτουργεί μέσω USB 2.0 λεωφορείο.

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

Η συναρμολόγηση του ελεγκτή είναι πολύ απλή - ο μικροϋπολογιστής (1) είναι εγκατεστημένος σε μια πλαστική θήκη (2), στη συνέχεια μια κάρτα μνήμης microSD 8 GB με λογισμικό (3) και ένας ελεγκτής δικτύου USB Z-Wave (4) τις κατάλληλες υποδοχές. Ο έξυπνος οικιακός ελεγκτής συνδέεται στο ρεύμα μέσω ενός μετασχηματιστή ρεύματος 5V, 2.1A (5) και ενός καλωδίου USB-micro-USB (6). Κάθε ελεγκτής έχει έναν μοναδικό αριθμό αναγνώρισης, ο οποίος είναι γραμμένος στο αρχείο διαμόρφωσης κατά την πρώτη εκκίνηση και απαιτείται για την αλληλεπίδραση με τις υπηρεσίες έξυπνου σπιτιού cloud.

Το λογισμικό ελεγκτή έξυπνου σπιτιού αναπτύχθηκε από τον συγγραφέα αυτού του άρθρου με βάση το λειτουργικό σύστημα Linux Raspbian Stretch. Αποτελείται από τα ακόλουθα κύρια υποσυστήματα:

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

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

Βάση δεδομένων Ο έξυπνος οικιακός ελεγκτής υλοποιείται με βάση ένα ενσωματωμένο DBMS SQLite και είναι ένα αρχείο στην κάρτα SD με λογισμικό συστήματος. Χρησιμεύει ως αποθήκευση διαμόρφωσης ελεγκτή — πληροφορίες σχετικά με τον συνδεδεμένο εξοπλισμό και την τρέχουσα κατάστασή του, ένα μπλοκ λογικών κανόνων παραγωγής, καθώς και πληροφορίες που απαιτούν ευρετηρίαση (για παράδειγμα, ονόματα αρχείων τοπικών αρχείων βίντεο). Κατά την επανεκκίνηση του ελεγκτή, αυτές οι πληροφορίες αποθηκεύονται, γεγονός που καθιστά δυνατή την επαναφορά της λειτουργικότητας του ελεγκτή σε περίπτωση διακοπής ρεύματος.

GUI Ο έξυπνος οικιακός ελεγκτής έχει αναπτυχθεί σε PHP 7 χρησιμοποιώντας ένα μικροπλαίσιο Λεπτός. Ο διακομιστής web είναι υπεύθυνος για την εκτέλεση της εφαρμογής. lighttpd, το οποίο χρησιμοποιείται συχνά σε ενσωματωμένες συσκευές λόγω της καλής απόδοσης και των χαμηλών απαιτήσεων πόρων.

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες
(κάντε κλικ στην εικόνα για να ανοίξει σε μεγαλύτερη ανάλυση)

Η κύρια λειτουργία του GUI είναι να συνδέει τον έξυπνο οικιακό εξοπλισμό (κάμερες IP και αισθητήρες) στον ελεγκτή. Η εφαρμογή web διαβάζει τη διαμόρφωση και την τρέχουσα κατάσταση του ελεγκτή και των συσκευών που είναι συνδεδεμένες σε αυτόν από τη βάση δεδομένων SQLite. Για να αλλάξετε τη διαμόρφωση του ελεγκτή, στέλνει εντολές ελέγχου σε μορφή JSON μέσω του RESTful API της διαδικασίας διακομιστή.

Διαδικασία διακομιστή

Διαδικασία διακομιστή - ένα βασικό στοιχείο που εκτελεί όλες τις κύριες εργασίες για την αυτοματοποίηση των διαδικασιών πληροφοριών που αποτελούν τη βάση ενός έξυπνου σπιτιού: λήψη και επεξεργασία αισθητηριακών δεδομένων, έκδοση ενεργειών ελέγχου ανάλογα με την υποκείμενη λογική. Ο σκοπός της διαδικασίας διακομιστή είναι η αλληλεπίδραση με τον έξυπνο οικιακό εξοπλισμό, η εκτέλεση λογικών κανόνων παραγωγής, η λήψη και η επεξεργασία εντολών από τη γραφική διεπαφή και το cloud. Η διαδικασία διακομιστή στον εξεταζόμενο ελεγκτή έξυπνου σπιτιού υλοποιείται ως εφαρμογή πολλαπλών νημάτων που αναπτύχθηκε σε C ++ και εκκινήθηκε ως ξεχωριστή υπηρεσία systemd λειτουργικό σύστημα Linux Raspbian.

Τα κύρια μπλοκ της διαδικασίας διακομιστή είναι:

  1. Διαχειριστής μηνυμάτων.
  2. Διακομιστής κάμερας IP.
  3. Διακομιστής συσκευής Z-Wave.
  4. Διακομιστής λογικών κανόνων παραγωγής;
  5. Βάση δεδομένων διαμόρφωσης του ελεγκτή και μπλοκ λογικών κανόνων.
  6. RESTful διακομιστής API για αλληλεπίδραση με τη γραφική διεπαφή.
  7. MQTT client για αλληλεπίδραση με το cloud.

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

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

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

Τύπος συσκευής
πρωτόκολλο
Τύπος μηνύματος
κατάσταση συσκευής
εντολή

φωτογραφική μηχανή
onvif
Δεδομένα αισθητήρα
on
ροή (Ενεργοποίηση/Απενεργοποίηση)

αισθητήρα
zwave
εντολή
off
εγγραφή (Ενεργοποίηση/Απενεργοποίηση)

effector
mqtt
businessLogicRule
ροή (Ενεργοποίηση/Απενεργοποίηση)
συσκευή (Προσθήκη/Αφαίρεση)

επαγγελματική λογική
configurationData
εγγραφή (Ενεργοποίηση/Απενεργοποίηση)

bluetooth
κατάσταση συσκευής
σφάλμα

Wi-Fi

rf

Για παράδειγμα, ένα μήνυμα από έναν ανιχνευτή κίνησης κάμερας μοιάζει με αυτό:

{
	"vendor": "*****",
	"version": "3.0.0",
	"timestampMs": "1566293475475",
	"clientType": "gateway",
	"deviceId": "1616453d-30cd-44b7-9bf0-************",
	"deviceType": "camera",
	"protocol": "onvif",
	"messageType": "sensorData",
	"sensorType": "camera",
	"label": "motionDetector",
	"sensorData": "on"
}

Λογική παραγωγής

Για να λάβετε ή να στείλετε ένα μήνυμα από τον αποστολέα, το μπλοκ διεργασιών διακομιστή εγγράφεται σε μηνύματα συγκεκριμένου τύπου. Η συνδρομή είναι ένας λογικός κανόνας παραγωγής του τύπου "Αν τότε...", που αντιπροσωπεύεται σε μορφή JSON και έναν σύνδεσμο προς το πρόγραμμα χειρισμού μηνυμάτων μέσα στο μπλοκ διεργασιών διακομιστή. Για παράδειγμα, προκειμένου ο διακομιστής της κάμερας IP να λαμβάνει εντολές από το GUI και το cloud, πρέπει να προσθέσετε τον ακόλουθο κανόνα:

{
	"if": {
	    "and": [{
		"equal": {
		    "deviceId": "1616453d-30cd-44b7-9bf0-************"
		}
	    },
	    {
		"equal": {
		    "messageType": "command"
		}
	    }
	    ]
	},
	"then": {
	    "result": "true"
	}
}

Εάν οι προϋποθέσεις που καθορίζονται στο προηγούμενος Οι κανόνες (αριστερή πλευρά) είναι αληθινοί, λοιπόν επακόλουθος (δεξιά πλευρά) κανόνες και ο χειριστής αποκτά πρόσβαση στο σώμα του μηνύματος JSON. Ο προηγούμενος υποστηρίζει λογικούς τελεστές που συγκρίνουν ζεύγη κλειδιού-τιμής JSON:

  1. ισούται με "ίσο"?
  2. δεν ισούται με "not_equal"?
  3. λιγότερο από "λιγότερο"?
  4. πιο "μεγαλύτερο"?
  5. μικρότερο ή ίσο με "less_or_equal"?
  6. μεγαλύτερο από ή ίσο με "μεγαλύτερο_ή_ίσο".

Τα αποτελέσματα της σύγκρισης μπορούν να διασυνδεθούν χρησιμοποιώντας τελεστές άλγεβρας Boole:

  1. Και "και"?
  2. Ή "ή"?
  3. ΟΧΙ "όχι".

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

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

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

Ο μηχανισμός της λογικής παραγωγής που συζητήθηκε παραπάνω υλοποιείται χρησιμοποιώντας τη βιβλιοθήκη Γρήγορο JSON — SAX-parser της μορφής JSON σε γλώσσα C++. Η διαδοχική ανάγνωση και ανάλυση μιας σειράς κανόνων παραγωγής καθιστά εύκολη την εφαρμογή μιας συνάρτησης αντιστοίχισης δεδομένων εντός των προηγούμενων:

void CRuleEngine::Process(PProperties pFact)
{
    m_pActions->clear();

    rapidjson::Reader   reader;
    for(TStringMap::value_type& rRule : m_Rules)
    {
        std::string sRuleId   = rRule.first;
        std::string sRuleBody = rRule.second;

        CRuleHandler            ruleHandler(pFact);
        rapidjson::StringStream ruleStream(sRuleBody.c_str());
        rapidjson::ParseResult  parseResult = reader.Parse(ruleStream, ruleHandler);
        if(!parseResult)
        {
            m_Logger.LogMessage(
                        NLogger2::ePriorityLevelError,
                        std::string("JSON parse error"),
                        "CRuleEngine::Process()",
                        std::string("RuleId: ") + sRuleId);
        }

        PProperties pAction = ruleHandler.GetAction();
        if(pAction)
        {
            pAction->Set("ruleId", sRuleId);
            m_pActions->push_back(pAction);
        }
    }
}

Εδώ pFact - μια δομή που περιέχει ζεύγη κλειδιών-τιμών από ένα μήνυμα JSON, m_Κανόνες — σειρά συμβολοσειρών κανόνων παραγωγής. Η αντιστοίχιση του εισερχόμενου μηνύματος και του κανόνα παραγωγής γίνεται στη συνάρτηση reader.Parse(ruleStream, ruleHandler)Όπου χειριστής κανόνων είναι ένα αντικείμενο που περιέχει τη λογική των boolean τελεστών και των τελεστών σύγκρισης. sRuleId - ένα μοναδικό αναγνωριστικό κανόνα, χάρη στο οποίο είναι δυνατή η αποθήκευση και η επεξεργασία κανόνων μέσα στη βάση δεδομένων του έξυπνου οικιακού ελεγκτή. m_pActions - έναν πίνακα με τα αποτελέσματα συμπερασμάτων: Μηνύματα JSON που περιέχουν συνέπειες από τη βάση κανόνων και αποστέλλονται περαιτέρω στον διαχειριστή μηνυμάτων, ώστε τα νήματα των συνδρομητών να μπορούν να τα επεξεργαστούν.

Η απόδοση του RapidJSON είναι συγκρίσιμη με τη συνάρτηση strlen(), και οι ελάχιστες απαιτήσεις πόρων συστήματος επιτρέπουν τη χρήση αυτής της βιβλιοθήκης σε ενσωματωμένες συσκευές. Η χρήση μηνυμάτων και λογικών κανόνων σε μορφή JSON σάς επιτρέπει να εφαρμόσετε ένα ευέλικτο σύστημα ανταλλαγής πληροφοριών μεταξύ όλων των στοιχείων του ελεγκτή έξυπνου σπιτιού.

Αισθητήρες και ενεργοποιητές Z-Wave

Το κύριο πλεονέκτημα ενός έξυπνου σπιτιού είναι ότι μπορεί ανεξάρτητα να μετρήσει διάφορες παραμέτρους του εξωτερικού περιβάλλοντος και να εκτελέσει χρήσιμες λειτουργίες ανάλογα με την κατάσταση. Για να γίνει αυτό, αισθητήρες και ενεργοποιητές συνδέονται με τον ελεγκτή έξυπνου σπιτιού. Στην τρέχουσα έκδοση, αυτές είναι ασύρματες συσκευές που λειτουργούν σύμφωνα με το πρωτόκολλο Ζ-Wave σε ειδική συχνότητα 869 MHz Για τη Ρωσία. Για τη δουλειά τους, συνδυάζονται σε ένα δίκτυο πλέγματος, στο οποίο υπάρχουν επαναλήπτες σημάτων για να αυξηθεί η περιοχή κάλυψης. Οι συσκευές διαθέτουν επίσης ειδική λειτουργία εξοικονόμησης ενέργειας - περνούν τον περισσότερο χρόνο τους σε κατάσταση αναστολής λειτουργίας και στέλνουν πληροφορίες μόνο όταν αλλάξει η κατάστασή τους, γεγονός που μπορεί να παρατείνει σημαντικά τη διάρκεια ζωής της ενσωματωμένης μπαταρίας.

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

Υπάρχουν πολλές διαφορετικές συσκευές Z-Wave στην αγορά σήμερα. Για παράδειγμα, εξετάστε μερικά:

  1. Η έξυπνη πρίζα Zipato PAN16 μπορεί να μετρήσει τις ακόλουθες παραμέτρους: κατανάλωση ηλεκτρικής ενέργειας (kWh), ισχύ (W), τάση (V) και ρεύμα (A) στο δίκτυο. Διαθέτει επίσης ενσωματωμένο διακόπτη, με τον οποίο μπορείτε να ελέγξετε τη συνδεδεμένη ηλεκτρική συσκευή.
  2. Ο αισθητήρας διαρροής Neo Coolcam ανιχνεύει την παρουσία χυμένου υγρού κλείνοντας τις επαφές του απομακρυσμένου αισθητήρα.
  3. Ο ανιχνευτής καπνού Zipato PH-PSG01 ενεργοποιείται όταν τα σωματίδια καπνού εισέρχονται στο θάλαμο του αναλυτή αερίων.
  4. Ο αισθητήρας κίνησης Neo Coolcam αναλύει την υπέρυθρη ακτινοβολία του ανθρώπινου σώματος. Επιπλέον, υπάρχει ένας αισθητήρας φωτός (Lx).
  5. Ο πολυαισθητήρας Philio PST02-A μετρά τη θερμοκρασία (°C), το φωτισμό (%), το άνοιγμα της πόρτας, την ανθρώπινη παρουσία στο δωμάτιο.
  6. Ελεγκτής δικτύου Z-Wave USB Stick ZME E UZB1, στον οποίο είναι συνδεδεμένοι οι αισθητήρες.

Είναι πολύ σημαντικό οι συσκευές και ο ελεγκτής να λειτουργούν στην ίδια συχνότητα, διαφορετικά, με απλό τρόπο, δεν θα βλέπονται μεταξύ τους τη στιγμή της σύνδεσης. Σε έναν ελεγκτή δικτύου Z-Wave μπορούν να συνδεθούν έως και 232 συσκευές, κάτι που είναι αρκετό για ένα διαμέρισμα ή μια εξοχική κατοικία. Για την επέκταση της κάλυψης δικτύου σε εσωτερικούς χώρους, μια έξυπνη πρίζα μπορεί να χρησιμοποιηθεί ως επαναλήπτης σήματος.

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

Στη διαδικασία διακομιστή έξυπνου οικιακού ελεγκτή που συζητήθηκε στην προηγούμενη παράγραφο, ο διακομιστής Z-Wave είναι υπεύθυνος για την αλληλεπίδραση με συσκευές Z-Wave. Για να πάρει πληροφορίες από αισθητήρες, χρησιμοποιεί τη βιβλιοθήκη OpenZWave σε C++, το οποίο παρέχει μια διεπαφή για αλληλεπίδραση με έναν ελεγκτή USB δικτύου Z-Wave και λειτουργεί με μια ποικιλία αισθητήρων και ενεργοποιητών. Η τιμή της περιβαλλοντικής παραμέτρου που μετράται από τον αισθητήρα γράφεται από τον διακομιστή Z-Wave ως μήνυμα JSON:

{
	"vendor": "*****",
	"version": "3.0.0",
	"timestampMs": "1566479791290",
	"clientType": "gateway",
	"deviceId": "20873eb0-dd5e-4213-a175-************",
	"deviceType": "sensor",
	"protocol": "zwave",
	"messageType": "sensorData",
	"homeId": "0xefa0cfa7",
	"nodeId": "20",
	"sensorType": "METER",
	"label": "Voltage",
	"sensorData": "229.3",
	"units": "V"
}

Στη συνέχεια αποστέλλεται στον διαχειριστή μηνυμάτων της διαδικασίας διακομιστή, ώστε τα νήματα των συνδρομητών να μπορούν να τα λαμβάνουν. Ο κύριος συνδρομητής είναι ο λογικός διακομιστής παραγωγής, ο οποίος ταιριάζει με τις τιμές των πεδίων μηνυμάτων στα προηγούμενα των λογικών κανόνων. Τα αποτελέσματα συμπερασμάτων που περιέχουν εντολές ελέγχου αποστέλλονται πίσω στη διαχείριση μηνυμάτων και από εκεί στον διακομιστή Z-Wave, ο οποίος τα αποκωδικοποιεί και τα στέλνει στον ελεγκτή USB δικτύου Z-Wave. Στη συνέχεια μπαίνουν στην εκτελεστική συσκευή, η οποία αλλάζει την κατάσταση των αντικειμένων στο εξωτερικό περιβάλλον και το έξυπνο σπίτι, έτσι, εκτελεί χρήσιμη εργασία.

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες
(κάντε κλικ στην εικόνα για να ανοίξει σε μεγαλύτερη ανάλυση)

Η σύνδεση των συσκευών Z-Wave γίνεται στη γραφική διεπαφή του ελεγκτή έξυπνου σπιτιού. Για να το κάνετε αυτό, μεταβείτε στη σελίδα με τη λίστα των συσκευών και κάντε κλικ στο κουμπί "Προσθήκη". Η εντολή προσθήκης μέσω της διεπαφής RESTful API μπαίνει στη διαδικασία διακομιστή και στη συνέχεια αποστέλλεται από τον διαχειριστή μηνυμάτων στον διακομιστή Z-Wave, ο οποίος θέτει τον ελεγκτή δικτύου Z-Wave USB σε μια ειδική λειτουργία για την προσθήκη συσκευών. Στη συνέχεια, στη συσκευή Z-Wave, πρέπει να κάνετε μια σειρά από γρήγορα πατήματα (3 πατήματα εντός 1,5 δευτερολέπτου) του κουμπιού σέρβις. Ο ελεγκτής USB συνδέει τη συσκευή στο δίκτυο και στέλνει πληροφορίες σχετικά με αυτήν στον διακομιστή Z-Wave. Αυτό, με τη σειρά του, δημιουργεί μια νέα εγγραφή στη βάση δεδομένων SQLite με τις παραμέτρους της νέας συσκευής. Η γραφική διεπαφή μετά το καθορισμένο χρονικό διάστημα επιστρέφει στη σελίδα λίστας συσκευών Z-Wave, διαβάζει πληροφορίες από τη βάση δεδομένων και εμφανίζει μια νέα συσκευή στη λίστα. Ταυτόχρονα, κάθε συσκευή λαμβάνει το δικό της μοναδικό αναγνωριστικό, το οποίο χρησιμοποιείται στους κανόνες παραγωγής συμπερασμάτων και κατά την εργασία στο cloud. Η λειτουργία αυτού του αλγορίθμου φαίνεται στο διάγραμμα UML:

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες
(κάντε κλικ στην εικόνα για να ανοίξει σε μεγαλύτερη ανάλυση)

Σύνδεση IP καμερών

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

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

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

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

Το πιο δημοφιλές πρωτόκολλο για συστήματα παρακολούθησης βίντεο IP, που τώρα υποστηρίζεται από όλους τους κατασκευαστές καμερών IP ανεξαιρέτως, είναι ONVIF Προφίλ S, οι προδιαγραφές του οποίου υπάρχουν στη Γλώσσα περιγραφής υπηρεσιών Web wsdl. Χρήση των βοηθητικών προγραμμάτων από την εργαλειοθήκη gSOAP είναι δυνατό να δημιουργηθεί ο πηγαίος κώδικας των υπηρεσιών που λειτουργούν με κάμερες IP:

$ wsdl2h -o onvif.h 
	https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl 
	https://www.onvif.org/ver10/events/wsdl/event.wsdl 
	https://www.onvif.org/ver10/media/wsdl/media.wsdl 
	https://www.onvif.org/ver20/ptz/wsdl/ptz.wsdl

$ soapcpp2 -Cwvbj -c++11 -d cpp_files/onvif -i onvif.h

Ως αποτέλεσμα, λαμβάνουμε ένα σύνολο αρχείων κεφαλίδας "*.h" και προέλευσης "*.cpp" στη γλώσσα C ++, τα οποία μπορούν να τοποθετηθούν απευθείας σε μια εφαρμογή ή μια ξεχωριστή βιβλιοθήκη και να μεταγλωττιστούν χρησιμοποιώντας τον μεταγλωττιστή GCC. Λόγω των πολλών λειτουργιών, ο κώδικας είναι μεγάλος και απαιτεί πρόσθετη βελτιστοποίηση. Ο μικροϋπολογιστής Raspberry Pi 3 μοντέλου B+ έχει αρκετή απόδοση για την εκτέλεση αυτού του κώδικα, αλλά σε περίπτωση που καταστεί απαραίτητο να μεταφερθεί ο κώδικας σε άλλη πλατφόρμα, είναι απαραίτητο να επιλέξετε τη σωστή αρχιτεκτονική επεξεργαστή και πόρους συστήματος.

Οι κάμερες IP που υποστηρίζουν το πρότυπο ONVIF, όταν λειτουργούν σε τοπικό δίκτυο, συνδέονται σε μια ειδική ομάδα πολλαπλής εκπομπής με τη διεύθυνση 239.255.255.250. Υπάρχει πρωτόκολλο WS-Ανακάλυψη, το οποίο σας επιτρέπει να αυτοματοποιήσετε την αναζήτηση συσκευών στο τοπικό δίκτυο.

Στη γραφική διεπαφή του ελεγκτή έξυπνου σπιτιού, υλοποιείται η λειτουργία αναζήτησης καμερών IP στη γλώσσα PHP, η οποία είναι πολύ βολική κατά την αλληλεπίδραση με υπηρεσίες web μέσω μηνυμάτων XML. Όταν επιλέγετε στοιχεία μενού Συσκευές > Κάμερες IP > Σάρωση εκκινείται ο αλγόριθμος αναζήτησης για κάμερες IP, εμφανίζοντας το αποτέλεσμα με τη μορφή πίνακα:

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες
(κάντε κλικ στην εικόνα για να ανοίξει σε μεγαλύτερη ανάλυση)

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

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

Στη συνέχεια, δημιουργείται ένα μήνυμα σε μορφή JSON που περιέχει όλες τις παραμέτρους της κάμερας που προστέθηκε και αποστέλλεται στη διαδικασία διακομιστή του ελεγκτή έξυπνου σπιτιού μέσω της εντολής RESTful API, όπου οι παράμετροι της κάμερας αποκωδικοποιούνται και αποθηκεύονται στην εσωτερική βάση δεδομένων SQLite και χρησιμοποιείται επίσης για την εκκίνηση των ακόλουθων νημάτων επεξεργασίας:

  1. δημιουργία σύνδεσης RTSP για λήψη ροών βίντεο και ήχου·
  2. κωδικοποίηση ήχου από G.711 mu-Law, G.711 A-Law, G.723, κ.λπ. σε μορφή AAC.
  3. διακωδικοποίηση ροών βίντεο σε μορφή H.264 και ήχου σε μορφή AAC σε ένα κοντέινερ FLV και μεταφορά του στο cloud μέσω του πρωτοκόλλου RTMP.
  4. Πραγματοποίηση σύνδεσης με το τελικό σημείο του ανιχνευτή κίνησης της κάμερας IP χρησιμοποιώντας το πρωτόκολλο ONVIF και περιοδική μέτρησή του.
  5. να δημιουργεί περιοδικά μια εικόνα προεπισκόπησης μικρογραφίας (προεπισκόπηση) και να την στέλνει στο cloud χρησιμοποιώντας το πρωτόκολλο MQTT.
  6. τοπική εγγραφή ροών βίντεο και ήχου ως ξεχωριστά αρχεία σε μορφή MP4 στην κάρτα SD ή Flash του ελεγκτή έξυπνου σπιτιού.

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

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

Στο πείραμα δοκιμής απόδοσης, 3 κάμερες συνδέθηκαν στον ελεγκτή:

  1. HiWatch DS-I114W (ανάλυση - 720p, μορφή συμπίεσης - H.264, ρυθμός bit - 1 Mb / s, ήχος G.711 mu-Law);
  2. Μικροψηφιακό MDC-M6290FTD-1 (ανάλυση - 1080p, μορφή συμπίεσης - H.264, ρυθμός bit - 1 Mb / s, χωρίς ήχο).
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (ανάλυση - 1080p, μορφή συμπίεσης - H.264, ρυθμός bit - 1.5 Mb/s, ήχος AAC).

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

Και οι τρεις ροές εξάγονταν ταυτόχρονα στο σύννεφο, ο ήχος μετακωδικοποιήθηκε μόνο από μία κάμερα και η εγγραφή τοπικού αρχείου απενεργοποιήθηκε. Το φορτίο της CPU ήταν περίπου 5%, η χρήση RAM ήταν 32 MB (ανά διεργασία), 56 MB (σύνολο με το λειτουργικό σύστημα).

Έτσι, μπορούν να συνδεθούν περίπου 20-30 κάμερες στον ελεγκτή έξυπνου σπιτιού (ανάλογα με την ανάλυση και τον ρυθμό μετάδοσης bit), κάτι που είναι αρκετό για ένα σύστημα παρακολούθησης βίντεο ενός τριώροφου εξοχικού σπιτιού ή μιας μικρής αποθήκης. Σε εργασίες όπου απαιτείται υψηλή απόδοση, μπορείτε να χρησιμοποιήσετε nettop με επεξεργαστή Intel πολλαπλών πυρήνων και Linux Debian Sarge. Ο ελεγκτής βρίσκεται σε δοκιμαστική λειτουργία και θα καθοριστούν δεδομένα για την απόδοση της εργασίας του.

Αλληλεπίδραση με το σύννεφο

Το Cloud smart home αποθηκεύει δεδομένα χρήστη (μετρήσεις βίντεο και αισθητήρων) στο cloud. Η αρχιτεκτονική της αποθήκευσης cloud θα συζητηθεί με περισσότερες λεπτομέρειες στο επόμενο άρθρο της σειράς μας. Τώρα ας μιλήσουμε για τη διεπαφή για τη μετάδοση μηνυμάτων πληροφοριών από τον ελεγκτή έξυπνου σπιτιού στο cloud.

Οι καταστάσεις των συνδεδεμένων συσκευών και οι μετρήσεις των αισθητήρων μεταδίδονται μέσω του πρωτοκόλλου MQTT, το οποίο χρησιμοποιείται συχνά σε έργα Internet of Things λόγω της απλότητας και της ενεργειακής του απόδοσης. Το MQTT χρησιμοποιεί ένα μοντέλο πελάτη-διακομιστή όπου οι πελάτες εγγράφονται σε ορισμένα θέματα εντός του μεσίτη και δημοσιεύουν τα μηνύματά τους. Ο μεσίτης στέλνει μηνύματα σε όλους τους συνδρομητές σύμφωνα με τους κανόνες που καθορίζονται από το επίπεδο QoS (Quality of Service):

  • QoS 0 - το μέγιστο μία φορά (καμία εγγύηση παράδοσης).
  • QoS 1 - τουλάχιστον μία φορά (με επιβεβαίωση παράδοσης).
  • QoS 2 - ακριβώς μία φορά (με επιπλέον επιβεβαίωση παράδοσης).

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

Cloud Smart Home. Μέρος 1: Ελεγκτής και αισθητήρες

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

Ο πελάτης MQTT αναπτύχθηκε με βάση την υλοποίηση της βιβλιοθήκης Eclipse Paho σε C++.

Οι ροές πολυμέσων H.264 + AAC αποστέλλονται στο cloud μέσω του πρωτοκόλλου RTMP, όπου ένα σύμπλεγμα διακομιστών πολυμέσων είναι υπεύθυνο για την επεξεργασία και την αποθήκευσή τους. Για βέλτιστη κατανομή φορτίου στο σύμπλεγμα και επιλογή του λιγότερο φορτωμένου διακομιστή πολυμέσων, ο ελεγκτής έξυπνου σπιτιού υποβάλλει ένα προκαταρκτικό αίτημα στον εξισορροπητή φορτίου cloud και μόνο τότε στέλνει τη ροή πολυμέσων.

Συμπέρασμα

Το άρθρο εξέτασε μια συγκεκριμένη εφαρμογή ενός έξυπνου οικιακού ελεγκτή που βασίζεται στον μικροϋπολογιστή Raspberry Pi 3 B+, ​​ο οποίος μπορεί να λαμβάνει, να επεξεργάζεται πληροφορίες και να ελέγχει εξοπλισμό χρησιμοποιώντας το πρωτόκολλο Z-Wave, να αλληλεπιδρά με κάμερες IP χρησιμοποιώντας το πρωτόκολλο ONVIF και επίσης να ανταλλάσσει δεδομένα και εντολές με την υπηρεσία cloud μέσω πρωτοκόλλων MQTT και RTMP. Ένας λογικός κινητήρας παραγωγής έχει αναπτυχθεί με βάση τη σύγκριση λογικών κανόνων και γεγονότων που παρουσιάζονται σε μορφή JSON.

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

Στην επόμενη έκδοση του ελεγκτή, σχεδιάζεται η σύνδεση συσκευών άλλων τύπων (RF, Bluetooth, WiFi, ενσύρματα). Για τη διευκόλυνση των χρηστών, η διαδικασία σύνδεσης αισθητήρων και καμερών IP θα μεταφερθεί στην εφαρμογή για κινητά. Υπάρχουν επίσης ιδέες για τη βελτιστοποίηση του κώδικα διαδικασίας διακομιστή και τη μεταφορά λογισμικού στο λειτουργικό σύστημα OpenWrt. Αυτό θα εξοικονομήσει έναν ξεχωριστό ελεγκτή και θα μεταφέρει τη λειτουργικότητα ενός έξυπνου σπιτιού σε έναν κανονικό οικιακό δρομολογητή.

Πηγή: www.habr.com

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