Forum eedomus
http://forum.eedomus.fr/

Librairie d'émulation eedomus pour developpeurs de scripts
http://forum.eedomus.fr/viewtopic.php?f=50&t=8613
Page 1 sur 1
Auteur:  Havok [ 13 Juin 2019 10:40 ]
Sujet du message:  Librairie d'émulation eedomus pour developpeurs de scripts

Bonjour amis developpeurs,

Mes developpements sont souvent fait hors de chez moi (donc loin de ma eedomus). Je teste donc mes scripts sur un serveur "standard". Ce qui me pose quelques soucis pour le remplacement des fonctions "standards" de php par les fonctions "maison" (genre getArg ou httpQuery).

Mon idée est d'utiliser une librairie qui emule les fonctions spécifiques eedomus afin de construire le fonctionnement global, l'algorythme, etc... sur n'importe quel serveur web.
Ensuite, quand cela fonctionne je paufine et je test en étant à la maison.

Cette solution à plusieurs avantages :
- Pas besoin d'être physiquement sur le reseau de la box (on garde la sécurité qui oblige à être sur le réseau de la box pour upload un script)
- Ca permet de faire les test ailleurs que sur ca box (j'avoue que j'ai pas envie de tout planter avec mes scripts pas finis)

J'ai donc commencé à créé une librairie qui émule ces fonctions (et qui peuvent servir dans des projets standards).
Si vous êtes interessés je vous invite donc à participer au développement de celle-ci directement sur github :
https://github.com/aussitot/eedomus.emulation.lib

Pour l'instant les fonctions supportées :
Code : Tout sélectionner
function httpQuery($url, $action = 'GET'/*GET,POST,PUT,DELETE*/, $post = NULL, $oauth_token = NULL, $headers = NULL, $use_cookies = false, $ignore_errors = false, &$info = null)

function sdk_json_decode($json)

function getArg($var, $mandatory = true, $default = ' ')

function saveVariable($variable_name, $variable_content)

function loadVariable($variable_name)

function jsonToXML($json)

function getValue($periph_id /*Code API*/, $value_text = false)

function xpath($xml, $path)
Auteur:  Havok [ 26 Juin 2019 10:22 ]
Sujet du message:  Re: Librairie d'émulation eedomus pour developpeurs de scrip

Ajout de la fonction xpath($xml, $path)
Auteur:  eedomusbox [ 26 Juin 2019 15:40 ]
Sujet du message:  Re: Librairie d'émulation eedomus pour developpeurs de scrip

Très bonne idée
Comment tu sais ce que font exactement ces fonctions?
Auteur:  Havok [ 27 Juin 2019 08:13 ]
Sujet du message:  Re: Librairie d'émulation eedomus pour developpeurs de scrip

Je sais ce qu'elles doivent faire (c'est dans la doc des scripts eedomus). Par contre je ne sais pas comment elles le font donc je recrée la fonction pour qu'elle fasse à priori ce qui est prévu.

L'avantage c'est aussi que la librairie peut servir dans d'autres projets classiques. Le httpQuery est par exemple bien utile pour ne pas avoir à jouer avec le curl, le jsonToXML, saveVariable etc...
Auteur:  merguez07 [ 08 Mai 2020 08:55 ]
Sujet du message:  Re: Librairie d'émulation eedomus pour developpeurs de scrip

thrymartin a écrit:Excellent, j'ai mis ton lien dans mes trucs et astuces, par contre si je puis me permettre, getArg n'est prévu que pour une seule variable, en rajoutant juste des conditionnels sur $var et en complétant avec le nom de la variable et sa valeur, on a les 1, 2 ou 3 GetArg...


Salut thrymartin,
je n'ai pas compris ta remarque ni le but de ton code. En effet getArg peut être utilisé avec plusieurs variables. Il te suffit d'utiliser un séparateur entre chaque variable et d'utiliser un explode pour les séparer dans le code.
Auteur:  merguez07 [ 08 Mai 2020 19:14 ]
Sujet du message:  Re: Librairie d'émulation eedomus pour developpeurs de scrip

Effectivement.
je me recouche :D
Auteur:  Havok [ 08 Mai 2020 19:27 ]
Sujet du message:  Re: Librairie d'émulation eedomus pour developpeurs de scrip

@thrymartin si effectivement la fonction eedomus fonctionne ainsi alors n’hesite pas à changer le code, il est disponible sur github et à le soumettre, je le validerai.
Auteur:  Havok [ 11 Mai 2020 11:18 ]
Sujet du message:  Re: Librairie d'émulation eedomus pour developpeurs de scrip

Salut,

Bon en fait je ne comprends pas trop.
La fonction getArg est l'équivalent php de $_GET[$var]
donc si tu veux récupérer les variables de
Code : Tout sélectionner
http://localhost/script/?exec=plugin.php&var1=[VAR1]&var2=[VAR2]&var3=[VAR3]


Tu fais
Code : Tout sélectionner
$var1 = getArg("var1");
$var2 = getArg("var2");
$var3 = getArg("var3");


getArg('eedomus_controller_module_id') n'est pas géré mais avec ta modification non plus.
Je ne comprends pas bien tes modifications à vrai dire :)
Auteur:  Havok [ 12 Mai 2020 10:32 ]
Sujet du message:  Re: Librairie d'émulation eedomus pour developpeurs de scrip

Oula faut se calmer mon garçon....

Je suis désolé je ne comprends vraiment pas ton problème. Peut-être que je me trompe, si quelqu'un veut me l'expliquer de manière plus sympathique :D

Je recommence :

J'ai par exemple
Code : Tout sélectionner
http://localhost/script/?exec=plugin.php&tata=25&toto=50&titi=100


Si Tu appelles 3 fois la fonction getArg avec le bon argument :
Code : Tout sélectionner
$tata = getArg("tata");
$toto = getArg("toto");
$titi = getArg("titi");


Et bien tu te retrouve avec $tata=25, $toto=50 et $titi=100.
Donc tu récupère bien tes 3 variables. Je ne vois pas ou est le problème.

Moi je ne comprends pas ce code....
@merguez07 ou un autre si tu vous pouvez m'expliquer :D

Code : Tout sélectionner
// http://localhost/script/?exec=plugin.php&var1=[VAR1]&var2=[VAR2]&var1=[VAR3]
function getArg($var, $mandatory = true, $default = ' ') {
   if ($var=="var1")                     {  $return = "valeur1";}
   if ($var=="var2")                     {  $return = "valeur2";}
   if ($var=="var3")                     {  $return = "valeur3";}
   if ($var=="eedomus_controller_module_id")   {  $return = 1234567;}
if (isset($_GET[$var])) $return = $_GET[$var];
return $return;
}
Auteur:  merguez07 [ 12 Mai 2020 10:45 ]
Sujet du message:  Re: Librairie d'émulation eedomus pour developpeurs de scrip

perso j'ai pas non plus vraiment compris la réponse de Thierry, ni pourquoi il semble s'emporter (ils ont le sang chaud à la réunion :D )
Auteur:  merguez07 [ 12 Mai 2020 12:56 ]
Sujet du message:  Re: Librairie d'émulation eedomus pour developpeurs de scrip

En fait perso j'utilise parfois phptester pour tester des brins de code mais je n'ai jamais eu vraiment besoin d'une emulation complète car ma box est toujours à proximité.

Ce que j'ai du mal à comprendre dans ton explication thierry ( car le code je l'ai parfaitement compris) c'est en fait, pourquoi tu veux émuler le getArg . On est d'accord le GetArg sert à faire passer des informations entre la requête et le code PHP. Or, sauf erreur de ma part on ne peut faire de requête sur un bac à sable (c'est peut être là où je me trompe).

Donc si je dois emuler la transmission de ma requête &var1=1&var2=2&var3=3 je vais pas utiliser getArg mais mettre directement dans mon code php

$var1=1;
$var2=2;
$var3=3;

c'est là ou je bloque dans ton explication. Il est possible, que je sois, une nouvelle fois, complètement à la ramasse, mais STP Thierry, keep cool :D
Auteur:  Havok [ 12 Mai 2020 13:15 ]
Sujet du message:  Re: Librairie d'émulation eedomus pour developpeurs de scrip

Oui j'ai compris. Effectivement sur son bac à sable on ne peut pas passer de requête avec des arguments. Donc il rajoute, en dur, dans la fonction un renvoi des valeurs. Ainsi son code qui fait appel à getArg pourra être mis sur la eedomus sans changement.

A chaque nouveau programme il faut modifier le code de getArg pour renvoyer les bonnes valeurs. Ce qui n'est pas le principe d'une librairie que tu ajoutes à ton projet. Ca doit être transparent.

Bref cette librairie n'est absolument pas faite pour un bac à sable mais pour un serveur web tout à fait normal. Donc tu peux effectivement la modifier pour tes besoins propres mais je ne peux pas valider cette modification.
Page 1 sur 1 Le fuseau horaire est UTC+1 heure