[RESOLU]Lancer plusieurs pages depuis un page web

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
zeverybest
Raspinaute
Messages : 136
Enregistré le : sam. 18 oct. 2014 19:09

[RESOLU]Lancer plusieurs pages depuis un page web

Message par zeverybest » sam. 3 janv. 2015 21:09

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?
Modifié en dernier par zeverybest le dim. 4 janv. 2015 14:03, modifié 1 fois.

EVOTk

Re: Lancer plusieurs pages depuis un page web

Message par EVOTk » sam. 3 janv. 2015 21:29

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. )

zeverybest
Raspinaute
Messages : 136
Enregistré le : sam. 18 oct. 2014 19:09

Re: Lancer plusieurs pages depuis un page web

Message par zeverybest » sam. 3 janv. 2015 21:35

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

mike913
Raspinaute
Messages : 248
Enregistré le : mar. 7 oct. 2014 09:46
Localisation : Morsang / Orge - Essonne
Contact :

Re: Lancer plusieurs pages depuis un page web

Message par mike913 » dim. 4 janv. 2015 10:48

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;
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.net

zeverybest
Raspinaute
Messages : 136
Enregistré le : sam. 18 oct. 2014 19:09

Re: Lancer plusieurs pages depuis un page web

Message par zeverybest » dim. 4 janv. 2015 13:41

effectivement, ça fonctionne

merci de l'info

A+

Répondre

Retourner vers « Python »