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

Πρόσθετο χειριστή WebApp Controlled Gate Operator (IoT): 20 βήματα (με εικόνες)
Πρόσθετο χειριστή WebApp Controlled Gate Operator (IoT): 20 βήματα (με εικόνες)

Βίντεο: Πρόσθετο χειριστή WebApp Controlled Gate Operator (IoT): 20 βήματα (με εικόνες)

Βίντεο: Πρόσθετο χειριστή WebApp Controlled Gate Operator (IoT): 20 βήματα (με εικόνες)
Βίντεο: Solana Saga AMA 13.04.23 BREAKING NEWS All You Need To Know Solana Saga Product Launch 2023 2024, Ιούλιος
Anonim
WebApp Controlled Gate Operator Add-on (IoT)
WebApp Controlled Gate Operator Add-on (IoT)
WebApp Controlled Gate Operator Add-on (IoT)
WebApp Controlled Gate Operator Add-on (IoT)
WebApp Controlled Gate Operator Add-on (IoT)
WebApp Controlled Gate Operator Add-on (IoT)

Έχω έναν πελάτη που είχε έναν κλειστό χώρο όπου πολλοί άνθρωποι χρειάζονταν να πηγαινοέρχονται. Δεν ήθελαν να χρησιμοποιήσουν ένα πληκτρολόγιο εξωτερικά και είχαν μόνο έναν περιορισμένο αριθμό πομπών keyfob. Η εύρεση μιας προσιτής πηγής για επιπλέον keyfob ήταν δύσκολη. Πίστευα ότι θα ήταν μια μεγάλη ευκαιρία να αναβαθμίσω αυτόν τον χειριστή πύλης Liftmaster ώστε να είναι συμβατός με το IoT με προσαρμοσμένο υλικό, web API και διεπαφή εφαρμογών ιστού. Αυτό όχι μόνο έλυσε το πρόβλημα μαζικής πρόσβασης, αλλά άνοιξε και επιπλέον λειτουργικότητα!

Στην τελευταία φωτογραφία παραπάνω είναι η μονάδα δοκιμής που έτρεχα για σχεδόν ένα χρόνο σε μια τσάντα με φερμουάρ. Νόμιζα ότι ήρθε η ώρα για αναβάθμιση!

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

Όλα τα αρχεία έργων φιλοξενούνται επίσης στο GitHub: github.com/ThingEngineer/IoT-Gate-Operator-Addon

Ένα παράδειγμα της διεπαφής CodeIgniter WebApp φιλοξενείται εδώ: projects.ajillion.com/gate Αυτή η περίπτωση δεν είναι συνδεδεμένη με μια ζωντανή πύλη αλλά είναι η ακριβής διεπαφή και ο κώδικας που εκτελείται στις πύλες (μείον ορισμένες δυνατότητες ασφαλείας).

--

Για ακόμα μεγαλύτερη ενσωμάτωση, μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη IFTTT για Electric Imp.

Βήμα 1: Συγκεντρώστε τα μέρη

Συγκεντρώστε τα Μέρη
Συγκεντρώστε τα Μέρη
  • Θα χρειαστείτε ένα ηλεκτρικό IMP με τουλάχιστον 4 GPIO διαθέσιμα, χρησιμοποιώ το IMP001 με τον πίνακα breakout του Απριλίου.
  • Ένας ρυθμιστής για να ρίξει την τάση πηγής στα 5V. Χρησιμοποιώ ένα DC-DC Buck Converter Step Down Module. Η έκδοση MP1584EN του eBoot από την Amazon.
  • Μια διπλή (ή περισσότερες) μονάδα ρελέ ή παρόμοια συσκευή μεταγωγής που θα λειτουργεί με την έξοδο IMP. Χρησιμοποιώ αυτό το JBtek 4 Channel DC 5V Relay Module από την Amazon.
  • Βιδωτός ακροδέκτης 4 συρμάτων. Χρησιμοποιώ αυτό το 5Pcs 2 Rows 12P Wire Connector Screw Terminal Barrier Block 300V 20A από την Amazon.

Βήμα 2: Προμήθειες

Προμήθειες
Προμήθειες

Θα χρειαστείτε επίσης:

  • Πρόσβαση σε έναν εκτυπωτή 3D ή σε ένα μικρό πλαίσιο έργου
  • 4 μικρές βίδες περίπου 4mm x 6mm για το καπάκι της θήκης
  • Σύρμα σύνδεσης
  • Συρματοκόπτης
  • Απογυμνωτές καλωδίων
  • Μικρά κατσαβίδια
  • Συγκολλητικό σίδερο
  • Ζεστή κόλλα ή σιλικόνη
  • Φερμουάρ

Βήμα 3: Μεγέθυνση της θήκης

Μέγεθος Up the Case
Μέγεθος Up the Case

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

Βήμα 4: Μετατροπέας καλωδίων DC-DC

Μετατροπέας καλωδίων DC-DC
Μετατροπέας καλωδίων DC-DC

Κόψτε 3 ζεύγη κόκκινου και μαύρου καλωδίου σύνδεσης για συνδέσεις ρεύματος μέσα και έξω από την πλακέτα μετατροπέα DC-DC.

  • Είσοδος: 100mm
  • Έξοδος σε IMP: 90mm
  • Έξοδος σε μονάδα ρελέ: 130mm

Συγκολλήστε τα στον πίνακα σας όπως φαίνεται.

Βήμα 5: Καλώδιο τροφοδοσίας σε συσκευές

Καλώδιο τροφοδοσίας σε συσκευές
Καλώδιο τροφοδοσίας σε συσκευές
  • Συνδέστε την είσοδο του μετατροπέα DC-DC σε δύο από τα σημεία του μπλοκ ακροδεκτών βιδών.
  • Συγκολλήστε τα σύντομα καλώδια εξόδου 5V στο IMP.
  • Συγκολλήστε τα μεγαλύτερα καλώδια εξόδου 5V στη μονάδα ρελέ.

Βήμα 6: Είσοδοι ενότητας ρελέ καλωδίου

Είσοδοι μονάδας ρελέ καλωδίου
Είσοδοι μονάδας ρελέ καλωδίου
  • Κόψτε σύρματα 4 x 90 mm για τις συνδέσεις εισόδου της μονάδας ρελέ. Χρησιμοποίησα 4 ξεχωριστά χρώματα για εύκολη αναφορά αργότερα κατά την κωδικοποίηση.
  • Συγκολλήστε τα καλώδια στις εισόδους της μονάδας ρελέ 1-4 και στη συνέχεια στα πρώτα 4 σημεία IMP GPIO (Pin1, 2, 5, & 7) αντίστοιχα.

Βήμα 7: IMP Power Jumper

IMP Power Jumper
IMP Power Jumper

Mayσως χρειαστεί να χρησιμοποιήσετε τροφοδοσία USB ενώ προγραμματίζετε και δοκιμάζετε αρχικά το IMP σας. Όταν τελειώσετε, φροντίστε να μετακινήσετε το βραχυκυκλωτήρα στην πλευρά BAT.

Βήμα 8: Είσοδοι κατάστασης Wire Gate

Είσοδοι κατάστασης Wire Gate
Είσοδοι κατάστασης Wire Gate
  • Κόψτε σύρματα 2 x 80 mm για τις εισόδους κατάστασης στάθμης.
  • Συνδέστε καλώδια στους υπόλοιπους 2 ακροδέκτες βίδας.
  • Συγκολλήστε τα καλώδια στο επόμενο σημείο IMP GPIO (Pin8 & 9) αντίστοιχα.

Βήμα 9: Εκτύπωση ή αγορά μιας θήκης

Εκτυπώστε ή αγοράστε μια θήκη
Εκτυπώστε ή αγοράστε μια θήκη

Μπορείτε να κατεβάσετε το. STL ή. F3D μου για αυτήν την περίπτωση στο GitHub ή το Thingiverse

Εάν δεν έχετε πρόσβαση σε έναν εκτυπωτή 3D, μια μικρή γενική θήκη έργου θα λειτουργήσει.

Βήμα 10: Διακοσμήστε τη θήκη σας

Διακοσμήστε τη θήκη σας
Διακοσμήστε τη θήκη σας

Επειδή!

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

Βήμα 11: Τρυπήστε τρύπα για καλώδια

Τρυπήστε τρύπα για καλώδια
Τρυπήστε τρύπα για καλώδια

Τρυπήστε μια μικρή τρύπα 10-15 χιλιοστών στο πλάι κοντά στη μέση όπου θα ενωθούν όλα τα καλώδια.

Χρησιμοποίησα ένα Unibit για μια καθαρή, ομαλή τρύπα στο πλαστικό.

Βήμα 12: Προετοιμασία και εγκατάσταση καλωδίων σύνδεσης

Προετοιμασία και εγκατάσταση καλωδίων σύνδεσης
Προετοιμασία και εγκατάσταση καλωδίων σύνδεσης
Προετοιμασία και εγκατάσταση καλωδίων σύνδεσης
Προετοιμασία και εγκατάσταση καλωδίων σύνδεσης

Κόψτε σύρματα 9 x 5-600mm για να συνδέσετε τη συσκευή μας στον πίνακα χειριστή πύλης.

  • 2 για είσοδο ισχύος 24V
  • 3 για την κατάσταση πύλης (2 εισόδους και μια κοινή βάση)
  • 2 για το σήμα ανοιχτής πύλης
  • 2 για το σήμα κλειστής πύλης

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

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

Βήμα 13: Καλώδια σύνδεσης διαδρομής

Καλώδια σύνδεσης διαδρομής
Καλώδια σύνδεσης διαδρομής

Περάστε τα καλώδια σύνδεσης μέσα από την τρύπα όπως φαίνεται.

Βήμα 14: Τοποθέτηση εξαρτημάτων

Στοιχεία συναρμολόγησης
Στοιχεία συναρμολόγησης

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

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

Βήμα 15: Σφραγίστε τα καλώδια σύνδεσης

Σφραγίστε τα καλώδια σύνδεσης
Σφραγίστε τα καλώδια σύνδεσης

Σφραγίστε τα καλώδια σύνδεσης με ζεστή κόλλα ή σιλικόνη.

Βήμα 16: Κλείστε τη θήκη

Κλείστε την υπόθεση
Κλείστε την υπόθεση

Χρησιμοποίησα μικρές βίδες ~ 4mm στη λίστα αυτής της τρισδιάστατης θήκης. Εάν ανησυχείτε για βρωμιά ή υγρασία τοποθετήστε μια χάντρα σιλικόνης ή θερμής κόλλας γύρω από την άρθρωση του καπακιού πριν την κλείσετε.

Βήμα 17: Εγκατάσταση στο Gate Operator

Εγκατάσταση στο Gate Operator
Εγκατάσταση στο Gate Operator
Εγκατάσταση στο Gate Operator
Εγκατάσταση στο Gate Operator

Στον κεντρικό πίνακα:

  • Συνδέστε τα δύο καλώδια που είναι συνδεδεμένα στην έξοδο ρελέ 1 στον ακροδέκτη Open Gate. (κόκκινο/καφέ στις φωτογραφίες)
  • Συνδέστε τα δύο καλώδια που είναι συνδεδεμένα στην έξοδο ρελέ 2 στον ακροδέκτη Close Gate. (κίτρινο/μπλε στις φωτογραφίες)
  • Συνδέστε τα δύο καλώδια που είναι συνδεδεμένα στην είσοδο μετατροπέα DC-DC στους ακροδέκτες βίδας αξεσουάρ 24V (κόκκινο/μαύρο στις φωτογραφίες)

Στον πίνακα επέκτασης

  • Τραβήξτε τους κοινούς ακροδέκτες ρελέ μαζί με ένα μικρό κομμάτι σύρμα
  • Συνδέστε το κοινό έδαφος σε έναν από τους κοινούς ακροδέκτες ρελέ (πράσινο στις φωτογραφίες)
  • Συνδέστε τις εισόδους κατάστασης 2 πύλης (IMP Pin8 & 9) στους ακροδέκτες βίδας κανονικού ανοικτού ρελέ (ΟΧΙ) (γκρι/κίτρινο στις φωτογραφίες)

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

Υπάρχουν επιπλέον φωτογραφίες πλήρους ανάλυσης, που φιλοξενούνται στο αποθετήριο GitHub.

