3 votes

Sortie Python sur le serveur web REALTIME

J'ai un Raspberry Pi avec un capteur de température I2C.

Code Python :

import board
import adafruit_mlx90614
import time

i2c = board.I2C()
mlx = adafruit_mlx90614.MLX90614(i2c)
while True:
    print("Object Temp: ", mlx.object_temperature)

SORTIE :

Object Temp:  21.89
Object Temp:  22.73
Object Temp:  27.31

Il fonctionne bien. Mais comment faire pour que la sortie soit affichée sur le serveur web local ? En temps réel, sans rafraîchissement de la page ? Comme un texte. Rien d'extraordinaire.

Gracias

4voto

Zack VT Points 349

Nous devons d'abord mettre en place un serveur web en python, j'ai choisi d'utiliser Flask ici. Ensuite, nous devons créer un fichier HTML avec un script qui mettra à jour les données toutes les quelques secondes (j'ai choisi 5 secondes ici). Il suffit donc de créer un nouveau fichier appelé index.html dans un nouveau répertoire appelé /templates. Ensuite, ajoutez le code suivant dans le fichier index.html.

PS : Vous pouvez changer cette valeur de 5000 dans la fonction setInterval dans le script, assurez-vous simplement de compter par milliers, comme 3 secondes serait 3000.

Code Python :

import board
import adafruit_mlx90614
import time

i2c = board.I2C()
mlx = adafruit_mlx90614.MLX90614(i2c)

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/temp')
def getTemp():
    return str(mlx.object_temperature)

@app.route('/')
def hello_world():
    return render_template("index.html")

if __name__ == '__main__':
    app.run(debug=True)

Code HTML :

<html>
<head>
</head>
<body>
<p id="temp">Object Temp: 0</p>
<script>
const Http = new XMLHttpRequest();
const url='http://localhost:5000/temp';

function checkTemp(){
   Http.open("GET", url);
   Http.send();
  Http.onreadystatechange = (e) => {
    document.querySelector("#temp").innerHTML = "Object Temp: " + Http.responseText;
  }
}

setInterval(checkTemp, 5000);
</script>
</body>
</html>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X