IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Connexion entre programme python et serveur web


Sujet :

Réseau/Web Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2012
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Connexion entre programme python et serveur web
    Bonjour à tous,

    Dans le cadre de mes études, je dois réaliser un projet en domotique qui consiste à réguler la température d'une maison et pouvoir gérer tout cela au travers d'une interface web.

    Je dispose donc d'une raspberry pi qui va, à intervalles régulier, récupérer la température des différentes pièces. Voila comment j'imagine mon programme:

    On a un programme en python qui tourne en permanence sur la raspberry pi afin de récupérer la valeur des températures (ce module est déjà fait). Mais voila il faudrait pouvoir envoyer ces différentes données directement au serveur web (qui se trouve sur une autre machine mais ça c'est un détails).

    J'arrive à les envoyer à une autre application python au moyen de socket (client/serveur) mais voila je me demande comment procéder pour envoyer sa directement à un serveur web et que celui-ci rafraîchissent les données en temps réels (donc que l'utilisateur n'ait pas à rafraîchir constamment la page)

    Alors voila, quelle serait la meilleur solution pour mon serveur web? Je sais que l'on peut faire des sites en python, est-ce que je pourrait alors réutiliser mon petit programme client/serveur ou c'est pas du tout pareil? Est-ce possible d'avoir une actualisation des données en temps réel? Ou dois-je me tourner vers un autre langage web? (je m'y connais pas trop dans le domaine donc je recherche quelque chose de simple et efficace)

    Pour résumé, je voudrais faire une connexion (comme avec les socket) entre un programme python qui tourne sur la raspberry et le serveur web. Afin de pouvoir transmettre des données à ce dernier qu'il affichera à l'écran de l'utilisateur..

    Mais je ne sais pas si c'est possible?

    Voila, j'espère avoir su me faire comprendre Je vous remercie d'avance!

  2. #2
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Tu peux regarder du côté des modules Socket (éventuellement couplé avec Select ou threading pour pouvoir envoyer et recevoir des données ainsi que d'avoir plus d'un client) et socketserver.
    Si tu veux des tutos, en voici un très poussé : http://python.developpez.com/cours/a...age_19#L19-A-1.

    Avec ça, il y a des exemples de serveurs/client permettant d'échanger des données.
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Si vous regardez cela cote "sockets", vous n’êtes pas au bout de vos peines.

    On a un programme en python qui tourne en permanence sur la raspberry pi afin de récupérer la valeur des températures (ce module est déjà fait). Mais voila il faudrait pouvoir envoyer ces différentes données directement au serveur web (qui se trouve sur une autre machine mais ça c'est un détails).
    Dans la pratique, vous expédiez les données a un serveur. L'aspect Web peut faire sens si vous passez par un protocole HTTP, pourquoi pas? Mais, il va falloir stocker cela dans une base de données "spéciale".
    Regardez ce qu'on sait faire avec RRDToolssur un projet semblable.

    J'arrive à les envoyer à une autre application python au moyen de socket (client/serveur) mais voila je me demande comment procéder pour envoyer sa directement à un serveur web et que celui-ci rafraîchissent les données en temps réels (donc que l'utilisateur n'ait pas à rafraîchir constamment la page)
    Il faudrait que vous fassiez un dessin.
    Techniquement "bouger" les données: raspberry pi -> serveur -> navigateur web suppose que "navigateur web" soit un "serveur". i.e. qu'il écoute des mises a jour émises par "server". Hors un navigateur Web est, par défaut, "client": le serveur n’expédie rien c'est le navigateur qui demande.
    C'est pas une question de programmation mais de prises male/femelle!
    on a donc: raspberry pi -> serveur <- navigateur web
    note: on peut faire mieux avec WebSocket mais, pour l'instant, pas besoin de se compliquer la vie.

    Ceci dit, une fois que les données sont "stockées" en BDD, pour afficher en temps réel vous avez un autre outil qui s'appelle Cacti. Il a un module "realtime" pour rafraîchir l'affichage toutes les n secondes.

    Et voila.
    Pas un seule ligne de Python a écrire de ce cote la.
    Ceci dit, il vous reste a "intégrer" les mesures, définir les actions sur le chauffage lorsque la température monte/baisse, .... vous avez encore plein de boulot. Mais pas la peine de réinventer ce qui existe déjà.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Points : 182
    Points
    182
    Par défaut
    salut tatchi,

    pour réaliser ce que tu souhaites faire, j'aurais utilisé django.
    un web service pour collecter les données depuis les sondes, et le web service stock les infos dans la base de données moyennant une route http et une méthode des "view" django.

    concernant la restitution , si les infos sont stockées dans la base de django, il est alors facile de restituer et d'afficher les mesures des sondes au travers d'une seconde vue + un template html.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Programme python raspebrry
    Salut, est ce que tu pourrais me montrer le programme python que tu as fait qui tourne en permanence sur la raspberry pi afin de récupérer la valeur des températures ? J'ai la même chose à faire mais pour un aquarium, et je m'y connais pas des masses en python

    Merci d'avance de ton aide

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'entrevois 2 solutions possibles:

    1- envoi par ftp

    Le raspberry pi peut envoyer les données par ftp (module python ftplib) dans la zone du serveur web, et la page web, que le serveur web envoie sur demande, peut être rafraichie périodiquement pour prise en compte des données mises à jour.

    La solution est évidente, puisque c'est par ftp qu'on met à jour les sites web: l'accès est donc toujours possible, il suffit d'avoir les clés d'accès: adresse, login, etc... Si c'est un serveur web perso, il faut, bien sûr, un serveur ftp associé.

    Le module ftplib de Python marche très bien: on fait avec à peu près tout ce qu'on veut, y compris des opérations de bas niveau.

    2- envoi par un formulaire traité par un script CGI

    Dans ce cas, le raspberry pi remplit un formulaire web avec les données, et appelle un script CGI dans le serveur qui mettra à jour les données pour être reprises pas la page web. Le script CGI côté serveur pourrait être écrit en Python si le serveur en dispose, sinon dans le langage CGI disponible.

    En ce qui me concerne, j'utiliserais plutôt ftp.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    La demande domotique est vaste . J'ai aussi un rspi et une sonde de température . Pour que de l'affichage à distance c'est facile , vu que rspi
    enregistre les data dans un fichier txt .

    Php sur le serveur apache du rspi peut ouvrir ce fichier et donner un historique
    des température de la journée .

    DATA DE LA RSPI :

    Date : 30_Apr_22_00

    Température : 15.3 ° C

    HISTORIQUE :

    30_Apr_22_00;15.3
    30_Apr_21_30;15.6
    30_Apr_21_00;15.6
    ...

    ...
    30_Apr_00_00;15.7

Discussions similaires

  1. Script Python sur serveur web
    Par Freyskeyd dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 04/01/2011, 00h40
  2. etablir une connexion entre eclipse et serveur Apache
    Par killer_instinct dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 19/02/2007, 14h10
  3. [SQL-Server] Connexion entre SQL Server et IIS sur 2 serveurs différents
    Par kenzo080 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/09/2006, 11h50
  4. Réponses: 5
    Dernier message: 24/05/2006, 22h14
  5. Réponses: 4
    Dernier message: 04/07/2002, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo