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

SmartWand: 6 βήματα
SmartWand: 6 βήματα

Βίντεο: SmartWand: 6 βήματα

Βίντεο: SmartWand: 6 βήματα
Βίντεο: ФИТНЕС-БРАСЛЕТ М6. SMART BAND 6 - ОБЗОР и ПЕРВАЯ НАСТРОЙКА (39 ЦИФЕРБЛАТОВ!) 2024, Νοέμβριος
Anonim
SmartWand
SmartWand

Αυτό το έργο είναι να αποκτήσει ένα σενάριο Python για τον έλεγχο Smartthings με τη ράβδο κωδικοποίησης Kano ως είσοδο.

Οι κόρες μου (8 και 12) είναι μεγάλες θαυμάστριες του Χάρι Πότερ και πήραν το ράβδο κωδικοποίησης Kano για τα Χριστούγεννα. Η εφαρμογή κωδικοποίησης Kano είναι υπέροχη και διασκεδάζουν με αυτήν. Εξαιρετικό εργαλείο για την εισαγωγή εννοιών κωδικοποίησης.

Έχουμε επίσης ένα κομμάτι αυτοματισμού σπιτιού πασπαλισμένο σε όλο το σπίτι με SmartThings, Phillips Hue, κόμβο Logitech Harmony, κλπ … Αναπόφευκτα έφτασαν στο σημείο να θέλουν να ανάψουν τα Χριστουγεννιάτικα Φώτα των Δέντρων με το ραβδί και άρχισαν να ρίχνουν όρους όπως Lumos και Nox σε μένα. Ακούστηκε σαν μια διασκεδαστική πρόκληση, οπότε την ανέλαβα.

Έπρεπε να πάει με λειτουργικό σύστημα Linux αφού ένα κρίσιμο στοιχείο (βιβλιοθήκη Bluepy python για σύνδεση με το ραβδί Bluetooth) είναι διαθέσιμο μόνο σε πλατφόρμες Linux. Βολικό ούτως ή άλλως από την σκοπιά του να θέλεις τελικά να το τρέξεις σε ένα Raspberry Pi.

Υπάρχουν δύο βασικές αναφορές εδώ, χωρίς τις οποίες, δεν θα μπορούσα ποτέ να το κάνω αυτό.

Χάρη στο GammaGames για τη δημιουργία και την κοινή χρήση ενός σεναρίου python για την ανάγνωση του ράβδου κωδικοποίησης Kano.

github.com/GammaGames/kano-wand-demos/blob…

και

Χάρη στο rllynch για τη δημιουργία και την κοινή χρήση ενός σεναρίου python για μια διεπαφή γραμμής εντολών SmartThings.

github.com/rllynch/smartthings_cli

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

Εδώ είναι αυτό που θα χρειαστείτε:

  • Harry Potter Kano Coding Kit (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Λειτουργικό σύστημα Linux
  • Προσαρμογέας USB Bluetooth (χρησιμοποίησα προσαρμογέα USB Kensington Bluetooth 4.0 USB)
  • Σύνδεση στο Διαδίκτυο (Για το RPi, χρησιμοποίησα έναν προσαρμογέα USB Edimax USB που είχα από προηγούμενο έργο)

Βήμα 1: Εγκαταστήστε το Linux στο Raspberry Pi

Ακολουθήστε τους παρακάτω συνδέσμους για να εγκαταστήσετε ένα λειτουργικό σύστημα Linux στο Raspberry Pi. Χρησιμοποίησα το Raspbian Stretch με επιτραπέζιο και προτεινόμενο λογισμικό και έλαμψα με Etcher.

www.raspberrypi.org/learning/software-guid…

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

sudo apt-get ενημέρωση

sudo apt-get αναβάθμιση

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

sudo startx

Το επόμενο πράγμα που πρέπει να ρυθμίσετε είναι μια σύνδεση στο Διαδίκτυο, έτσι ώστε να μπορείτε να φτάσετε σε repos και να εγκαταστήσετε περαιτέρω λογισμικό. Θα χρειαστεί επίσης σύνδεση στο Διαδίκτυο για να ενεργοποιήσετε το SmartThings API. Ακολουθήστε αυτόν τον οδηγό για να συνδεθείτε. Αρκετά κατευθείαν από την επιφάνεια εργασίας. Χρησιμοποίησα έναν προσαρμογέα wifi USB που είχα τοποθετήσει.

www.raspberrypi.org/learning/software-guid…

Εναλλακτικά στο Raspberry Pi, θα μπορούσατε να χρησιμοποιήσετε έναν άλλο υπάρχοντα υπολογιστή είτε για διπλή εκκίνηση ενός λειτουργικού συστήματος Linux μαζί με το υπάρχον λειτουργικό σας σύστημα (ένας πόνος επειδή πρέπει να κάνετε επανεκκίνηση για εναλλαγή μεταξύ των δύο) είτε να εκτελέσετε ένα παράδειγμα του λειτουργικού συστήματος Linux σε VirtualBox. Για να λειτουργήσει αρχικά αυτό το έργο, εγκατέστησα το Debian Stretch με Raspberry Pi Desktop σε ένα εικονικό πλαίσιο χρησιμοποιώντας αυτόν τον οδηγό:

thepi.io/how-to-run-raspberry-pi-desktop-o…

(σημείωση: Είχα αρκετό καιρό να εγκαταστήσω σωστά το Guest Addons σύμφωνα με τις παραπάνω οδηγίες. Ποτέ δεν πήρα το κόψιμο και επικόλληση μεταξύ κεντρικού υπολογιστή και πελάτη στη δουλειά, κάτι που θα ήταν ωραίο, αλλά κατάφερα να ενημερώσω την ανάλυση για χρήση το πλήρες μέγεθος της οθόνης μου. Αυτή ήταν μια σειρά από τρύπες google rabit τις οποίες δεν θα τεκμηριώσω εδώ.)

Βήμα 2: Εγκαταστήστε το Python 3

Το Python3 θα πρέπει ήδη να εγκατασταθεί με το Raspian Stretch.

Βήμα 3: Εγκατάσταση μονάδας ράβδου

Ακολουθήστε αυτόν τον οδηγό που δημιουργήθηκε από το GammaGames

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

cd /usr/local/lib/python3.5/dist-packages

git clone

sudo pip3 install bluepy moosegesture

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

sudo apt-get install python3-numpy

Τέλος, για να λάβω τα κατάλληλα δικαιώματα για την εκτέλεση του bluepy από το σενάριο python βρήκα αυτήν την εντολή.

sudo setcap 'cap_net_raw, cap_net_admin+eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper

Αυτό είναι το μόνο που απαιτείται για να ξεκινήσει το σενάριό μας. Ο υπόλοιπος οδηγός GammaGames περπατάει βήμα προς βήμα στα κομμάτια που απαιτούνται στο σενάριο python. Είναι μια μεγάλη ανάλυση για να καταλάβετε περαιτέρω πώς είναι δομημένο το σενάριο και τι κάνει το κάθε αντικείμενο. Ευχαριστούμε πολύ την GammaGames για την παροχή αυτής της τεκμηρίωσης. Θα μπορούσε επίσης να είναι χρήσιμο για την αντιμετώπιση προβλημάτων ενός τμήματος του σεναρίου. Για παράδειγμα, το πρώτο αντικείμενο που εμφανίζεται εκτελεί το έργο της σάρωσης για ραβδιά και την επιστροφή μιας λίστας ραβδιών που ανακαλύφθηκαν. Καλή επαλήθευση ότι η ρύθμιση bluetooth ενεργοποιείται σε όλους τους κυλίνδρους. Για να το κάνετε αυτό, μπορείτε να αντιγράψετε τον κώδικα από το test1_BLE_wand_detect.py που βρίσκεται στο ακόλουθο repo:

github.com/maspieljr/SmartWand

Βήμα 4: Ρύθμιση του SmartThings CLI

Παρακάτω είναι ένα αντίγραφο των οδηγιών που περιλαμβάνονται στο smartthings_cli repo στο github (https://github.com/rllynch/smartthings_cli).

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

1) Συνδεθείτε και κάτω από το My SmartApps, δημιουργήστε ένα νέο SmartApp με τον κωδικό στο groovy/app.groovy.

*Σημείωση στο πρώτο βήμα υπάρχει αναφορά σε έναν ιστότοπο SmartThings. Δώστε μεγάλη προσοχή στο πού βρίσκεται ο λογαριασμός σας smartthings. Αυτό με προβλημάτισε για λίγο καθώς ο άλλος ιστότοπος μου επέτρεψε να συνδεθώ, αλλά δεν βρήκα κανένα από τα πράγματα μου. Έπρεπε να χρησιμοποιήσω τον παρακάτω σύνδεσμο για να φτάσω στον λογαριασμό μου SmartThings.https://graph-na04-useast2.api.smartthings.com

(Είστε ευπρόσδεκτοι για τις 2 ώρες που πέρασα για να το διευθετήσω:) αυτό θα είναι σημαντικό και στο επόμενο βήμα.)

2) Κάντε κλικ στην επιλογή Ρυθμίσεις εφαρμογής και στην ενότητα OAuth, κάντε κλικ στην επιλογή Ενεργοποίηση OAuth στην Έξυπνη εφαρμογή. Σημειώστε το αναγνωριστικό πελάτη OAuth και το μυστικό πελάτη OAuth. Ενημερώστε την οθόνη πελάτη OAuth στο SmartThings CLI Control. Κάντε κλικ στην επιλογή Ενημέρωση.

3) Επιστρέψτε στο My SmartApps και μετά κάντε κλικ στο SmartThings CLI Control. Κάντε κλικ στην επιλογή Δημοσίευση => Για μένα.

4) Κλωνοποιήστε το αποθετήριο smartthings_cli, δημιουργήστε ένα virtualenv αν θέλετε (δεν το έκανα αυτό), στη συνέχεια εκτελέστε τις ακόλουθες εντολές, αντικαθιστώντας το CLIENTID και το CLIENTSECRET με το αναγνωριστικό και το μυστικό από το βήμα 2.

Για να κλωνοποιήσετε το repo του smartthings, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή. Βεβαιωθείτε ότι η γραμμή εντολών linux βρίσκεται στον κατάλογο του έργου σας που δημιουργήθηκε κατά τη διάρκεια της ρύθμισης μονάδας Wand.

git κλώνος >

then change directory again down to the smartthings_cli directory that was just created.

cd smartthings_cli

python setup.py install

smartthings_cli --clientid clientid --clientsecret clientsecret

5) smartthings_cli will direct you to a url to authorized access. copy the url from the response in the command window and be sure to update it with the proper path as we had to in step 1. go to that url in a browser and specify which devices the cli should be able to access. click authorize when finished. you should be redirected to a page reporting smartthings_cli.py received auth code.

last few things i needed to do in order to get rid of a warning that kept coming up:

sudo apt-get install libssl-dev

pip install service_identity

pip install attrs pip install pyopenssl pip install pyasn1 pip install pyasn1-modules pip install ipaddress

raspberry pi should now be set-up to issue smart thing commands from the command line interface, try it out with these examples:

smartthings_cli query switch all

smartthings_cli query switch "switch name"

smartthings_cli set switch "switch name" on

step 5: improve response

everything is running at this point but there's a bit of a lag once the wand gesture is captured. in attempt to speed up the response, i've embedded the smarthings logic into the smartwand python script rather than calling it from a command line as it does in smartwand.py. this eliminated the need to repeatedly import the modules required for smartthings communication, which is what was slowing everything down. here's what i had to do to get that working:

python3 -m pip install future

python3 -m pip install twisted

made update to the python script. see smartwand2.py stored in the following repo:

github.com/maspieljr/smartwand

step 6: make smartwand execute on raspberry pi bootup

so you only need to plug in the raspberry pi near your smartthings things and not require a monitor, and keyboard, i followed these instructions to get the script to run on boot or any time a command line terminal is launched. the script seems pretty robust but does get hung up from time to time, requiring a reboot. alternatively you could have a keyboard connected and use alt+f4 to kill a running script and ctrl+alt+t to launch a new terminal without needing a monitor to see anything.

method 2: modify the.bashrc file as described in the link below:

www.dexterindustries.com/howto/run-a-progr…

Συνιστάται: