Aller au contenu

Messages recommandés

Posté(e) (modifié)

Bonjour,

 

je ne sais pas si cela existe mais plutôt que de passer par l'interface de figaro pour accéder a un module virtuelle, j'aimerais n'accéder qu'a un module bien précis par le biais d'un page html ou autre...

 

Comme je l'ai dit, ne sachant pas si cela existait je me suis amusé a faire un page PHP qui remplis presque son role, je tiens a partagé mes 1er tests si cela intéresse du monde ;)

 

voici la page php en question, à  dépose sur votre serveur, renseigner les champs

-IP (Ip de la figaro) ,

-User (utilisateur pour la connexion) et le

-Pass , pass de connexion.

-id -> id de votre module virtuelle ou en argument de votre page php ->  "page.php?id=xxx"

 

Pour l'instant je n'affiche que les boutons du module virtuelle (le plus utile pour moi dans un 1er temps) et lance l'action associé (bon il faut rentrer le compte et mot de passe)

 

Cela trouve toute son utilité sur un petit écran tactile 

 

voila

 

 

Nouvelle mise a jour :  

 

- Ajout d'une gestion du slider et du code retour.

 

- Ne pas oublier de modifier votre php.ini avec cette option : 

  1. allow_url_include = On
  2. Pensez a renommer et modifier les fichier config-default.php en config.php ;)

 

- Cette nouvelle version inclus un liens vers le CSS bootrap : http://getbootstrap.com qui nous fait de belle mise en forme pour nos tablettes   ;)

 

Il me reste a mettre en forme ce maudit slider ....  :angry: ... mais bon.

 

 

Voila la version finale (enfin j'espère ;) ) avec la gestion du slider ;) cool.

post-2481-0-92126200-1423747709_thumb.png

post-2481-0-49660000-1423931105_thumb.png

post-2481-0-49976700-1423995880_thumb.png

post-2481-0-17622000-1423995889_thumb.png

post-2481-0-66678600-1423995895_thumb.png

post-2481-0-11121700-1424021491_thumb.png

Archive 3.zip

post-2481-0-73789000-1427301134_thumb.png

Modifié par NetIPSO
  • Upvote 4
Posté(e)

C'est pas con, j'aime bien le principe :)

C'est effectivement utile pour les interfaces tactiles de nos téléphones, ou sur une tablette murale.

 

PS : pour ton code, tu peux utiliser les balises en cliquant sur le bouton <> présent dans la zone d'édition du message, car là  ce n'est pas hyper lisible...

Posté(e)

Yes, bonne idée, j'avais fais un truc un peu dans le genre pour tester sur une tablette des contrôles, mais c'était tout en dur chez moi. A suivre de prêt en tout cas. Cela pourrait être une alternative a Imperihome s'ils ne se bougent pas...

Posté(e)

Ah deja ca n'existe pas , c'est une bonne nouvelle...

 

Ce qui me gene le plus pour l'instant, c'est le fait de rentrer de nouveau le compte et le mot de passe lors du click sur le bouton, après c'est vrai que l'on peut tout imaginer  avec une interface complètement personnalisable... :D

Posté(e)

Je n'ai pas testé.... mais il demande de resaisir les identifiants à  chaque fois qu'on clique sur le bouton ?

 

Lors du premier appel à  /api/devices, tu effectues la connexion avec le login/password.

En PHP, tu poux récupérer l'entête de la réponse, qui contient un cookie contenant l'identifiant de session. Il faut que tu réutlises ce cookie aux sessions suivantes, afin de ne pas devoir se ré-authentifier à  chaque appui sur un bouton.

 

 

EDIT : sinon comme dis Nico (qui a pris la mauvaise habitude de me griller...hihi) tu peux simplement remettre le login/password en dur à  chaque appui sur un bouton.

Posté(e)

C'est a cause sur javascript qu'il redemande le compte et le mot de passe...

 

il faut que je trouve une autre méthode pour ouvrir un liens (en tache de fond)  tout en restant sur la page actuelle .

Posté(e)

ah oui en effet.... dans ce cas, il faut que ton Javascript appelle une page PHP qui se chargera d'établir la session avec la HC2.

C'est pas simple l'Ajax.....

Invité chris6783
Posté(e)

