Αρχική ειδοποίηση: Arduino + Μηνύματα cloud σε μεγάλη οθόνη: 14 βήματα (με εικόνες)
Αρχική ειδοποίηση: Arduino + Μηνύματα cloud σε μεγάλη οθόνη: 14 βήματα (με εικόνες)

Βίντεο: Αρχική ειδοποίηση: Arduino + Μηνύματα cloud σε μεγάλη οθόνη: 14 βήματα (με εικόνες)

Βίντεο: Αρχική ειδοποίηση: Arduino + Μηνύματα cloud σε μεγάλη οθόνη: 14 βήματα (με εικόνες)
Βίντεο: Web Programming - Computer Science for Business Leaders 2016 2025, Ιανουάριος
Anonim
Αρχική ειδοποίηση: Arduino + Cloud Messages σε μεγάλη οθόνη
Αρχική ειδοποίηση: Arduino + Cloud Messages σε μεγάλη οθόνη
Αρχική ειδοποίηση: Arduino + Cloud Messages σε μεγάλη οθόνη
Αρχική ειδοποίηση: Arduino + Cloud Messages σε μεγάλη οθόνη
Αρχική ειδοποίηση: Arduino + Cloud Messages σε μεγάλη οθόνη
Αρχική ειδοποίηση: Arduino + Cloud Messages σε μεγάλη οθόνη

Στην εποχή των κινητών τηλεφώνων, θα περίμενε κανείς ότι οι άνθρωποι θα ανταποκρίνονταν στην κλήση σας όλο το 24ωρο.

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

Έχω αυτό το πρόβλημα αρκετά συχνά για να δικαιολογήσω μια λύση. Λίγο μπέρδεμα με ένα Arduino και μια Freetronics Dot Matrix Display (DMD) οδήγησε σε ένα πολύ ενοχλητικό (για τη γυναίκα μου) gadget, αλλά μια εκπληκτική συσκευή επικοινωνίας και κέντρο πληροφοριών για μένα. Το λατρεύω και είναι μόνο η έκδοση 1!

Το Home Alert αποτελείται από αυτά τα μέρη:

  • Μια οθόνη Freetronics Dot Matrix, η οποία είναι μια σειρά LED 16x32. Έρχονται σε διαφορετικά χρώματα, αλλά χρησιμοποιώ το κόκκινο για να τονίσω ότι αυτό το gadget προορίζεται για "κρίσιμες" ειδοποιήσεις.
  • Ένα Arduino Uno με ασπίδα Ethernet.
  • Ένα ξεκλείδωμα ρολογιού σε πραγματικό χρόνο, όπως αυτό ή αυτό.
  • Ένας πιεζόφωνος βομβητής
  • Αισθητήρας θερμοκρασίας και υγρασίας DHT22.

Το Home Alert ελέγχεται μέσω μιας ιστοσελίδας που φιλοξενείται στο Heroku, έναν κεντρικό υπολογιστή εφαρμογών. Η ιστοσελίδα είναι κωδικοποιημένη στο Ruby, χρησιμοποιώντας το πλαίσιο εφαρμογής της Sinatra και το κατάστημα κλειδιών τιμών Redis.

Ρίξτε μια ματιά στην αρχική σελίδα (δείξτε στην πρώτη συνημμένη εικόνα σε αυτό το βήμα), όπου η φόρμα περιμένει ένα νέο μήνυμα από τον χρήστη.

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

Το μήνυμα που θέλετε να εμφανιστεί πηγαίνει στο δεύτερο πεδίο. Κάθε κείμενο που πληκτρολογείτε εκεί θα εμφανίζεται στο DMD.

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

Σε αυτό το άρθρο, θα σας δείξω πώς να φτιάξετε το δικό σας σύστημα Home Alert, τόσο το υλικό και το λογισμικό Arduino, όσο και τη διαδικτυακή εφαρμογή Sinatra mini.

Ας αρχίσουμε!

Βήμα 1: Το υλικό

Το Υλικό
Το Υλικό
Το Υλικό
Το Υλικό
Το Υλικό
Το Υλικό

Το DMD είναι το σημείο εστίασης του gadget. Θα μπορούσα να είχα πάει με μια μικρή οθόνη LCD, αλλά η κύρια ιδέα για αυτό το έργο ήταν να δημιουργήσω κάτι που μπορεί να φανεί και να ακουστεί από απόσταση. Για το οπτικό κομμάτι, χρειαζόμουν κάτι μεγάλο και φωτεινό, και αυτή η οθόνη Freetronics είναι ακριβώς αυτό που χρειαζόμουν. Κάθε πίνακας περιέχει μια σειρά LED 16x32 και μπορείτε να κολλήσετε πολλά από αυτά για να δημιουργήσετε πολύ μεγαλύτερες οθόνες. Αυτό είναι κάτι που θα ήθελα να κάνω στο εγγύς μέλλον.

Το DMD συνοδεύεται από μια εύχρηστη βιβλιοθήκη Arduino. επικοινωνεί με το Arduino μέσω SPI υψηλής ταχύτητας. Iμουν σε θέση να πάρω τη βιβλιοθήκη από τη σελίδα Freetronics Github, στη συνέχεια να ενεργοποιήσω το σκίτσο επίδειξης και να το δουλέψω μέσα σε λίγα λεπτά από το άνοιγμα του κουτιού. Wasμουν έκπληκτος να δω μια τόσο φωτεινή οθόνη που χρησιμοποιεί μόνο ενέργεια από το Arduino. Εάν θέλετε να τυφλώσετε προσωρινά τους θεατές σας, μπορείτε να επισυνάψετε ένα ειδικό τροφοδοτικό σε αυτό το DMD. Εάν αυτό δεν τραβήξει την προσοχή τους, τίποτα δεν θα το κάνει!

Φυσικά, αυτή η οθόνη έχει διαστάσεις 320mm (W), 160mm (H) και 14mm (D).

Ο πίσω πίνακας περιέχει τους συνδετήρες για την εξωτερική ισχύ, 5V με χωρητικότητα τουλάχιστον 4Amps, τον σύνδεσμο Arduino με την ένδειξη HUB1 και τον σύνδεσμο για πρόσθετες οθόνες με αλυσίδα μαργαρίτας στην αντίθετη πλευρά. Σύμφωνα με την τεκμηρίωση, μπορείτε να αλυσιδώσετε έως και τέσσερα DMD.

Το DMD ελέγχεται από ένα Arduino Uno. Η Freetronics παρέχει έναν πολύ βολικό σύνδεσμο "DMDCON" που απλώς κουμπώνει απευθείας στη σωστή καρφίτσα SPI και δεδομένων.

Εκτός από το DMD, χρησιμοποίησα ένα Arduino Uno, ένα Ethernet Shield, ένα ξεκλείδωμα ρολογιού σε πραγματικό χρόνο, ένα βομβητή και ένα DHT22. Για όλα αυτά τα στοιχεία, έχω δημιουργήσει διαλέξεις που περιγράφουν τη λειτουργία τους στο μάθημα Udemy. (Αδιέξοδη αυτοπροβολή: εγγραφείτε στη λίστα ηλεκτρονικού ταχυδρομείου μου στο arduinosbs.com και λάβετε ένα κουπόνι που σας δίνει μειωμένη πρόσβαση και στις 55 διαλέξεις).

Το ρολόι σε πραγματικό χρόνο, ένα ξεκλείδωμα που βασίζεται στο ρολόι IC DS18072, είναι μια συσκευή I2C, επομένως συνδέεται με τις αναλογικές ακίδες του Uno 1 και 2, οι οποίες υλοποιούν το δίαυλο I2C.

Ο βομβητής είναι συνδεδεμένος με τον ψηφιακό ακροδέκτη 3, από όπου τον ελέγχω χρησιμοποιώντας τη λειτουργία τόνου ().

Ο αισθητήρας DHT22 είναι συνδεδεμένος με την ψηφιακή ακίδα 2. Προσέξτε να συνδέσετε την αντίσταση ανύψωσης 10KΩ μεταξύ της γραμμής 5V και της γραμμής δεδομένων.

Βήμα 2: Το σκίτσο του Arduino

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

Εδώ είναι το σκίτσο, με ενσωματωμένα σχόλια (δείτε συνημμένο PDF).

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

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

Βήμα 3: Ο Σινάτρα παίρνει τη σκηνή

Ο Σινάτρα ανεβαίνει στη σκηνή!
Ο Σινάτρα ανεβαίνει στη σκηνή!

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

Έχω χρησιμοποιήσει και παίξει με έναν αρκετά μεγάλο αριθμό τεχνολογιών εφαρμογών Ιστού και διαπιστώνω ότι το Sinatra είναι ιδανικό για τη δημιουργία διαδικτυακών υπηρεσιών και μικρών ιστότοπων. Συγκεκριμένα, όταν δημιουργώ μια διαδικτυακή υπηρεσία για την υποστήριξη ενός gadget Arduino, το Sinatra είναι μια πολύ καλή επιλογή.

Τι είναι το Sinatra και γιατί είναι τόσο καλή επιλογή; Χαίρομαι που ρωτήσατε!

Το Sinatra είναι μια γλώσσα για την ταχεία ανάπτυξη διαδικτυακών εφαρμογών. Είναι χτισμένο πάνω από το Ruby, μια πολύ δημοφιλή και εκφραστική γλώσσα σεναρίων γενικής χρήσης. Μπορεί να ακούσετε το Sinatra να αναφέρεται ως "DSL", μια συγκεκριμένη γλώσσα τομέα. Ο τομέας εδώ είναι ο Ιστός. Οι λέξεις -κλειδιά (λέξεις) και η σύνταξη που δημιουργήθηκε για το Sinatra είναι τέτοια που καθιστά εύκολο και γρήγορο για τους ανθρώπους τη δημιουργία διαδικτυακών εφαρμογών.

Σε μια εποχή όπου τα λεγόμενα "opinionated" πλαίσια για την ανάπτυξη εφαρμογών ιστού όπως το Ruby on Rails και το Django είναι εξαιρετικά δημοφιλή, το Sinatra καταγράφει το αντίθετο άκρο του φάσματος. Ενώ το Ruby on Rails και το Django απαιτούν από τον προγραμματιστή να ακολουθήσει μια συγκεκριμένη σύμβαση και τρόπο να κάνει πράγματα (που, με τη σειρά του, συνεπάγεται μια απότομη και μακρά καμπύλη εκμάθησης), ο Sinatra δεν επιβάλλει τέτοιες απαιτήσεις.

Το Sinatra είναι εννοιολογικά πολύ πιο απλό από τους Rails και τους Djangos του κόσμου. Μπορείτε να ξεκινήσετε να λειτουργεί με μια εφαρμογή ιστού που μπορεί να αλληλεπιδράσει με το Arduino σας μέσα σε λίγα λεπτά.

Θα δείξω με ένα παράδειγμα. Δείτε πώς μοιάζει μια ελάχιστη εφαρμογή Ιστού Sinatra (απλώς διαβάστε τα παρακάτω προς το παρόν, μην το κάνετε πραγματικά στον υπολογιστή σας επειδή πιθανότατα δεν έχετε τις απαραίτητες προϋποθέσεις για αυτό ακόμα):

Σε ένα μόνο αρχείο, ας το ονομάσουμε my_app.rb, προσθέστε αυτό το κείμενο:

απαιτεί το τέλος «sinatra'get»/«do" Hello, world!"

Στη γραμμή εντολών, ξεκινήστε την εφαρμογή ως εξής:

ρουμπίνι my_app.rb

Η εφαρμογή σας θα ξεκινήσει και θα δείτε αυτό το κείμενο στην κονσόλα:

