Spisu treści:
- Krok 1: Zainstaluj Linuksa na Raspberry Pi
- Krok 2: Zainstaluj Pythona 3
- Krok 3: Skonfiguruj moduł różdżki
- Krok 4: Skonfiguruj SmartThings CLI
- step 5: improve response
- step 6: make smartwand execute on raspberry pi bootup
Wideo: SmartWand: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
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:
Licznik kroków - Micro:Bit: 12 kroków (ze zdjęciami)
Licznik kroków - Micro:Bit: Ten projekt będzie licznikiem kroków. Do pomiaru kroków użyjemy czujnika przyspieszenia wbudowanego w Micro:Bit. Za każdym razem, gdy Micro:Bit się trzęsie, dodamy 2 do licznika i wyświetlimy go na ekranie
Lewitacja akustyczna z Arduino Uno krok po kroku (8 kroków): 8 kroków
Lewitacja akustyczna z Arduino Uno Krok po kroku (8-kroków): ultradźwiękowe przetworniki dźwięku Zasilacz żeński L298N Dc z męskim pinem dc Arduino UNOBreadboardJak to działa: Najpierw wgrywasz kod do Arduino Uno (jest to mikrokontroler wyposażony w cyfrowy oraz porty analogowe do konwersji kodu (C++)
Jak używać silnika krokowego jako enkodera obrotowego i wyświetlacza OLED dla kroków: 6 kroków
Jak używać silnika krokowego jako enkodera obrotowego i wyświetlacza OLED dla kroków: W tym samouczku dowiemy się, jak śledzić kroki silnika krokowego na wyświetlaczu OLED. Obejrzyj film demonstracyjny.Kredyt samouczka oryginalnego trafia do użytkownika YouTube „sky4fly”
Bolt - DIY Wireless Charging Night Clock (6 kroków): 6 kroków (ze zdjęciami)
Bolt - DIY Wireless Charging Night Clock (6 kroków): Ładowanie indukcyjne (znane również jako ładowanie bezprzewodowe lub ładowanie bezprzewodowe) to rodzaj bezprzewodowego przesyłania energii. Wykorzystuje indukcję elektromagnetyczną do dostarczania energii elektrycznej do urządzeń przenośnych. Najpopularniejszym zastosowaniem jest stacja ładowania bezprzewodowego Qi
Jak zdemontować komputer za pomocą prostych kroków i zdjęć: 13 kroków (ze zdjęciami)
Jak zdemontować komputer za pomocą prostych kroków i zdjęć: To jest instrukcja demontażu komputera. Większość podstawowych komponentów ma budowę modułową i jest łatwa do usunięcia. Jednak ważne jest, abyś był w tym zorganizowany. Pomoże to uchronić Cię przed utratą części, a także ułatwi ponowny montaż