Linux Magazine #1 2023: Maak een webapplicatie voor ‘physical computing’
- March 14, 2023
- 0
Toegang tot de LED en knop geven
from flask import Flask, render_template
from gpiozero import Button, LED
led = LED(22)
button = Button(26)
button_count = 0
def increment_counter():
global button_count
button_count = button_count + 1
button.when_pressed = increment_counter
app = Flask(__name__)
@app.route("/")
def main():
page_data = {
"led": led.value,
"button": button.value,
"button_count": button_count
}
return render_template('webpi.html', **page_data)
@app.route("/led/")
def led_action(action):
if action == "on":
led.on()
elif action == "off":
led.off()
return main()
@app.route("/button/value")
def button_value():
return dict(value=button.value, count=button_count)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8000)
Eenvoudige HTML-pagina listing, LET OP: Onze website werkt helaas niet mee, dus om deze code te kopieren en te plakken, klik rechtermuisknop en paginabron weergeven, dan vind je op regel 392 t/m 421 de juiste code. Excuses van team Linux!
WebPi
LED
{% if led == 1 %}
Turn off
{% else %}
Turn on
{% endif %}
Button
{% if button == 1 %}
{% else %}
{% endif %}
{{ button_count }}
JavaScript bestand
function updateButton() {
$.getJSON("/button/value", function(data){
if(data.value == 1) {
$("i#button").removeClass("bi-toggle-off").addClass("bi-toggle-on");
} else {
$("i#button").removeClass("bi-toggle-on").addClass("bi-toggle-off");
}
$("span#count").text(data.count);
})
}
setInterval(updateButton, 50);
Webpi.service inhoud
[Unit] Description=WebPi After=network-online.target [Service] Restart=on-failure Type=simple User=pi ExecStart=/usr/bin/python3 /home/pi/webpi/webpi.py [Install] WantedBy=multi-user.target




