Spisu treści:

SmartWand: 6 kroków
SmartWand: 6 kroków

Wideo: SmartWand: 6 kroków

Wideo: SmartWand: 6 kroków
Wideo: O Krok Przed Tobą - Mi Smart Band 6 2024, Lipiec
Anonim
Inteligentna Różdżka
Inteligentna Różdżka

Ten projekt ma na celu uzyskanie skryptu Pythona do sterowania Smartthings za pomocą różdżki kodującej Kano jako danych wejściowych.

Moje córki (8 i 12) są wielkimi fanami Harry'ego Pottera i dostały Różdżkę do kodowania Kano na Boże Narodzenie. Aplikacja do kodowania Kano jest fajna i dobrze się z nią bawią. Świetne narzędzie do wprowadzania koncepcji kodowania.

Mamy też trochę automatyki domowej posypanej w całym domu SmartThings, Phillips Hue, koncentratorem Logitech Harmony itp. Nieuchronnie dotarli do punktu, w którym chcieli włączyć lampki choinkowe za pomocą różdżki i zaczęli rzucać terminami, takimi jak Lumos i Nox na mnie. Brzmiało to jak zabawne wyzwanie, więc podjąłem się tego.

Musiałem iść z systemem operacyjnym Linux, ponieważ krytyczny element (biblioteka Bluepy python do łączenia się z różdżką Bluetooth) jest dostępny tylko na platformach Linux. W każdym razie wygodne z punktu widzenia ostatecznego uruchomienia tego na Raspberry Pi.

Są tu dwa główne odniesienia, bez których nigdy nie byłbym w stanie tego zrobić.

Podziękowania dla GammaGames za stworzenie i udostępnienie skryptu Pythona do czytania różdżki kodowania Kano.

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

oraz

Podziękowania dla rllynch za stworzenie i udostępnienie skryptu Pythona dla interfejsu wiersza poleceń SmartThings.

github.com/rllynch/smartthings_cli

Aby zachować to nienaruszone, zamierzam skopiować większość kroków do tego Instruktażu, aby uchwycić wszelkie poprawki, których potrzebowałem, aby działał w mojej konfiguracji.

Oto, czego potrzebujesz:

  • Zestaw do kodowania Harry'ego Pottera Kano (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • System operacyjny oparty na Linuksie (mam jeden uruchomiony z VirtualBox, a następnie zainstalowany na Raspberry Pi)
  • Adapter USB Bluetooth (użyłem adaptera Kensington Bluetooth 4.0 USB)
  • Połączenie internetowe (w przypadku RPi użyłem adaptera Edimax USB WiFi, który miałem z poprzedniego projektu)

Krok 1: Zainstaluj Linuksa na Raspberry Pi

Skorzystaj z poniższych łączy, aby zainstalować system operacyjny Linux na Raspberry Pi. Użyłem Raspbian Stretch z komputerem stacjonarnym i zalecanym oprogramowaniem i flashowałem za pomocą Etchera.

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

Po zakończeniu instalacji i uzyskaniu wiersza poleceń systemu Linux, dobrą praktyką jest uruchomienie następujących dwóch poleceń, aby upewnić się, że wszystko jest aktualne.

aktualizacja sudo apt-get

sudo apt-get upgrade

Wpisz następujące polecenie w interfejsie wiersza poleceń, aby uruchomić interfejs użytkownika na pulpicie.

sudo startx

Następną rzeczą do skonfigurowania jest połączenie internetowe, dzięki czemu można dostać się do repozytoriów i zainstalować dodatkowe oprogramowanie. Połączenie internetowe będzie również wymagane do uruchomienia SmartThings API. Postępuj zgodnie z tym przewodnikiem, aby się połączyć. Całkiem prosto z pulpitu. Użyłem adaptera USB Wi-Fi, który leżałem.

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

Alternatywnie do Raspberry Pi, możesz użyć innego istniejącego komputera do podwójnego rozruchu systemu operacyjnego Linux wraz z istniejącym systemem operacyjnym (coś uciążliwe, ponieważ musisz ponownie uruchomić system, aby przełączyć się między nimi) lub uruchomić instancję systemu operacyjnego Linux na VirtualBox. Aby najpierw uruchomić ten projekt, zainstalowałem Debian Stretch z Raspberry Pi Desktop w Virtual Box, korzystając z tego przewodnika:

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

