Stap 3: De webserver maken met python
Ik ben geen expert in web programmeren of specifieke netwerkprotocollen maar ik erin geslaagd om mijn arduino controle over het web, dus ik heb vertrouwen dat jullie allemaal kan ook! We gonna een basaal website maken en hebben onze computer de host worden. Gebaseerde API voor het beheersen van onze arduino hiervoor die wij gaan het web framework kolf gebruiken om een webpagina te maken. Ik moedig u allen te lezen door enkele voorbeelden over het gebruik van kolf, zodat u van de basisprincipes begrijpen kunt van hoe het werkt en omdat ik misschien niet de beste leraar zeer.
Wat willen wij doen?
- Maak een webpagina met 2 knoppen
- LED-knop uitschakelen
- Inschakelen van de LED-knop
- Als we hiermee u de LED schakelt willen we de waarde op onze fotoweerstand lezen en weer te geven
- Maken van een specifieke URL voor het draaien van onze LED aan/uit - nodig voor web API
Het maken van een dynamische webpagina die met de waarde van onze fotoweerstand bijgewerkt wanneer we de pagina die we nodig laden voor het maken van een sjabloonpagina in de kolf. Kolf gebruikt de waarde die we krijgen van onze fotoweerstand en stuur het naar onze sjabloon weer te geven. Kolf volgt automatisch de indeling van een specifieke map wanneer onze sjabloon zoekt dus burgerwacht over waar u bepaalde bestanden plaatsen. In de map die u in werkt zal u wilt maken van een map genaamd sjablonen. Daar zullen we onze sjabloonpagina. Onze sjabloon HTML-pagina ziet er zeer vergelijkbaar met een normale HTML-pagina alleen met een toegevoegde optie om de plaats van een variabele ergens. Kopieer het HTML-codefragment op deze link: http://codepen.io/theown1/pen/RNeYMg in een nieuw bestand genaamd index.html en plaats dat bestand in de map Sjablonen.
Up die de onderstaande code naar een bestand met de naam hello_flask_world.py het stukje code hieronder is onze fundamentele kolf webpage. Zijn vrij eenvoudig te begrijpen, we hoeven alleen maar een webpagina op het '/'-adres dat de home page is. De URL voor deze webpagina zullen uw IP-adres op het netwerk of de 127.0.01:5000. Wanneer iemand verbinding met onze webpagina maakt maken we net onze sjabloon hadden we eerder met een waarde die we gaan naar de uitvoer van onze fotoweerstand om later te veranderen. Als onze webpagina krijgt een POST-aanvraag aka iemand drukt op een knop op onze pagina zal dan onze server de specifieke taak af te drukken op wat er is gebeurd en omleiden u terug naar de hoofdpagina. Zoals je zou een normale python programma, kunt u dit stukje code hieronder uitvoeren. ($ python hello_world.py)
from flask import Flask, render_template,request, redirect, url_forapp = Flask(__name__) # we are able to make 2 different requests on our webpage # GET = we just type in the url # POST = some sort of form submission like a button methods = ['POST','GET']) def hello_world(): # variables for template page (templates/index.html) author = "Kyle" readval = 10 # if we make a post request on the webpage aka press button then do stuff if request.method == 'POST': # if we press the turn on button if request.form['submit'] == 'Turn On': print 'TURN ON' # if we press the turn off button elif request.form['submit'] == 'Turn Off': print 'TURN OFF' else: pass # the default page to display will be our template with our template variables return render_template('index.html', author=author, value=100*(readval/1023.)) if __name__ == "__main__": # lets launch our webpage! # do 0.0.0.0 so that we can log into this webpage # using another computer on the same network later app.run(host='0.0.0.0')
Wanneer u dit programma uitvoert moet je een uitvoer die lijkt op de foto hierboven. Zorg ervoor dat u aansluit op de webpagina op uw browser http://127.0.0.1:5000 / na het uitvoeren van de python script (en vieren op lopende!) Dan spelen met de knoppen en controleer of dat je krijgt notities wilt afdrukken iets in de terminal.
De map die u in werkt nu moeten al de bestanden hieronder in de bijbehorende mappen.
ARBITRARY_WORK_FOLDER/ |-- pyduino.py # pyduino library file |-- analog_read_test.py # pyduino code to check circuit |-- hello_flask_world.py # your first Flask webpage |-- templates/ # directory to store flask templates |-- index.html # our html template
Daarna is het tijd om het integreren van de Arduino controles in de webserver!