
Κύρια σημεία ή τι αφορά αυτό το άρθρο
Συνεχίζουμε τη σειρά άρθρων σχετικά με ShioTiny - οπτικά προγραμματιζόμενος ελεγκτής βασισμένος σε τσιπ ESP8266.
Αυτό το άρθρο χρησιμοποιεί το παράδειγμα ενός έργου ελέγχου εξαερισμού σε ένα μπάνιο ή άλλο δωμάτιο με υψηλή υγρασία για να περιγράψει πώς κατασκευάζεται ένα πρόγραμμα για ShioTiny.
Προηγούμενα άρθρα της σειράς.
παραπομπές
Εισαγωγή
Δεν υπάρχει κατανόηση χωρίς εμπειρία. Αυτή είναι μια αλήθεια δοκιμασμένη από τον χρόνο και τις γενιές. Επομένως, δεν υπάρχει τίποτα καλύτερο για την εκμάθηση πρακτικών δεξιοτήτων από το να προσπαθείς να κάνεις κάτι μόνος σου. Και παραδείγματα που δείχνουν τι μπορεί να γίνει και τι δεν αξίζει να προσπαθήσεις θα φανούν χρήσιμα εδώ. Τα λάθη των άλλων ανθρώπων, φυσικά, δεν θα μπορέσουν να αποτρέψουν την εμφάνιση των δικών τους λαθών, αλλά μπορούν να βοηθήσουν στη μείωση του αριθμού των τελευταίων.
Ερωτήσεις και επιστολές από αναγνώστες προηγούμενων άρθρων με ενέπνευσαν να δημιουργήσω ένα μικρό παράδειγμα έργου ελέγχου αερισμού, προκειμένου να δείξω πώς λειτουργούν οι κόμβοι ShIoTiny.
Η αρχική ιδέα που οδήγησε στον ελεγκτή ShioTiny — αντλιοστάσιο και σταθμός ποτίσματος — δεν θα ταιριάζει και δεν θα ενδιαφέρει όλους. Γι' αυτό πήρα ως παράδειγμα ένα σύστημα ελέγχου εξαερισμού που είναι κατανοητό σε όλους και χρήσιμο σε πολλούς.
Θα πω ότι η ιδέα του έργου δεν είναι δική μου, αλλά και στη συνέχεια προσαρμόστηκε σε ShioTiny.
Πρώτα καταλάβετε τι θέλετε
Η διαδικασία βελτίωσης είναι ατελείωτη. Και αυτή η ιδιότητα είναι που έχει καταστρέψει πολλές καλές ιδέες και έργα. Ο προγραμματιστής, αντί να κυκλοφορήσει κάτι που δεν ήταν ιδανικό, αλλά λειτουργικό, συνέχισε να το βελτιώνει. Και το βελτίωσε μέχρι που οι ανταγωνιστές τον προσπέρασαν, κυκλοφορώντας μια λύση που δεν ήταν ιδανική (και συχνά ειλικρινά άθλια), αλλά λειτουργική.
Επομένως, είναι πολύ σημαντικό να γνωρίζουμε πού να βάλουμε μια τελεία στο έργο. Ή, με άλλα λόγια, πρέπει να προσδιορίσουμε τι θέλουμε να πάρουμε στο τέλος του έργου από αυτό που έχουμε στην αρχή. Στα ρωσικά, για ένα έγγραφο που συντάσσεται ακριβώς με σκοπό την περιγραφή της πορείας προς τη δημιουργία κάποιου πράγματος, υπάρχει μια υπέροχη σύντομη και ευρύχωρη λέξη «σχέδιο», την οποία οι νοητικά καθυστερημένοι μεταφραστές και οι ελαττωματικοί διαχειριστές έχουν πρόσφατα αρχίσει για κάποιο λόγο να αποκαλούν «οδικό χάρτη». Ας τους έχει καλά ο Θεός.
Το σχέδιό μας θα έχει ως εξής. Ας υποθέσουμε ότι υπάρχει ένα δωμάτιο στο οποίο η υγρασία μπορεί μερικές φορές να αυξηθεί σημαντικά. Για παράδειγμα, όπως ένα μπάνιο ή μια κουζίνα. Η υγρασία είναι κάτι δυσάρεστο και ο τρόπος για να την καταπολεμήσουμε είναι τόσο παλιός όσο ο κόσμος: αερίστε το δωμάτιο. Υπάρχουν αρκετοί τρόποι αερισμού. Αλλά πιθανότατα θα αρνηθούμε εξωτικές και παλιομοδίτικες μεθόδους όπως οι νέγροι με ανεμιστήρες και θα καταλήξουμε σε έναν κανονικό ανεμιστήρα. Οι ανεμιστήρες είναι φθηνότεροι και πιο εύκολο να βρεθούν στην περιοχή μας.
Με λίγα λόγια, θέλουμε να ελέγχουμε τον ανεμιστήρα: να τον ανοίγουμε και, κατά συνέπεια, να τον κλείνουμε. Πιο συγκεκριμένα, θέλουμε να ενεργοποιείται και να απενεργοποιείται μόνος του όταν είναι απαραίτητο.
Απομένει να καθοριστεί: υπό ποιες συνθήκες πρέπει να ενεργοποιηθεί ο ανεμιστήρας και υπό ποιες συνθήκες πρέπει να απενεργοποιηθεί.
Όλα είναι προφανή εδώ: εάν η υγρασία είναι πάνω από ένα ορισμένο όριο, ο ανεμιστήρας ενεργοποιείται και τραβάει αέρα. εάν η υγρασία επιστρέψει στο φυσιολογικό, ο ανεμιστήρας απενεργοποιείται.
Ένας προσεκτικός αναγνώστης θα τραβήξει αμέσως την προσοχή της λέξης «δεδομένο». Δίνεται από ποιον; Δίνεται πώς;
Υπάρχουν διάφοροι τρόποι για να ορίσετε το όριο υγρασίας. Θα εξετάσουμε δύο από αυτούς: ο πρώτος χρησιμοποιεί μεταβλητή αντίσταση και ο δεύτερος μέσω δικτύου μέσω του πρωτοκόλλου MQTT. Κάθε μία από αυτές τις μεθόδους έχει πλεονεκτήματα και μειονεκτήματα, τα οποία θα συζητηθούν περαιτέρω.
Για όσους δεν καταλαβαίνουν, θα εξηγήσω ότι η «οριακή υγρασία» είναι ένα επίπεδο υγρασίας που, όταν ξεπεραστεί, απαιτεί την ενεργοποίηση του ανεμιστήρα.
Η επόμενη ερώτηση: πρέπει να δοθεί στον χρήστη το δικαίωμα να ενεργοποιήσει απευθείας τον ανεμιστήρα; Δηλαδή, ανεξάρτητα από το επίπεδο υγρασίας, πατώντας ένα κουμπί; Θα παρέχουμε μια τέτοια επιλογή. Άλλωστε, ο ανεμιστήρας μπορεί να χρειαστεί όχι μόνο σε περίπτωση υψηλής υγρασίας, αλλά και για να αφαιρέσει από το δωμάτιο, για παράδειγμα, μια δυσάρεστη οσμή, που ονομάζεται ευρέως "δυσοσμία".
Έτσι, καταλαβαίνουμε τι θέλουμε και έστω και λίγο πώς θα λειτουργήσει. Ας απαριθμήσουμε σύντομα όλες τις λειτουργίες του συστήματος ελέγχου εξαερισμού μας:
- ρύθμιση του ορίου υγρασίας (δύο επιλογές).
- μέτρηση στάθμης υγρασίας;
- αυτόματη ενεργοποίηση ανεμιστήρα;
- αυτόματο κλείσιμο ανεμιστήρα;
- χειροκίνητη ενεργοποίηση ανεμιστήρα (πατώντας ένα κουμπί).
Έτσι, το σχέδιο είναι σαφές. Είναι απαραίτητο να εφαρμόσουμε όλες τις παραπάνω λειτουργίες στο πρόγραμμά μας. Θα ενεργήσουμε με βάση αυτό το "σχέδιο". Αρχικά, ας σχεδιάσουμε ένα δομικό διάγραμμα της συσκευής.
Δομικό διάγραμμα της συσκευής
Γενικά, θα έχουμε δύο τέτοια σχήματα. Το πρώτο αφορά την παραλλαγή στην οποία το επίπεδο κατωφλίου υγρασίας ορίζεται από μια μεταβλητή αντίσταση. Το δεύτερο σχήμα αφορά την παραλλαγή στην οποία το επίπεδο κατωφλίου υγρασίας ορίζεται μέσω του δικτύου μέσω του πρωτοκόλλου MQTT.
Αλλά επειδή αυτά τα σχήματα θα διαφέρουν μόνο κατά ένα στοιχείο - την μεταβλητή αντίσταση "που ορίζει το επίπεδο υγρασίας κατωφλίου", θα σχεδιάσουμε μόνο ένα δομικό σχήμα. Φυσικά, το δομικό σχήμα σύμφωνα με την GOST φαίνεται διαφορετικό. Αλλά δεν εστιάζουμε σε έμπειρους μηχανικούς, αλλά στη νεότερη γενιά. Επομένως, η σαφήνεια είναι πιο σημαντική.

