Python: hvordan bruke jinja2-shell-extension

Les hele artikkelen

Jeg har en Raspberry Pi med en lokal webserver som jeg bruker til å styre ulike ting i huset med.
Jeg har fulgt oppskriften her: https://www.hackster.io/adhyoksh/controlling-gpio-pins-of-raspberry-pi-with-web-page-2d5bdc#code og ønsker å legge til knapper på websiden for å kjøre kommandoer på bringebærboksen. Etter litt googling fant jeg https://pypi.org/project/jinja2-shell-extension som virker til å kunne gjøre det jeg ønsker. Jeg er nybegynner innen programmering så selv om det er eksempelkode på den lenkede siden så kom jeg ikke lenger enn å kjøre: pip install jinja2-shell-extension. Det jeg lurer på er hvordan endrer jeg dette:

from jinja2 import Template, Environment
env = Environment(extensions=[«jinja2_shell_extension.ShellExtension»])
template = env.from_string(«{{ ‘date –rfc-2822’|shell() }}»)
result = template.render()

slik at jeg ved trykke pÃ¥ knapper pÃ¥ websiden kan sende kommandoer som «heyu on a1» og «heyu off a1» til RPi ?

index.html:
<html>
  <head>
    <title>Control</title>
  </head>
  <body>
   <h1>Control</h1>
   <h3>Click here:</h3>
   <br>
   <a href=A><button>LED1 ON</button></a>
   <a href=a><button>LED1 OFF</button></a><br>
   <a href=B><button>LED2 ON</button></a>
   <a href=b><button>LED2 OFF</button></a><br>
   <a href=C><button>LED3 ON</button></a>
   <a href=c><button>LED3 OFF</button></a>
  </body>
</html>

control.py:
from flask import Flask
from flask import render_template
import RPi.GPIO as rpi
import time
app= Flask(__name__)
led1,led2,led3= 3,5,7
rpi.setwarnings(False)
rpi.setmode(rpi.BOARD)
rpi.setup(led1, rpi.OUT)
rpi.setup(led2, rpi.OUT)
rpi.setup(led3, rpi.OUT)
rpi.output(led1, 0)
rpi.output(led2, 0)
rpi.output(led3, 0)
print(«Done»)
@app.route(‘/’)
def index():
    return render_template(‘webpage.html’)
@app.route(‘/A’)
def led1on():
    rpi.output(led1,1)
    return render_template(‘webpage.html’)
@app.route(‘/a’)
def led1off():
    rpi.output(led1,0)
    return render_template(‘webpage.html’)
@app.route(‘/B’)
def led2on():
    rpi.output(led2,1)
    return render_template(‘webpage.html’)
@app.route(‘/b’)
def led2off():
    rpi.output(led2,0)
    return render_template(‘webpage.html’)
@app.route(‘/C’)
def led3on():
    rpi.output(led3,1)
    return render_template(‘webpage.html’)
@app.route(‘/c’)
def led3off():
    rpi.output(led3,0)
    return render_template(‘webpage.html’)
if __name__==»__main__»:
    print(«Start»)
    app.run(debug=True, host=’192.168.1.57′)


Jeg håper at noen som skjønner dette bedre enn meg har noen tips om hvordan dette kan settes opp.