Page 1 sur 1

[RESOLU]Lancer plusieurs pages depuis un page web

Posté : sam. 3 janv. 2015 21:09
par zeverybest
bonjour a tous

Je ne suis pas sur que je poste au bon endroit, mais il n'y a pas de rubrique PHP

Remarquez, mon script utilise PHP et le Python

Voila, je vous plante le decor :

Mon systeme de domotique est composé de plusieurs raspberry PI affectés a des fonction differentes

Dans ce post, 2 raspberry sont concernés pour commander des volets roulants dans differentes pieces

donc, sur mon serveur principal, il y a une page PHP qui permet de commander ces differents volets roulans

en cliquant sur le bouton "ouverture" ou "fermeture", le fait appel a un script PHP sur le raspberry concerné qui lance un script Python (qui lui commande la monté ou la descente)

en gros, le script PHP du serveur principal lance celui du raspberry de cette façon :

Code : Tout sélectionner

<?php

$commande_volet=$_GET['volet_cuisine'];


switch ($commande_volet)
	{
	case 'Ouvrir':
	header("location:http://IP_raspberry_1/commande_ouverture.php");
	break;
	
	case 'Fermer':
	header("location:http://IP_raspberry_1/commande_fermeture.php");
	break;
	
	case 'Stop':
	header("location:http://IP_raspberry_1/arret_commande.php");
	break;
	}


?>
Cela fonctionne tres bien

Voila, maintenant passons aux problemes :

j'ai prevu un fonction permettant de fermer TOUS les volets roulants (donc commandés par plusieurs raspberry)

Donc, en toute logique, j'ai fait ça :

Code : Tout sélectionner

<?php
// commande volets roulant en groupe

//recuperation de la valeur de l'action
$commande_volets=$_GET['volets_groupe'];

switch ($commande_volets)
	{
	case 'Ouvrir':   //commande en ouverture
	header("location:http://IP_raspberry1/tout_ouvrir.php");	
	header("location:http://IP_raspberry2/tout_ouvrir.php");  
	break;
	
	case 'Fermer':  //arret de mouvement
	header("location:http://IP_raspberry1/tout_fermer.php");   
	header("location:http://IP_raspberry2/tout_fermer.php");   
	break;


	}

?>
Eh ben ça ne fonctionne pas

seul la commande sur le raspberry 2 est lancé

Comment cela se fait il?

Re: Lancer plusieurs pages depuis un page web

Posté : sam. 3 janv. 2015 21:29
par EVOTk
Salut,

C'est une fonction que je n'utilise pas mais sur php.net il précise :
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include ou require, et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.
Dans :

Code : Tout sélectionner

   case 'Ouvrir':   //commande en ouverture
   header("location:http://IP_raspberry1/tout_ouvrir.php");   
   header("location:http://IP_raspberry2/tout_ouvrir.php");  
   break;
Ton 1er header, ne provoque t'il pas un affichage d'ecriture ? Si oui, voila pourquoi le 2eme ne s'affiche pas, possible aussi que l'ordre exécution du 1er script soit le probleme ( cf : moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. )

Re: Lancer plusieurs pages depuis un page web

Posté : sam. 3 janv. 2015 21:35
par zeverybest
mon 1er header appel un script PHP (il commence par <?php et fini par ?> il n'y a aucune balise html)
dans ce script, je lance le script python, et je stock une donnée dand ma bas My SQL
ensuit, il fini par un autre header pour revenir a la page precedente

il n'y a pas de print dedans

Re: Lancer plusieurs pages depuis un page web

Posté : dim. 4 janv. 2015 10:48
par mike913
Bonjour,

La fonction Header n' est pas du tout adaptée pour ce que tu veux faire.
Essaye la fonction: file_get_contents() exemple:

Code : Tout sélectionner

   case 'Ouvrir':   //commande en ouverture
            file_get_contents("http://IP_raspberry1/tout_ouvrir.php");   
            file_get_contents("http://IP_raspberry2/tout_ouvrir.php"); 
            break;

Re: Lancer plusieurs pages depuis un page web

Posté : dim. 4 janv. 2015 13:41
par zeverybest
effectivement, ça fonctionne

merci de l'info

A+