Page 1 sur 2

Scripts PHP dans domoticz

Publié : 05 juil. 2017, 22:52
par florian54
Bonsoir à tous !

Je suis nouveau dans la programmation d'un Raspberry PI3 et je me suis lancé dans une installation avec domoticz. Je suis arrivée à l'étape d'intégration d'un script php dans domoticz pour contrôler mes prises murales; la commande fonctionne depuis ma liaison SSH avec la raspberry par contre cela ne fonctionne pas sur domoticz...

Le script sous le nom de ./codesend.php à été crée dans /home/pi/domoticz/scripts/php et voici son contenu :

Code : Tout sélectionner

#!/usr/bin/php
<?php
// API actioner les prises
// ./codesend <code>
// exemple ./codesend 1312081
$code = isset($_GET['code']) ? $_GET['code'] : NULL;
system('sudo ./codesend '.$code, $retval);
print_r ($retval) ;
?>
j'ai bien changé les droits, le fichier ainsi que les dossiers possèdent les droits suivants : rwxr-xr-x
Dans domoticz les commandes on et off sont les suivantes :

ON => http://IP de la raspberry/home/pi/domoticz/scripts/php/codesend.php&code=1312181
OFF => http://IP de la raspberry/home/pi/domoticz/scripts/php/codesend.php&code=1312184

Normalement ceci devrait fonctionner comme lorsque je tape ma commande en SSH (sudo ./codesend 1312181) mais ce n'est pas le cas...
Avez-vous une idée ? Je suis vraiment à court d'idée ^^

Je n'utilise pas de RFXcom mais un éméteur/récepteur 433 Mhz. Les prises sont des Home confort YC-400B

Merci !

Re: Scripts PHP dans domoticz

Publié : 06 juil. 2017, 06:31
par vil1driver
Salut,

Tu ne peux pas utiliser http.. Pour du php, le serveur web de domoticz ne prend pas en charge ce langage.

Il te faut installer l'utilitaire php cli et lancer directement ton script

Code : Tout sélectionner

php tonScript.php

Re: Scripts PHP dans domoticz

Publié : 06 juil. 2017, 13:17
par florian54
merci de tes conseils ! J'avais déjà le php5 d'installé mais dans le doute j'ai effectué ces commandes :

Code : Tout sélectionner

sudo apt-get install php5-common php5-cgi php5

Code : Tout sélectionner

sudo apt-get install php5-cli
dans mon invit de commande si je tape

Code : Tout sélectionner

php codesend.php
j'ai ce message en dessous :

root@XXXXXX:/home/pi/domoticz/scripts/php# php codesend.php
Usage: ./codesend decimalcode [protocol] [pulselength]
decimalcode - As decoded by RFSniffer
protocol - According to rc-switch definitions
pulselength - pulselength in microseconds

donc pour moi pas de souci de ce côté, maintenant passage sur domoticz :
voici l’interrupteur :

Image
Image

mais cela ne fonctionne toujours pas, je commence à me demander si le matériel que j'utilise (prise home confort YC-4000B) est compatible avec domoticz ou c'est un réglage de interrupteur à affiner peut-être ?

Re: Scripts PHP dans domoticz

Publié : 06 juil. 2017, 13:30
par vil1driver
Normal car tu n'appelles pas php..

Crée plutôt un petit lua de type device qui va donc se lancer lorsque tu presseras ton switch et qui executera ta commande..

Code : Tout sélectionner

os.execute('php /chemin/vers/le/script/codesend.php') 

Re: Scripts PHP dans domoticz

Publié : 06 juil. 2017, 16:29
par mike913
Bonjour,

Après vérification j' ai réussi à lancer le script php suivant dans le répertoire: /home/pi/domoticz/scripts/php/test.php

Code : Tout sélectionner

#!/usr/bin/php
<?php
$user = system('whoami' , $retval);
echo $user;
$handle = fopen('User.txt', "w+");
fputs($handle , $user);
fclose($handle);
?>

il faut le rendre exécutable , puis dans domoticz: dans action on: entrer la commande: script:////home/pi/domoticz/scripts/php/test.php
avec 4 antislash.

dans les log j' obtient:

Code : Tout sélectionner

2017-07-06 16:16:27.307 User: Admin initiated a switch command (494/Test/On)
2017-07-06 16:16:27.333 (Virtuel) Lighting 1 (Test)
2017-07-06 16:16:27.544 Executing script: //home/pi/domoticz/scripts/php/test.ph
 
et je récupère bien le fichier /home/pi/domoticz/User.txt
qui contient: root

Re: Scripts PHP dans domoticz

Publié : 07 juil. 2017, 18:31
par florian54
vil1driver a écrit :Normal car tu n'appelles pas php..

Crée plutôt un petit lua de type device qui va donc se lancer lorsque tu presseras ton switch et qui executera ta commande..

Code : Tout sélectionner

os.execute('php /chemin/vers/le/script/codesend.php') 
J'ai bien essayé avec ton conseil mais domoticz veut absolument ces termes pour interrupteur ON/OFF => http:// ou https:// ou script://
Impossible de commencer avec un php...

Concernant le fichier lua, j'ai donc crée un fichier lua avec ta ligne de commande et j'ai placé dans mon fichier php un de mes code radio pour vérifier que le fichier lua lance bien le php pour allumer une lampe; cela fonctionne parfaitement ! Cependant comme intégrer ceci dans domoticz ?

Re: Scripts PHP dans domoticz

Publié : 07 juil. 2017, 18:34
par florian54
mike913 a écrit :Bonjour,

Après vérification j' ai réussi à lancer le script php suivant dans le répertoire: /home/pi/domoticz/scripts/php/test.php

Code : Tout sélectionner

#!/usr/bin/php
<?php
$user = system('whoami' , $retval);
echo $user;
$handle = fopen('User.txt', "w+");
fputs($handle , $user);
fclose($handle);
?>

il faut le rendre exécutable , puis dans domoticz: dans action on: entrer la commande: script:////home/pi/domoticz/scripts/php/test.php
avec 4 antislash.

dans les log j' obtient:

Code : Tout sélectionner

2017-07-06 16:16:27.307 User: Admin initiated a switch command (494/Test/On)
2017-07-06 16:16:27.333 (Virtuel) Lighting 1 (Test)
2017-07-06 16:16:27.544 Executing script: //home/pi/domoticz/scripts/php/test.ph
 
et je récupère bien le fichier /home/pi/domoticz/User.txt
qui contient: root
J'ai intégré dans mon php un de mes code radio pour essayer, si je lance mon php dans ma commande SSH, aucun souci la lampe s'allume par contre même ceci dans la ligne ON, rien ne se passe...

Code : Tout sélectionner

script:////home/pi/domoticz/scripts/php/codesend.php
Je me demande si ce n'est pas la définition de interrupteur qui pose problème. J'ai des prises Home Confort YC-4000B avez-vous une idée des réglages à inscrire dans domoticz lors de la création de l’interrupteur ?

Re: Scripts PHP dans domoticz

Publié : 07 juil. 2017, 19:30
par mike913
Bonjour,

et quand tu actionne ton interrupteur, qu'y a-t-il ensuite dans les logs ?

Re: Scripts PHP dans domoticz

Publié : 09 juil. 2017, 15:24
par florian54
Salut voici ce que j'obtiens mais ma prise ne s'active pas... :

Code : Tout sélectionner

 2017-07-09 13:22:48.587 User: Florian-PI initiated a switch command (1/LED Buffet/On)
2017-07-09 13:22:48.588 (LED Buffet) Lighting 1 (LED Buffet)
2017-07-09 13:22:49.552 Executing script: //home/pi/domoticz/scripts/php/codesend.php 

Re: Scripts PHP dans domoticz

Publié : 09 juil. 2017, 15:30
par mike913
Donc le script s'exécute, il serait intéressant d'avoir le listing du script.