Obsah:

SmartWand: 6 krokov
SmartWand: 6 krokov

Video: SmartWand: 6 krokov

Video: SmartWand: 6 krokov
Video: ФАНТАСТИЧЕСКИЕ ТВАРИ и МАРШРУТКИ ИХ ОБИТАНИЯ (самое жизненное видео) 2024, November
Anonim
SmartWand
SmartWand

Tento projekt má získať skript Python na ovládanie Smartthings pomocou kódovacej paličky Kano ako vstupu.

Moje dcéry (8 a 12) sú veľkými fanúšikmi Harryho Pottera a na Vianoce dostali kódovaciu paličku Kano. Aplikácia na kódovanie Kano je skvelá a bavia sa s ňou. Skvelý nástroj na predstavenie konceptov kódovania.

V celom dome sme tiež posypali trochou domácej automatizácie SmartThings, Phillips Hue, Logitech Harmony hub, atď … Nevyhnutne sa dostali do bodu, kedy chceli pomocou paličky zapnúť osvetlenie vianočného stromčeka a začali hádzať výrazy ako Lumos a Nox na mňa. Znelo to ako zábavná výzva, tak som sa jej chopil.

Musel som ísť s operačným systémom Linux, pretože kritický prvok (knižnica pythonov Bluepy na pripojenie k Bluetooth prútiku) je k dispozícii iba na platformách Linux. Pohodlné v každom prípade z hľadiska toho, že by ste to nakoniec chceli spustiť na Raspberry Pi.

Existujú tu dve hlavné referencie, bez ktorých by som to nikdy nedokázal.

Ďakujem spoločnosti GammaGames za vytvorenie a zdieľanie pythonového skriptu na čítanie kódovacej paličky Kano.

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

a

Ďakujeme rllynch za vytvorenie a zdieľanie pythonového skriptu pre rozhranie príkazového riadka SmartThings.

github.com/rllynch/smartthings_cli

Aby to zostalo nedotknuté, skopírujem väčšinu krokov k tomuto pokynu, aby som zachytil všetky vylepšení, ktoré som potreboval, aby fungoval pri mojom nastavení.

Čo budete potrebovať:

  • Harry Potter Kano Coding Kit (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
  • Operačný systém Linux (nainštaloval som ho s VirtualBox a potom nainštaloval na Raspberry Pi)
  • USB adaptér Bluetooth (použil som USB adaptér Kensington Bluetooth 4.0)
  • Pripojenie k internetu (Pre RPi som použil USB WiFi adaptér Edimax, ktorý som mal z predchádzajúceho projektu)

Krok 1: Nainštalujte Linux na Raspberry Pi

Podľa nasledujúcich odkazov nainštalujte operačný systém Linux na Raspberry Pi. Použil som Raspbian Stretch s desktopom a odporúčaným softvérom a blýskal sa s Etcherom.

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

Keď dokončíte inštaláciu a máte príkazový riadok systému Linux, je vhodné spustiť nasledujúce dva príkazy, aby ste sa presvedčili, že je všetko aktuálne.

sudo apt-get aktualizácia

sudo apt-get upgrade

Na rozhraní príkazového riadka zadajte nasledujúce, aby ste spustili používateľské rozhranie pre stolné počítače.

sudo startx

Ďalšou vecou, ktorú musíte nastaviť, je internetové pripojenie, aby ste sa mohli dostať k úložiskám a inštalovať ďalší softvér. Na spustenie rozhrania SmartThings API bude potrebné aj internetové pripojenie. Pripojte sa podľa tohto sprievodcu. Docela rovno z pracovnej plochy. Použil som USB wifi adaptér, ktorý som mal položený okolo.

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

Alternatívne k Raspberry Pi môžete použiť iný existujúci počítač na duálne zavedenie operačného systému Linux spolu s existujúcim operačným systémom (druh bolesti, pretože na prepínanie medzi týmito dvoma počítačmi je potrebné reštartovať) alebo spustenie inštancie operačného systému Linux na VirtualBox. Aby tento projekt najskôr začal fungovať, nainštaloval som Debian Stretch s Raspberry Pi Desktop do virtuálneho boxu pomocou tejto príručky:

thepi.io/how-to-run-raspberry-pi-desktop-o…) moja plná veľkosť monitora. Bola to séria dier od spoločnosti Google, ktoré tu nebudem dokumentovať.)

Krok 2: Nainštalujte Python 3

Python3 by už mal byť nainštalovaný s Raspian Stretch.

Krok 3: Nastavte modul prútika

Postupujte podľa tohto sprievodcu vytvoreného spoločnosťou GammaGames

Pred klonovaním repo kano_wand som najskôr musel prejsť do iného adresára, inak to môj python skript nenašiel. Pravdepodobne som niekde mohol aktualizovať niektoré odkazy na cesty v nejakom súbore, ale do toho som sa nekopal.

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

klon git

sudo pip3 nainštalujte bluepy moosegesture

Na získanie správnych povolení som na to musel použiť sudo. Tiež musel namiesto toho použiť nasledujúce príkazy na inštaláciu numpy, z akéhokoľvek dôvodu nemohol pip fungovať. Možno to bol ďalší problém s cestou, ale mne to fungovalo, tak som s tým začal:

sudo apt-get install python3-numpy

Nakoniec, aby som získal správne povolenia na spustenie bluepy zo skriptu python, našiel som tento príkaz.

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

To je všetko, čo je potrebné na spustenie nášho skriptu. Zvyšok sprievodcu GammaGames prechádza krok za krokom, ktoré sú vyžadované v pythonovom skripte. Je to skvelé rozdelenie na ďalšie pochopenie štruktúry skriptu a toho, čo jednotlivé objekty robia. Veľká vďaka spoločnosti GammaGames za poskytnutie tejto dokumentácie. Môže byť tiež užitočný pri riešení problémov s časťou skriptu. Napríklad prvý zobrazený objekt plní úlohu skenovania prútikov a vrátenia zoznamu nájdených prútikov. Dobré overenie, že vaše nastavenie bluetooth beží na všetkých valcoch. Za týmto účelom môžete skopírovať kód z test1_BLE_wand_detect.py, ktorý sa nachádza v nasledujúcom repo:

github.com/maspieljr/SmartWand

Krok 4: Nastavte SmartThings CLI

Nasleduje kópia pokynov zahrnutých do repo obchodu smartthings_cli na github (https://github.com/rllynch/smartthings_cli).

Zahrnul som sem malé vylepšenia, ktoré som musel urobiť pri svojom nastavení, aby všetko fungovalo. Ešte raz ďakujem rllynch za poskytnutie tohto.

1) Prihláste sa do priečinka My SmartApps a vytvorte si z neho novú aplikáciu SmartApp s kódom v groovy/app.groovy.

*Poznámka v prvom kroku je odkaz na webovú stránku SmartThings. Dávajte veľký pozor na to, kde sa váš účet smartthings nachádza. To ma na chvíľu podrazilo, pretože druhá stránka mi umožňovala prihlásiť sa, ale nenašiel som nič z môjho. Na prístup k svojmu účtu SmartThings som musel použiť nasledujúci odkaz.

(Ste vítaní 2 hodiny, ktoré som strávil triedením:) to bude dôležité aj v neskoršom kroku.)

2) Kliknite na položku Nastavenia aplikácie a v časti OAuth kliknite na položku Povoliť protokol OAuth v inteligentnej aplikácii. Poznačte si ID klienta OAuth a tajomstvo klienta OAuth. Aktualizujte zobrazenie klienta OAuth na ovládanie CLI SmartThings. Kliknite na Aktualizovať.

3) Vráťte sa do My SmartApps a potom kliknite na položku SmartThings CLI Control. Kliknite na Publikovať => Pre mňa.

4) Klonujte úložisko smartthings_cli, podľa potreby vytvorte virtualenv (neurobil som to), potom spustite nasledujúce príkazy a v kroku 2 nahraďte CLIENTID a CLIENTSECRET ID a tajomstvo.

Na klonovanie úložiska smartthings môžete použiť nasledujúci príkaz. Uistite sa, že príkazový riadok linux je v adresári vášho projektu vytvorenom počas inštalácie modulu prútika.

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…

Odporúča: