WEBSERVER Variablen wiedergeben
Verfasst: Dienstag 16. Oktober 2018, 10:22
Hallo Miteinander
Ich bin neu hier und ich denke meine Frage ist relativ einfach. Ich sitze jedoch seit Stunden daran und bin echt verzweifelt. Die Grundidee ist eine Bewässerungsanlage über einen Webserver anzusteuern. Ich habe mich hierfür bei den Codes von CyberOmlette bedient und diese etwas angepasst.
http://www.cyber-omelette.com/2017/09/a ... ering.html
Ich muss auf dem Webserver Variablen von Sensorwerten ausgeben. Zu sehen unter web_plants.py funktion lese_sensoren():
Das funktioniert, weil ja beim Start des Webservers die "erste" Seite ('/') aufgerufen wird. Sobald ich aber mit einem Button vorwärts gehe z.B. in ("/wasser1") verschwindet die Anzeige der Variable von lese_sensoren(): mein Ziel ist jedoch den Wert des Sensors immer anzuzeigen. Was muss ich tun?
PS: Wie kann ich hier schlau files hochladen? ^^
Besten Dank.
####### web_plants.py #######
from flask import Flask, render_template, redirect, url_for
import psutil
import datetime
import water
import os
app = Flask(__name__)
def template(title = "AutomaticBotanic", text = ""):
now = datetime.datetime.now()
timeString = now
templateDate = {
'title' : title,
'time' : timeString,
'text' : text
}
return templateDate
@app.route("/")
def lese_sensoren():
status = water.get_status(7)
if (status == 0):
wert = "Trocken!"
else:
wert = "Feucht"
return render_template ("main.html", sensor1 = wert)
@app.route("/last_watered")
def check_last_watered():
templateData = template(text = water.get_last_watered())
return render_template('main.html', **templateData)
@app.route("/wasser1")
def ventil1():
water.pump_on(29,31,1)
templateData = template(text = "Watered Once")
return render_template('main.html', **templateData)
@app.route("/wasser2")
def ventil2():
water.pump_on(29,33,1)
templateData = template(text = "Watered Once")
return render_template('main.html', **templateData)
@app.route("/wasser3")
def ventil3():
water.pump_on(29,35,1)
templateData = template(text = "Watered Once")
return render_template('main.html', **templateData)
@app.route("/wasser4")
def ventil4():
water.pump_on(29,37,1)
templateData = template(text = "Watered Once")
return render_template('main.html', **templateData)
@app.route("/wasser5")
def ventil5():
water.pump_on(29,40,1)
templateData = template(text = "Watered Once")
return render_template('main.html', **templateData)
@app.route("/auto/water/<toggle>")
def auto_water(toggle):
running = False
if toggle == "ON":
templateData = template(text = "Auto Watering On")
for process in psutil.process_iter():
try:
if process.cmdline()[1] == 'auto_water.py':
templateData = template(text = "Already running")
running = True
except:
pass
if not running:
os.system("python auto_water.py&")
else:
templateData = template(text = "Auto Watering Off")
water.cleanup()
os.system("pkill -f water.py")
return render_template('main.html', **templateData)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80, debug=True)
Ich bin neu hier und ich denke meine Frage ist relativ einfach. Ich sitze jedoch seit Stunden daran und bin echt verzweifelt. Die Grundidee ist eine Bewässerungsanlage über einen Webserver anzusteuern. Ich habe mich hierfür bei den Codes von CyberOmlette bedient und diese etwas angepasst.
http://www.cyber-omelette.com/2017/09/a ... ering.html
Ich muss auf dem Webserver Variablen von Sensorwerten ausgeben. Zu sehen unter web_plants.py funktion lese_sensoren():
Das funktioniert, weil ja beim Start des Webservers die "erste" Seite ('/') aufgerufen wird. Sobald ich aber mit einem Button vorwärts gehe z.B. in ("/wasser1") verschwindet die Anzeige der Variable von lese_sensoren(): mein Ziel ist jedoch den Wert des Sensors immer anzuzeigen. Was muss ich tun?
PS: Wie kann ich hier schlau files hochladen? ^^
Besten Dank.
####### web_plants.py #######
from flask import Flask, render_template, redirect, url_for
import psutil
import datetime
import water
import os
app = Flask(__name__)
def template(title = "AutomaticBotanic", text = ""):
now = datetime.datetime.now()
timeString = now
templateDate = {
'title' : title,
'time' : timeString,
'text' : text
}
return templateDate
@app.route("/")
def lese_sensoren():
status = water.get_status(7)
if (status == 0):
wert = "Trocken!"
else:
wert = "Feucht"
return render_template ("main.html", sensor1 = wert)
@app.route("/last_watered")
def check_last_watered():
templateData = template(text = water.get_last_watered())
return render_template('main.html', **templateData)
@app.route("/wasser1")
def ventil1():
water.pump_on(29,31,1)
templateData = template(text = "Watered Once")
return render_template('main.html', **templateData)
@app.route("/wasser2")
def ventil2():
water.pump_on(29,33,1)
templateData = template(text = "Watered Once")
return render_template('main.html', **templateData)
@app.route("/wasser3")
def ventil3():
water.pump_on(29,35,1)
templateData = template(text = "Watered Once")
return render_template('main.html', **templateData)
@app.route("/wasser4")
def ventil4():
water.pump_on(29,37,1)
templateData = template(text = "Watered Once")
return render_template('main.html', **templateData)
@app.route("/wasser5")
def ventil5():
water.pump_on(29,40,1)
templateData = template(text = "Watered Once")
return render_template('main.html', **templateData)
@app.route("/auto/water/<toggle>")
def auto_water(toggle):
running = False
if toggle == "ON":
templateData = template(text = "Auto Watering On")
for process in psutil.process_iter():
try:
if process.cmdline()[1] == 'auto_water.py':
templateData = template(text = "Already running")
running = True
except:
pass
if not running:
os.system("python auto_water.py&")
else:
templateData = template(text = "Auto Watering Off")
water.cleanup()
os.system("pkill -f water.py")
return render_template('main.html', **templateData)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80, debug=True)