A smart speaker becomes significantly smarter when it is connected to a Smart-Phone.
So, we added a way to connect the Smart-Phone to the Smart Speaker and initiate the first way towards a Smart Home.
Use a simple HTTP connection protocol and deploy a light-weight server on the Raspberry Pi to allow connection from a mobile phone.
Step 1: Setting Up the server
Use flask to deploy a light-weight server on the raspberry pi. We’ll install flask using raspbian repos.
1>Install Flask by using the following command
sudo apt-get install python3-flask
2> Setting up the boilerplate code.
Open the terminal and type the following commands
`
mkdir server_app cd server_app touch app.py |
`
Add the following code to your app.py file. This create a server at localhost:5000
from flask import Flask app = Flask(__name__) @app.route(‘/’) def index(): return ‘Hello world’ if __name__ == ‘__main__’: app.run(debug=False, host=‘0.0.0.0’) #This will allow the server to be accessible on all devices |
Step 2: Adding Endpoints
Now , add endpoints which will trigger the scripts during initialisation of the raspberry Pi. This will trigger the respective endpoints
@app.route(‘/auth/<auth>/<email>/<passwd>’) def login(auth, email, passwd): os.system(‘sudo ./login.sh {} {} {}’.format(auth, email,passwd)) #nosec #pylint-disable type: ignore return ‘Authenticated’ # pylint-enable@app.route(‘/wifi_credentials/<wifissid>/<wifipassd>’) def wifi_config(wifissid,wifipassd): wifi_ssid = wifissid wifi_password = wifipassd os.system(‘sudo ./home/pi/SUSI.AI/susi_linux/access_point/wifi_search.sh {} {}’.format(wifi_ssid,wifi_password)) #nosec #pylint-disable type: ignore return ‘Wifi Configured’ # pylint-enable |
Step 3: Connecting to the endpoints
Now, try and hit the API endpoints to get the response.
eg.As shown in the above example, you will be getting a single line response and will execute a bash script behind the scenes
Now you can access the other endpoints and configure the clients with the SUSI Smart Speaker
References
- https://projects.raspberrypi.org/en
- https://github.com/fossasia/susi_linux
- http://flask.pocoo.org/docs/1.0/
Tags
fossasia,GSoC,Python, Flask , raspberryPi, SUSI,smart-speaker,FOSSASIA