[RESOLU] Lecture sonde depuis interface php

Vous venez de déballer votre Raspberry Pi et vous vous posez des questions ? C'est ici que ça se passe !

Modérateur : Francois

lawfix
Messages : 66
Enregistré le : mer. 24 sept. 2014 10:02

[RESOLU] Lecture sonde depuis interface php

Message par lawfix » mar. 20 janv. 2015 23:55

Bonjour à tous,

je commence un peu à comprendre le fonctionnement de notre petite bête et je suis en train de faire ma plateforme domotique... ( c'est un bien grand mot ).

J'ai essayé de lire ma sonde via la ligne de commande, celle ci fonctionne parfaitement.

Par contre, autant j'ai réussi à comprendre comment mettre en place un script pour faire le lien php en prenant sur un exemple, mais appliqué au miens ça ne passe pas...

Je m'explique. J'ai modifié, complété le code suivant :

Code : Tout sélectionner

<?php
	ob_start();

	define(LANGUAGE, "english");


	$temp = shell_exec('cat /sys/bus/w1/devices/28-00141312f0ff#');
	$temp = round($temp / 1000, 1);

	$uptimedata = shell_exec('uptime');
	$uptime = explode(' up ', $uptimedata);
	$uptime = explode(',', $uptime[1]);
	$uptime = $uptime[0].', '.$uptime[1];

	include 'localization/'.LANGUAGE.'.lang.php';

?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		 <link rel="stylesheet" href="pi/style.css" />
        <title>Style du tableau de bord pour la temp & conso</title>
		
		<script src="javascript/raphael.2.1.0.min.js"></script>
	    <script src="javascript/justgage.1.0.1.min.js"></script>
		
		<script>
	    	function checkAction(action){
				if (confirm('<?php echo TXT_CONFIRM; ?> ' + action + '?'))
				{
					return true;
				}
				else
				{
					return false;
				}
	    	}

			window.onload = doLoad;

			function doLoad()
			{
			setTimeout( "refresh()", 30*1000 );
			}

			function refresh()
			{
			window.location.reload( false );
			}
	    </script>
    </head>
	
    <body>
        
		<div id="logo">
		<div id="contenu">
		<img id="logo" src="images/raspberry.png"><p>rasphome</p>
		
            <ul id="nav">
                <li><a href="#">Accueil</a></li>
                <li><a href="tempconso.php">Température et consommation</a></li>
				<li><a href="#">Statistiques</a></li>
                <li><a href="dashpi.php">Raspdashboard</a></li>
            </ul>

<?php if(isset($temp) && is_numeric($temp)){ ?>
					<div id="tempgauge"></div>
					<script>
						var t = new JustGage({
						    id: "tempgauge",
						    value: <?php echo $temp; ?>,
						    min: 10,
						    max: 29,
						    title: "<?php echo TXT_TEMPERATURE; ?>",
						    label: "°C"
					    });
					</script>
<?php } ?>
					</body>
</html>
Malheureusement la température reste à 0... et là je comprends pas trop pourquoi.

Si quelqu'un pouvait m'aiguiller :)

Merci par avance
Modifié en dernier par lawfix le dim. 25 janv. 2015 23:40, modifié 1 fois.

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

Re: Lecture sonde depuis interface php

Message par domi » mer. 21 janv. 2015 08:00

Bonjour,

Déjà, sans entrer dans les détails, il faut savoir que lorsque PHP fait un "shell_exec", cette commande est effectuée par le USER "www-data".

Est-ce que ce USER à les droits pour faire le "cat /sys/bus/w1/devices/......." ?
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
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Lecture sonde depuis interface php

Message par vague nerd » mer. 21 janv. 2015 08:14

Bonjour.

Quel serveur utilisez vous ? Apache ?

Cdt.
Cordialement,

Vague Nerd

lawfix
Messages : 66
Enregistré le : mer. 24 sept. 2014 10:02

Re: Lecture sonde depuis interface php

