Innholdsfortegnelse:
- Trinn 1: Installer Linux på Raspberry Pi
- Trinn 2: Installer Python 3
- Trinn 3: Setup Wand Module
- Trinn 4: Sett opp SmartThings CLI
- step 5: improve response
- step 6: make smartwand execute on raspberry pi bootup
Video: SmartWand: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
Dette prosjektet er å få et Python -skript for å kontrollere Smartthings med Kano -kodestaven som inngang.
Mine døtre (8 og 12) er store Harry Potter -fans og fikk Kano Coding Wand til jul. Kano -kodingsappen er kul, og de koser seg med den. Flott verktøy for å introdusere kodingskonsepter.
Vi har også litt hjemmeautomatisering sprinklet i hele huset med SmartThings, Phillips Hue, Logitech Harmony -hub osv. De kom uunngåelig til det punktet hvor de ønsket å slå på juletreet med staven og begynte å kaste begreper som Lumos og Nox på meg. Hørtes ut som en morsom utfordring, så jeg tok den.
Måtte gå med et Linux -operativsystem siden et kritisk element (Bluepy python -bibliotek for tilkobling til tryllestav Bluetooth) bare er tilgjengelig på Linux -plattformer. Praktisk uansett sett fra synspunktet om til slutt å ville kjøre dette på en Raspberry Pi.
Det er to hovedreferanser her, uten som jeg aldri ville ha klart dette.
Takk til GammaGames for å lage og dele et python -script for å lese Kano -kodestaven.
github.com/GammaGames/kano-wand-demos/blob…
og
Takk til rllynch for å lage og dele et python -skript for et SmartThings kommandolinjegrensesnitt.
github.com/rllynch/smartthings_cli
For å beholde dette intakt, skal jeg kopiere de fleste trinnene til denne instruksjonsboken for å fange opp eventuelle tilpasninger jeg trengte for å få det til å fungere på oppsettet mitt.
Her er hva du trenger:
- Harry Potter Kano Coding Kit (https://www.amazon.com/Kano-Harry-Potter-Coding-Ki…
- Et Linux -basert operativsystem (jeg kom i gang med VirtualBox, deretter installert på en Raspberry Pi)
- En Bluetooth USB -adapter (jeg brukte en Kensington Bluetooth 4.0 USB -adapter)
- Internett -tilkobling (For RPi brukte jeg en Edimax USB WiFi -adapter jeg hadde fra et tidligere prosjekt)
Trinn 1: Installer Linux på Raspberry Pi
Følg koblingene nedenfor for å installere et Linux -operativsystem på Raspberry Pi. Jeg brukte Raspbian Stretch med stasjonær og anbefalt programvare og blinket med Etcher.
www.raspberrypi.org/learning/software-guid…
Når du har fullført installasjonen og har en Linux -kommandoprompt, er det god praksis å kjøre de følgende to kommandoene for å være sikker på at alt er oppdatert.
sudo apt-get oppdatering
sudo apt-get oppgradering
Skriv inn følgende på kommandolinjegrensesnittet for å starte skrivebordets brukergrensesnitt.
sudo startx
Det neste du skal sette opp er en internettforbindelse slik at du kan komme til repos og slikt for å installere ytterligere programvare. Internett -tilkobling vil også være nødvendig for å slå opp SmartThings API. Følg denne veiledningen for å få tilkobling. Ganske rett frem fra skrivebordet. Jeg brukte en USB wifi -adapter jeg hadde liggende.
www.raspberrypi.org/learning/software-guid…
Alternativt til Raspberry Pi kan du bruke en annen eksisterende datamaskin til å dual -boot et Linux -operativsystem sammen med ditt eksisterende operativsystem (litt smerte fordi du må starte på nytt for å bytte mellom de to) eller kjøre en forekomst av Linux -operativsystemet på en VirtualBox. For først å få dette prosjektet til å fungere, installerte jeg Debian Stretch med Raspberry Pi Desktop i en virtuell boks ved hjelp av denne guiden:
thepi.io/how-to-run-raspberry-pi-desktop-o…
(merk: Jeg hadde en god tid med å få Guest Addons installert skikkelig i henhold til instruksjonene ovenfor. Fikk aldri klipp og lim mellom vert og klient til å fungere, noe som hadde vært fint, men jeg klarte å få oppløsningen oppdatert for å bruke min fulle skjermstørrelse. Dette var en serie med google rabit hull som jeg ikke vil dokumentere her.)
Trinn 2: Installer Python 3
Python3 bør allerede være installert med Raspian Stretch.
Trinn 3: Setup Wand Module
Følg denne veiledningen laget av GammaGames
Jeg måtte først bytte til en annen katalog før jeg klonet kano_wand repo, ellers kunne ikke python -skriptet mitt finne det. Sannsynligvis kunne jeg ha oppdatert noen banereferanser i en fil et sted, men jeg gravde ikke inn i det.
cd /usr/local/lib/python3.5/dist-packages
git -klon
sudo pip3 installer bluepy moosegesture
Måtte bruke sudo for disse for å få de riktige tillatelsene. Måtte også bruke følgende kommandoer i stedet for å installere numpy, uansett grunn, kunne ikke få pip til å fungere. Kan ha vært et annet veiproblem, men dette fungerte for meg, så jeg gikk med det:
sudo apt-get install python3-numpy
Til slutt, for å få de riktige tillatelsene til å kjøre bluepy fra python -skriptet, fant jeg denne kommandoen.
sudo setcap 'cap_net_raw, cap_net_admin+eip' /usr/local/lib/python3.5/dist-packages/bluepy/bluepy-helper
Dette er alt som kreves for å få skriptet vårt i gang. Resten av GammaGames -guiden går gjennom trinnvise brikkene som kreves i python -skriptet. Det er en stor sammenbrudd å ytterligere forstå hvordan skriptet er strukturert og hva hvert objekt gjør. Stor takk til GammaGames for å levere denne dokumentasjonen. Kan også være nyttig for feilsøking av en del av skriptet. For eksempel utfører det første objektet som vises, oppgaven med å skanne etter tryllestav og returnere en liste over stavene som er oppdaget. God bekreftelse på at Bluetooth -oppsettet ditt brenner på alle sylindere. For å gjøre dette kan du kopiere koden fra test1_BLE_wand_detect.py som finnes i følgende repo:
github.com/maspieljr/SmartWand
Trinn 4: Sett opp SmartThings CLI
Nedenfor er en kopi av instruksjonene som er inkludert i smartthings_cli -repoen på github (https://github.com/rllynch/smartthings_cli).
Jeg har inkludert de små justeringene jeg måtte gjøre på oppsettet mitt for å få alt til å fungere. Takk igjen til rllynch for å gi dette.
1) Logg deg på og under Mine SmartApps, opprett en ny SmartApp med koden i groovy/app.groovy.
*Merk at i det første trinnet er det en referanse til et SmartThings -nettsted. Vær nøye med hvor smartthings -kontoen din er. Dette snublet meg en stund da det andre nettstedet tillot meg å logge inn, men kunne ikke finne noen av tingene mine. Jeg måtte bruke følgende lenke for å komme til SmartThings-kontoen min.
(Du er velkommen i de 2 timene jeg brukte på å sortere det:) dette vil også være viktig på et senere trinn.)
2) Klikk på Appinnstillinger, og under OAuth klikker du på Aktiver OAuth i Smart App. Noter OAuth -klient -ID og OAuth -klienthemmelighet. Oppdater OAuth -klientdisplayet til SmartThings CLI -kontroll. Klikk på Oppdater.
3) Gå tilbake til Mine SmartApps, klikk deretter på SmartThings CLI Control. Klikk på Publiser => For meg.
4) Klon smartthings_cli -depotet, opprett en virtualenv hvis ønskelig (jeg gjorde ikke dette), kjør deretter følgende kommandoer, erstatt CLIENTID og CLIENTSECRET med ID og hemmelighet fra trinn 2.
For å klone smartthings repo kan du bruke følgende kommando. Sørg for at linux -ledeteksten er i prosjektkatalogen din som ble opprettet under Wand Module Setup.
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…
Anbefalt:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
Trinn for trinn PC -bygging: 9 trinn
Steg for trinn PC -bygging: Rekvisita: Maskinvare: HovedkortCPU & CPU -kjøler PSU (strømforsyningsenhet) Lagring (HDD/SSD) RAMGPU (ikke nødvendig) CaseTools: Skrutrekker ESD -armbånd/mathermal pasta m/applikator
Tre høyttalerkretser -- Trinn-for-trinn opplæring: 3 trinn
Tre høyttalerkretser || Trinn-for-trinn opplæring: Høyttalerkretsen styrker lydsignalene som mottas fra miljøet til MIC og sender den til høyttaleren der forsterket lyd produseres. Her vil jeg vise deg tre forskjellige måter å lage denne høyttalerkretsen på:
RC -sporet robot ved hjelp av Arduino - Trinn for trinn: 3 trinn
RC -sporet robot ved bruk av Arduino - Steg for trinn: Hei folkens, jeg er tilbake med et annet kult Robot -chassis fra BangGood. Håper du har gått gjennom våre tidligere prosjekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms og The Badland Braw
Hvordan lage et nettsted (en trinn-for-trinn-guide): 4 trinn
Hvordan lage et nettsted (en trinn-for-trinn-guide): I denne veiledningen vil jeg vise deg hvordan de fleste webutviklere bygger nettstedene sine og hvordan du kan unngå dyre nettstedbyggere som ofte er for begrenset til et større nettsted. hjelpe deg med å unngå noen feil som jeg gjorde da jeg begynte