peter@ubuntu-dev:/arduino/sinatra_demo $ ruby my_app.rbPuma 2.8.1 ξεκινώντας…* Ελάχιστα νήματα: 0, μέγιστα νήματα: 16* Περιβάλλον: ανάπτυξη* Ακρόαση σε tcp: // localhost: 4567 == Sinatra/1.4.4 ανέβηκε στη σκηνή στο 4567 για ανάπτυξη με backup από την Puma

Η εφαρμογή είναι τώρα έτοιμη να λάβει αιτήματα πελάτη. Ανοίξτε ένα πρόγραμμα περιήγησης, τοποθετήστε το στο https:// localhost: 4567 και αυτό θα δείτε (δείτε το συνημμένο στιγμιότυπο οθόνης).

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

Έτσι, το Sinatra είναι απλό και γρήγορο για τρέξιμο. Θα υποθέσω ότι δεν γνωρίζετε τίποτα για την ανάπτυξη Ruby, Sinatra και εφαρμογών στο Cloud, οπότε στην επόμενη ενότητα θα σας πάω βήμα προς βήμα από το μηδέν έως την ανάπτυξη της υπηρεσίας ιστού Arduino στο Cloud.

Βήμα 4: Ρυθμίστε τη μηχανή ανάπτυξης σας

Το Sinatra βασίζεται στη γλώσσα προγραμματισμού Ruby. Έτσι, πρέπει να εγκαταστήσετε το Ruby πριν εγκαταστήσετε το Sinatra.

Θα χρειαστεί επίσης να εγκαταστήσετε έναν διακομιστή αποθήκευσης κλειδιών που ονομάζεται Redis. Σκεφτείτε το Redis ως βάση δεδομένων που αποθηκεύει δεδομένα έναντι ενός κλειδιού. Χρησιμοποιείτε το κλειδί για την ανάκτηση των δεδομένων και είναι βελτιστοποιημένη για την ταχύτητα και όχι για την ευελιξία των δομών δεδομένων για την οποία έχει σχεδιαστεί μια παραδοσιακή σχεσιακή βάση δεδομένων. Το Home Alert αποθηκεύει τα μηνύματά του στο Redis.

Βήμα 5: Ruby σε Mac ή Linux

Εάν χρησιμοποιείτε υπολογιστή Mac ή Linux, σας συνιστώ να χρησιμοποιήσετε το RVM για να εγκαταστήσετε και να διαχειριστείτε την εγκατάσταση Ruby (RVM: Ruby Version Manager). Οι οδηγίες για την εγκατάσταση του Ruby με RVM βρίσκονται σε αυτήν τη σελίδα ή απλώς αντιγράψτε και επικολλήστε αυτήν την εντολή στο κέλυφός σας:

curl -sSL https://get.rvm.io | bash -s σταθερό --ruby

Καθίστε, ξαπλώστε, χαλαρώστε και περιμένετε να ολοκληρωθεί η λήψη, η σύνταξη και η εγκατάσταση του RVM και του Ruby.

Βήμα 6: Ruby στα Windows

Εάν χρησιμοποιείτε Windows, συνιστώ να ακολουθήσετε αυτόν τον οδηγό στον ιστότοπο Ruby Installer για Windows και να χρησιμοποιήσετε την εφαρμογή ρύθμισης.

Βήμα 7: Ελέγξτε και ορίστε το Ruby σας

Κατά τη στιγμή της γραφής, η τελευταία σταθερή έκδοση Ruby είναι 2.1.1.p76. Μπορείτε να ελέγξετε την έκδοση που εγκαταστάθηκε με RVM πληκτρολογώντας αυτό:

πληροφορίες rvm

Θα εμφανιστούν πολλές πληροφορίες σχετικά με το RVM και το Ruby. Στην περίπτωσή μου, αυτή είναι η ενότητα Ruby:

ruby: διερμηνέας: "ruby" έκδοση: "2.1.1p76" ημερομηνία: "2014-02-24" platform: "x86_64-linux" patchlevel: "2014-02-24 revision 45161" full_version: "ruby 2.1.1p76 (2014 -02-24 αναθεώρηση 45161) [x86_64-linux]"

Σας συνιστώ να χρησιμοποιήσετε επίσης το Ruby 2.1.1, οπότε αν δείτε κάτι παλαιότερο από αυτό, αναβαθμίστε ως εξής:

rvm install 2.1.1

Αυτό θα εγκαταστήσει το Ruby 2.1.1. Ο ιστότοπος έργου RVM περιέχει πολλές πληροφορίες σχετικά με το RVM και τον τρόπο διαχείρισης της εγκατάστασης Ruby.

Βήμα 8: Εγκαταστήστε το Sinatra (όλες οι πλατφόρμες)

Στο Ruby, ο κώδικας μοιράζεται ως πακέτα που ονομάζονται "πολύτιμοι λίθοι". Ο κώδικας που αποτελεί το Sinatra μπορεί να εγκατασταθεί στον υπολογιστή σας ως πολύτιμος λίθος όπως αυτός:

gem install sinatra

Αυτή η γραμμή θα ανακτήσει όλο τον κώδικα και την τεκμηρίωση και θα την εγκαταστήσει στον υπολογιστή σας.

Βήμα 9: Redis σε Mac ή Linux

Η ρύθμιση του Redis σε Mac ή Linux είναι εύκολη. Η διαδικασία εξηγείται στον ιστότοπο Redis. Ανοίξτε το τερματικό κελύφους και πληκτρολογήστε αυτές τις εντολές:

$ wget https://download.redis.io/releases/redis-2.8.7.tar… $ tar xzf redis-2.8.7.tar.gz $ cd redis-2.8.7 $ make

Εκτελέστε το Redis πληκτρολογώντας:

$ src/redis-server

… Και τελειώσατε!

Βήμα 10: Redis στα Windows

Το Redis στα Windows συνιστάται μόνο για ανάπτυξη και θα πρέπει να το μεταγλωττίσετε χρησιμοποιώντας το δωρεάν περιβάλλον ανάπτυξης του Visual Studio Express. Απαιτεί λίγο χρόνο για να λειτουργήσει, αλλά λειτουργεί καλά και αξίζει τον κόπο. Ακολουθήστε τις οδηγίες στη σελίδα Github του έργου. Εκεί, θα βρείτε επίσης έναν σύνδεσμο προς τη σελίδα Visual Studio Express.

Βήμα 11: Δημιουργήστε την εφαρμογή Web Service

Δημιουργήστε την εφαρμογή Web Service
Δημιουργήστε την εφαρμογή Web Service

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

Εδώ είναι ο κώδικας Ruby, όλα σε ένα μόνο αρχείο με το όνομα "web.rb" (αυτός ο κωδικός είναι διαθέσιμος στο Github).

Σημαντικό: Κατεβάστε και διαβάστε το συνημμένο αρχείο PDF, περιέχει λεπτομερή ενσωματωμένα σχόλια (κάντε το πριν συνεχίσετε!).

Τώρα μπορείτε να δοκιμάσετε το σύστημα Home Alert. Στο σκίτσο σας, αλλάξτε τις σταθερές ΙΣΤΟΣΕΛΙΔΑΣ και ΙΣΤΟΣΕΛΙΔΑΣ για να δείξετε τον μηχάνημα ανάπτυξης και τον αριθμό θύρας για τον αναπτυξιακό σας διακομιστή Sinatra. Στην περίπτωσή μου, έχω μια μηχανή ανάπτυξης με IP 172.16.115.136 και ο διακομιστής ανάπτυξης Sinatra ακούει τη θύρα 5000, οπότε οι ρυθμίσεις σκίτσου μου είναι:

#define HW_ID "123" #define WEBSITE "172.16.115.136:5000 "#define WEBPAGE"/get_message/"

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

