Serveur Web Python simple pour afficher le statut des GPIO

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Gilles
Messages : 11
Enregistré le : mar. 9 août 2016 11:16

Serveur Web Python simple pour afficher le statut des GPIO

Message par Gilles » mar. 9 août 2016 11:29

Bonjour et bravo pour votre site/forum

j'ai installé sur un raspberry pi 2 un soft pour ouvrir/fermer mes portes de garage suivant l'exemple de andrewshilliday sur instructables.com. Cela marche bien, mais maintenant, j'ai acheté un raspberry pi 3 et je voudrais écrire mon propre programme.
Pour commencer, je voudrais quelque chose de simple qui ne requiert pas de packages supplémentaires pour avoir un server web sur le raspberry qui afficherait (juste afficher, pas de bouton) en permanence le status d'un port GPIO. Cela me servirait de base pour développer ensuite quelque chose de plus compliqué.

J'ai fouillé le web, mais je ne trouve rien de simple.

Je voudrais utiliser python + javascript + jquery(?) + ajax.

Je sais déjà interroger le port GPIO avec python :
>if (GPIO.output(23) == GPIO.LOW):
> print('23 is low')
>else:
> print('23 is high')

Merci de votre aide.
Gilles

Avatar du membre
Manfraid
Modérateur
Messages : 1402
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

Re: Serveur Web Python simple pour afficher le statut des GPIO

Message par Manfraid » mar. 9 août 2016 16:05

Salut,

je te conseille le framework Bottle pour python, il fonctionne a merveille surtout si d'après ce que j'ai compris il n'y aura que très peu de personne qui verront ce micro-site
NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

Gilles
Messages : 11
Enregistré le : mar. 9 août 2016 11:16

Re: Serveur Web Python simple pour afficher le statut des GPIO

Message par Gilles » mar. 9 août 2016 18:04

Salut Manfraid,
je vais essayer avec Bottle.

Bonne soirée
Gilles

Gilles
Messages : 11
Enregistré le : mar. 9 août 2016 11:16

Re: Serveur Web Python simple pour afficher le statut des GPIO

Message par Gilles » mer. 10 août 2016 13:26

Bon,
Bottle semble effectivement assez simple et correspond à ce que je veux mais mon problème est que je ne sais pas comment mettre à jour la page html avec le statut du port GPIO sans avoir de déclencheur( bouton, mouseover ou autre). Cela me permettrait de "monitorer" le port GPIO.
J'ai déjà commencé à suivre des cours ajax, jQuery (MOOC openclassroom avec cours en français). Avec ajax, on peut aller lire le contenu d'un fichier txt, xml ou json, mais pas un status de GPIO.

Dans mon cas, il me manque ce lien. je pense qu'il faudrait un script JS en boucle(toutes les 500ms) dans la page html qui lance un script en python pour récupérer le statut du port gpio (GPIO.output(23) et l'injecter dans la page html pour avoir toujours le dernier statut.

Idéalement, j'aimerais bien avoir un exemple qui me servirait de base car là, je suis bloqué.
Quelqu'un aurait cela quelque part à partager?
Gilles

Gilles
Messages : 11
Enregistré le : mar. 9 août 2016 11:16

Re: Serveur Web Python simple pour afficher le statut des GPIO

Message par Gilles » sam. 13 août 2016 08:22

Bonjour,
Personne n'a un exemple ou des compétences a partager?

Pour résumer, je voudrais juste afficher sur un server web en python(bottle?) le statut d'un port GPIO (ON ou OFF) et que ce statut soit mis à jour dynamiquement quand il change pour une raison extérieure, sans avoir à recharger la page web. Imaginez un écran de contrôle allumé en permanence qui surveille l'état du port GPIO.

Tous les exemples que je trouve sont à base de "click bouton" on/off. Je n'en ai trouvé aucun qui affiche simplement sans action.

Gilles

domi
Administrateur
Messages : 2893
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Serveur Web Python simple pour afficher le statut des GPIO

Message par domi » sam. 13 août 2016 13:42

Bonjour,

Je pense qu'il va falloir t'armer un peu de patience, car beaucoup de membres semblent être en vacances en ce moment.

A+
Domi
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY

Gilles
Messages : 11
Enregistré le : mar. 9 août 2016 11:16

Re: Serveur Web Python simple pour afficher le statut des GPIO

Message par Gilles » sam. 13 août 2016 19:11

Salut Domi,
C'est ballot, justement, là, j'avais du temps pendant les vacances :-) et l'envie d'apprendre ces langages(python, html, php, jquery et ajax) avec un cas concret.
Merci pour l'info.
Gilles

Avatar du membre
Manfraid
Modérateur
Messages : 1402
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

Re: Serveur Web Python simple pour afficher le statut des GPIO

Message par Manfraid » sam. 13 août 2016 20:44

Salut voici un petit exemple pour l'affichage de la page avec le framework bottle

Code : Tout sélectionner

# import des bibliothèques
from bottle import Bottle, run
import RPi.GPIO as GPIO

# Création de l'application web
app = Bottle()

# définition des entrée
channel = 23
GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP)
 
@app.route('/')
def home():
    if GPIO.input(channel):
        ret = "Entrée à 1"
    else:
        ret = "Entrée à 0"   
    return ret
 
run(app, host='localhost', port=8080)
et ensuite juste aller avec ton navigateur sur l'adresse IP du pi sur le port 8080 du genre

http://192.168.0.10:8080

voila bonne continuation
NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

Gilles
Messages : 11
Enregistré le : mar. 9 août 2016 11:16

Re: Serveur Web Python simple pour afficher le statut des GPIO

Message par Gilles » dim. 14 août 2016 10:31

Salut,

merci pour l'exemple mais c'est statique.

Ce que je recherche est un statut dynamique, c'est à dire que le statut du port GPIO se met à jour tout seul sur la page web quand son état change. Imaginons une porte avec des contacteurs genre alarme connectés à des ports GPIO du raspberry . Quand la porte s'ouvre, les contacteurs de la porte vont s'écarter, le courant ne va plus passer donc le statut du port GPIO va passer à 0. Je voudrais le voir dynamiquement sur la page web sans avoir à la recharger.
Je suis un peu compliqué comme garçon :)

Gilles

PS : Il y à un exemple sur ce site, mais je n'arrive pas à comprendre le code. https://github.com/andrewshilliday/gara ... controller

Avatar du membre
Manfraid
Modérateur
Messages : 1402
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

Re: Serveur Web Python simple pour afficher le statut des GPIO

Message par Manfraid » dim. 14 août 2016 10:47

Oui bien sur que cette parti est statique, pour la partie affichage il faut le faire en JS pour rafraîchir automatiquement ce que tu veux, de mémoire il faut utilisé la fonction setTimeout en JS, et dans le lien que tu a mis on toute la partie intéressante pour le rechargement automatique est dans le fichier client.js avec la fonction poll()
NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

Répondre

Retourner vers « Python »