Διαφήμιση

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

Αυτός ο οδηγός είναι διαθέσιμος για λήψη ως δωρεάν PDF. Κατεβάστε το OpenHAB Beginner's Guide Part 2: ZWave, MQTT, Rules and Charting now. Μη διστάσετε να το αντιγράψετε και να το μοιραστείτε με τους φίλους και την οικογένειά σας.

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

instagram viewer

  • Προσθήκη συσκευών 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 για οικιακό αυτοματισμό είναι καλύτερο για εσάς;Για λίγο, οι άνθρωποι σκέφτηκαν την ιδέα ως τίποτα περισσότερο από ένα τέχνασμα, αλλά οι πρόσφατες κυκλοφορίες προϊόντων έδειξαν ότι ο έξυπνος οικιακός αυτοματισμός αρχίζει να ανταποκρίνεται στις υποσχέσεις του. Διαβάστε περισσότερα 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 .δοχείο αρχεία στον κατάλογο addons - αυτά πρέπει να τοποθετηθούν στον αντίστοιχο κατάλογο πρόσθετων στο κοινόχρηστο OpenHAB Home (αν χρησιμοποιείτε επίσης το Aotec gen5 Z-Stick, βεβαιωθείτε ότι έχετε τουλάχιστον την έκδοση 1.8 της δέσμευσης Z-Wave).

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

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

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

ls / dev / tty *

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

επιδεξιότητα

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

sudo usermod -a -G διάλεξη openhab

Τώρα, για να ξεκινήσετε τα πάντα, κάντε επανεκκίνηση του OpenHAB

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

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

zwave ξεκινά στο openhab log

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

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

Διαμόρφωση στοιχείων Z-Wave

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

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

Διακόπτης Dehumidifier_Switch "Dehumidifier" {zwave = "3: command = switch_binary"} Number Dehumidifier_Watts "Κατανάλωση ισχύος αφυγραντήρα [% .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 $69.27

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

Αριθμός Hallway_Temperature "Hallway Temperature [% .1f ° C]" (Hallway, Temperature) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 1, sensor_scale = 0"} Number Hallway_Humidity "Υγρασία διαδρόμου [% .0f %%]" (Διάδρομος, υγρασία) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 5"} Αριθμός Hallway_Luminance "Hallway Luminance [% .0f Lux]" (Hallway) {zwave = "2: 0: command = sensor_multilevel, sensor_type = 3"} Επικοινωνία Hallway_Motion "Hallway Motion [% s]" (Hallway, Motion) {zwave = "2: 0: command = sensor_binary, respond_to_basic = true"} Number sensor_1_battery "Battery [% s %%]" (Motion) {zwave = "2: 0: command = μπαταρία"}

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

Logitech Harmony Binding

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

Ξεκινήστε εγκαθιστώντας τα τρία δεσμευτικά αρχεία που βρίσκετε χρησιμοποιώντας το apt-cache για αναζήτηση «αρμονίας»:

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

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

sudo apt-get εγκαταστήστε openhab-addon-action-harmhub. sudo apt-get εγκαταστήστε openhab-addon-binding-harmhub. sudo apt-get εγκαταστήστε openhab-addon-io-harmhub. sudo chown -hR openhab: openhab / usr / share / openhab

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

########## ΕΛΕΓΧΟΙ ΑΠΟΚΑΤΑΣΤΑΣΗΣ ΑΡΜΟΝΙΑΣ ########## harmhub: host = 192.168.1.181ή το ip σας
harmhub: όνομα χρήστη =your-harmony-email-login
harmhub: κωδικός πρόσβασης =ο κωδικός σας

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

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

Έξοδος openhab με μορφοποίηση json

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

/ * Κέντρο αρμονίας * / String Harmony_Activity "Harmony [% s]" (Living_Room) {harmhub = "* [currentActivity]"}

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

Εναλλαγή στοιχείου = Harmony_Activity mappings = [PowerOff = 'Off', Exercise = 'Exercise', 13858434 = 'TV', Karaoke = 'Karaoke']

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

openhab αρμονία στον χάρτη ιστότοπου

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

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

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

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

κανόνας "Το γραφείο ανάβει όταν ο James παρουσιάζει" όταν το στοιχείο JamesInOffice άλλαξε από OFF σε ON. και μετά στείλτε εντολή (Office_Hue, ON) τελικός κανόνας "Το γραφείο σβήνει όταν φύγει ο Τζέιμς" όταν το στοιχείο JamesInOffice άλλαξε από ON σε OFF. στη συνέχεια sendCommand (Office_Hue, OFF) τέλος

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

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

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

κανόνας "Άσκηση κάθε πρωί" πότε το Time cron "0 0 8 1/1 *; *" και στη συνέχεια, η αρμονίαStartActivity ("Άσκηση") τέλος.

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

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

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

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

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

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

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

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

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

MQTT για OpenHAB και Internet of Things

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

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

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

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

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

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

Ας συνεχίσουμε με το Twitter-για-μηχανήματα αναλογία όμως. Ακριβώς όπως οι χρήστες του Twitter μπορούν να κάνουν tweet τους δικούς τους χωρίς νόημα 140 χαρακτήρες και οι χρήστες μπορούν να «ακολουθήσουν» άλλους χρήστες για να δουν μια επιμελημένη ροή αναρτήσεων, Οι πελάτες MQTT μπορούν να εγγραφούν σε ένα συγκεκριμένο κανάλι για να λαμβάνουν όλα τα μηνύματα από εκεί, καθώς και να δημοσιεύουν τα δικά τους μηνύματα σε αυτό Κανάλι. Αυτό το μοτίβο δημοσίευσης και εγγραφής αναφέρεται ως παμπ / υπο, σε αντίθεση με την παράδοση διακομιστή-πελάτη μοντέλο HTTP.

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

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

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

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

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

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

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

κλαίω http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key. sudo apt-key add 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, το οποίο είναι πολλαπλής πλατφόρμας. Κάντε κλικ στο εικονίδιο ρυθμίσεων για να δημιουργήσετε ένα νέο προφίλ και εισαγάγετε τη διεύθυνση IP ή το όνομα IP του Raspberry Pi. Αποθηκεύστε και πατήστε Σύνδεση. Εάν το μικρό φανάρι πάνω δεξιά γίνεται πράσινο, μπορείτε να πάτε.

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

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

inTopic MQTT δοκιμή

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

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

inTopic / smallSubdivision / evenSmallerSubdivision. myHome / livingRoom / θερμοκρασία. myHome / livingRoom / υγρασία. myHome / κουζίνα / θερμοκρασία. myHome / κουζίνα / υγρασία

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

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

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

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

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

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

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

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

myHome / livingRoom / #

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

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

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

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

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

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

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

client.setServer ("192.168.1.99", 1883);

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

buffer char [10]; dtostrf (t, 0, 0, buffer); client.publish ("openhab / himitsu / temperature", buffer); dtostrf (h, 0, 0, buffer); client.publish ("openhab / himitsu / υγρασία", buffer);

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

client.subscribe ("openhab / himitsu / command");

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

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

mqtt arduino μηνύματα επιστρέφουν

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

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

sudo apt-get εγκατάσταση openhab-addon-binding-mqtt. sudo chown -hR openhab: openhab / usr / share / openhab

Και επεξεργαστείτε το αρχείο config για να ενεργοποιήσετε τη σύνδεση.

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

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

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

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

/ * Αισθητήρες MQTT * / Αριθμός Himitsu_Temp "Θερμοκρασία Himitsu [% .1f ° C]"(Himitsu, Temperature) {mqtt = " (Himitsu, υγρασία) {mqtt = "

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

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

Δεδομένα επιμονής και γραφημάτων

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

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

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

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

Στρατηγικές {EveryMinute: "0 * * * *?" EveryHour: "0 0 * * *;" EveryDay: "0 0 0 * *;" προεπιλογή = EveryChange. } Τα στοιχεία {// διατηρούν τα πάντα όταν ενημερώνεται η τιμή, απλώς μια προεπιλογή και επαναφέρετέ τα από τη βάση δεδομένων κατά την εκκίνηση *: strategy = everyChange, restoreOnStartup // Στη συνέχεια ορίζουμε συγκεκριμένες στρατηγικές κάθεHour για οτιδήποτε στην ομάδα θερμοκρασίας και κάθε λεπτό για θερμοκρασία υγρασίας *: strategy = everyHour υγρασία *: strategi = EveryMinute // εναλλακτικά μπορείτε να προσθέσετε συγκεκριμένα στοιχεία εδώ, όπως // Bedroom_Humidity, JamesInOffice: strategi = EveryMinute. }

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

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

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

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

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

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

Στοιχείο γραφήματος = Υπνοδωμάτιο_Πρόοδος υγρασίας = h

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

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

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

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

Πώς είναι Τα δικα σου Το σύστημα OpenHAB έρχεται;

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

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

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

Ο James έχει πτυχίο Τεχνητής Νοημοσύνης και είναι πιστοποιημένο με CompTIA A + και Network +. Είναι ο κύριος προγραμματιστής του MakeUseOf και περνά τον ελεύθερο χρόνο του παίζοντας VR paintball και boardgames. Δημιουργεί υπολογιστές από τότε που ήταν παιδί.