Τι βλέπουμε λοιπόν στην εικόνα; Ο ανεμιστήρας είναι συνδεδεμένος στο ρελέ. Relay1 ελεγκτής ShioTinyΘα ήθελα να επιστήσω την προσοχή σας στο γεγονός ότι ένας ανεμιστήρας είναι κάτι που ζει υπό υψηλή τάση. Επομένως, αν κάποιος πρόκειται να το κάνει αυτό μόνος του, να είναι προσεκτικός. Δηλαδή, τουλάχιστον πριν βάλετε τα δάχτυλά σας ή τα όργανα μέτρησης στο κύκλωμα, απενεργοποιήστε τον ανεμιστήρα. Και η δεύτερη παρατήρηση. Εάν ο ανεμιστήρας σας είναι πιο ισχυρός από 250Wκαι, στη συνέχεια, συνδέστε το απευθείας στο ShioTiny δεν χρειάζεται - μόνο μέσω της μίζας.
Έχουμε τακτοποιήσει τον ανεμιστήρα. Τώρα το κουμπί "χειροκίνητη ενεργοποίηση" για τον ανεμιστήρα. Είναι συνδεδεμένο στην είσοδο Είσοδος1Δεν υπάρχει τίποτα περισσότερο να εξηγήσουμε εδώ.
Αισθητήρας θερμοκρασίας και υγρασίας DHT-11 (ή DHT-22 ή τα ανάλογά τους). Παρέχεται μια ειδική είσοδος στον ελεγκτή για τη σύνδεσή του. ShioTinyΌπως μπορείτε να δείτε στην εικόνα, η σύνδεση ενός τέτοιου αισθητήρα επίσης δεν παρουσιάζει προβλήματα.
Και τέλος, μια μεταβλητή αντίσταση που ορίζει το κατώφλι υγρασίας. Πιο συγκεκριμένα, ένας διαχωριστής που αποτελείται από μεταβλητή και σταθερή αντίσταση. Δεν υπάρχουν προβλήματα με τη σύνδεσή του, αλλά θα εξηγήσω ότι ο ενσωματωμένος ADC είναι ενεργοποιημένος. ESP8266 Έχει σχεδιαστεί για μέγιστο 1 Volt. Γι' αυτό χρειάζεται ένας διαιρέτης τάσης περίπου 5 φορές.
Και επιτρέψτε μου να σας υπενθυμίσω για άλλη μια φορά ότι αυτός ο διαχωριστής δεν είναι απαραίτητος εάν το επίπεδο υγρασίας κατωφλίου έχει οριστεί μέσω του δικτύου μέσω του πρωτοκόλλου MQTT.
Ας ξεκινήσουμε τη σύνταξη του αλγορίθμου λειτουργίας της συσκευής στον επεξεργαστή ElDraw ShIoTiny. Μπορείτε να διαβάσετε πώς να φτάσετε σε αυτόν τον επεξεργαστή στα προηγούμενα άρθρα ή στις οδηγίες, ο σύνδεσμος προς τις οποίες βρίσκεται στην αρχή του άρθρου.
Επιλογή πρώτη, η απλούστερη
Ας ξεκινήσουμε με κάτι απλό: ενεργοποιώντας το ρελέ Relay1 όταν το όριο υγρασίας υπερβαίνεται για ένα συγκεκριμένο χρονικό διάστημα.

