Sitat av
afen
Takker for tipset, @snippsat ! Ser ut til at flask kan være noe å undersøke videre!
Hvis man har en tekstfil som raspi-en oppdaterer med f.eks motor_run true/false og motor_rpm <verdi>, kan man lage en bar graph som henter inn turtallet fra den tekstfila?
Ja det går fint,
men kan bli litt avansert viss man ikke kjenner Python,web-utvikling og Flask.
Kan ta et scenario som eksempel.
Parse textfile på server siden.
Man sender man update med
jinja2(bygd inn i flask) til klient siden kan man bruke f.eks
CanvasJS,
Chart.js
Eksempel Server siden:
Kode
from flask import Flask,render_template,request
app = Flask(__name__)
@app.route('/moto_rpm')
def motor_rpm():
# from parsed text file
motor_rpm = [300, 356, 500, 100, 200]
return render_template("index.html", motor_rpm=motor_rpm)
if __name__ == '__main__':
app.run(debug=True)
Sendes med jinja til JavaScript på klinet siden
Vil se ut noe som dette.
Kode
// line chart data
var barData = {
motor_rpm : [{% for rpm in motor_rpm %}
"{{ rpm }}",
{% endfor %}],
datasets : [
{
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
data : [{% for item in values %}
{{item}},
{% endfor %}]
}
]
}
Det er mye verktøy,bibliotek som kan brukes til til hjelp.
Kan bare ta litt om dette.
Flask-SocketIO(Real time Toveis kommunikasjon)
Celery(Real-time message passing).
Bruke Ajax som real time/schedule til og push/pull data.
F.eks kan være moderne og bruke
Vue.js.
Denne
Pen kaller motor_rpm funksjon på server siden hvert 30 sek.
Tkinter i Phyton er også verdt å sjekke ut. Jeg syns det fungerer bra som GUI/HMI.
Tjaa det jo og an lage noe men lite fleksibelt,
vanskeligere og dele fra flere steder og ser ikke på langt nær så bra ut som en web-app med Flask.
Hadde brukt PyQt,WxPython skulle jeg noe med GUI.
Sist endret av snippsat; 30. juni 2017 kl. 13:43.