Βήμα 18: Ορίστε τη λειτουργία αναμετάδοσης Aux

Ρυθμίστε τη λειτουργία Aux Relay
Ρυθμίστε τη λειτουργία Aux Relay

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

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

Βήμα 19: IMP Agent and Device Code

IMP Agent and Device Code
IMP Agent and Device Code

Κωδικός πράκτορα ηλεκτρικής πρόσκρουσης:

  • Δημιουργήστε ένα νέο μοντέλο στο Electric Imp IDE:
  • Αντικαταστήστε τη διεύθυνση URL προς το διακομιστή σας

// Λειτουργία χειριστή

συνάρτηση httpHandler (req, resp) {try {local d = http.jsondecode (req.body); //server.log(d.c); εάν (d.c == "btn") {//server.log(d.val); device.send ("btn", d.val); resp.send (200, "OK"); }} catch (ex) {// Εάν υπήρχε σφάλμα, στείλτε το πίσω στο server server.log ("error:" + ex); resp.send (500, "Internal Server Error:" + ex); }} // Εγγραφή χειριστή HTTP http.onrequest (httpHandler); // GateStateChange handler function function gateStateChangeHandler (data) {// URL to web service local url = "https://projects.ajillion.com/save_gate_state"; // Ορίστε κεφαλίδα Content-Type σε json local headers = {"Content-Type": "application/json"}; // Κωδικοποιήστε τα ληφθέντα δεδομένα και καταγράψτε το τοπικό σώμα = http.jsonencode (δεδομένα); server.log (σώμα); // Στείλτε τα δεδομένα στην υπηρεσία ιστού σας http.post (url, κεφαλίδες, σώμα).sendsync (); } // Εγγραφή gateStateChange χειριστή device.on ("gateStateChange", gateStateChangeHandler);

Κωδικός πράκτορα ηλεκτρικής πρόσκρουσης:

  • Εκχωρήστε μια συσκευή Imp στο μοντέλο σας
  • Βεβαιωθείτε ότι οι καρφίτσες υλικού έχουν ψευδώνυμο ως συνδεδεμένες

// Βιβλιοθήκη Debouce

#require "Button.class.nut: 1.2.0" // asευδώνυμο για gateOpen GPIO pin (active low) gateOpen <- hardware.pin2; // asευδώνυμα για gateClose ελέγχου GPIO pin (active low) gateClose <- hardware.pin7; // Διαμόρφωση 'gateOpen' για ψηφιακή έξοδο με αρχική τιμή ψηφιακής 1 (υψηλή) gateOpen.configure (DIGITAL_OUT, 1); // Διαμόρφωση 'gateClose' για ψηφιακή έξοδο με αρχική τιμή ψηφιακής 1 (υψηλής) gateClose.configure (DIGITAL_OUT, 1); // Aliευδώνυμο για την καρφίτσα GPIO που δείχνει ότι η πύλη μετακινείται (Ν. Ο.) gateMovingState <- Κουμπί (hardware.pin8, DIGITAL_IN_PULLUP); // asευδώνυμο για την καρφίτσα GPIO που δείχνει ότι η πύλη είναι πλήρως ανοιχτή (Ν. Ο.) gateOpenState <- Κουμπί (hardware.pin9, DIGITAL_IN_PULLUP); // Παγκόσμια μεταβλητή για να διατηρήσει την κατάσταση πύλης (Άνοιγμα = 1 / Κλειστό = 0) τοπικό lastGateOpenState = 0; // Latch Timer object local latchTimer = null agent.on ("btn", function (data) {switch (data.cmd) {case "open": gateOpen.write (0); if (latchTimer) imp.cancelwakeup (latchTimer); latchTimer = imp.wakeup (1, releaseOpen); server.log ("Άνοιγμα εντολής ελήφθη"); θήκη διακοπής "latch30m": gateOpen.write (0); if (latchTimer) imp.cancelwakeup (latchTimer); latchTimer = imp.wakeup (1800, releaseOpen); server.log ("Η εντολή Latch30m ελήφθη"); θήκη διακοπής "latch8h": gateOpen.write (0); if (latchTimer) imp.cancelwakeup (latchTimer); latchTimer = imp.wakeup (28800, releaseOpen); server.log ("Η εντολή Latch8h ελήφθη"); θήκη διακοπής "κλείσιμο": if (latchTimer) imp.cancelwakeup (latchTimer); gateOpen.write (1); gateClose.write (0); latchTimer = imp.wakeup (1, releaseClose); server.log ("Κλείσιμο τώρα η εντολή λήφθηκε"); διακοπή προεπιλογής: server.log ("Η εντολή κουμπιού δεν αναγνωρίζεται");}}); συνάρτηση releaseOpen () {if (latchTimer) imp.cancelwakeup (latchTimer); gateOpen.write (1); //server.log("Χρόνος που κυκλοφόρησε την πύληΑνοίξτε την επαφή του διακόπτη "); } λειτουργία releaseClose () {if (latchTimer) imp.cancelwakeup (latchTimer); gateClose.write (1); //server.log("Χρόνος απελευθέρωσης πύληςΚλείστε επαφή διακόπτη "); } gateMovingState.onPress (λειτουργία () {// Το ρελέ ενεργοποιείται, η πύλη κινείται //server.log("Gate ανοίγει "); τοπικά δεδομένα = {" gatestate ": 1," timer ": hardware.millis ()}; agent.send ("gateStateChange", δεδομένα);}). onRelease (λειτουργία () {// Ο ηλεκτρονόμος απελευθερώνεται, η πύλη είναι σε ηρεμία //server.log("Gate κλειστή "); τοπικά δεδομένα = {"gatestate": 0, "timer": hardware.millis ()}; agent.send ("gateStateChange", δεδομένα);}); gateOpenState.onPress (λειτουργία () {// Το ρελέ είναι ενεργοποιημένο, η πύλη είναι πλήρως ανοιχτή //server.log("Gate is open "); local data = {" gatestate ": 2," timer ": hardware.millis ()}; agent.send ("gateStateChange", δεδομένα);}). onRelease (λειτουργία () {// Ο ρελέ απελευθερώνεται, η πύλη δεν είναι πλήρως ανοιχτή //server.log("Gate κλείνει "); τοπικά δεδομένα = {"gatestate": 3, "timer": hardware.millis ()}; agent.send ("gateStateChange", data);});

Βήμα 20: Κώδικας PHP υπηρεσίας Web

Κώδικας PHP υπηρεσίας Web
Κώδικας PHP υπηρεσίας Web

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

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

Η βιβλιοθήκη ajax που έγραψα και χρησιμοποίησα σε αυτό το έργο μπορεί να μεταφορτωθεί από το αποθετήριο GitHub: ThingEngineer/Codeigniter-jQuery-Ajax

Κωδικός ελεγκτή PHP:

  • app/controllers/projects.php
  • Βεβαιωθείτε ότι η διαδρομή δεδομένων είναι προσβάσιμη από το σενάριο PHP, τόσο για την τοποθεσία όσο και για τα δικαιώματα ανάγνωσης/εγγραφής.

load-> helper (πίνακας ('αρχείο', 'ημερομηνία'));

$ data = json_decode (read_file ('../ app/logs/gatestate.data'), TRUE); switch ($ data ['gatestate']) {case 0: $ view_data ['gatestate'] = 'Κλειστό'; Διακοπή; περίπτωση 1: $ view_data ['gatestate'] = 'Άνοιγμα…'; Διακοπή; περίπτωση 2: $ view_data ['gatestate'] = 'Άνοιγμα'; Διακοπή; περίπτωση 3: $ view_data ['gatestate'] = 'Κλείσιμο…'; Διακοπή; } $ last_opened = json_decode (read_file ('../ app/logs/projects/gateopened.data'), TRUE); $ view_data ['last_opened'] = χρονικό διάστημα ($ last_opened ['last_opened'], ώρα ()). 'πριν'? // Φόρτωση προβολής $ t ['data'] = $ view_data; $ this-> load-> προβολή ('gate_view', $ t); } λειτουργία save_gate_state () {$ this-> load-> helper ('αρχείο'); $ data = file_get_contents ('php: // input'); write_file ('../ app/logs/projects/gatestate.data', $ data); $ data = json_decode ($ data, TRUE); if ($ data ['gatestate'] == 1) {$ last_opened = array ('last_opened' => χρόνος ()); write_file ('../ app/logs/projects/gateopened.data', json_encode ($ last_opened)); }} function get_gate_state () {$ this-> load-> helper (πίνακας ('αρχείο', 'ημερομηνία')); $ this-> load-> βιβλιοθήκη ('ajax'); $ data = json_decode (read_file ('../ app/logs/projects/gatestate.data'), TRUE); $ last_opened = json_decode (read_file ('../ app/logs/projects/gateopened.data'), TRUE); $ data ['last_opened'] = χρονικό διάστημα ($ last_opened ['last_opened'], ώρα ()). 'πριν'? $ this-> ajax-> output_ajax ($ data, 'json', FALSE); // αποστολή δεδομένων json, μη επιβολή αιτήματος ajax}}/ * Τέλος έργων αρχείου.php *// * Τοποθεσία:./application/controllers/projects.php */

Κωδικός Προβολής PHP:

Χρησιμοποίησα το Bootstrap για το front-end επειδή είναι γρήγορο, εύκολο και ανταποκρινόμενο. Μπορείτε να το κατεβάσετε εδώ: https://getbootstrap.com (το jQuery περιλαμβάνεται)

  • app/controllers/gate_view.php
  • Αντικαταστήστε τον ΚΩΔΙΚΟ ΠΡΑΚΤΟΡΙΚΟΥ ΣΑΣ με τον κωδικό πράκτορα Electric Imp

Addon IoT Gate Opperator Addon IoT Gate Opperator Addon

  • Σπίτι
  • διαχειριστής

Open Gatch Latch Ανοιχτό για 30 λεπτά Latch Open για 8 ώρες Κλείσιμο Now Gate Status: Τελευταίο άνοιγμα $ (έγγραφο).ready (λειτουργία () {resetStatus ();}) συνάρτηση sendJSON (JSONout) {var url = 'https:// agent.electricimp.com/YOUR-AGENT-CODE »· $.post (url, JSONout); } $ ("#open_gate"). κλικ (λειτουργία () {var JSONout = '{"c": "btn", "val": {"cmd": "open"}}'; sendJSON (JSONout); $ ("#status"). κείμενο ("Άνοιγμα …");}); $ ("#latch30m_gate"). κλικ (λειτουργία () {var JSONout = '{"c": "btn", "val": {"cmd": "latch30m"}}'; sendJSON (JSONout); $ ("#status"). κείμενο ("Άνοιγμα …");}); $ ("#latch8h_gate"). κλικ (λειτουργία () {var JSONout = '{"c": "btn", "val": {"cmd": "latch8h"}}'; sendJSON (JSONout); $ ("#status"). κείμενο ("Άνοιγμα …");}); $ ("#close_gate"). κλικ (λειτουργία () {var JSONout = '{"c": "btn", "val": {"cmd": "close"}}'; sendJSON (JSONout); $ ("#status"). κείμενο ("Κλείσιμο …");}); συνάρτηση resetStatus () {// Στόχος url var target = 'https://projects.ajillion.com/get_gate_state'; // Αίτημα var data = {agent: 'app'}; // Αποστολή αιτήματος ανάρτησης ajax $.ajax ({url: target, dataType: 'json', type: 'POST', data: data, success: function (data, textStatus, XMLHttpRequest) {switch (data.gatestate) {case 0: $ ("#status"). Κείμενο ("Κλειστό"); διάλειμμα; περίπτωση 1: $ ("#κατάσταση"). Κείμενο ("Άνοιγμα …"); διάλειμμα; περίπτωση 2: $ ("#κατάσταση").text ("Άνοιγμα"); διάλειμμα; περίπτωση 3: $ ("#κατάσταση"). κείμενο ("Κλείσιμο …"); διακοπή; προεπιλογή: $ ("#κατάσταση"). κείμενο ("Σφάλμα");} $ ("#last_opened"). κείμενο (data.last_opened);}, σφάλμα: λειτουργία (XMLHttpRequest, textStatus, errorThrown) {// Μήνυμα σφάλματος $ ("#status"). κείμενο ("Σφάλμα διακομιστή");}}) ? setTimeout (resetStatus, 3000); }

Συνιστάται: