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.