Πίνακας περιεχομένων:

WiFi IoT Αισθητήρας θερμοκρασίας και υγρασίας. Μέρος: 8 IoT, Αυτοματισμός σπιτιού: 9 βήματα
WiFi IoT Αισθητήρας θερμοκρασίας και υγρασίας. Μέρος: 8 IoT, Αυτοματισμός σπιτιού: 9 βήματα

Βίντεο: WiFi IoT Αισθητήρας θερμοκρασίας και υγρασίας. Μέρος: 8 IoT, Αυτοματισμός σπιτιού: 9 βήματα

Βίντεο: WiFi IoT Αισθητήρας θερμοκρασίας και υγρασίας. Μέρος: 8 IoT, Αυτοματισμός σπιτιού: 9 βήματα
Βίντεο: Astrophotography from $100 to $10,000 2024, Ιούλιος
Anonim
WiFi IoT Αισθητήρας θερμοκρασίας και υγρασίας. Μέρος: 8 IoT, Αυτοματισμός σπιτιού
WiFi IoT Αισθητήρας θερμοκρασίας και υγρασίας. Μέρος: 8 IoT, Αυτοματισμός σπιτιού

Προοίμιο

Αυτό το άρθρο τεκμηριώνει την πρακτική ακαμψία και την περαιτέρω ανάπτυξη ενός προηγούμενου Instructable: «Pimping» της πρώτης σας συσκευής IoT WiFi. Μέρος 4: IoT, Home Automation που περιλαμβάνει όλη την απαραίτητη λειτουργικότητα λογισμικού για να επιτραπεί η επιτυχής ανάπτυξη σε οικιακό οικιακό περιβάλλον.

Εισαγωγή

Όπως αναφέρθηκε παραπάνω, αυτό το Instructable περιγράφει τη σύγκλιση προηγούμενου παραδείγματος IoT με αξιόπιστο σχεδιασμό συστημάτων που επιτρέπει τον επιτυχή χειρισμό περιπτώσεων πρακτικής χρήσης, όπως π.χ. Καταστροφική απώλεια ισχύος, αποτυχία MQTT Broker, αστοχία WiFi N/W, αναδιαμόρφωση απομακρυσμένου αισθητήρα, διαμορφώσιμη στρατηγική αναφοράς για μείωση της κυκλοφορίας δικτύου και εξατομικευμένη βαθμονόμηση αισθητήρα.

Συνολικά δημιουργήθηκαν 6 συσκευές εκτός λειτουργίας (βλέπε εικόνα 1 παραπάνω) και διανεμήθηκαν στο σπίτι μου για να σχηματίσουν το πρώτο μου δίκτυο αισθητήρων IoT.

Το Instructable βλέπει επίσης μια ανασκόπηση της σύμβασης ονοματοδοσίας MQTT όπως χρησιμοποιείται στην αρχική σειρά IoT Home Automation δίνοντας τη θέση της σε μια πιο ισορροπημένη, πρακτική δομή που επιτρέπει την απλούστερη αποσφαλμάτωση της κυκλοφορίας IoT σε περιβάλλον συσκευών πολλαπλών IoT.

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

Τι μέρη χρειάζομαι;

  1. 1 έκπτωση ESP8266-01,
  2. 2 εκτός ηλεκτρολυτικών πυκνωτών 1uF,
  3. 3 από 10K αντιστάσεις,
  4. 1 από 330R αντίσταση,
  5. 1 έκπτωση 3mm διαμέτρου. LED,
  6. 1 έκπτωση LD1117-33v, 3v3 LDO VReg. (Farnell εδώ),
  7. 1 έκπτωση DHT22 Αισθητήρας θερμοκρασίας/υγρασίας,
  8. 1 έκπτωση Dual 4way 0.1 "Connector,
  9. 1 έκπτωση CAMDENBOSS RX2008/S-5 Πλαστικό περίβλημα, δοχείο, ABS, 38 mm, 23 mm (Farnell εδώ),
  10. 1 off DC DC Connector, Plug, 1 A, 2 mm, Panel Mount (Farnell εδώ),
  11. 1 έκπτωση TO-220 Heatsink 24,4 ° C/W (Farnell εδώ),
  12. Διάφορες σωλήνες συρρίκνωσης θερμότητας (κίτρινες, Ebay εδώ),
  13. Διάφορα μήκη κορδέλα κορδέλας,
  14. Ένωση ψύκτρας,
  15. Veroboard,
  16. Συσκευή προγραμματισμού ESP8266-01. Δες εδώ; Πρακτική κατασκευή κυκλώματος με λωρίδα, βήμα 9 και μετά.