Bonne idée. Cela peut être très pratique pour ouvrir partiellement la domotique aux visiteurs/employés dans certaines plages horaire.

Posté(e)

Super comme principe;

J'ai voulu essayer et je me heurte au problème suivant:

Warning: file_get_contents(admin:admin@192.168.1.205/api/devices?id=50): failed to open stream: No such file or directory in /home/www/4bad10120e280396fd86a2f6af4509ee/web/netatmo/index.php on line 59

Warning: Invalid argument supplied for foreach() in /home/www/4bad10120e280396fd86a2f6af4509ee/web/netatmo/index.php on line 62

Une idée?

Posté(e)

a priori il n'arriver pas a avoir le detail de ton module virtuelle... est-ce que si tu met cette ligne dans ton navigateur internet cela fonctionne?,  

 

as tu  le détail de ton module ?

 "admin:admin@192.168.1.205/api/devices?id=50"
Posté(e)

bon j'ai avancé sur le probleme de mot de passe : voici une nouvelle version qui fonctionne pas mal ;) sans javascript, par contre il faut modifié le php.ini pour autoriser le include des liens distants.

allow_url_include = On
<head>
<style>
.btn{
margin:0px auto;
text-align:left;
-webkit-border-radius: 11;
-moz-border-radius: 11;
border-radius: 11px;
-webkit-box-shadow: 1px 5px 3px #666666;
-moz-box-shadow: 1px 5px 3px #666666;
box-shadow: 1px 5px 3px #666666;
font-family: Arial;
text-color: #ffffff;
font-size: 20px;
padding: 20px 20px 20px 20px;
text-decoration: none;
width: 100%;
margin-left: auto;
margin-right: auto;
}
.btn:hover{
background:#5cbf2a;
color:#ffffff;
}
a{
color:#ffffff;
}
.bg{
width: 100%;
background: -webkit-gradient(linear, left top, left bottom, from(#cfcfcf), to(#656565));
background: -webkit-linear-gradient(#cfcfcf, #656565);
background: -moz-linear-gradient(#cfcfcf, #656565);
background: -o-linear-gradient(#cfcfcf, #656565);
background: -ms-linear-gradient(#cfcfcf, #656565);
background: linear-gradient(#cfcfcf, #656565);
padding: 20px 0px 20px 0px;
-webkit-border-radius: 11;
-moz-border-radius: 11;
border-radius: 11px;
text-align:center;
}
table{
width: 100%;
}
td {
padding: 20px 0px 20px 0px;
font-size: 16px;
color: #ffffff;
text-align:center;
}
</style>
</head>
<html>
<div id="Vbutton" class="bg">
<table>
<?php
$id="1";
if(isset($_GET["id"])) $id=$_GET["id"];
$i=0;
$ip="";
$user="";
$pass="";
if(isset($_GET["deviceID"])){
$lien="http://".$user.":".$pass."@".$ip."/api/callAction?";
foreach ($_GET as $key => $value) {
$arg.=$key."=".$value."&";
}
$lien=$lien.$arg;
include ($lien); #ATTENTION modifier le php.ini pour authoriser les liens externes : allow_url_include = On
}
$path = $_SERVER['PHP_SELF']; // $path = /home/httpd/html/index.php
$file = basename ($path);
$get="http://".$user.":".$pass."@".$ip."/api/devices?id=".$id;
$json = file_get_contents($get);
$data = json_decode($json,true);
print "<img src=\"http://".$ip."/fibaro/n_vicons/User".$data['properties']['currentIcon'].".png\" style=\"width:50px;\" >";
foreach($data['properties']['rows'] as $item) {
        if ($item['type'] == "label"){
                foreach($item['elements'] as $elements){
                print "<p>".$elements['caption']." ".$data['properties']['ui.'.$elements['name'].'.value']."</p>";
                }
        }
        if ($item['type'] == "button"){
        print"<tr><td>";
                foreach($item['elements'] as $elements) {
                print "<a class='btn' href=\"".$file."/callAction?deviceID=".$id."&name=pressButton&arg1=".$elements['id']."&id=".$id."\"target=\"_self\">".$elements['caption']."</a> ";
                }
        print "</td></tr>";
        }
}
?>
</table>
</div>
</html>

post-2481-0-47157900-1423817492_thumb.png

Posté(e)

bijour,

 

J'aime beaucoup. Suffira de rendre le serveur accessible de l'exterieure.ce qui nous eviterait de passer par home.fibaro..qui pourmoi sur mon tel ne fonctionne pas.

Avec une interface personnalisable : OUI OUI OUI

 

super idee !!

Posté(e)

 

a priori il n'arriver pas a avoir le detail de ton module virtuelle... est-ce que si tu met cette ligne dans ton navigateur internet cela fonctionne?,  

 

as tu  le détail de ton module ?

 "admin:admin@192.168.1.205/api/devices?id=50"

@NetIPSO,

j'ai essayé plusieurs modules virtuels et ça donne toujours le même résultat.

J'ai essayé de mettre la ligne dans firefox et chrome, mais il n'y a rien.

Je vais essayé ta nouvelle version pour voir.

Merci.

Posté(e)

si tu n'arrive pas a avoir le détail de ton module ça ne fonctionnera pas : peut etre un probleme de mot de passe ? :

 

voici ce que j'obtient : sous chrome par exemple ou autre ...

 

http://admi:xxxx@IPFIBARO/api/devices?id=47

{"id":47,"name":"Squeezebox","roomID":13,"type":"virtual_device","visible":true,"enabled":true,"properties":{"deviceIcon":18,"ip":"\"\"","port":8081,"currentIcon":"18","log":"","logTemp":"","mainLoop":"","ui.Label1.value":"RTL 2","ui.Slider1.value":100,"visible":"true","rows":[{"type":"label","elements":[{"id":1,"lua":false,"waitForResponse":false,"caption":"Ecoute :","name":"Label1","favourite":true,"main":true}]},{"type":"slider","elements":[{"id":2,"lua":true,"waitForResponse":false,"caption":"Volume","name":"Slider1","msg":"HC2 = Net.FHttp(\"192.168.1.59\")\nHC2:GET(\"/cgi-bin/radio.cgi?action=volume&vol=\".._sliderValue_)","buttonIcon":19,"value":80,"favourite":false,"main":false}]},{"type":"button","elements":[{"id":3,"lua":true,"waitForResponse":false,"caption":"ON","name":"Button11","empty":false,"msg":"HC2 = Net.FHttp(\"192.168.1.59\")\nHC2:GET(\"/cgi-bin/radio.cgi?radio=rtl2&action=play\")\n","buttonIcon":19,"favourite":false,"main":false},{"id":4,"lua":true,"waitForResponse":false,"caption":"OFF","name":"Button12","empty":false,"msg":"HC2 = Net.FHttp(\"192.168.1.59\")\nHC2:GET(\"/cgi-bin/radio.cgi?radio=rtl2&action=stop\")","buttonIcon":18,"favourite":false,"main":false}]},{"type":"button","elements":[{"id":5,"lua":true,"waitForResponse":false,"caption":"RTL2","name":"Button31","empty":false,"msg":"HC2 = Net.FHttp(\"192.168.1.59\")\nHC2:GET(\"/cgi-bin/radio.cgi?radio=rtl2&action=play\")\n","buttonIcon":0,"favourite":false,"main":true},{"id":6,"lua":true,"waitForResponse":false,"caption":"RTL","name":"Button32","empty":false,"msg":"HC2 = Net.FHttp(\"192.168.1.59\")\nHC2:GET(\"/cgi-bin/radio.cgi?radio=rtl&action=play\")\n","buttonIcon":0,"favourite":false,"main":false},{"id":7,"lua":true,"waitForResponse":false,"caption":"JAZZ","name":"Button33","empty":false,"msg":"HC2 = Net.FHttp(\"192.168.1.59\")\nHC2:GET(\"/cgi-bin/radio.cgi?radio=crooner&action=play\")","buttonIcon":0,"favourite":false,"main":false},{"id":8,"lua":true,"waitForResponse":false,"caption":"Alouet","name":"Button34","empty":false,"msg":"HC2 = Net.FHttp(\"192.168.1.59\")\nHC2:GET(\"/cgi-bin/radio.cgi?radio=alouette&action=play\")","buttonIcon":0,"favourite":false,"main":false}]},{"type":"button","elements":[{"id":9,"lua":true,"waitForResponse":false,"caption":"Status","name":"Button41","empty":false,"msg":"local poweronIcon = 19\nlocal poweroffIcon = 18\n\nHC2 = Net.FHttp(\"192.168.1.59\", 80);\nresult = HC2:GET(\"/cgi-bin/radio.cgi?action=status\");\nfibaro:debug(result);\nlocal decode = json.decode(result);\nlocal status = decode[\"STATUS\"];\nlocal ECOUTE = decode[\"ECOUTE\"];\nfibaro:debug(status);\nfibaro:debug(ECOUTE);\n\n\nif status == \"1\"  then\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"currentIcon\", poweronIcon)\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label1.value\", ECOUTE);\nelse\nfibaro:call(fibaro:getSelfId(), \"setProperty\", \"currentIcon\", poweroffIcon)\nend","buttonIcon":0,"favourite":false,"main":false}]}]},"actions":{"pressButton":1,"setSlider":2},"created":1423758800,"modified":1423758800,"sortOrder":19} 

temps que tu n'arrivera pas a voir le code json le script php ne fonctionnera pas. :s

Posté(e)

nouvelle version correction des accents et gestion d'un pseudo slider...

 

si il y a des pro du css je suis preneur ;)

<head>
<meta http-equiv="Content-type" content="application/xhtml+xml; charset=utf-8">
<style>
.btn{
margin:0px auto;
text-align:left;
-webkit-border-radius: 11;
-moz-border-radius: 11;
border-radius: 11px;
-webkit-box-shadow: 1px 5px 3px #666666;
-moz-box-shadow: 1px 5px 3px #666666;
box-shadow: 1px 5px 3px #666666;
font-family: Arial;
text-color: #ffffff;
font-size: 20px;
padding: 20px 20px 20px 20px;
text-decoration: none;
width: 100%;
margin-left: auto;
margin-right: auto;
}
.btn:hover{
background:#5cbf2a;
color:#ffffff;
}
a{
color:#ffffff;
}
.bg{
width: 100%;
background: -webkit-gradient(linear, left top, left bottom, from(#cfcfcf), to(#656565));
background: -webkit-linear-gradient(#cfcfcf, #656565);
background: -moz-linear-gradient(#cfcfcf, #656565);
background: -o-linear-gradient(#cfcfcf, #656565);
background: -ms-linear-gradient(#cfcfcf, #656565);
background: linear-gradient(#cfcfcf, #656565);
padding: 20px 0px 20px 0px;
-webkit-border-radius: 11;
-moz-border-radius: 11;
border-radius: 11px;
text-align:center;
}
table{
width: 100%;
}
p{
font-size:26px;
color:#FFF000;
}
td {
padding: 20px 0px 20px 0px;
font-size: 16px;
color: #ffffff;
text-align:center;
}
</style>
</head>
<html>
<div id="Vbutton" class="bg">
<table>
<?php
$id="1";
if(isset($_GET["id"])) $id=$_GET["id"];
$i=0;
$ip="";
$user="";
$pass="";
if(isset($_GET["deviceID"])){
$lien="http://".$user.":".$pass."@".$ip."/api/callAction?";
foreach ($_GET as $key => $value) {
$arg.=$key."=".$value."&";
}
$lien=$lien.$arg;
include ($lien); #ATTENTION modifier le php.ini pour authoriser les liens externes : allow_url_include = On
}
$path = $_SERVER['PHP_SELF']; // $path = /home/httpd/html/index.php
$file = basename ($path);
$get="http://".$user.":".$pass."@".$ip."/api/devices?id=".$id;
$json = file_get_contents($get);
$data = json_decode($json,true);
print "<img src=\"http://".$ip."/fibaro/n_vicons/User".$data['properties']['currentIcon'].".png\" style=\"width:50px;\" >";
foreach($data['properties']['rows'] as $item) {
        if ($item['type'] == "label"){
                foreach($item['elements'] as $elements){
                print "<p>".$elements['caption']." ".$data['properties']['ui.'.$elements['name'].'.value']."</p>";
                }
        }
        if ($item['type'] == "button"){
        print"<tr><td>";
                foreach($item['elements'] as $elements) {
                print "<a class='btn' href=\"".$file."/callAction?deviceID=".$id."&name=pressButton&arg1=".$elements['id']."&id=".$id."\"target=\"_self\">".$elements['caption']."</a> ";
                }
        print "</td></tr>";
        }
        if ($item['type'] == "slider"){
        $arg=$file."/callAction?deviceID=".$id."&name=setSlider&arg1=".$item['elements']['id']."&id=".$id."&arg2=";
                foreach($item['elements'] as $elements){
                print "<p>".$elements['caption']." ".$elements['value']."</p>";
                        for($i=0; $i <= 100; $i++){
                                if ($i == $elements['value']){
                                print "<a href=\"".$arg.$i."\" alt=\"".$i."\">*</a>";
                                }else{
                                print "<a href=\"".$arg.$i."\">.</a>";
                                }
                        }
                }
        }
}
?>
</table>
</div>
</html>

Posté(e)

Voici une nouvelle version : 

 

- Recuperation de l'icon du Module virtuelle

- Gestion du slider (avec une fonction "zoom")

- Ajout d'un select listant tous les modules virtuelle

- possibilité de mettre un fichier de config

- amelioration du refresh toute les 90s

<head>
<meta http-equiv="Content-type" content="application/xhtml+xml; charset=utf-8">

<?php
$ip="";
$user="";
$pass="";
include'./config.php';#Ajouter un fichier de config ou renseigner les informations ci-dessus
$path = $_SERVER['PHP_SELF']; 
$file = basename ($path);
$resol=800;
$slider_zoom=5;
$id="1";
if(isset($_GET["id"])) $id=$_GET["id"];
$i=0;
if(isset($_GET["deviceID"])){
	$lien="http://".$user.":".$pass."@".$ip."/api/callAction?";
	foreach ($_GET as $key => $value) {
	$arg.=$key."=".$value."&"; 
	}
	$lien=$lien.$arg;
	print "<div style=\"visibility: hidden;\">";
	include ($lien); #ATTENTION modifier le php.ini pour authoriser les liens externes : allow_url_include = On
	header('location: '.$_SERVER['SCRIPT_NAME']."?id=".$_GET['id']);
	print "</div>";
}
$delai=90; 
$url=$_SERVER['SCRIPT_NAME']."?id=".$_GET['id'];
header("Refresh: $delai;url=$url");
?>
<style>
.btn{
margin:0px auto;
text-align:left;
-webkit-border-radius: 11;
-moz-border-radius: 11;
border-radius: 11px;
-webkit-box-shadow: 1px 5px 3px #666666;
-moz-box-shadow: 1px 5px 3px #666666;
box-shadow: 1px 5px 3px #666666;
font-family: Arial;
text-color: #ffffff;
font-size: 20px;
text-decoration: none;
-webkit-transition: all 0.5s ease;
  background-color: #bfbfbf;
  background-image: -moz-linear-gradient(1deg, #000000, #bfbfbf);
  background-image: -ms-linear-gradient(1deg, #000000, #bfbfbf);
  background-image: -o-linear-gradient(1deg, #000000, #bfbfbf);
  background-image: -webkit-linear-gradient(1deg, #000000, #bfbfbf);
  background-image: linear-gradient(1deg, #000000, #bfbfbf);
border: 2px solid #4a5032;
box-shadow: #6E7849 0px 0px 10px;
padding:20px 5% 20px 5%;
}	
.btn:hover{
background:#5cbf2a;
color:#ffffff;
border: 2px solid #ffffff;
box-shadow: #ff1d14 0px 0px 10px;
background-image: -moz-linear-gradient(1deg, #1e3dcc, #bfbfbf);
background-image: -ms-linear-gradient(1deg, #1e3dcc, #bfbfbf);
background-image: -o-linear-gradient(1deg, #1e3dcc, #bfbfbf);
background-image: -webkit-linear-gradient(1deg, #1e3dcc, #bfbfbf);
background-image: linear-gradient(1deg, #1e3dcc, #bfbfbf);
}
a{
color:#ffffff;
}
.bg{
width: 800px;
background: #000;
padding: 20px 0px 20px 0px;
-webkit-border-radius: 11;
-moz-border-radius: 11;
border-radius: 11px;
text-align:center;
}
table{
width:100%;
}
p{
font-size:26px;
color:#FFF000;
}
td {
padding: 50px 0px 50px 0px;
font-size: 16px;
color: #ffffff;
text-align:center;
}
.slider{
font-size: 36px;
background:#000;
color=#000;
text-decoration:none;
}
.slider_select{
background:#fff;
}
</style>
</head>
<html>
<div>
<form method="GET" >
<select name="id" onchange='this.form.submit()'>
<?php
$get="http://".$user.":".$pass."@".$ip."/api/virtualDevices";
$json = file_get_contents($get);
$data = json_decode($json,true);
foreach($data as $elements){
 print "<option value=".$elements['id'].">".$elements['name']."</option>";
}
?>
</select>
</form>
</div>
</html>
<div id="Vbutton" class="bg">
<table>
<?php
$get="http://".$user.":".$pass."@".$ip."/api/devices?id=".$id;
$json = file_get_contents($get);
$data = json_decode($json,true);
if ($data['properties']['currentIcon']==0){
print "<img src=\"http://".$ip."/fibaro/n_vicons/light.png\" style=\"width:r80px;\" alt=\"\">";
}else{
print "<img src=\"http://".$ip."/fibaro/n_vicons/User".$data['properties']['currentIcon'].".png\" style=\"width:90px;\" >";
}
foreach($data['properties']['rows'] as $item) {
	if ($item['type'] == "label"){
		foreach($item['elements'] as $elements){
		print "<p>".$elements['caption']." ".$data['properties']['ui.'.$elements['name'].'.value']."</p>";
		} 
	}
	if ($item['type'] == "button"){
	print"<tr><td>";
		print"<div>";
		foreach($item['elements'] as $elements) {
		print "<a class='btn' \" href=\"".$file."/callAction?deviceID=".$id."&name=pressButton&arg1=".$elements['id']."&id=".$id."&width=".$resol."&r=1\"target=\"_self\">".$elements['caption']."</a> ";
		}
		print"</div>";
	print "</td></tr>";
	}
	if ($item['type'] == "slider"){
	$arg=$file."/callAction?deviceID=".$id."&name=setSlider&id=".$id."&arg2=";
		foreach($item['elements'] as $elements){
		print "<p>".$elements['caption'].":".$elements['value']."  ";
		$min=(int)$elements['value']-$slider_zoom;
		$max=(int)$elements['value']+$slider_zoom;
			for($i=$min; $i <= $max; $i++){
				if ($i == $elements['value']){
				print "<a class=\"slider_select\" href=\"".$arg.$i."\" alt=\"".$i."\">*</a>";
				}else{
				print "<a class=\"slider\" href=\"".$arg.$i."&arg1=".$elements['id']."\">-</a>";
				}
			}
		print "</p>";
		}
	}
}
?>
</table>
</div>

Voila ;) vraiment impressionnant ce que l'on peut faire avec cette box ;)

post-2481-0-37038900-1423924523_thumb.png

  • Upvote 1
Posté(e)

C'est super ce que tu nous fais !  :60:

 

Je déplace dans "Tuto".

 

Peut tu éditer ton 1er post et mettre à  jour avec la dernière version  (ou indice ) , c'est plus pratique que de dérouler l'ensemble du sujet.

 

Merci

  • Upvote 1
Posté(e)

Merci, franchement je pensais que ca existait deja... mais heureux de faire plaisir ;)

 

Voila j'ai mis a jour la 1ere page avec la dernière version du script.

 

Ca commence a resembler a quelque chose, mais avec un beau CSS on pourrait faire un truc super ;) pour info et  pour ceux qui veulent, ils peuvent facilement reprendre le CSS de la fibaro :D

Posté(e)

Je viens de tester avec un module virtuel existant, la page php s'affiche bien avec tous les boutons, labels, etc... mais pas d'action lorsque j'appui sur un bouton.

Tu as une idée? ( j'ai bien mis le bon id dans la config php )

 

post-2-0-97498200-1423932154_thumb.png

Posté(e)

as tu activer l'option :

allow_url_include = On

dans ton php.ini ?

 

c'est le seul problème que j'ai rencontré en plus c'est vicieux car par de message d'erreur ;)

Posté(e)

Ha ben non !  :rolleyes:

 

Mais c'est ou? je vois pas....

 

 

EDIT: Il faut que je créer un php.ini en fait c'est ca ?

 

Désolé mais j'y connais pas grand chose en php.

 

Dans ma page php.ini je met que "allow_url_include=On" ? ou faut il d'autres choses?

×
×
  • Créer...