Stap 4: Python Code
Daarna komt de python-code. Zet het in een bestand met de naam radio.py
from flask import Flask from flask import render_template from flask import request import subprocess app = Flask(__name__) methods=['GET', 'POST']) def hello_world(name='Flask FM'): if request.method == 'POST': if request.form['submit'] == 'turn radio on': cmd=['mpc', 'play'] p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) elif request.form['submit'] == 'turn radio off': cmd=['mpc', 'stop'] p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) return render_template('interface.html', name=name) if __name__ == '__main__': app.run(host='0.0.0.0', port=1234, debug=True)
Maak eerst de nodige invoer voor de processen die hebben we nodig. Toen definiëren we een functie met een parameter met de naam naam. We instantiëren deze variabele met de tekenreeks 'Kolf FM'. In de Jinja2 HTML-sjabloon, zal de variabele {{naam}} worden gevuld met deze tekenreeks. Dit is gewoon te gebruiken als voorbeeld voor later. De hello_world() -functie zal worden opgeroepen zodra deze python code wordt uitgevoerd. Als een POST-aanvraag wordt gebracht, moeten we voor het verzenden van een opdracht aan de CLI.
Vergeet niet dat Python inspringing gevoelig, dus wanneer kopiëren en plakken boven code, zorg ervoor dat de tabbladen naar rechts te krijgen.
<form role="form" method='POST' action='/'> <input type="submit" name="submit" value="turn radio on" />
In de Jinja2 vraagt sjabloon die we gedefinieerd dat het formulier POST moet. De knop naam "verzenden" komt overeen met de request.form['submit'] in onze python code. De waarde van de knop, die ook de tekst van de knop, is de waarde die we controleren.
if request.form['submit'] == 'turn radio on':
Als deze knop is ingedrukt, zal een subproces worden uitgevoerd.
cmd=['mpc', 'play'] p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
Die zal het spelen van onze muziek stream.
Terug op de CLI, run de python bestand.
sudo python radio.py
En ga naar de naam van de IP- of domein van uw Raspberry Pi op poort 1234.
U ziet uw Jinja2 sjabloon met de naam variabele en 2 knoppen die uw radio in- en uitschakelen veranderen zal.