Οδηγός για αρχάριους OpenHAB Μέρος 2: ZWave, MQTT, κανόνες και χαρτογράφηση

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

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

Το Free δεν σημαίνει πάντα "όχι τόσο καλό όσο πληρώνεται", και το OpenHAB δεν αποτελεί εξαίρεση. Το λογισμικό αυτοματισμού ανοιχτής πηγής υπερβαίνει κατά πολύ τις δυνατότητες οποιουδήποτε άλλου συστήματος αυτοματισμού στο σπίτι στην αγορά - αλλά δεν είναι εύκολο να εγκατασταθεί. Στην πραγματικότητα, μπορεί να είναι απογοητευτικό.

Αυτός ο οδηγός είναι διαθέσιμος για λήψη ως δωρεάν PDF. Κατεβάστε τον οδηγό του OpenHAB για αρχάριους Μέρος 2: ZWave, MQTT, κανόνες και χαρτογράφηση τώρα . Μη διστάσετε να αντιγράψετε και να μοιραστείτε αυτό με τους φίλους και την οικογένειά σας.

Στο μέρος 1 του οδηγού σας ανέφερα να εγκαταστήσετε το OpenHAB σε ένα Raspberry Pi Ξεκινώντας με το OpenHAB Home Automation στο Raspberry Pi Ξεκινώντας με το OpenHAB Home Automation στο Raspberry Pi Το OpenHAB είναι μια ώριμη πλατφόρμα αυτοματισμού ανοιχτής πηγής που τρέχει σε μια ποικιλία του υλικού και είναι πρωτόκολλο agnostic, που σημαίνει ότι μπορεί να συνδεθεί με σχεδόν οποιοδήποτε υλικό οικιακού αυτοματισμού στην αγορά σήμερα. Διαβάστε περισσότερα, εισήγαγε τις βασικές έννοιες του OpenHAB και σας έδειξε πώς να προσθέσετε τα πρώτα σας στοιχεία στο σύστημα. Σήμερα θα προχωρήσουμε περαιτέρω:

  • Προσθήκη συσκευών ZWave
  • Προσθήκη ελεγκτή Harmony Ultimate
  • Εισαγωγή κανόνων
  • Παρουσιάζοντας το MQTT και την εγκατάσταση ενός μεσίτη MQTT στο Pi σας, με αισθητήρες σε ένα Arduino
  • Καταγραφή δεδομένων και γραφική παράσταση

Εισαγωγή στο Z-Wave

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

Αν σκέφτεστε να αγοράσετε ένα σπίτι γεμάτο από αισθητήρες Z-Wave ειδικά για χρήση με το OpenHAB, θα σας παροτρύνω να επανεξετάσετε. Μπορεί να λειτουργήσει εξαιρετικά για σας, ή μπορεί να μαστίζεται με μικρά αλλά επίμονα προβλήματα. Τουλάχιστον, μην αγοράζετε ένα σπίτι γεμάτο αισθητήρες μέχρι να έχετε την ευκαιρία να δοκιμάσετε μερικούς. Ο μόνος λόγος για τον οποίο επιλέγετε το Z-Wave είναι εάν δεν είστε 100% εγκατεστημένος στο OpenHAB και επιθυμείτε να αφήσετε τις επιλογές σας ανοιχτές στο μέλλον: Το Z-Wave λειτουργεί για παράδειγμα με τη Samsung SmartThings. Ποιο Smart Hub για οικιακή αυτοματοποίηση είναι καλύτερο για εσάς ; Ποιο Smart Hub για οικιακό αυτοματισμό είναι το καλύτερο για εσάς; Για μια στιγμή, οι άνθρωποι σκέφτηκαν την ιδέα ως τίποτα περισσότερο από ένα τέχνασμα, αλλά πρόσφατες κυκλοφορίες προϊόντων έδειξαν ότι ο έξυπνος αυτοματισμός στο σπίτι αρχίζει να ανταποκρίνεται στις υποσχέσεις του. Διαβάστε περισσότερα κόμβο, καθώς και ειδικούς κόμβους Z-Wave, όπως το Homeseer, καθώς και μια σειρά άλλων επιλογών λογισμικού όπως το Domoticz.

Παρόλο που το OpenHAB περιλαμβάνει δέσμευση Z-Wave, θα πρέπει πρώτα να ρυθμίσετε το δίκτυο Z-Wave πρώτα, προτού αρχίσει το OpenHAB να το ζητήσει για δεδομένα. Εάν έχετε έναν πίνακα ελέγχου Rasberry, έχετε κάποιο λογισμικό που παρέχεται για τη διαμόρφωση του δικτύου, επομένως δεν θα το καλύψουμε εδώ. Εάν αγοράσατε έναν ελεγκτή Aeotec USB Z-Stick ή παρόμοιο, πιθανότατα δεν έχετε ενσωματωμένο λογισμικό, διαβάστε έτσι.

Aeotec Z-Stick Gen5, Z-Wave Plus USB για δημιουργία πύλης Aeotec Z-Stick Gen5, Z-Wave Plus USB για δημιουργία πύλης Αγοράστε τώρα στο Amazon $ 44.95

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

Πρώτον, στην πλευρά του υλικού: κάθε ελεγκτής έχει τον δικό του τρόπο αντιστοίχισης με συσκευές (τεχνικά γνωστό ως "τρόπος συμπερίληψης" στον οποίο έχει εκχωρηθεί αναγνωριστικό κόμβου). Στην περίπτωση του Aotec Z-Stick, αυτό σημαίνει ότι αποσυνδέστε το από τη θύρα USB και πατήστε το πλήκτρο μία φορά για να το τοποθετήσετε στη λειτουργία συμπερίληψης. Στη συνέχεια, πάρτε το κοντά στη συσκευή που αντιστοιχίζετε και πατήστε το κουμπί ένταξης και σε αυτό (αυτό επίσης θα ποικίλει: η υποδοχή Everspring μου απαιτεί το πάτημα του πλήκτρου 3 φορές γρήγορα, έτσι το μάθημα εδώ είναι να διαβάσετε το εγχειρίδιο για τη συσκευή σας) .

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

Εγκατάσταση συνδέσεων HABmin και Z-Wave

Δεδομένου ότι το OpenHAB δεν είναι πραγματικά ένα βοηθητικό πρόγραμμα ρύθμισης παραμέτρων για το Z-Wave, πρόκειται να εγκαταστήσουμε ένα άλλο εργαλείο διαχείρισης ιστού το οποίο κάνει - κάτι που ονομάζεται HABmin. Προχωρήστε στην αποθήκη HABmin Github για να κατεβάσετε την τρέχουσα έκδοση. Μόλις το αποσυμπιέσετε, θα βρείτε 2 αρχεία .jar στον κατάλογο addons - αυτά θα πρέπει να τοποθετηθούν στον αντίστοιχο κατάλογο addons στο δικό σας κοινόχρηστο στοιχείο OpenHAB Home (εάν χρησιμοποιείτε και το Aotec gen5 Z-Stick, βεβαιωθείτε ότι είστε 'Έχεις τουλάχιστον την έκδοση 1.8 της δέσμευσης Z-Wave) .

Στη συνέχεια, δημιουργήστε ένα νέο φάκελο στον κατάλογο webapps και ονομάζεται "habmin" (πεζά είναι σημαντική). Αντιγράψτε τα υπόλοιπα αρχεία που έχουν ληφθεί εκεί.

Σημείωση: Υπάρχει επίσης ένα HABmin 2 υπό ενεργό ανάπτυξη. Η εγκατάσταση είναι πολύ ίδια, αλλά με ένα επιπλέον add-on .jar. Ίσως αξίζει να δοκιμάσετε και τα δύο μόνο για να δείτε ποια προτιμάτε.

Εάν δεν το έχετε ήδη χρησιμοποιήσει, συνδέστε τον ελεγκτή στο Pi. Πληκτρολογήστε τα παρακάτω για να βρείτε τη σωστή θύρα.

 ls / dev / tty * 

Ψάχνετε για οτιδήποτε με USB στο όνομα, ή στην ιδιαίτερη περίπτωση μου, το Z-stick παρουσιάστηκε ως / dev / ttyACM0 (ένα μόντεμ). Ίσως να είναι πιο εύκολο να εκτελέσετε την εντολή μία φορά πριν την συνδέσετε και μια φορά μετά, ώστε να μπορείτε να δείτε τις αλλαγές εάν δεν είστε βέβαιοι.

devtty

Ανοίξτε το αρχείο ρυθμίσεων OpenHAB και τροποποιήστε την ενότητα στο Z-Wave, αποσυνδέοντας και τις δύο γραμμές και τοποθετώντας την πραγματική διεύθυνση της συσκευής σας. Ένα τελευταίο βήμα για μένα ήταν να επιτρέψω στον χρήστη του OpenHAB να έχει πρόσβαση στο μόντεμ.

 sudo usermod -α-G dialout openhab 

Τώρα, για να κλωτσήσει τα πάντα σε δράση, επανεκκινήστε το OpenHAB

 sudo υπηρεσία openhab επανεκκίνηση 

Ας ελπίσουμε ότι αν ελέγξετε το αρχείο εντοπισμού σφαλμάτων, θα δείτε κάτι τέτοιο. Συγχαρητήρια, τώρα μιλάτε στο Z-Wave. Ενδέχεται επίσης να βρείτε το αρχείο εντοπισμού σφαλμάτων πλημμυρισμένο με μηνύματα από διάφορους κόμβους Z-Wave. Ας ξεκινήσουμε ελέγχοντας τον HABMIN για να δούμε τι έχει βρεθεί: http: //openhab.local: 8080 / habmin / index.html (αντικαθιστώντας το openhab.local με το όνομα του υπολογιστή Raspberry Pi ή τη διεύθυνση IP).

ξεκινώντας από το openhab log

Υπάρχουν πολλά που μπορείτε να δείτε στο HABMIN, αλλά ενδιαφέρουμε μόνο την καρτέλα Διαμόρφωση -> Δέσμες -> Z - Κύμα -> Συσκευές, όπως μπορείτε να δείτε παρακάτω. Αναπτύξτε τον κόμβο για να επεξεργαστείτε την ετικέτα τοποθεσίας και ονόματος για την ευκολία αναφοράς.

επεξεργαστείτε το όνομα της συσκευής

Ρύθμιση στοιχείων Z-Wave

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

Πρώτον, έχω ένα βασικό διακόπτη τροφοδοσίας Everspring AN158 και ένα μετρητή στον κόμβο 3. Μια γρήγορη Googling με οδήγησε σε μια θέση blog στο Wetwa.re, με μια διαμόρφωση δείγματος αντικειμένου. Προσαρμοσμένος ως εξής:

 Διακόπτης αφύγρανσης "Εξαεριστήρας" {zwave = "3: command = switch_binary"} Αριθμός Αφυγραντήρα_Watt "Κατανάλωση ισχύος αφυγραντήρα [% .1f W]" {zwave = "3: command = meter"} 

Τέλειος.

Στη συνέχεια, είναι ένας αισθητήρας Aeotec Gen5 Multi-Sensor.

Aeon Labs Aeotec Z-Wave Gen5 Multi-Sensor (Z-Wave Plus) Aeon Labs Aeotec Z-Wave Gen5 Multi-Sensor (Z-Wave Plus) Αγοράστε τώρα στο Amazon

Για αυτό, βρήκα ένα δείγμα config στο iwasdot.com, και ο multisensor μου βρίσκεται στον κόμβο 2.

 Αριθμός "Hallway_Temperature" Θερμοκρασία Αψιδίου [% .1f ° C] "(Διάδρομος, Θερμοκρασία) {zwave =" 2: 0: command = sensor_mullevel, sensor_type = 1, sensor_scale = 0 "} ] "(Διάδρομος, Υγρασία) {zwave =" 2: 0: εντολή = αισθητήρας_διαμόρφωσης, αισθητήρας_τύπος = 5 "} Αριθμός ΑίθουσαΛευσιμότητας" Αίθουσα φωτεινότητας [% .0f Lux] "{zwave = 2: 0: command = sensor_mullevel, sensor_type = 3 "} Επικοινωνία Hallway_Motion" Αίθουσα κίνησης [% s] "(Αίθουσα, Κίνηση) {zwave =" 2: 0: command = sensor_binary, answer_to_basic = true "} Κίνηση) {zwave = "2: 0: εντολή = μπαταρία"} 

Αν το σχήμα σας φαίνεται περίεργο, παρακαλώ πηγαίνετε πίσω στον οδηγό του αρχαρίου Ξεκινώντας με το OpenHAB Home Automation στο Raspberry Pi Ξεκινώντας με το OpenHAB Home Automation στο Raspberry Pi Το OpenHAB είναι μια ώριμη πλατφόρμα αυτοματισμού ανοικτού κώδικα που τρέχει μια ποικιλία υλικού και είναι πρωτόκολλο αγνωστικής, που σημαίνει ότι μπορεί να συνδεθεί με σχεδόν οποιοδήποτε υλικό αυτοματισμού στο σπίτι στην αγορά σήμερα. Διαβάστε περισσότερα, συγκεκριμένα την ενότητα δεσμεύσεων Hue, όπου εξηγώ πώς προστίθενται τα στοιχεία. Ίσως χρειαστεί μόνο να αντιγράψετε τα παραδείγματα επικόλλησης όπως αυτή, αλλά σε περίπτωση που έχετε μια νέα συσκευή, οι δεσμευτικές τεκμηρίωση αναφέρουν όλες τις εντολές.

Σύνδεση της Logitech Harmony

Πριν περάσουμε σε κανόνες, ήθελα να προσθέσω μια γρήγορη σημείωση για τη συνεργασία με τη δέσμευση Harmony. Είμαι μεγάλος οπαδός της σειράς Harmony από τα τελικά τηλεχειριστήρια Logitech Harmony Ultimate Review και Giveaway Logitech Harmony Ultimate Review και Giveaway Το σαλόνι σας είναι χάος - το παραδεχτείτε. Σας συγχωρούμε για το τι τηλεχειρισμό που συσκευή. Τι συμβαίνει με την τηλεόραση, τον ενισχυτή, τον TiVO, τον παίκτη BluRay, ίσως ακόμη και οι δραστηριότητες αλλαγής φωτισμού να είναι μακρύς ... Διαβάστε περισσότερα για να απλοποιήσετε την εμπειρία των μέσων μαζικής επικοινωνίας στο σπίτι, αλλά συχνά αποτελούν ένα ξεχωριστό σύστημα εντός του έξυπνου σπιτιού. Με το OpenHAB, οι δραστηριότητες Logitech Harmony και ο πλήρης έλεγχος των συσκευών μπορούν πλέον να αποτελούν μέρος του συγκεντρωτικού σας συστήματος και ακόμη περιλαμβάνονται στους κανόνες αυτοματισμού.

Αρχίστε με την εγκατάσταση των τριών αρχείων σύνδεσης που βρίσκετε χρησιμοποιώντας την apt-cache για να αναζητήσετε "αρμονία":

openhab apt-cache αναζήτηση για σύνδεση αρμονία

Μην ξεχάσετε να ξανακάνετε τον κατάλογο δεσμών ξανά όταν τελειώσετε:

 sudo apt-get install openab-addon-action-harmonyhub sudo apt-get install openab-addon-binding-harmonyhub sudo apt-get εγκατάσταση openhab-addon-io-harmonyhub sudo chown -hR openhab: openhab / usr / share / openhab 

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

 ########## HARMONY REMOTE CONTROLS ########## harmonyhub: host = 192.168.1.181 ή το ip σας harmonyhub: username = your-harmony-email-login harmonyhub: password = Κωδικός πρόσβασης 

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

Πρόκειται για μια λίστα σε μορφή JSON με όλες τις δραστηριότητες, τις συσκευές και τις εντολές που μπορείτε να αποστείλετε. Είναι καλή ιδέα να το αντιγράψετε για μελλοντική αναφορά. μπορείτε να το κάνετε ακόμα πιο εύκολο να το διαβάσετε με πτυσσόμενους κόμβους προσθέτοντας σε έναν online διαμορφωτή JSON όπως αυτός.

json μορφοποιημένη έξοδος openhab

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

 / Harmony Hub * / Harmony_Article "Harmony [% s]" (Living_Room) {harmonyhub = "* [currentActivity]"} 

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

 Στοιχείο διακόπτη = αντιστοιχίες Harmony_Activity = [PowerOff = 'Off', Άσκηση = 'Άσκηση', 13858434 = 'TV', Karaoke = 'Karaoke'] 

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

openhab αρμονία στο sitemap

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

Μια γενική εισαγωγή στους κανόνες

Οι περισσότεροι έξυπνοι οικιακοί κόμβοι περιλαμβάνουν κάποιο είδος δημιουργίας κανόνων, ώστε να μπορείτε να αντιδράτε αυτόματα στα δεδομένα αισθητήρων και τα γεγονότα στο σπίτι. Στην πραγματικότητα, θα υποστήριζα ότι ένα πραγματικά έξυπνο σπίτι δεν είναι ένα που χρειάζεται να περάσετε χρόνο αλληλεπιδρά με εφαρμογές για κινητά - είναι αυτό που είναι αόρατο στον τελικό χρήστη και εντελώς αυτοματοποιημένο. Για το σκοπό αυτό, το OpenHAB περιλαμβάνει επίσης μια ισχυρή γλώσσα προγραμματισμού scripting που μπορείτε να προγραμματίσετε, υπερβαίνοντας πολύ την πολυπλοκότητα των περισσότερων έξυπνων οικιακών κόμβων Μάχη των Smart Hubs: Τι υπάρχει εκεί και τι έρχεται; Μάχη των Smart Hubs: Τι υπάρχει εκεί και τι έρχεται; Διαβάστε περισσότερα ή IFTTT συνταγές IFTTT τώρα συνδέει με τίποτα: Παρουσιάζοντας το κανάλι Maker Το IFTTT συνδέεται τώρα με τίποτα: Εισαγωγή του καναλιού Maker Οι πιθανές χρήσεις για το IFTTT είναι ατελείωτες. Αλλά μέχρι τώρα, ήταν δύσκολο να το διασυνδέσετε με τα δικά σας έργα υλικού. Σήμερα, όλα αυτά άλλαξαν. Διαβάστε περισσότερα .

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

 Όταν το στοιχείο JamesInOffice άλλαξε από OFF σε ON τότε έστειλε τον κανόνα "Office light (Office_Hue, ON)" Το Office light off όταν ο James βγαίνει "όταν το στοιχείο JamesInOffice άλλαξε από ON σε OFF τότε έστειλε το SendCommand (Office_Hue, OFF) 

Κατ 'αρχάς, ονομάζουμε τον κανόνα - περιγράψτε, έτσι ώστε να γνωρίζετε ποιο συμβάν εκτοξεύεται. Στη συνέχεια, ορίζουμε τον απλό κανόνα μας λέγοντας όταν το x είναι αληθινό, τότε κάνουμε y . Το τέλος σηματοδοτεί το κλείσιμο αυτού του συγκεκριμένου κανόνα. Υπάρχει μια σειρά από ειδικές λέξεις που μπορείτε να χρησιμοποιήσετε στους κανόνες, αλλά τώρα έχουμε να κάνουμε με δύο απλά κομμάτια σύνταξης - στοιχείο, το οποίο σας επιτρέπει να διερευνήσετε την κατάσταση κάποιου. και sendCommand, το οποίο κάνει ακριβώς αυτό που νομίζετε ότι θα το κάνει. Σας είπα ότι ήταν εύκολο.

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

Ας δούμε ένα άλλο παράδειγμα για να δημιουργήσετε έναν προγραμματισμένο κανόνα.

 κανόνας "Άσκηση κάθε πρωί" όταν το χρονικό cron "0 0 8 1/1 *? *" τότε το τέλος "harmonyStartActivity" ("Άσκηση") 

Και πάλι, ονομάζουμε τον κανόνα, τις κρατικές συνθήκες που πρέπει να πυροδοτήσουμε και τις ενέργειες που πρέπει να αναλάβουμε. Αλλά σε αυτή την περίπτωση, ορίζουμε ένα μοτίβο χρόνου. Ο αστεία κώδικας που βλέπετε στα εισαγωγικά είναι μια έκφραση CRON για το Quartz Scheduler (η μορφή είναι ελαφρώς διαφορετική από μια κανονική CRONtab). Χρησιμοποίησα το cronmaker.com για να βοηθήσω στη δημιουργία της έκφρασης, αλλά μπορείτε επίσης να διαβάσετε τον οδηγό μορφοτύπου για μια λεπτομερή εξήγηση και περισσότερα παραδείγματα.

γεννήτρια cron
Το CronMaker.com χρησιμοποιείται για τη δημιουργία της σωστά διαμορφωμένης έκφρασης Cron

Οι κανόνες μου λένε απλώς ότι "κάθε πρωί κάθε βράδυ, κάθε μέρα της εβδομάδας, πείτε στο σύστημα Harmony Ultimate για να ξεκινήσετε τη δραστηριότητα Άσκηση", η οποία με τη σειρά της ενεργοποιεί την τηλεόραση, το Xbox, τον ενισχυτή και πατά το κουμπί A μετά από ένα λεπτό για να ξεκινήσει το δίσκο στη μονάδα δίσκου.

Δυστυχώς, το OpenHAB δεν μπορεί να κάνει την άσκηση για μένα.

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

 Εισαγωγή org.openhab.core.library.types * Εισαγωγή org.openhab.model.script.actions. * Εισαγωγή java.lang.String κανόνας "Παρακολούθηση υγρασίας" όταν Time cron "0 * * * *?" τότε var prevHigh = 0 var highHum = "" Υγρασία; .members.forEach [hum | logDebug ("humidity.rules", hum.name). εάν (hum.state ως DecimalType> prevHigh) {prevHigh = hum.state highHum = όνομα_υθμού + ":" + hum.state + "%"}] logDebug ("υγρασία.κυρίως", highHum); postUpdate (Dehumidifier_Needed, highHum); τέλος 

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

Πιθανότατα δεν θα χρειαστεί να υπάρχουν - υπάρχουν εκατοντάδες παραδείγματα κανόνων εκεί έξω:

  • Λεπτομερής επεξήγηση των κανόνων στο επίσημο wiki
  • Η επίσημη σελίδα wiki σελίδα δειγμάτων κανόνων
  • Λαμβάνοντας κανόνες σε νέα ύψη
  • Προηγμένα δείγματα στο IngeniousFool.net

MQTT για το OpenHAB και το Διαδίκτυο των πραγμάτων

Το MQTT είναι ένα ελαφρύ σύστημα ανταλλαγής μηνυμάτων για επικοινωνία από μηχανή σε μηχανή - ένα είδος Twitter για το Arduinos ή το Raspberry Pis, για να μιλήσετε ο ένας στον άλλο (αν και φυσικά λειτουργεί πολύ περισσότερο από αυτά). Αποκτά γρήγορα τη δημοτικότητα του και βρίσκει το σπίτι του με τις συσκευές Internet of Things, οι οποίες είναι συνήθως μικροελεγκτές χαμηλού πόρου που χρειάζονται έναν αξιόπιστο τρόπο για να μεταφέρουν δεδομένα αισθητήρων πίσω στο διανομέα σας ή να λάβουν απομακρυσμένες εντολές. Αυτό ακριβώς θα κάνουμε με αυτό.

Αλλά γιατί να επανεφεύρουμε τον τροχό;

Η μεταφορά MQ Telemetry εφευρέθηκε από το 1999 για να συνδέσει τους αγωγούς πετρελαίου μέσω αργών δορυφορικών συνδέσεων, ειδικά σχεδιασμένων για να ελαχιστοποιήσουν τη χρήση της μπαταρίας και το εύρος ζώνης, παρέχοντας ταυτόχρονα αξιόπιστη παροχή δεδομένων. Με την πάροδο των ετών οι αρχές σχεδιασμού παρέμειναν οι ίδιες, αλλά η περίπτωση χρήσης μετατοπίστηκε από τα εξειδικευμένα ενσωματωμένα συστήματα στις γενικές συσκευές του Διαδικτύου των Πράξεων. Το 2010 το πρωτόκολλο κυκλοφόρησε royalty free, ανοιχτό για οποιονδήποτε να χρησιμοποιήσει και να εφαρμόσει. Μας αρέσει ελεύθερο.

Μπορεί να αναρωτιέστε γιατί ενοχλεί κανείς ακόμη ένα ακόμα πρωτόκολλο - έχουμε ήδη το HTTP - το οποίο μπορεί να χρησιμοποιηθεί για την αποστολή γρήγορων μηνυμάτων μεταξύ όλων των διαδικτυακών συστημάτων (όπως το OpenHAB και το IFTTT, ειδικά με το νέο κανάλι κατασκευαστών Το IFTTT συνδέει τώρα με τίποτα: Παρουσιάζοντας το κανάλι του Maker Το IFTTT συνδέεται τώρα με τίποτα: Παρουσιάζοντας το κανάλι του Maker Οι πιθανές χρήσεις του IFTTT είναι ατελείωτες, αλλά μέχρι τώρα ήταν δύσκολο να το διασυνδέσεις με τα δικά σου hardware projects. Διαβάστε περισσότερα ). Και θα έχετε δίκιο. Ωστόσο, τα γενικά έξοδα επεξεργασίας ενός διακομιστή HTTP είναι αρκετά μεγάλα - τόσο πολύ ώστε να μην μπορείτε να εκτελέσετε εύκολα ένα ενσωματωμένο μικροελεγκτή όπως το Arduino (τουλάχιστον μπορείτε, αλλά δεν θα έχετε μεγάλη μνήμη για τίποτα άλλο ). MQTT είναι το άλλο χέρι είναι ελαφρύ, έτσι ώστε η αποστολή μηνυμάτων γύρω από το δίκτυό σας δεν θα φράξει τους σωλήνες επάνω, και μπορεί εύκολα να ταιριάζει στο μικρό μας χώρο μνήμης Arduino.

Πώς λειτουργεί το MQTT;

Το MQTT απαιτεί τόσο ένα διακομιστή (που ονομάζεται "μεσίτης") όσο και ένας ή περισσότεροι πελάτες. Ο διακομιστής λειτουργεί ως μεσάζων, λαμβάνει μηνύματα και αναμεταδίδει τους σε όλους τους ενδιαφερόμενους πελάτες.

Ας συνεχίσουμε όμως με την αναλογία Twitter-for-machines . Ακριβώς όπως οι χρήστες του Twitter μπορούν να τιτλοφορούν τους άσχετους 140 χαρακτήρες τους και οι χρήστες μπορούν να "ακολουθήσουν" τους άλλους χρήστες για να δουν μια επιμελημένη ροή μηνυμάτων, οι πελάτες MQTT μπορούν να εγγραφούν σε ένα συγκεκριμένο κανάλι για να λάβουν όλα τα μηνύματα από εκεί, σε αυτό το κανάλι. Αυτό το πρότυπο δημοσίευσης και εγγραφής αναφέρεται ως pub / sub, σε αντίθεση με το παραδοσιακό μοντέλο πελάτη / διακομιστή HTTP.

Το HTTP απαιτεί να φτάσετε στο μηχάνημα με το οποίο επικοινωνείτε, να πείτε Γεια σας, έπειτα να έχετε μπροστά και πίσω να αναγνωρίζετε συνεχώς ο ένας τον άλλον ενώ παίρνετε ή βάζετε δεδομένα. Με την pub / sub, ο πελάτης που κάνει τη δημοσίευση δεν χρειάζεται να γνωρίζει ποιοι πελάτες έχουν εγγραφεί: απλώς αντλεί τα μηνύματα και ο μεσίτης τους αναδιανέμει σε οποιονδήποτε συνδρομητή. Οποιοσδήποτε πελάτης μπορεί να δημοσιεύσει και να εγγραφεί σε θέματα, ακριβώς όπως ένας χρήστης Twitter.

Σε αντίθεση με το Twitter όμως, το MQTT δεν περιορίζεται σε 140 χαρακτήρες. Είναι δεδομένα αγνωστικιστικά, ώστε να μπορείτε να στέλνετε μικρούς αριθμούς ή μεγάλα μπλοκ κειμένου, datagrams μορφοποιημένα με JSON ή ακόμα και εικόνες και δυαδικά αρχεία.

Δεν είναι ότι το MQTT είναι καλύτερο από το HTTP για όλα - αλλά είναι πιο κατάλληλο αν θα έχουμε πολλούς αισθητήρες σε όλο το σπίτι, συνεχώς αναφέροντας.

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

Εγκαταστήστε Mosquitto στο Pi σας

Παρόλο που το OpenHAB περιλαμβάνει ένα πρόγραμμα-πελάτη MQTT, ώστε να μπορείτε να εγγραφείτε σε ένα θέμα και επίσης να δημοσιεύσετε μηνύματα, δεν θα λειτουργήσει ως διακομιστής. Για αυτό, πρέπει είτε να χρησιμοποιήσετε έναν μεσολαβητή MQTT που βασίζεται στο διαδίκτυο (πληρωμένος ή δωρεάν) είτε να εγκαταστήσετε το ελεύθερο λογισμικό στο Pi. Θα ήθελα να τα κρατήσω όλα, έτσι έχω εγκαταστήσει το Mosquitto στο Pi.

Δυστυχώς, η έκδοση που είναι διαθέσιμη μέσω του συνήθους apt-get είναι εντελώς ξεπερασμένη. Αντ 'αυτού, ας προσθέσουμε τις πιο πρόσφατες πηγές.

 wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key sudo apt -key προσθέστε mosquitto-repo.gpg.key cd /etc/apt/sources.list.d/ sudo wget http: // repo.mosquitto.org/debian/mosquitto-wheezy.list sudo apt-get εγκαταστήστε mosquitto 

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

Ελέγξτε ότι ο διακομιστής MQTT σας λειτουργεί χρησιμοποιώντας το δωρεάν MQTT.fx, το οποίο είναι cross-platform. Κάντε κλικ στο εικονίδιο ρυθμίσεων για να δημιουργήσετε ένα νέο προφίλ και εισαγάγετε τη διεύθυνση IP ή το όνομα της Raspberry Pi. Αποθηκεύστε και πατήστε σύνδεση. Εάν το μικρό φανάρι στην πάνω δεξιά γωνία γίνει πράσινο, καλό είναι να πάτε.

mqttfx προφίλ παραδειγμάτων

Για μια γρήγορη δοκιμή, κάντε κλικ στην καρτέλα "Εγγραφείτε" και πληκτρολογήστε inTopic / στο πλαίσιο κειμένου και μετά πατήστε το κουμπί Εγγραφή . Είστε πλέον εγγεγραμμένος για να λαμβάνετε μηνύματα σχετικά με το θέμα που ονομάζεται inTopic, αν και θα εμφανίζει 0 μηνύματα. Επιστρέψτε στην καρτέλα "Δημοσίευση", πληκτρολογήστε inTopic στο μικρό πλαίσιο και ένα σύντομο μήνυμα στο παρακάτω πλαίσιο με μεγάλο κείμενο. Hit Δημοσιεύστε μερικές φορές και κοιτάξτε πίσω στην καρτέλα Εγγραφή. Θα πρέπει να δείτε μερικά μηνύματα που έχουν εμφανιστεί σε αυτό το θέμα.

inTopic MQTT test

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

Το / separator υποδηλώνει ένα επίπεδο θέματος, το οποίο είναι ιεραρχικό, για παράδειγμα τα ακόλουθα είναι όλα τα έγκυρα επίπεδα θεμάτων.

 inTopic / smallSubdivision / evenSmallerSubdivision myHome / livingRoom / θερμοκρασία myHome / σαλόνιΟικολογία / υγρασία myHome / κουζίνα / θερμοκρασία myHome / κουζίνα / υγρασία 

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

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

Το wildcard αντικαθιστά οποιοδήποτε επίπεδο ενός θέματος. Για παράδειγμα:

 myHome / + / θερμοκρασία 

θα προσυπογράψει τον πελάτη και στα δύο

 myHome / livingRoom / θερμοκρασία myHome / κουζίνα / θερμοκρασία 

... αλλά όχι τα επίπεδα υγρασίας.

Το # είναι ένα μπαλαντέρ πολλαπλών επιπέδων, ώστε να μπορείτε να αντλήσετε οτιδήποτε από τη συστοιχία αισθητήρων livingRoom με:

 myHome / livingRoom / # 

Τεχνικά, μπορείτε επίσης να εγγραφείτε στο ριζικό επίπεδο # το οποίο θα σας αποδώσει απολύτως τα πάντα που περνούν από τον μεσίτη, αλλά αυτό μπορεί να είναι σαν να κολλάτε ένα μάνικα φωτιάς στο πρόσωπό σας: λίγο συντριπτικό. Δοκιμάστε να συνδεθείτε με τον δημόσιο μεσίτη MQTT από το HiveMQ και να εγγραφείτε στο #. Πήρα περίπου 300 μηνύματα μέσα σε λίγα δευτερόλεπτα πριν ο πελάτης απλώς κατέρρευσε.

MQTT Beginner Συμβουλή: " / myHome /" είναι ένα διαφορετικό θέμα στο " myHome /" - συμπεριλαμβανομένης μιας κάθετης στην αρχή δημιουργεί ένα κενό επίπεδο θέματος, το οποίο ενώ είναι τεχνικά έγκυρο, δεν συνιστάται επειδή μπορεί να δημιουργεί σύγχυση.

Τώρα που γνωρίζουμε τη θεωρία, ας πάμε με ένα Arduino, Ethernet Shield και έναν αισθητήρα θερμοκρασίας και υγρασίας DHT11 - πιθανότατα έχετε ένα στο κιτ εκκίνησης, αλλά αν όχι, απλά αλλάξτε τον περιβαλλοντικό αισθητήρα για μια κίνηση αισθητήρα (ή ακόμα και ένα κουμπί).

Δημοσίευση του MQTT από ένα Arduino με σύνδεση Ethernet

Εάν διαθέτετε μια υβριδική συμβατή συσκευή Arduino με ενσωματωμένο Wi-Fi ή Ethernet, θα πρέπει επίσης να λειτουργήσετε. Τελικά θα θέλουμε έναν καλύτερο / φθηνότερο τρόπο επικοινωνίας ότι πρέπει να χρησιμοποιήσουμε μια σύνδεση δικτύου σε κάθε δωμάτιο, αλλά αυτό χρησιμεύει για να μάθουμε τα βασικά.

Ξεκινήστε με τη λήψη της pubsubclient βιβλιοθήκης από την Github. Εάν έχετε χρησιμοποιήσει το κουμπί "Λήψη ως ZIP", η δομή είναι λίγο λάθος. Αποσυμπιέστε, μετονομάστε το φάκελο μόνο στο pubsubclient και, στη συνέχεια, αφαιρέστε τα δύο αρχεία από το φάκελο src και μετακινήστε τα επάνω ένα επίπεδο στη ρίζα του ληφθέντος φακέλου. Στη συνέχεια, μετακινήστε ολόκληρο το φάκελο στον κατάλογο Arduino / βιβλιοθήκες .

Ακολουθεί ο δείκτης κώδικα που μπορείτε να προσαρμόσετε: η έξοδος σήματος DHT11 βρίσκεται στον ακροδέκτη 7. Αλλάξτε το IP διακομιστή με εκείνο του Pi σας στην ακόλουθη γραμμή:

 client.setServer ("192.168.1.99", 1883). 

Δυστυχώς, δεν μπορούμε να χρησιμοποιήσουμε το φιλικό όνομα (OpenHAB.local στην περίπτωσή μου), καθώς η στοίβα TCP / IP στο Arduino είναι πολύ απλοϊκή και προσθέτοντας τον κωδικό για την ονοματοδοσία Bonjour θα ήταν μεγάλη μνήμη που δεν θέλουμε να χάσουμε . Για να αλλάξετε τα θέματα στα οποία μεταδίδονται δεδομένα αισθητήρων, μετακινηθείτε προς τα κάτω σε αυτές τις γραμμές:

 char buffer [10]. dtostrf (t, 0, 0, ρυθμιστικό διάλυμα). client.publish ("openhab / himitsu / temperature", buffer). dtostrf (h, 0, 0, ρυθμιστικό διάλυμα). client.publish ("openhab / himitsu / υγρασία", buffer). 

Ο κώδικας περιλαμβάνει επίσης συνδρομή σε ένα κανάλι εντολών. Βρείτε και προσαρμόστε την ακόλουθη γραμμή:

 client.subscribe ("openhab / himitsu / εντολή"); 

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

Ανεβάστε τον κωδικό σας, συνδέστε το Arduino στο δίκτυο και χρησιμοποιήστε το MQTT.fx για να εγγραφείτε είτε στο # είτε στο openhab / himitsu / # (ή ό, τι αλλάξατε το όνομα του δωματίου, αλλά μην ξεχάσετε να συμπεριλάβετε το # στο τέλος). Πολύ σύντομα θα πρέπει να βλέπετε μηνύματα που έρχονται. και αν στείλετε ON ή OFF στο θέμα εντολών, θα δείτε αναπάντητες αποδείξεις.

mqtt arduino μηνύματα που έρχονται πίσω

Σύνδεση MQTT για OpenHAB

Το τελευταίο βήμα στην εξίσωση είναι να το συνδέσετε στο OpenHAB. Γι 'αυτό, φυσικά, χρειαζόμαστε μια δέσμευση.

 sudo apt-get εγκατασταθεί openhab-addon-δεσμευτική-mqtt sudo chown -hR openhab: openhab / usr / share / openhab 

Και επεξεργαστείτε το αρχείο ρυθμίσεων για να ενεργοποιήσετε τη σύνδεση.

 mqtt: broker.url = tcp: // localhost: 1883 mqtt: broker.clientId = openhab 

Επανεκκινήστε το OpenHAB

 sudo υπηρεσία openhab επανεκκίνηση 

Στη συνέχεια, προσθέστε ένα ή δύο στοιχεία:

 / * Αισθητήρες MQTT * / Αριθμός Himitsu_Temp "Himitsu Θερμοκρασία [% .1f ° C]" (Himitsu, Θερμοκρασία) {mqtt = "<[μεσίτης: openhab / himitsu / % .1f %%] "(Himitsu, Υγρασία) {mqtt =" <[μεσίτης: openhab / himitsu / υγρασία: κατάσταση: προεπιλογή] "} 

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

Συγχαρητήρια, έχετε τώρα τη βάση μιας φτηνής συστοιχίας αισθητήρων βασισμένης στο Arduino. Θα το επανεξετάσουμε στο μέλλον και θα τοποθετήσουμε τα Arduino στο δικό τους ξεχωριστό δίκτυο RF. Έχω επίσης δημιουργήσει μια πανομοιότυπη έκδοση για τις πλακέτες Wizwiki 7500 αν τυχαίνει να έχετε ένα από αυτά.

Στοιχεία εμμονής και γραφήματος

Μέχρι τώρα πιθανότατα έχετε δημιουργήσει μια δέσμη αισθητήρων, είτε από το Z-Wave είτε από τον έθιμο Arduinos που εκτελεί MQTT - ώστε να μπορείτε να δείτε την τρέχουσα κατάσταση αυτών των αισθητήρων ανά πάσα στιγμή και θα πρέπει επίσης να αντιδράτε στην αξία τους στους κανόνες. Αλλά το ενδιαφέρον για τις τιμές των αισθητήρων είναι γενικά ότι αλλάζουν με την πάροδο του χρόνου: εκεί ακριβώς συμβαίνει η εμμονή και η γραφική παράσταση. Η εμμονή στο OpenHAB σημαίνει την αποθήκευση των δεδομένων με την πάροδο του χρόνου. Ας προχωρήσουμε και να ρυθμίσετε το RRD4J (Round Robin Database for Java), που ονομάζεται έτσι επειδή τα δεδομένα αποθηκεύονται με τρόπο στρογγυλής ρομπότ - τα παλαιότερα δεδομένα απορρίπτονται για να συμπιεστούν το μέγεθος της βάσης δεδομένων.

Εγκαταστήστε πακέτα rrd4j με τις ακόλουθες εντολές.

 sudo apt-get install openhab-addon-persistence-rrd4j sudo chown -hR openhab:openhab /usr/share/openhab 

Στη συνέχεια, δημιουργήστε ένα νέο αρχείο που ονομάζεται rrd4j.persist στο φάκελο configurations / persistence . Επικολλήστε τα παρακάτω:

 Στρατηγικές {allMinute: "0 * * * *;" everyHour: "0 0 * * *;" everyDay: "0 0 0 * *;" default = everyChange} Στοιχεία {// να επιμείνουν σε όλα όταν η τιμή είναι ενημερωμένη, απλά μια προεπιλογή και να τα αποκαταστήσει από τη βάση δεδομένων κατά την εκκίνηση *: strategy = everyChange, restoreOnStartup // επόμενο καθορίζουμε συγκεκριμένες στρατηγικές EveryHour για οτιδήποτε στην ομάδα Θερμοκρασία, και κάθε λεπτό για την Θερμοκρασία Υγρασίας *: στρατηγική = κάθε Υγρασία *: στρατηγική = κάθεMinute // Εναλλακτικά μπορείτε να προσθέσετε συγκεκριμένα στοιχεία εδώ, όπως // Υπνοδωμάτιο_ Υγρασία, JamesInOffice: strategy = everyMinute} 

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

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

Σημείωση: εάν θέλετε να γράψετε και τα δεδομένα, ΠΡΕΠΕΙ να το αποθηκεύσετε τουλάχιστον μία φορά το λεπτό. Δεν έχει σημασία αν τα δεδομένα αισθητήρων σας ενημερώνονται ακόμη και αυτό γρήγορα, απλά πρέπει να πείτε στο rr4dj να το αποθηκεύσετε μία φορά το λεπτό.

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

rrd4j αποθήκευση δεδομένων

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

 Στοιχείο χάρτου = Περίοδος θέρμανσης υπνοδωματίου = h 

Αυτό είναι κυριολεκτικά το μόνο που χρειάζεστε. Οι έγκυρες τιμές για την περίοδο είναι h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2M, 4M, Y. θα πρέπει να είναι προφανές τι σημαίνουν αυτά. Είναι προεπιλεγμένο στο D για μια ολόκληρη ημέρα δεδομένων, εάν δεν έχει καθοριστεί.

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

 Στοιχείο χάρτου = Περίοδος υγρασίας = h 

διάγραμμα

Μπορεί επίσης να σας ενδιαφέρει να γνωρίζετε ότι μπορείτε να χρησιμοποιήσετε αυτό το γράφημα αλλού. δημιουργεί μια εικόνα χρησιμοποιώντας την ακόλουθη διεύθυνση URL: http: // YOUROPENHABURL: 8080 / chart? groups = Υγρασία & περίοδος = h

Πώς έρχεται το σύστημα OpenHAB;

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

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

Ας μιλήσουμε στα σχόλια - και παρακαλώ, αν βρήκατε αυτόν τον οδηγό χρήσιμο, κάντε κλικ σε εκείνα τα κουμπιά κοινής χρήσης για να πείτε στους φίλους σας πώς μπορούν επίσης να εγκαταστήσουν το δικό τους σύστημα OpenHAB.

In this article