Message par lawfix » mer. 21 janv. 2015 08:18

Bonjour à tous

Alors le user www-data bénéficie des droits du root car je les avais mis à jour en suivant un tuto qui prévoyait le cas des droits d'utilisateurs.

Pour le serveur j'utilise nginx car après conseils auprès d'autres personnes j'ai fini par prendre nginx au lieu d'apache 2.

Merci pour vos aides respectives :)

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Lecture sonde depuis interface php

Message par vague nerd » mer. 21 janv. 2015 08:20

Le user www-data est celui utilisé par apache pour l'exécution des scripts.
Savez-vous quel user est utilisé par votre serveur web pour exécuter des scripts externes ? Cet utilisateur a-t-il les droits sur vos scripts ?

Edit : à priori, c'est ça, et ça se passe dans dans nginx.conf et php-fpm.conf, selon google.

Cdt.
Cordialement,

Vague Nerd

lawfix
Messages : 66
Enregistré le : mer. 24 sept. 2014 10:02

Re: Lecture sonde depuis interface php

Message par lawfix » mer. 21 janv. 2015 08:26

En fait c'est le même utilisateur pour nginx si j'ai bien compris.

Donc je n'ai plus qu'à reverifier les droits d'utilisateur si j'ai bien saisi.

Je pensais que le soucis venait d'ailleurs, car j'ai même tenté un script python qui ne fait que afficher la température sur une ligne mais ça ne changeait rien.

Je regarde de nouveau ce soir et je vous tient au courant.

Merci

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Lecture sonde depuis interface php

Message par vague nerd » mer. 21 janv. 2015 08:30

En fait c'est le même utilisateur pour nginx si j'ai bien compris.
Je n'ai pas compris. Vous voulez dire que le user par défaut est aussi www-data ? A priori non...

Cdt.
Cordialement,

Vague Nerd

lawfix
Messages : 66
Enregistré le : mer. 24 sept. 2014 10:02

Re: Lecture sonde depuis interface php

Message par lawfix » mer. 21 janv. 2015 08:37

J'ai suivi ce tuto http://raspbian-france.fr/installer-ngi ... raspberry/

Et il parle du même utilisateur que celui que vous avez cité, c'est en partie pour ça que j'ai répondu oui :/

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Lecture sonde depuis interface php

Message par vague nerd » mer. 21 janv. 2015 10:05

Si vous avez réussi a suivre le tuto, le site marche, votre page php s'affiche (merci de confirmer).
Par contre, le script

Code : Tout sélectionner

cat /sys/bus/w1/devices/28-00141312f0ff#
retourne '0'. C'est ça ?

Lancé en ligne de commande, que retourne votre script ?

Code : Tout sélectionner

cat /sys/bus/w1/devices/28-00141312f0ff#
Il affiche une chaine de caractère convertible en numérique ?

Le user www-data a-t-il le droit de lire dans /sys/bus/w1/devices ?
Dans /sys/bus/w1/devices/28-00141312f0ff# ?
(Sinon, même opération que dans le tuto pour changer les droits)

Cdt.
Cordialement,

Vague Nerd

lawfix
Messages : 66
Enregistré le : mer. 24 sept. 2014 10:02

Re: Lecture sonde depuis interface php

Message par lawfix » mer. 21 janv. 2015 14:15

Alors je peux répondre à une partie des questions.

Pour le script il renvoi un zéro effectivement au lieu de la température.

Le site en php fonctionne bien autrement, chaque modification est bien prise en compte.

Si j'execute en ligne de commande cela me renvoi deux lignes de chaînes hexa convertible en valeur numérique effectivement sur la deuxième ligne.

J'ai créer un code python pour que ça n'affiche que la valeur numérique (j'avais remplacé le code par '' /var/python temp.py ''
Et pareil ça me renvoi un zéro.

Pour les droits je vais vérifier ce soir.

Merci de prendre du temps pour m'aider

Répondre

Retourner vers « Débutants »