Controlul unui intel galileo sau arduino de pe un site web. Necesitati: Varianta 1 (Daca siteul se hosteaza pe o placa de dezvoltare ca si intel galileo, raspberry pi sau altceva, este necesar sa aibe compilatorul python cel putin versiunea 2.7 sau mai noua.): Libraria mraa sau gpio ( libraria care acceseaza pini placi de dezvoltare) Libraria Flask care poate fi instalata cu: o pip install flask si se instaleaza automat asta daca nu folositi proxy o In cazul in care sunteti pe o retea cu proxy atunci trebuie downloadat pachetul de aici https://pypi.org/project/Flask/1.0.2/#files si downloadati arhiva Dupa ce ati dezarhivat arhiva intrati cu cmd sau terminalul in interiorul folderului unde au fost extrase fisierele si scrieti python setup.py install daca primiti o eroare ca nu poate downloada librariile trebuie sa mergeti sa instalati manual fiecare librarie auxiliara folosind linkul din eroare ca sa o downloadati, dezarhivati si intrati in folder dezarhivat si scrieti comanda python setup.py install. Varianta 2 (Daca aveti la indemana un laptop sau desktop si un arduino): Trebuie sa aveti instalat versiunea de python 2.7 sau mai noua Trebuie sa aveti Arduino IDE instalat Trebuie sa aveti libraria pyfirmata instalata fie cu pip install pyfirmata fie manual de pe site: https://pypi.org/project/pyFirmata/ Inainte sa puteti programa arduino-ul din python trebuie sa uploadati un program ca sa-l faca slave si sa poate primi comenzi din python:
Implementare.
Creati un folder unde o sa aveti codul in python si paginile html, imagini sau alte fisiere necesare site-ului web. Exemplul de mai jos.
In folderul templates acolo o sa tineti toate fisierele html(trebuie sa aibe denumirea templates) In folderul static acolo veti stoca fisiere care doriti sa le partajati sau folosi in pagina web cum ar fi imagini din interiorul pagini sau fisiere pdf, excel sau altele. from flask import Flask, render_template, request app = Flask(__name__) app.config['TEMPLATES_AUTO_RELOAD'] = True Flask=aplicatia serverului nostru render_template= returneaza templateul html request= aceasta cere informatia dintr-un formular. app.config['TEMPLATES_AUTO_RELOAD'] = True aceasta configuratie ne face refresh automat la pagina web daca aceasta este modificata in timp ce serverul ruleaza. In continuare o sa prezint partea generala a unui server web. @app.route("/") def main(): return render_template('main.html') @app.route("/submit",methods=['GET','POST']) def submit(): range=int(request.form['Range']) buttonvalue=request.form.get('Button') if buttonvalue=="on": buttonvalue="checked" else: buttonvalue=None return render_template('main.html',buttonvalue=buttonvalue, value=range) if __name__=="__main__": app.run(debug=True, host='0.0.0.0') @app.route("/") – app.route aici este ceea ce vedeti in la adresa siteului www.site.ro/ si apeleaza functia imediat urmatoare scrisa sub app.route care in cazul de fata returneaza pagina web. @app.route("/submit",methods=['GET','POST']) – metodat GET reprezinta atunci serverul returneaza pagina web spre utilizator si metoda POST este atunci cand utilizatorul trimite informatie spre server(submit) In functia submit avem citirea valori unui obiect din pagina web de tip range si un checkbox cu ajutorul request.form care ne da valoarea unui tag din interiorul unui formular cu numele de Range respectiv Button, pentru a invata mai multe despre html si CSS folositi siteul https://www.w3schools.com/
return render_template('main.html',buttonvalue=buttonvalue, value=range) aici creem variabilele care le vom folosi in interiorul pagini noastre web. Codul pagini html
onchange="this.form.submit()" aceasta setare va trimite tot timpul la server valorile mai sus mentionate de fiecare data cand apare o modificare. {{ intre aceste acolade se scriu numele variabilele pe care noi le-am trimis de la server la pagina cum sunt buttonvalue sau value }}