Η ρύθμιση HW_ID αντιπροσωπεύει το "αναγνωριστικό υλικού", δηλαδή το αναγνωριστικό στο οποίο το Arduino που ελέγχει το DMD θα αναγνωριστεί στην εφαρμογή Sinatra. Είναι ένα πολύ βασικό είδος ελέγχου ταυτότητας. Η εφαρμογή ιστού θα παραδώσει ένα μήνυμα σε ένα Arduino ζητώντας το με βάση το παρεχόμενο HW_ID. Μπορείτε να έχετε πολλές συσκευές με το ίδιο HW_ID, οπότε όλες οι συσκευές θα εμφανίζουν το ίδιο μήνυμα. Εάν θέλετε «ιδιωτικότητα», επιλέξτε ένα αναγνωριστικό με πολλούς τυχαίους χαρακτήρες που οι άλλοι άνθρωποι δεν θα μπορούν να μαντέψουν. Επίσης προσοχή, καμία επικοινωνία δεν είναι κρυπτογραφημένη.

Τώρα προχωρήστε και ξεκινήστε την εφαρμογή Sinatra, πληκτρολογήστε αυτό (υποθέτοντας ότι βρίσκεστε στο φάκελο του έργου Sinatra):

ruby web.rb

… Και θα δείτε κάτι τέτοιο (ορισμένες λεπτομέρειες μπορεί να διαφέρουν, εφόσον αυτό δεν κολλάει, είστε εντάξει):

10:42:18 ιστός.1 | ξεκίνησε με το pid 4911910: 42: 18 web.1 | Puma 2.8.1 ξεκινώντας… 10: 42: 18 web.1 | * Ελάχιστα νήματα: 0, μέγ. Νήματα: 1610: 42: 18 web.1 | * Περιβάλλον: ανάπτυξη10: 42: 18 web.1 | * Ακρόαση σε tcp: //0.0.0.0: 5000

Στρέψτε το πρόγραμμα περιήγησής σας στη θέση που ακούει ο διακομιστής και θα το δείτε (δείτε το δεύτερο συνημμένο).

Ανεβάστε το σκίτσο σας στο Arduino, βεβαιωθείτε ότι είναι συνδεδεμένο στο τοπικό σας δίκτυο. Εάν όλα πάνε καλά, το Arduino θα κάνει δημοσκόπηση της διαδικτυακής σας υπηρεσίας μία φορά κάθε λεπτό. Δώστε του ένα μήνυμα για να εμφανιστεί: Στο πεδίο κωδικού HW, πληκτρολογήστε το ίδιο αναγνωριστικό που ορίσατε για τη σταθερά HW_ID στο σκίτσο. Πληκτρολογήστε οτιδήποτε στο πεδίο "Το μήνυμά σας" και επιλέξτε το "Buzz;" πλαίσιο ελέγχου.

Υποβάλετε, περιμένετε ένα λεπτό και δείτε το μήνυμά σας να εμφανίζεται στο DMD!

Βήμα 12: Ανάπτυξη στο cloud χρησιμοποιώντας το Heroku

Τώρα που το Home Alert λειτουργεί σε εξέλιξη, ας το κάνουμε να λειτουργεί στο Cloud. Υπάρχουν αμέτρητες διαθέσιμες επιλογές για την ανάπτυξη εφαρμογών ιστού. Με βάση το εύρος και την πολυπλοκότητα του Home Alert, αποφάσισα ότι η δημιουργία του δικού μου εικονικού ιδιωτικού διακομιστή δεν αξίζει τον κόπο. Αντ 'αυτού, είναι καλύτερο να πάτε για μια υπηρεσία όπως το Heroku, ένας οικοδεσπότης εφαρμογών. Για την κλίμακα μου, η δωρεάν βαθμίδα του Heroku είναι υπεραρκετή. Ακόμα και για το στοιχείο Redis, ήμουν σε θέση να επιλέξω ένα δωρεάν πρόγραμμα από έναν από τους πολλούς παρόχους Redis που συνεργάζονται με το Heroku.

Ακόμα, υπάρχει λίγη προσπάθεια, η οποία έχει να κάνει με την ελαφρά τροποποίηση της εφαρμογής μου, ώστε να μπορεί να συμμορφώνεται με τις προδιαγραφές του Heroku. Οι λεπτομέρειες είναι εδώ, αλλά ουσιαστικά θα χρειαστεί να προσθέσετε αυτά τα αρχεία στο έργο σας Sinatra (όλα τα αρχεία που ακολουθούν μπορούν να ληφθούν από τον λογαριασμό μου στο Github):

* config.ru: Λέει στο Heroku ποιο αρχείο περιέχει την εφαρμογή. Ιδού το περιεχόμενο:

απαιτούν './web'run Sinatra:: Εφαρμογή

Η πρώτη γραμμή δείχνει στο web.rb και η δεύτερη γραμμή τρέχει στην πραγματικότητα την εφαρμογή σας.

* Gemfile: περιέχει τα Gems (πακέτα κώδικα ρουμπίνι) που απαιτούνται από την εφαρμογή. Το Heroku θα κοιτάξει μέσα σε αυτό το αρχείο για να καταλάβει τι άλλο κώδικα χρειάζεται για να εγκαταστήσει ώστε να λειτουργεί η εφαρμογή σας. Ένας άλλος τρόπος για να δείτε το Gemfile είναι ότι περιέχει μια λίστα εξαρτήσεων για το έργο σας. Εάν κάποια από αυτές τις εξαρτήσεις δεν είναι διαθέσιμη, η εφαρμογή σας δεν θα λειτουργήσει. Δείτε τι υπάρχει μέσα στο Gemfile για αυτήν την εφαρμογή:

πηγή "https://rubygems.org" ruby "2.1.1" πολύτιμος λίθος 'sinatra'gem' puma'gem 'redis'

Πρώτον, ορίζει το αποθετήριο πηγής όλου του κώδικα Gem σε rubygems.org. Στη συνέχεια, απαιτεί η έκδοση Ruby 2.1.1 να χρησιμοποιείται για την εκτέλεση της εφαρμογής. Στη συνέχεια, απαριθμεί τους απαιτούμενους πολύτιμους λίθους: Sinatra, Puma (ένας εξαιρετικός διακομιστής διαδικτυακών εφαρμογών Ruby) και Redis.

* Procfile: λέει στο Heroku πώς να ξεκινήσει τον διακομιστή σας. Υπάρχει μόνο μία γραμμή εδώ:

web: rackup -s puma -p $ PORT

Αυτή η γραμμή λέει ότι το "web" είναι το μόνο είδος υπηρεσίας που απαιτείται (θα μπορούσατε να έχετε άλλες, όπως "εργαζόμενος", για επεξεργασία στο παρασκήνιο) και ότι για να ξεκινήσει την υπηρεσία το Heroku πρέπει να χρησιμοποιήσει την εντολή που έρχεται μετά το ":".

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

$> gem install bundler -> εγκαθιστά το Bundler, το οποίο ξέρει πώς να χειρίζεται το Gemfile. $> εγκατάσταση πακέτου -> Το Bundler επεξεργάζεται το Gemfile και εγκαθιστά εξαρτήσεις. $> rackup config.ru -> Το Rackup είναι ένα εργαλείο που μπορεί να επεξεργαστεί το αρχείο config.ru. Συνήθως έρχεται με την τελευταία έκδοση του Ruby, αν δεν το εγκαταστήσει έτσι: gem install rack.

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

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

Το Heroku Toolbelt εγκαθιστά τον πελάτη γραμμής εντολών Heroku, Git (το σύστημα διαχείρισης κώδικα ανοιχτού κώδικα) και το Foreman (ένα εργαλείο Ruby που βοηθά στη διαχείριση εφαρμογών που βασίζονται σε Procfile).

Μόλις ολοκληρώσετε την εγκατάσταση της ζώνης εργαλείων Heroku ακολουθώντας τις οδηγίες στην ιστοσελίδα Heroku, ακολουθήστε αυτά τα βήματα για να αναπτύξετε την εφαρμογή σας (όλα πληκτρολογούνται στη γραμμή εντολών, μέσα στον κατάλογο της εφαρμογής):

$> σύνδεση heroku -> Σύνδεση στο Heroku μέσω της γραμμής εντολών $> git init -> Αρχικοποίηση αποθετηρίου Git για την εφαρμογή σας $> git add. -> (προσέξτε την τελεία!) Προσθέστε όλα τα αρχεία στον τρέχοντα κατάλογο στο αποθετήριο Git $> git commit -m “init” -> Καταχωρήστε αυτά τα αρχεία στο αποθετήριο, με ένα νέο μήνυμα $> heroku create -> Δημιουργήστε ένα νέο εφαρμογή στο Heroku. Το Heroku θα δώσει στην εφαρμογή σας ένα τυχαίο όνομα, κάτι σαν "blazing-galaxy-997". Σημειώστε το όνομα και τη διεύθυνση URL, ώστε να έχετε πρόσβαση σε αυτό μέσω του προγράμματος περιήγησής σας αργότερα. Αυτή η διεύθυνση URL θα μοιάζει με αυτήν: "https://blazing-galaxy-997.herokuapp.com/". Θα χρειαστεί επίσης να αντιγράψετε το όνομα κεντρικού υπολογιστή (το μέρος "blazing-galaxy-997.herokuapp.com") της νέας εφαρμογής σας στη σταθερά WEBSITE του σκίτσου σας Arduino. Κάντε το τώρα για να μην το ξεχάσετε αργότερα. $> πρόσθετα heroku: add rediscloud -> Προσθέτει το δωρεάν επίπεδο της υπηρεσίας Rediscloud Redis στην εφαρμογή σας. Οι ρυθμίσεις διαμόρφωσης δημιουργούνται αυτόματα και διατίθενται στην εφαρμογή σας. $> git push heroku master -> Αναπτύξτε τον κωδικό σας στο Heroku. Αυτό θα μεταφέρει αυτόματα τον κώδικα, θα ρυθμίσει τυχόν εξαρτήσεις από το Heroku και θα ξεκινήσει την εφαρμογή. Στο τέλος της διαδικασίας, θα δείτε κάτι σαν αυτό: "https://blazing-galaxy-997.herokuapp.com αναπτύσσεται στο Heroku", πράγμα που σημαίνει ότι η εφαρμογή σας είναι πλέον ζωντανή στο δημόσιο Cloud! Συγχαρητήρια!

Προχώρα, κάνε μια περιστροφή!

Βήμα 13: Το βάζουμε όλα μαζί

Με την εφαρμογή Ιστού σας ανεβασμένη, ανεβάστε το ενημερωμένο σκίτσο στο Arduino (θυμηθείτε ότι ενημερώσατε τη σταθερά ΙΣΤΟΣΕΛΙΔΟΥ για να δείξετε την παρουσία παραγωγής της διαδικτυακής εφαρμογής).

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

Το μήνυμά σας θα εμφανιστεί στο DMD περίπου ένα λεπτό αργότερα, αν όλα πάνε καλά!

Βήμα 14: Δυναμικό

Υπάρχουν πολλά περισσότερα που μπορείτε να κάνετε με το σύστημα Home Alert…

Το να έχετε ένα Heroku back end σημαίνει ότι μπορείτε να προσθέσετε πολλή λογική που μπορεί να προσθέσει εκπληκτική λειτουργικότητα. Για παράδειγμα, μπορείτε να προσθέσετε τη δυνατότητα της εφαρμογής να διαχειρίζεται επαναλαμβανόμενες ειδοποιήσεις, αναγνωρίσεις ή να ελέγχει πρόσθετο υλικό ειδοποιήσεων, όπως φώτα στροβοσκοπίου κ.λπ. Θα μπορούσατε να προσθέσετε πολλαπλά DMD για να εμφανίσετε διαφορετικά μηνύματα στο καθένα ή ένα μόνο μήνυμα σε συνδυασμένη μεγαλύτερη οθόνη. Απλώς γδέρνω την επιφάνεια αυτού που είναι δυνατόν εδώ!

Απολαμβάνω!