Bonjour,
Cherchant à écrire des scénarios génériques pour tous mes équipements similaires (thermostats de radiateur à eau), je me suis porté rapidement à devoir écrire en PHP des scripts dans mes scénarios. J’ai pas mal perdu de temps à fouiner un peu partout et ce à quoi je suis arrivé peut faciliter le travail des débutants comme moi qui se poseraient les mêmes questions.
En l’occurence il s’agit essentiellement de manipuler les noms d’objets, d’équipements et de commande en PHP.
Voici donc par quoi je commence systématiquement mes blocs « code » pour un scénario applicable à différents déclencheurs sans se payer une bardée de lignes avec des « si xxxx== yyyy » :
//nom de la commande déclencheuse
$t_cmde=cmd::cmdToHumanReadable($scenario-getRealTrigger());
//extraction des noms utiles
$objet=strtok($t_cmde,"#[]");
$equipmt=strtok("#[]");
$cmde=strtok("#[]");
On peut ainsi facilement créer un nom de commande complet en réassemblant les morceaux utiles, par exemple :
$cmde_dest = "#[Thermostats][".$equipmt."][Commande Consigne Chauffe]#";
Qu’on peut exploiter facilement en appliquant par exemple pour récupérer la valeur d’une commande.
$valeur = cmd::byString($cmde_dest)->execCmd();
ou écrire une valeur par :
cmd::byString($cmde_dest)->event(($valeur));
Et pour asservir un slider à une valeur donnée (celle là m’a donné pas mal de fil à retordre) et c’est en l’occurrence pour contrôler la consigne de température de mes thermostats :
$cmd_array=array('slider' => $valeur);
cmd::byString($dest_apply)->execCmd($options=$cmd_array, $cache=0);
Voilà c’est toute ma science pour l’instant, mais ça peut en aider d’autres! Désolé si ça vous parait très/trop basique…
Si ça n’est pas clair merci me le signaler!
Je suis bien sûr preneur de toute « astuce » du même genre!