Τι λογισμικό χρειάζομαι;

  1. Arduino IDE 1.6.9
  2. Το Arduino IDE έχει ρυθμιστεί ώστε να προγραμματίζει το ESP8266-01. Δες εδώ; Ρύθμιση του Arduino IDE για προγραμματισμό του ESP8266-01

Τι εργαλεία χρειάζομαι;

  1. Συγκολλητικό σίδερο,
  2. Τρυπάνι & διάφορα κομμάτια,
  3. Αρχεία,
  4. Σιδηροπρίονο,
  5. Στιβαρή κακία,
  6. Θερμοβόλο,
  7. DMM

Τι δεξιότητες χρειάζομαι;

  1. Μια ελάχιστη γνώση των ηλεκτρονικών,
  2. Γνώση του Arduino και του IDE,
  3. Υποτυπώδεις δεξιότητες κατασκευής (συγκόλληση, πριόνισμα, αρχειοθέτηση, διάτρηση κ.λπ.),
  4. Λίγη υπομονή,
  5. Κάποια κατανόηση του οικιακού σας δικτύου.

Θέματα που καλύπτονται

  1. Επισκόπηση κυκλώματος
  2. Επισκόπηση συστήματος λογισμικού
  3. Επισκόπηση λογισμικού
  4. Βαθμονόμηση αισθητήρα
  5. Σύμβαση ονοματοδοσίας θεμάτων MQTT
  6. Διαμόρφωση OpenHAB
  7. Δοκιμάζοντας το Σχέδιο
  8. συμπέρασμα
  9. Χρησιμοποιούνται αναφορές

Σύνδεσμοι σειρών

Στο Μέρος 7: Ελεγκτής φώτων μελέτης (επανεπεξεργασμένο). Μέρος 7: IoT, Αυτοματισμός σπιτιού

Στο Μέρος 9: Ελεγκτής δικτύου IoT. Μέρος 9: IoT, Αυτοματισμός σπιτιού

Βήμα 1: Επισκόπηση κυκλώματος

Επισκόπηση κυκλώματος
Επισκόπηση κυκλώματος
Επισκόπηση κυκλώματος
Επισκόπηση κυκλώματος
Επισκόπηση κυκλώματος
Επισκόπηση κυκλώματος
Επισκόπηση κυκλώματος
Επισκόπηση κυκλώματος

Η εικόνα 1 παραπάνω δείχνει το σχέδιο πλήρους κυκλώματος για τον αισθητήρα IoT.

Στο επίκεντρο της συσκευής IoT είναι το ESP8266-01 το οποίο συνδέεται με έναν αισθητήρα θερμοκρασίας/υγρασίας DHT22 μέσω αντίστασης έλξης 10K στο GPIO2. Ένα εξωτερικό 5v τροφοδοτείται με τροφοδοσία μεταγωγής και τροφοδοτείται στη συσκευή μέσω πρίζας βάσης 2mm DC και ρυθμίζεται τοπικά με ρυθμιστή τάσης LD1117-33v, 3v3 LDO τοποθετημένο σε εξωτερική ψύκτρα με βίδα και παξιμάδι BZP M3 Το

Ο σχεδιασμός περιλαμβάνει ένα κόκκινο led 3mm συνδεδεμένο στο GPIO0 το οποίο χρησιμοποιείται για να δώσει τοπική ένδειξη της κατάστασης της συσκευής IoT κατά την εκκίνηση ή οποιαδήποτε επακόλουθη κατάσταση σφάλματος. Μπορεί επίσης να χρησιμοποιηθεί για την αναγνώριση της συσκευής με χειροκίνητη ενεργοποίηση μέσω της διεπαφής openHAB.

Ο πλήρης σχεδιασμός ταιριάζει τακτοποιημένα σε ένα δοχείο ABS όπως φαίνεται παραπάνω στην εικόνα 2 και σχεδιάστηκε ειδικά για να διασφαλίσει ότι ο αισθητήρας είναι όσο το δυνατόν πιο μακριά από τον ρυθμιστή για να αποτρέψει την πόλωση λόγω τοπικών επιδράσεων θέρμανσης (εικόνα 7 παραπάνω).

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

Οι εικόνες 4… 6 δείχνουν διάφορες καταστάσεις κατασκευής.

Βήμα 2: Επισκόπηση συστήματος λογισμικού

Επισκόπηση συστήματος λογισμικού
Επισκόπηση συστήματος λογισμικού
Επισκόπηση συστήματος λογισμικού
Επισκόπηση συστήματος λογισμικού

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

SPIFFS

Αυτό είναι το ενσωματωμένο σύστημα αρχειοθέτησης SPI Flash και χρησιμοποιείται για τη διατήρηση των ακόλουθων πληροφοριών (βλέπε εικόνα 2 παραπάνω).

  • Εικονίδια και «Αρχική σελίδα διαμόρφωσης αισθητήρα» html: Εξυπηρετείται από τη συσκευή IoT όταν δεν μπορεί να συνδεθεί στο δίκτυό σας IoT WiFi (συνήθως λόγω λανθασμένων πληροφοριών ασφαλείας) και παρέχει στον χρήστη ένα μέσο απομακρυσμένης διαμόρφωσης του αισθητήρα χωρίς ανάγκη για επαναπρογραμματισμό ή μεταφόρτωση νέου περιεχομένου SPIFFS.
  • Πληροφορίες ασφαλείας: Διατηρεί τις πληροφορίες που χρησιμοποιούνται κατά την ενεργοποίηση της συσκευής IoT για σύνδεση στο δίκτυο IoT WiFi και στο MQTT Broker. Οι πληροφορίες που υποβάλλονται μέσω της «Αρχικής σελίδας διαμόρφωσης αισθητήρα» γράφονται σε αυτό το αρχείο («secvals.txt»).
  • Πληροφορίες βαθμονόμησης: Οι πληροφορίες που περιέχονται σε αυτό το αρχείο («calvals.txt») χρησιμοποιούνται για τη βαθμονόμηση του αισθητήρα θερμοκρασίας/υγρασίας επί του σκάφους, εάν είναι απαραίτητο. Οι σταθερές βαθμονόμησης μπορούν να γραφτούν στη συσκευή IoT μόνο μέσω εντολών MQTT από μεσίτη MQTT.

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

διακομιστής mDNS

Αυτή η λειτουργία καλείται όταν η συσκευή IoT δεν έχει συνδεθεί στο δίκτυό σας WiFi ως σταθμός WiFi και αντ 'αυτού έχει γίνει σημείο πρόσβασης WiFi κάτι παρόμοιο με έναν οικιακό δρομολογητή WiFi. Στην περίπτωση ενός τέτοιου δρομολογητή, θα συνδέεστε συνήθως με αυτόν, εισάγοντας τη διεύθυνση IP κάτι σαν το 192.168.1.1 (συνήθως τυπωμένο σε μια ετικέτα που είναι τοποθετημένη στο πλαίσιο) απευθείας στη γραμμή διευθύνσεων URL του προγράμματος περιήγησής σας, οπότε θα λάβετε μια σελίδα σύνδεσης για να εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασης που σας επιτρέπουν να διαμορφώσετε τη συσκευή.

Για το ESP8266 σε λειτουργία AP (λειτουργία σημείου πρόσβασης) η συσκευή είναι προεπιλεγμένη στη διεύθυνση IP 192.168.4.1, ωστόσο με τον διακομιστή mDNS που λειτουργεί πρέπει να εισαγάγετε μόνο το φιλικό προς τον άνθρωπο όνομα "SENSORSVR.local" στη γραμμή URL του προγράμματος περιήγησης για να δείτε 'Αρχική σελίδα διαμόρφωσης αισθητήρα'.

MQTT Client

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

Διακομιστής Ιστού

Όπως αναφέρθηκε παραπάνω, εάν η συσκευή IoT δεν μπορεί να συνδεθεί στο δίκτυο WiFi του οποίου τα SSID, P/W κ.λπ. καθορίζονται στο αρχείο πληροφοριών ασφαλείας που διατηρείται στο SPIFFS, η συσκευή θα γίνει Σημείο Πρόσβασης. Μόλις συνδεθείτε στο δίκτυο WiFi που παρέχεται από το Σημείο Πρόσβασης, η παρουσία ενός διακομιστή Web HTTP σάς επιτρέπει να συνδέεστε απευθείας με τη συσκευή και να αλλάζετε τη διαμόρφωσή της μέσω της χρήσης ενός προγράμματος περιήγησης Web HTTP. Ιστοσελίδα σελίδας που διατηρείται επίσης σε SPIFFS.

Σταθμός WiFi

Αυτή η λειτουργικότητα δίνει στη συσκευή IoT τη δυνατότητα να συνδεθεί σε ένα οικιακό δίκτυο WiFi χρησιμοποιώντας τις παραμέτρους στο αρχείο πληροφοριών ασφαλείας, χωρίς αυτό η συσκευή σας IoT δεν θα μπορεί να εγγραφεί/δημοσιεύσει στον μεσίτη MQTT

WiFi Access Point

Η δυνατότητα να γίνει WiFi Access Point είναι ένα μέσο με το οποίο η συσκευή IoT σας επιτρέπει να συνδεθείτε σε αυτήν και να κάνετε αλλαγές διαμόρφωσης μέσω ενός σταθμού WiFi και ενός προγράμματος περιήγησης (όπως το Safari στο Apple iPad).

Αυτό το σημείο πρόσβασης εκπέμπει ένα SSID = "SENSOR" + τα τελευταία 6 ψηφία της διεύθυνσης MAC της συσκευής IoT. Ο κωδικός πρόσβασης για αυτό το κλειστό δίκτυο ονομάζεται ευφάνταστα "PASSWORD"

Βήμα 3: Επισκόπηση λογισμικού

Επισκόπηση λογισμικού
Επισκόπηση λογισμικού
Επισκόπηση λογισμικού
Επισκόπηση λογισμικού

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

PubSubClient.h

  • Από: Nick O'Leary
  • Σκοπός: Επιτρέπει στη συσκευή να δημοσιεύει ή να εγγραφεί σε θέματα MQTT με έναν συγκεκριμένο μεσίτη
  • Από:

DHT.h

  • Από: Adafruit
  • Σκοπός: Βιβλιοθήκη για αισθητήρα θερμοκρασίας/υγρασίας DHT
  • Από:

Επισκόπηση κώδικα

Το λογισμικό χρησιμοποιεί τη μηχανή κατάστασης όπως φαίνεται στην εικόνα 1 παραπάνω (πλήρες αντίγραφο της πηγής που δίνεται παρακάτω). Υπάρχουν 5 κύριες καταστάσεις όπως παρακάτω.

  • ΜΕΣΑ ΣΕ ΑΥΤΟ

    Αυτή η κατάσταση προετοιμασίας είναι η πρώτη κατάσταση που εισέρχεται μετά την ενεργοποίηση

  • ΑΝΕΠΙΘΥΜΗΤΗ

    Αυτή η κατάσταση εισάγεται εάν μετά την ενεργοποίηση εντοπιστεί ένα μη έγκυρο ή λείπει αρχείο secvals.txt

  • ΑΝΑΜΟΝΗ ΒΔ

    Αυτή η κατάσταση είναι παροδική, εισάγεται ενώ δεν υπάρχει σύνδεση δικτύου WiFi

  • Εκκρεμεί MQTT

    Αυτή η κατάσταση είναι παροδική, εισάγεται μετά τη σύνδεση δικτύου WiFi και ενώ δεν υπάρχει σύνδεση με μεσίτη MQTT σε αυτό το δίκτυο

  • ΕΝΕΡΓΟΣ

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

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

  • 1η διεύθυνση IP μεσίτη MQTT. Σε διακεκομμένη δεκαδική μορφή AAA. BBB. CCC. DDD
  • 2ο λιμάνι μεσίτη MQTT. Σε ακέραιη μορφή.
  • 3η σύνδεση MQTT Broker προσπαθεί να πραγματοποιήσει πριν από τη μετάβαση από τη λειτουργία STA στη λειτουργία AP. Σε ακέραιη μορφή.
  • 4ο Δίκτυο WiFi SSID. Σε ελεύθερη μορφή κειμένου.
  • 5ος κωδικός πρόσβασης δικτύου WiFi. Σε ελεύθερη μορφή κειμένου.

Όπως αναφέρθηκε παραπάνω, εάν η συσκευή IoT δεν μπορεί να συνδεθεί ως Σταθμός WiFi στο δίκτυο WiFi, το SSID και το P/W ορίζονται σε secvals.txt που διατηρούνται στο SPIFFS, η συσκευή IoT θα γίνει Σημείο Πρόσβασης. Μόλις συνδεθεί σε αυτό το σημείο πρόσβασης, θα εμφανιστεί η "Αρχική σελίδα διαμόρφωσης αισθητήρα", όπως φαίνεται παραπάνω στην Εικόνα 2 (εισάγοντας είτε το 'SENSORSVR.local' είτε το 192.168.4.1 στη γραμμή διευθύνσεων URL του προγράμματος περιήγησης). Αυτή η αρχική σελίδα επιτρέπει την αναδιαμόρφωση του αισθητήρα μέσω προγράμματος περιήγησης

Απομακρυσμένη πρόσβαση ενώ βρίσκεστε σε ΕΝΕΡΓΗ κατάσταση

Μόλις συνδεθείτε με τον MQTT Broker, είναι επίσης δυνατό να επαναβαθμονομήσετε και να ρυθμίσετε ξανά τη συσκευή μέσω δημοσιεύσεων θεμάτων MQTT. Το αρχείο calvals.txt έχει πρόσβαση R/W και το secvals.txt έχει πρόσβαση μόνο για εγγραφή εκτεθειμένη.

Σφάλμα χρήστη

Κατά τη διάρκεια της ακολουθίας εκκίνησης, η συσκευή IoT led δίνει την ακόλουθη ανατροφοδότηση εντοπισμού σφαλμάτων

  • 1 Σύντομο φλας: Δεν υπάρχει αρχείο Config που βρίσκεται στο SPIFFS (secvals.txt)
  • 2 Αναβοσβήνει σύντομα: Η συσκευή IoT προσπαθεί να συνδεθεί σε δίκτυο WiFi
  • Συνεχής φωτισμός: Η συσκευή IoT προσπαθεί να συνδεθεί με τον MQTT Broker
  • Off: Η συσκευή είναι ενεργή
  • Σημείωση 1: Η «Αρχική σελίδα διαμόρφωσης αισθητήρα» δεν χρησιμοποιεί ασφαλείς πρίζες και επομένως βασίζεται στο να είναι ασφαλές το δίκτυό σας.
  • Σημείωση 2: Για να προγραμματίσετε κάθε συσκευή IoT, η συμβολοσειρά MQTT θα απαιτήσει επεξεργασία πριν από τη λήψη. Αυτό συμβαίνει επειδή ο αριθμός του αισθητήρα έχει ενσωματωθεί στη συμβολοσειρά MQTT. δηλ. «WFD/THSen/100/HumdStatus/1» για τις 6 συσκευές μου είναι αριθμημένες 1… 6 αντίστοιχα.

Βήμα 4: Βαθμονόμηση αισθητήρα

Βαθμονόμηση αισθητήρα
Βαθμονόμηση αισθητήρα
Βαθμονόμηση αισθητήρα
Βαθμονόμηση αισθητήρα

Όταν ενεργοποιηθεί η συσκευή IoT, ως μέρος της ακολουθίας εκκίνησης διαβάζεται ένα αρχείο με το όνομα «cavals.txt» από το SPIFFS. Τα περιεχόμενα αυτού του αρχείου είναι σταθερές βαθμονόμησης όπως υποδεικνύεται παραπάνω στην εικόνα 1. Αυτές οι σταθερές βαθμονόμησης χρησιμοποιούνται για να προσαρμόσουν τις ενδείξεις που αποκτώνται από τον αισθητήρα για να τις ευθυγραμμίσουν με μια συσκευή αναφοράς. Υπάρχει μια ακόμη τιμή που καθορίζει μια στρατηγική αναφοράς για τη συσκευή και περιγράφεται παρακάτω μαζί με τη διαδικασία που ακολουθείται για τη βαθμονόμηση των αισθητήρων.

Στρατηγική αναφοράς Αυτή η παράμετρος καθορίζει τον τρόπο με τον οποίο ο απομακρυσμένος αισθητήρας αναφέρει τυχόν παραμετρικές αλλαγές περιβάλλοντος τοπικά σε αυτό. Εάν επιλεγεί μια τιμή 0, ο απομακρυσμένος αισθητήρας θα δημοσιεύει οποιαδήποτε αλλαγή βλέπει στις τιμές θερμοκρασίας ή υγρασίας κάθε φορά που διαβάζεται ο αισθητήρας (περίπου κάθε 10 δευτερόλεπτα). Οποιαδήποτε άλλη τιμή θα καθυστερήσει τη δημοσίευση μιας αλλαγής κατά 1… 60 λεπτά. Η τροποποίηση αυτής της παραμέτρου επιτρέπει τη βελτιστοποίηση της κίνησης δικτύου MQTT.

Βαθμονόμηση θερμοκρασίας

Για τη βαθμονόμηση των αισθητήρων τοποθετήθηκαν σε στενή φυσική απόσταση μεταξύ τους, όπως φαίνεται παραπάνω στην εικόνα 2. Στο πλάι τους τοποθέτησα ένα DMM με ένα βαθμονομημένο θερμοστοιχείο προσαρτημένο (Fluke 87 V) και στη συνέχεια παρακολούθησα τις εξόδους από κάθε συσκευή μέσω της θερμοκρασίας OpenHAB σελίδα τάσεων κατά τη διάρκεια μιας ημέρας για να έχετε μια καλή αλλαγή θερμοκρασίας. Σημείωσα τόσο τη στατική μετατόπιση (αυξημένο μηδέν 'C') όσο και τον ρυθμό αλλαγής κάθε συσκευής (κέρδος ή κλίση του γραφήματος "Μ") σε σχέση με την τιμή που προέρχεται από το βαθμονομημένο θερμοστοιχείο. Στη συνέχεια, υπολόγισα την απλή σχέση y = mx+c (διαπίστωσα ότι ήταν αρκετά γραμμική ώστε να είναι μια κοντινή προσέγγιση σε ένα γράφημα ευθείας γραμμής) και προγραμμάτισα τυχόν απαραίτητες διορθώσεις στις σταθερές βαθμονόμησης μέσω MQTTSpy.

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

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

Βαθμονόμηση υγρασίας

Καθώς δεν διαθέτω μέσα για την ακριβή καταγραφή ή ακόμα και τον έλεγχο της τοπικής υγρασίας περιβάλλοντος, για τη βαθμονόμηση των αισθητήρων, χρησιμοποίησα μια παρόμοια προσέγγιση με τα παραπάνω, τοποθετώντας όλες τις συσκευές σε κοντινή φυσική εγγύτητα (εικόνα 2) και απλώς παρακολουθώντας την έξοδο τους μέσω του OpenHAB Σελίδα με υγρασία. Στη συνέχεια επέλεξα τη συσκευή #1 ως αναφορά βαθμονόμησης και βαθμονόμησα όλες τις συσκευές σε σχέση με αυτό.

Βήμα 5: Σύμβαση ονοματοδοσίας θεμάτων MQTT

Σύμβαση ονοματοδοσίας θεμάτων MQTT
Σύμβαση ονοματοδοσίας θεμάτων MQTT
Σύμβαση ονοματοδοσίας θεμάτων MQTT
Σύμβαση ονοματοδοσίας θεμάτων MQTT

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

Δηλαδή, "AccessMethod/DeviceType/WhichDevice/Action/SubDevice"

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

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

Σημείωση: Εάν δεν είστε σίγουροι πώς να χρησιμοποιήσετε το MQTTSpy δείτε εδώ Ρύθμιση ενός μεσίτη MQTT. Μέρος 2: IoT, αυτοματισμός σπιτιού »

Βήμα 6: Διαμόρφωση OpenHAB

Διαμόρφωση OpenHAB
Διαμόρφωση OpenHAB
Διαμόρφωση OpenHAB
Διαμόρφωση OpenHAB
Διαμόρφωση OpenHAB
Διαμόρφωση OpenHAB

Τροποποίησα τη διαμόρφωση OpenHAB που δόθηκε στο προηγούμενο Instructable (εδώ) και πρόσθεσα σε μεμονωμένες καταχωρήσεις για?

  • Γκαράζ,
  • Αίθουσα,
  • Σαλόνι,
  • Κουζίνα
  • Ξενώνας
  • Κύριο υπνοδωμάτιο

Στον χάρτη της ιστοσελίδας δείτε την εικόνα 1 παραπάνω.

Για κάθε μία από αυτές τις καταχωρήσεις πρόσθεσα μεμονωμένους χάρτες ιστότοπου που εκθέτουν τοπικές τιμές περιβάλλοντος (Βλ. Εικόνα 2 παραπάνω).

  • Θερμοκρασία
  • Υγρασία
  • Δείκτης θερμότητας

Έβαλα επίσης έναν διακόπτη για τον έλεγχο του τοπικού led που είναι τοποθετημένο μέσα στον αισθητήρα.

Οι εικόνες 3… 5 δείχνουν μεμονωμένα ζωντανά ίχνη κατά τη διάρκεια 24 ωρών για θερμοκρασία, υγρασία και RSSI (Ένδειξη Ισχύος Σήματος, βασικά ένα μέτρο του πόσο καλά ο αισθητήρας μπορεί να δει το δίκτυο WiFi).

Η εικόνα 6 δίνει ένα παράδειγμα μιας μακροπρόθεσμης τάσης υγρασίας κατά τη διάρκεια μιας εβδομάδας.

Σημείωση 1: Εάν δεν είστε σίγουροι πώς να χρησιμοποιήσετε το OpenHAB, δείτε εδώ «Ρύθμιση και διαμόρφωση του OpenHAB. Μέρος 6: IoT, αυτοματισμός σπιτιού »

Σημείωση 2: Παρατίθεται παρακάτω ένα αντίγραφο του τροποποιημένου χάρτη ιστοτόπου, κανόνων και αρχείων στοιχείων, εικονιδίων κ.λπ.

Βήμα 7: Δοκιμή του σχεδιασμού

Δοκιμάζοντας το Σχέδιο
Δοκιμάζοντας το Σχέδιο
Δοκιμάζοντας το Σχέδιο
Δοκιμάζοντας το Σχέδιο

Ως επί το πλείστον δοκίμασα τη συσκευή IoT μέσω της σύνδεσης MQTT με το MQTT Spy, παρακολουθώντας την έξοδο led και την κυκλοφορία εντοπισμού σφαλμάτων στη σειριακή διεπαφή. Αυτό μου επέτρεψε να ασκήσω όλα τα διαθέσιμα εγγραφόμενα θέματα και να ελέγξω τις δημοσιευμένες απαντήσεις. Αν και αυτό επιτεύχθηκε χειροκίνητα και έγινε μερικές φορές κουραστικό, επέτρεψε την κάλυψη 100%.

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

Για να ξεπεράσω αυτό το ζήτημα, δημιούργησα το δικό μου σύνολο εικονικών δικτύων χρησιμοποιώντας το ESP8266-01 που έχει διαμορφωθεί ως Σημεία Πρόσβασης (εικόνα 1) με SSIDs των "DummyNet1" και "DummyNet2" αντίστοιχα. Η χρήση του κυκλώματος στην εικόνα 2 πάνω από το led έδωσε μια ένδειξη εάν μια συσκευή IoT είχε συνδεθεί σε αυτό. Παρόλο που αυτό δεν ήταν μια τέλεια λύση δοκιμής (δηλαδή. Καθένα από αυτά τα εικονικά δίκτυα WiFi δεν περιείχε διακομιστή MQTT), ήταν δυνατό να δοκιμαστεί πλήρως το μηχάνημα κατάστασης.

Έχω συμπεριλάβει ένα αντίγραφο του πηγαίου κώδικα παρακάτω.

Βήμα 8: Συμπέρασμα

Γενικός

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

Βελτιώσεις

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

  • Arduino GIT HUB Core

    https://github.com/esp8266/Arduino

  • Πηγή ConfigFile.ino

    https://github.com/esp8266/Arduino/tree/master/libraries/esp8266/examples/ConfigFile

Λίστα επιθυμιών

Είχα σκοπό να χρησιμοποιήσω ένα πρόγραμμα -πελάτη mDNS για να συνδεθώ με τον μεσίτη, αλλά η βιβλιοθήκη ήταν πολύ νωθρή. Αυτός είναι ο λόγος για τον οποίο είναι απαραίτητο να καθορίσετε τη διεύθυνση IP του μεσίτη MQTT σε αντίθεση με το "MQTTSVR.local". Εάν η βιβλιοθήκη mDNS γίνει πιο σταθερή στο μέλλον, θα προσθέσω αυτήν τη δυνατότητα στη συσκευή.

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

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

Βήμα 9: Χρησιμοποιούνται αναφορές

Χρησιμοποίησα τις ακόλουθες πηγές για να συνδυάσω αυτό το Instructable.

PubSubClient.h

  • Από: Nick O'Leary
  • Από:

DHT.h

  • Από: Adafruit
  • Από:

Φύλλο δεδομένων DHT22

Συνιστάται: