View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Pyduino + Bottle : Réseau : Créer un serveur TCP / Http simple.

Mini-webapps avec Pyduino
Par X. HINAULT - Septembre 2014

Ce que l'on va faire ici

  • Dans ce code, je vous montre comment mettre en place un serveur TCP simple en utilisant Bottle, un micro-framework web écrit en Python très pratique.

Pré-requis

Il est également nécessaire ici d'installer Bottle et CherryPy :

sudo apt-get install python-bottle
sudo apt-get install python-cherrypy3

Schéma fonctionnel

  • Le code Pyduino communique avec l'interface réseau du système qui assure la connexion avec le client distant :
  • Noter que ce code fonctionne aussi bien en éthernet (filaire) qu'en wifi (sans fil) sous réserve que la connexion matérielle soit opérationnelle.

Le réseau utilisé

  • Note : le poste fixe peut évidemment être le poste depuis lequel vous accédez au pcDuino par VNC, au moins en phase d'essai.

Matériel nécessaire

Système

  • Le pcDuino
  • connecté à un réseau local actif associant :
    • un routeur (une box internet typiquement) +/- un switch réseau
    • d'autres postes sur le réseau, notamment un poste fixe ou une tablette.
    • voire un poste distant sur le web
  • Si on utilise le wifi, on utilisera le dongle wifi ou une clé USB wifi au lieu de l'interface réseau ethernet. Mais pour un simple test, rester en filaire, c'est plus simple !

E/S

  • Pas utilisées.

Instructions de montage

  • Simplement connecter le pcDuino au réseau, ce qui est normalement déjà le cas si vous travaillez en accès VNC !

Le montage à réaliser

Le fichier *.yno

Copier/coller ce code dans l'IDE Pyduino :


# importation de modules
from bottle import route, run

# entete declarative
noLoop=True # loop sera appelee par timer
port=8080 # le port de connexion

#--- definition des "routes" - a mettre AVANT setup
@route('/') # racine /
def racine():
        return("Serveur OK !")

@route('/hello') # /hello
def hello():
        return("Hello World !")

#--- setup ---
def setup():

        timer(100,loop) # 1er appel de loop par timer - a mettre avant run

        run(host=Ethernet.localIP(), port=8080, server='cherrypy') # lance le serveur - attention : a mettre apres les routes..

# -- fin setup --

# -- loop --
def loop():

        # ici instruction loop
        print "loop"

        timer(1000, loop) # autorappel de loop

# -- fin loop –
 

Ce code est également disponible ici : http://cloud-mon-club-elec.fr/public.php?service=files&t=ade17425e72f83ee3aa8406e2ea89592&download

Utilisation

  • Connecter le mini-PC au réseau
  • Appuyer sur le bouton exécuter dans l'IDE Pyduino
  • Une fenêtre de Terminal doit apparaître : un message indique que le serveur attend un client entrant.
  • Ouvrir alors sur le poste client un navigateur, par exemple firefox, et saisir l'adresse ip du mini-PC suivie de :8080 ce qui donne par exemple 192.168.0.8:8080. On utilise ici le port 8080 d'où le :8080...
  • A ce moment là, on doit voir sur le mini-PC les messages attestant de la connexion du client
  • Puis le serveur envoie sa réponse texte simple
  • Noter que le poste fixe peut simultanément accéder au mini-PC par VNC (qui utilise le port 5900) et par le navigateur client ( qui utilise le port 8080) !
  • Simple et efficace.

Discussion technique

  • Difficile de faire plus simple !