Όπως μπορούμε να δούμε, δεν υπάρχει τίποτα περίπλοκο: μόνο τέσσερις κόμβοι, χωρίς να υπολογίζονται οι κόμβοι σχολίων. DHT11 — αυτός είναι στην πραγματικότητα ένας αισθητήρας θερμοκρασίας και υγρασίας (μπορεί να αντικατασταθεί με DHT22).
Συνεχής ΣΥΝΙΣΤΩΣΗ — επίπεδο κατωφλίου υγρασίας, σε ποσοστό.
Ένας συγκριτής είναι ένας κόμβος που συγκρίνει δύο αριθμούς και εξάγει 1 εάν πληρούται η καθορισμένη συνθήκη και 0 εάν η συνθήκη δεν πληρούται.
Στην περίπτωσή μας, μια τέτοια συνθήκη θα είναι Α>ΒΌπου A — το επίπεδο υγρασίας που μετράται από τον αισθητήρα, και B — το κατώφλι της ίδιας υγρασίας.
Μόλις μετρηθεί το επίπεδο υγρασίας (A) θα υπερβεί το όριο υγρασίας (B), ακριβώς εκεί στην έξοδο του συγκριτή Α>Β Θα εμφανιστεί το 1 και το ρελέ θα ενεργοποιηθεί. Και αντίστροφα, μόλις το επίπεδο υγρασίας επιστρέψει στο φυσιολογικό (δηλαδή, Α<=Β), ακριβώς εκεί στην έξοδο του συγκριτή Α>Β Θα εμφανιστεί η ένδειξη 0 και το ρελέ θα απενεργοποιηθεί.
Είναι όλα σαφή; Αν όχι, διαβάστε το ξανά ή δείτε την περιγραφή των κόμβων στις οδηγίες.
Σημειώστε ότι τα δεδομένα από τον αισθητήρα DHT11 ενημερώνονται περίπου μία φορά κάθε 10 δευτερόλεπτα. Επομένως, το ρελέ δεν θα μπορεί να ενεργοποιείται και να απενεργοποιείται συχνότερα από μία φορά κάθε 10 δευτερόλεπτα.
Όλα θα ήταν καλά, αλλά θα θέλαμε να ρυθμίσουμε το κατώφλι υγρασίας χρησιμοποιώντας μια μεταβλητή αντίσταση. Τίποτα δεν θα μπορούσε να είναι απλούστερο!

Ας αντικαταστήσουμε απλώς τον σταθερό κόμβο με τον κόμβο ADC. Άλλωστε, στον ADC συνδέσαμε τον διαιρέτη τάσης με μια μεταβλητή αντίσταση.
Η τάση στην είσοδο ADC αλλάζει από 0 σε 1 Volt. Αλλά η υγρασία στην έξοδο του αισθητήρα αλλάζει από 0 σε 100%. Πώς τα συγκρίνουμε; Είναι απλό. Η μονάδα ADC στο ShioTiny όχι μόνο μετρά την τάση εισόδου, αλλά μπορεί επίσης κλίμακα και μετατόπιση.
Δηλαδή, η έξοδος του κόμβου ADC1 (ADC) θα είναι η τιμή X, υπολογιζόμενο με τον τύπο

Όπου
— τάση στην είσοδο ADC (από 0 έως 1V)· k - εύρος (εύρος ADC) και b- μετατόπιση (ADC offset). Έτσι, αν ορίσετε k = 100 и b=0, τότε κατά την αλλαγή
στην περιοχή από 0 έως 1, τιμή X στην έξοδο του κόμβου ADC θα αλλάξει στην περιοχή από 0 έως 100. Δηλαδή, αριθμητικά ίσο με το εύρος αλλαγής υγρασίας από 0 έως 100%.
Ή, για να το θέσω απλά, περιστρέφοντας το ρυθμιστικό μεταβλητής αντίστασης, μπορείτε να ρυθμίσετε το επίπεδο υγρασίας κατωφλίου από 0 έως 100. Η μόνη ενόχληση είναι ότι δεν υπάρχουν συσκευές απεικόνισης. Αλλά στην πράξη, αν κάνετε το ρυθμιστικό μεταβλητής αντίστασης 6 διαιρέσεις 0%, 20%, 40%, 60%, 80%, 100%) - τότε αυτό αρκεί για να ρυθμίσετε το επίπεδο υγρασίας κατωφλίου.
Πώς ορίζουμε τις πιθανότητες; k - εύρος (εύρος ADC) και b- μετατόπιση (μετατόπιση ADC); Είναι πανεύκολο! Απλώς τοποθετήστε το ποντίκι σας στον κόμβο ADC1 και θα δείτε αμέσως ένα παράθυρο ρυθμίσεων. Σε αυτό μπορείτε να ορίσετε όλα όσα χρειάζεστε. Στην περίπτωσή μας, θα είναι ένα παράθυρο όπως αυτό στην εικόνα.

Λοιπόν, έχουμε την απλούστερη λειτουργική λύση. Ας αρχίσουμε να τη βελτιώνουμε.
Παρεμπιπτόντως, η απλούστερη λύση έχει ένα πλεονέκτημα - δεν χρειάζεται το Διαδίκτυο. Είναι εντελώς αυτόνομη.
Επιλογή δύο, συνδέστε το κουμπί
Όλα λειτουργούν και όλοι είναι ευχαριστημένοι. Αλλά το πρόβλημα είναι το εξής: δεν μπορούμε να ανοίξουμε τον εξαερισμό με τη βία. Το έχουμε ήδη συμφωνήσει στην είσοδο. Είσοδος1 Θα έχουμε ένα κουμπί συνδεδεμένο που θα ενεργοποιεί και θα απενεργοποιεί τον ανεμιστήρα με βίαιο τρόπο, αγνοώντας τον αισθητήρα υγρασίας.
Ήρθε η ώρα να επεξεργαστούμε αυτό το κουμπί στο πρόγραμμα κυκλώματός μας.

Το μπλοκ επεξεργασίας πατήματος κουμπιών επισημαίνεται με μια πορτοκαλί γραμμή. Είναι ένας μετρητής πατήματος κουμπιών που μηδενίζεται όταν η τιμή στην έξοδό του υπερβαίνει το ένα (πράσινη γραμμή, έξοδος κόμβου CT).
Όλα λειτουργούν εδώ τόσο απλά όσο και πριν: ο μετρητής CT μετράει τον αριθμό των πατημάτων ενός κουμπιού που είναι συνδεδεμένο σε μια είσοδο Είσοδος1Δηλαδή, η τιμή στην έξοδο αυτού του μετρητή αυξάνεται κατά 1 με κάθε πάτημα του κουμπιού.
Μόλις αυτή η τιμή γίνει ίση με δύο (δηλαδή, μεγαλύτερη από 1), αμέσως στην έξοδο του συγκριτή Α>Β Θα εμφανιστεί το 1. Και αυτό το 1 θα μηδενίσει τον μετρητή. CT στο μηδέν. Αυτό αναφέρεται στον συγκριτή, τον κάτω στο διάγραμμα!
Έτσι, το κουμπί μας έχει δύο καταστάσεις - 0 και 1. Αν χρειαζόμασταν περισσότερες καταστάσεις (3 ή 4 ή και περισσότερες) - θα χρειαζόταν απλώς να αλλάξουμε τη σταθερά ΣΥΝΙΣΤΩΣΗ από τη μία τιμή στην άλλη.
Έτσι, έχουμε δύο προϋποθέσεις για την ενεργοποίηση του ανεμιστήρα: υπέρβαση του καθορισμένου επιπέδου υγρασίας και πάτημα του κουμπιού μία φορά. Εάν πληρούται οποιαδήποτε από τις δύο προϋποθέσεις, ο ανεμιστήρας θα ενεργοποιηθεί. Και θα λειτουργεί μέχρι να πατηθεί ξανά το κουμπί. И το επίπεδο υγρασίας δεν θα επανέλθει στο φυσιολογικό.
Φυσικά, είναι δυνατό να περιπλέξουμε ακόμη περισσότερο τον αλγόριθμο, αλλά δεν θα το κάνουμε αυτό - θα αφήσουμε χώρο για δημιουργικότητα σε όσους το επιθυμούν.
Επιλογή τρία, σύνδεση στο Διαδίκτυο
Όλα όσα περιγράψαμε είναι αρκετά λειτουργικά. Αλλά τι γίνεται με την επίδειξη; Άλλωστε, οποιοσδήποτε σπυρωτός χίπστερ χάκερ κράκερ θα γελάσει με κάποιον που γυρίζει ένα κουμπί και πατάει ένα κουμπί, αντί να το ελέγχει με ένα smartphone! Το να γυρίζεις ένα κουμπί «δεν είναι της μόδας». Αλλά το να τρίβεις το δάχτυλό σου σε ένα smartphone, το να τρίβεις αυτό το δάχτυλο μέχρι να γίνει ματωμένο - αυτή είναι η κορύφωση των επιθυμιών ενός χίπστερ χάκερ κράκερ (δεν μπόρεσα ποτέ να τα ξεχωρίσω όλα - οπότε αν έκανα λάθος, συγχωρέστε με).
Αλλά ας είμαστε επιεικείς με τα άτομα που αναφέρθηκαν. Ο έλεγχος μέσω Διαδικτύου έχει πραγματικά πλεονεκτήματα. Πρώτον, είναι η σαφήνεια. Υπάρχουν πολλές εφαρμογές για όλες τις πλατφόρμες που σας επιτρέπουν να δημιουργήσετε έναν πίνακα ελέγχου για τον ελεγκτή Carlson μας, ο οποίος είναι αρκετά εύχρηστος με μερικά κλικ. Δεύτερον, είναι μια ευκαιρία να παρακολουθείτε εξ αποστάσεως το επίπεδο υγρασίας στο δωμάτιο. Και τρίτον, μπορείτε να δείτε όχι μόνο τι κάνει ο ανεμιστήρας - αν περιστρέφεται ή όχι, αλλά και ποιο όριο υγρασίας έχει οριστεί. Και αν ο ανεμιστήρας ενεργοποιήθηκε αυτόματα ή χειροκίνητα. Γενικά, ό,τι θέλετε.
Φυσικά, για κάποιον θαυμαστή είναι μεγάλη τιμή να λαμβάνει τόση προσοχή. Αλλά αυτό είναι απλώς ένα παράδειγμα.
Έτσι, για να συνδεθούμε στο Διαδίκτυο θα χρησιμοποιήσουμε την τεχνολογία MQTT και το ομώνυμο πρωτόκολλο.
Για να αξιοποιήσουμε αυτήν την τεχνολογία, χρειαζόμαστε Μεσίτης MQTTΑυτός είναι ένας ειδικός διακομιστής που εξυπηρετεί Πελάτες MQTT, Π.χ. Σιότινι και το smartphone σας.
Η ουσία της τεχνολογίας MQTT συνίσταται στο γεγονός ότι οποιοσδήποτε από τους πελάτες δημοσιεύει αυθαίρετα δεδομένα στον μεσίτη (διακομιστή) MQTT με ένα συγκεκριμένο όνομα (που ονομάζεται τοπικός στην ορολογία MQTT). Άλλοι πελάτες μπορούν να εγγραφούν σε αυθαίρετα δεδομένα με το όνομά τους (τοπικός) και να λαμβάνουν πρόσφατα δημοσιευμένα δεδομένα. Δηλαδή, όλη η ανταλλαγή δεδομένων γίνεται με βάση την αρχή πελάτης-μεσίτης-πελάτης.
Я δεν θα Εστιάστε στις λεπτομέρειες. Υπάρχουν πολλά άρθρα και εκπαιδευτικά βίντεο στο Διαδίκτυο σχετικά με το πώς λειτουργεί. MQTT και ποια προγράμματα υπάρχουν για τη δημιουργία πινάκων ελέγχου. Θα σας δείξω απλώς πώς μπορούμε να λαμβάνουμε και να δημοσιεύουμε δεδομένα μέσω ShioTiny.
Ως μεσίτης χρησιμοποίησα , αλλά η αρχή είναι η ίδια παντού.
Ας υποθέσουμε λοιπόν ότι έχετε εγγραφεί στο Μεσίτης MQTTΓενικά, ο μεσίτης θα σας δώσει (ή θα σας ζητήσει να βρείτε) ένα όνομα χρήστη και έναν κωδικό πρόσβασης (για εξουσιοδότηση), καθώς και μια θύρα για σύνδεση. Σύνδεση ShioTiny к Μεσίτης MQTT υπάρχουν δύο τρόποι - μια κανονική σύνδεση και μέσω TLS (SSL).
Όλες αυτές οι παράμετροι βρίσκονται σε ShioTiny εισάγονται στην καρτέλα Δικτύωση, κεφάλαιο Σύνδεση MQTT με διακομιστή.

Εάν σας Μεσίτης MQTT δεν απαιτεί εξουσιοδότηση - μην εισάγετε τα στοιχεία σύνδεσης και τον κωδικό πρόσβασής σας (αφήστε αυτά τα πεδία κενά).
Παράμετρος Πρόθεμα θέματος MQTT απαιτεί ξεχωριστή εξήγηση.
Το πρόθεμα παραμέτρων MQTT είναι μια συμβολοσειρά που προσαρτάται στο όνομα του θέματος (τοπικός) κατά τη δημοσίευση και την εγγραφή σε έναν μεσίτη MQTT. Για εγκατάσταση Πρόθεμα MQTT για τον ελεγκτή σας, απλώς πρέπει να τον εισαγάγετε στο πεδίο εισαγωγής "Πρόθεμα θέματος MQTT"("Πρόθεμα θέματος MQTT"). Το πρόθεμα ξεκινά πάντα με κάθετο ("/")! Εάν δεν εισαγάγετε μια κάθετο στο πεδίο εισαγωγής, θα προστεθεί αυτόματα. Δεν μπορείτε να χρησιμοποιήσετε σύμβολα στο πρόθεμα "#" и "+"Δεν υπάρχουν άλλοι περιορισμοί.
Για παράδειγμα, αν δημοσιεύσετε την παράμετρο "κατάσταση" (ή εγγραφείτε σε αυτό) και το πρόθεμά σας έχει οριστεί σε "/σιοτίνι/", τότε στον μεσίτη αυτή η παράμετρος θα δημοσιευτεί με το όνομα "/shiotiny/status"Εάν έχετε ένα κενό πρόθεμα, τότε όλες οι παράμετροι στον μεσίτη θα ξεκινούν με μια κάθετο ("/"): "κατάσταση«θα δημοσιευτεί ως»/κατάσταση».
Επομένως, υποθέτουμε ότι έχετε εγγραφεί στο Μεσίτης MQTT και λάβατε ένα όνομα χρήστη, έναν κωδικό πρόσβασης και μια θύρα. Στη συνέχεια, εισαγάγατε αυτές τις παραμέτρους στην καρτέλα Δικτύωση, κεφάλαιο Σύνδεση MQTT με διακομιστή ελεγκτής ShioTiny.
Υποθέτουμε ότι το πρόθεμα έχει οριστεί σε "/δωμάτιο/».
Ας ξεκινήσουμε δημοσιεύοντας την κατάσταση όλων των βασικών παραμέτρων: ρελέ Realay1, χειροκίνητη ενεργοποίηση κατάστασης, αυτόματη ενεργοποίηση κατάστασης και, τέλος, κατώφλι και τρέχοντα επίπεδα υγρασίας. Και ως επιπλέον πλεονέκτημα - η θερμοκρασία δωματίου. Δείτε την εικόνα για το πώς να το κάνετε αυτό.

Όπως μπορούμε να δούμε, η μόνη διαφορά από την προηγούμενη έκδοση είναι οι κόμβοι "Δημοσίευση MQTT"Λαμβάνοντας υπόψη το πρόθεμα, δημοσιεύονται οι ακόλουθες παράμετροι:

Όπως μπορούμε να δούμε, ολόκληρη η κατάσταση του συστήματος βρίσκεται στην παλάμη του χεριού μας!
Αλλά θέλουμε όχι μόνο να δούμε, αλλά και να ελέγξουμε. Τι να κάνουμε; Πολύ απλό. Θα αρνηθούμε να ορίσουμε το κατώφλι υγρασίας με τη βοήθεια ADC και μια μεταβλητή αντίσταση και θα ορίσουμε αυτό το επίπεδο υγρασίας κατωφλίου σύμφωνα με MQTT απευθείας από το smartphone σας!

Αφαιρούμε τον κόμβο ADC από το κύκλωμα και συμπεριλαμβάνουμε εκεί τρεις νέους κόμβους: Κατάστημα FLASH, Επαναφορά FLASH и Περιγραφή MQTT.
Λειτουργία κόμβου Περιγραφή MQTT είναι προφανές: λαμβάνει μια παράμετρο /room/trigHset (όριο υγρασίας) με Μεσίτης MQTT. Αλλά τι κάνει στη συνέχεια με τα δεδομένα; Απλώς τα δίνει στον κόμβο Κατάστημα FLASH, το οποίο με τη σειρά του αποθηκεύει αυτά τα δεδομένα σε μη πτητική μνήμη με το όνομα τριγωνομετρίαΜετά από αυτό, ο κόμβος Επαναφορά FLASH διαβάζει δεδομένα από μη πτητική μνήμη με το όνομα τριγωνομετρία και τι θα συμβεί στη συνέχεια το ξέρουμε ήδη.
Γιατί τέτοιες επιπλοκές; Γιατί τα ληφθέντα δεδομένα δεν μπορούν να τροφοδοτηθούν αμέσως στην είσοδο του συγκριτή;
Όπως έλεγε ο σύντροφος Σ. Χολμς: είναι στοιχειώδες! Κανείς δεν εγγυάται ότι μετά την ενεργοποίηση της συσκευής σας, θα ενταχθεί Μεσίτης MQTTΚαι η υγρασία πρέπει να μετρηθεί. Και ο ανεμιστήρας πρέπει να είναι ενεργοποιημένος. Αλλά χωρίς πληροφορίες σχετικά με το επίπεδο υγρασίας κατωφλίου, αυτό είναι αδύνατο! Επομένως, όταν η συσκευή μας είναι ενεργοποιημένη, ανακτά το προηγουμένως αποθηκευμένο επίπεδο υγρασίας κατωφλίου από τη μη πτητική μνήμη και τη χρησιμοποιεί για να λάβει αποφάσεις. Και όταν δημιουργηθεί μια σύνδεση με Μεσίτης MQTT και κάποιος θα δημοσιεύσει μια νέα τιμή /room/trigHset, τότε θα χρησιμοποιηθεί αυτή η νέα τιμή.
Στη συνέχεια, μπορείτε να σκεφτείτε οτιδήποτε θέλετε. Για παράδειγμα, εκτός από την υγρασία, εισαγάγετε έλεγχο θερμοκρασίας. Ή προσθέστε "έξυπνο" έλεγχο φωτισμού (έχουμε ακόμα δύο ρελέ και δύο εισόδους που δεν χρησιμοποιούνται). Όλα είναι στα χέρια σας!
Συμπέρασμα
Έτσι, εξετάσαμε διάφορα παραδείγματα υλοποίησης του απλούστερου ελεγκτή που βασίζεται στο ShIoTiny. Ίσως αυτό να είναι χρήσιμο σε κάποιον.
Όπως πάντα, προτάσεις, επιθυμίες, ερωτήσεις, τυπογραφικά λάθη κ.λπ. - μέσω email: shiotiny@yandex.ru
Πηγή: www.habr.com
