jmvdb
Posts: 4
Joined: Sat Nov 10, 2018 11:35 am

entre php et python ? y a quoi ?

Sat Nov 10, 2018 1:45 pm

Bonjour à tous, je viens ici chercher une lumière
Je tourne en rond et j'ai besoin de quelques explications

A- J'ai installé un serveur WEB sur mon raspberry (Apache, php, Mysql, phpmyAdmin, ftp)
depuis mon PC je peux afficher les pages en .php de mon serveur

B- Je lis les valeurs d'un capteur HDT11 avec un script python et la bibli Adafruit_Python_DHT-master

=>> comment faire pour afficher sur une page .php la valeur de ma sonde ??

merci de votre aide

jmvdb
Posts: 4
Joined: Sat Nov 10, 2018 11:35 am

Re: entre php et python ? y a quoi ?

Sat Nov 10, 2018 5:26 pm

J'ai oublié de dire que j'étais un peu débutant :oops:

jelopo
Posts: 1415
Joined: Wed Oct 17, 2012 7:53 pm

Re: entre php et python ? y a quoi ?

Sun Nov 11, 2018 8:48 am

Bonjour,

Il faut appeler le script Python dans le programme PHP.

Rechercher sur le net des exemples correspondant à ton cas avec les champs: "executer Python dans PHP"
Je constate que certains utilisent exec, d'autres shellexec, ou encore system, je ne sais pas lequel est le mieux adapté.


A+

danjperron
Posts: 3072
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: entre php et python ? y a quoi ?

Sun Nov 11, 2018 3:20 pm

Puisque tu as installé mysql , j'opterais pour utiliser la base de données.

Un script python pour enregistrer dans une base de données la valeur du capteur DHT11 . Une lecture à chaque 5 minutes par exemple.
La température ne change pas si vite de toute façon. 'pymysql' est parfait pour cela.


Ensuite utiliser php pour lire la valeur enregistrée. De cette façon il est même possible de faire un graphique historique.

Daniel

jmvdb
Posts: 4
Joined: Sat Nov 10, 2018 11:35 am

Re: entre php et python ? y a quoi ?

Sun Nov 11, 2018 4:23 pm

merci Daniel,
Je n'étais pas sur que python puisse écrire dans mysql
comment on fait ? ou je peux trouver un exemple ?

Je voie un intérêt de pouvoir garder un historique des température sur une longue période

danjperron
Posts: 3072
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: entre php et python ? y a quoi ?

Mon Nov 12, 2018 12:37 am

1 - Créer une base de données

Code: Select all

sudo msql -u root -p

    MariaDB [(none)]> create database capteur_db;
2 - Créer une table

Code: Select all

 CREATE TABLE `capteur_db`.`capteur_tbl` (
   `capteur_id` TINYINT NOT NULL ,
    `date` DATETIME NOT NULL,
    `valeur` FLOAT NOT NULL ,
   `valide` TINYINT NOT NULL ) ENGINE = InnoDB;
3- Créer des usagers

python_user , usager capable d'insérer un record

Code: Select all

CREATE USER 'python_user'@'localhost' IDENTIFIED BY 'python_password';
GRANT INSERT ON capteur_db.capteur_tbl TO 'python_user'@'localhost';
php_user , usager capable de lire seulement la table

Code: Select all

CREATE USER 'php_user'@'localhost' IDENTIFIED BY 'php_password';
GRANT SELECT ON capteur_db.capteur_tbl TO 'php_user'@'localhost';
flush privileges;



4- Créer un exemple python pour lire et capturer la température du cpu

Code: Select all

#!/usr/bin/python3
import pymysql
import datetime

def readCPU():
  try:
    tFile = open('/sys/class/thermal/thermal_zone0/temp')
    temp = float(tFile.read())
    tempC = temp/1000
    tFile.close()
    return tempC
  except:
    tFile.close()
  return None



#definition mysql

mysqlHost     =  "localhost"
mysqlDatabase =  "capteur_db"
mysqlUserName =  "python_user"
mysqlPassword =  "python_password"

#definition  capteur ID
capteur_id = 1


# connection mysql

try:

 sql_con = pymysql.connect(host=mysqlHost, user=mysqlUserName,
                          passwd=mysqlPassword, db=mysqlDatabase)

 cur = sql_con.cursor()

except pymysql.err.OperationalError:
  print("Erreur sur la Connection a la base de donnees!")
  quit()


capteur = readCPU()

champ_date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')



if capteur is None :
  # ok erreur sur la lecture du capteur
  # donc nous enregistrons avec le champ valide = False
  champ_valeur= 999.0
  champ_valide= 0
  print("{}\tCapteur {} invalide!".format(champ_date,capteur_id))
else:
  champ_valeur= capteur
  champ_valide= 1
  print("{}\tCapteur {}={:.1f} Celsius".format(champ_date,capteur_id,capteur))

sql_insert = "INSERT INTO capteur_tbl(capteur_id,date,valeur,valide) values('{}','{}','{}','{}')".format(capteur_id,champ_date,champ_valeur, champ_valide)

#print(sql_insert)

cur.execute(sql_insert)
sql_con.commit()

5 - Un exemple de PHP pour lire le dernier enregistrement dans la table de données

Code: Select all

<?php
$dbServername = "localhost";
$dbUsername = "php_user";
$dbPassword = "php_password";
$dbName = "capteur_db";

$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
?>

<html>
<head>
<title></title>
</head>
<body>
  <?php

    $sql = "SELECT * from capteur_tbl ORDER BY date DESC LIMIT 1;";
    $result = mysqli_query($conn, $sql);
    $resultCheck = mysqli_num_rows($result);

    if ($resultCheck > 0 ) {
      while ($row = mysqli_fetch_assoc($result)) {
        echo "<h1> Capteur DHT11 #" . $row['capteur_id'] . "&nbsp;=&nbsp;".
             number_format($row['valeur'],1) . "&#8451;</h1><br>";
     }
    }

  ?>

</body>
</html>

jmvdb
Posts: 4
Joined: Sat Nov 10, 2018 11:35 am

Re: entre php et python ? y a quoi ?

Mon Nov 12, 2018 10:00 am

Merci, ça calme

Return to “Français”