(uwaga: miałem mnóstwo czasu, aby poprawnie zainstalować dodatki dla gości zgodnie z powyższymi instrukcjami. Nigdy nie udało mi się wyciąć i wkleić między hostem a klientem, co byłoby miłe, ale udało mi się zaktualizować rozdzielczość, aby wykorzystać mój pełny rozmiar monitora. To była seria dziur w Google rabit, których nie będę tutaj dokumentować.)

Krok 2: Zainstaluj Pythona 3

Python3 powinien być już zainstalowany z Raspian Stretch.

Krok 3: Skonfiguruj moduł różdżki

Postępuj zgodnie z tym przewodnikiem stworzonym przez GammaGames

Najpierw musiałem przejść do innego katalogu przed sklonowaniem repozytorium kano_wand, w przeciwnym razie mój skrypt Pythona nie mógł go znaleźć. Prawdopodobnie mógłbym gdzieś zaktualizować odniesienia do ścieżek w jakimś pliku, ale nie zagłębiałem się w to.

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

klon git

sudo pip3 zainstaluj bluepy moosegesture

Musiałem użyć sudo, aby uzyskać odpowiednie uprawnienia. Musiałem również użyć następujących poleceń, aby zainstalować numpy, z jakiegokolwiek powodu, nie mógł uruchomić pip. Mógł to być kolejny problem ze ścieżką, ale to zadziałało dla mnie, więc poszedłem z tym:

sudo apt-get zainstaluj python3-numpy

Wreszcie, aby uzyskać odpowiednie uprawnienia do uruchamiania bluepy ze skryptu Pythona, znalazłem to polecenie.

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

To wszystko, co jest wymagane do uruchomienia i uruchomienia naszego skryptu. Pozostała część przewodnika GammaGames przedstawia krok po kroku elementy wymagane w skrypcie Pythona. To świetny podział, aby lepiej zrozumieć strukturę skryptu i co robi każdy obiekt. Wielkie dzięki dla GammaGames za udostępnienie tej dokumentacji. Może być również przydatny do rozwiązywania problemów z sekcją skryptu. Na przykład, pierwszy pokazany obiekt wykonuje zadanie skanowania w poszukiwaniu różdżek i zwraca listę znalezionych różdżek. Dobra weryfikacja, czy konfiguracja Bluetooth działa na wszystkich cylindrach. Aby to zrobić, możesz skopiować kod z test1_BLE_wand_detect.py znalezionego w następującym repozytorium:

github.com/maspieljr/SmartWand

Krok 4: Skonfiguruj SmartThings CLI

Poniżej znajduje się kopia instrukcji zawartych w repozytorium smartthings_cli na github (https://github.com/rllynch/smartthings_cli).

Zamieściłem tutaj małe poprawki, które musiałem wprowadzić w mojej konfiguracji, aby wszystko działało. Jeszcze raz dziękuję rllynch za dostarczenie tego.

1) Zaloguj się do i pod My SmartApps, utwórz nową SmartApp z kodem w groovy/app.groovy.

*Uwaga: w pierwszym kroku znajduje się odniesienie do strony internetowej SmartThings. Zwróć szczególną uwagę na to, gdzie znajduje się Twoje konto smartthings. To mnie na chwilę zmyliło, ponieważ inna strona pozwoliła mi się zalogować, ale nie mogłem znaleźć żadnych moich rzeczy. Musiałem użyć następującego linku, aby dostać się do mojego konta SmartThings.https://graph-na04-useast2.api.smartthings.com

(Zapraszam na 2 godziny, które spędziłem na załatwianiu tego:) będzie to również ważne na późniejszym etapie.)

2) Kliknij Ustawienia aplikacji i pod OAuth kliknij Włącz OAuth w Smart App. Zanotuj identyfikator klienta OAuth i klucz tajny klienta OAuth. Zaktualizuj wyświetlacz klienta OAuth do SmartThings CLI Control. Kliknij Aktualizuj.

3) Wróć do My SmartApps, a następnie kliknij SmartThings CLI Control. Kliknij Opublikuj => Dla mnie.

4) Sklonuj repozytorium smartthings_cli, w razie potrzeby utwórz virtualenv (nie zrobiłem tego), a następnie uruchom następujące polecenia, zastępując CLIENTID i CLIENTSECRET identyfikatorem i sekretem z kroku 2.

Aby sklonować repozytorium smartthings, możesz użyć następującego polecenia. Upewnij się, że wiersz poleceń systemu Linux znajduje się w katalogu projektu utworzonym podczas instalacji modułu różdżki.

git klon >

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…

Zalecana: