Modification du script "Horloge"

Après avoir réalisé le script minimaliste heure.php, nous allons maintenant modifier un script équivalent qui se trouve sur le store : Horloge
Il faudra donc d'abord télécharger son plugin: aller dans le store et une fois cliqué dessus, vous avez sa description, et à côté du petit nuage, le lien pour télécharger le zip. Dans le zip, vous allez extraire horloge.php que vous pourrez ouvrir dans Notepad++

Différences

Pour voir la différence (plutôt que "les"), nous allons tout d'abord supprimer les parties du code non nécessaire, ce script est le suivant, et en grisé ce que nous allons supprimer :
<?php
/*******************************************************************
* // Developpeur : eedomusbox pour forum.eedomus.com
* // Version : 1.0
* // Objectif : Récupérer l'heure
*******************************************************************/
echo "<root>\n";

echo "<time>\n";
echo "<heure>" . date('G') . date('i') . "</heure>\n";
echo "</time>\n";
echo "</root>\n";

?>
On a donc supprimé les commentaires, la super-balise "root" non nécessaire, nous avons déjà une super-balise "time", plus le retour ligne \n à la fin du code qui ne sert à rien: Il nous reste donc :
<?php
echo "<time>\n";
echo "<heure>" . date('G') . date('i') . "</heure>\n";
echo "</time>";

?>
Attention, pour la suite cela change le XPath qui dans le plugin est complet et tient compte de la balise <root>, si vous remplacez le script d'origine, il faudra soit réintégrer les balises <root> d'origine, soit changer le XPath :
/time/heure
ou mieux, puisque la balise est solitaire dans le XML généré :
//heure
(la double barre saute directement à la première balise de ce nom)

Vous reconnaissez la structure ? Il s'agit presque exactement du même code que notre script heure.php, à ceci près qu'il n'utilise pas de variable pour écrire directement les fonctions date() dans la commande echo.
De plus un paramètre de la fonction date() change : G, si on va dans la référence à cette fonction, on y apprend qu'elle donne l'heure, au format 24h, sans les zéros initiaux. Le deuxièmùe paramètre, nous le connaissons déjà, il s'agit des minutes sur 2 chiffres, il n'y a pas de caractère ou de texte entre les 2 données, donc elles s'écrivent comme un nombre, par exemple 7h21 = 721, 15h43 = 1543, cela peut être utilise dans des règles puisque l'heure devient un nombre de 0 à 2359.

On pourrait donc l'écrire sur 2 lignes, de la même amnière que notre heure.php (on va maintenant oublier les tags <?php et ?>, vous les connaissez maintenant), mais comme on a une super-balise, on va rester sur 3 lignes pour plus de clarté, par contre, on définit la variable $heure (on n'oublie pas les retours ligne \n pour la présentation de notre XML) :

$heure = date('G') . date('i');
echo "<time>\n";
echo "<heure>" . $heure . "</heure>\n";
echo "</time>";

But de la manoeuvre

Rassembler les deux codes en un seul pour interroger ou l'un ou l'autre formatage de l'heure, on va réaliser cela simplement en "mixant" les deux codes, mais il va falloir attribuer une variable différente à chaque présentation de l'heure, on va donc remplacer le mot heure par horloge, non pas dans horloge.php, puisque le script, qui est antérieur, qui fait parti d'un plugin, va créer un XML avec le tag <heure>, donc autant que ce soit lui qui conserve la variable $heure : on reprend notre script heure.php, on remplace heure par horloge et cela donne donc une fois rassemblé et réarrangés les 2 codes en un seul (on n'oublie pas les retours ligne \n pour la présentation de notre XML) :
$heure = date('G') . date('i');
$horloge = date('H') . ":" . date('i') . ":" . date('s');
echo "<time>\n";
echo "<heure>" . $heure . "</heure>\n";
echo "<horloge>" . $horloge . "</horloge>\n";
echo "</time>";

XML

Le XML généré sera (les heures sont des exemples) :
<time>
<heure>723</heure>
<horloge>07:23:18</horloge>
</time>

Appels

Si vous remplacez le script d'origine par celui-ci, rappelez vous que le XPath devra être changé par //heure, SAUF si vous réintégrez les balises <root> et </root> dans le code pour encadrer les balises <time> et </time> : un bon exercice pour contrôler votre maîtrise, dans le bac à sable vous verrez si le résultat est correct.
Si vous voulez afficher l'heure sous la forme hh:mm:ss alors il suffira d'indiquer dans le XPath :
//horloge

et si je veux les deux ?

Vous dupliquez (commande dans la configuration du périphérique) horloge puis pour le nouveau, vous lui changez son nom et son XPath, c'est tout.

et si je veux éditer le plugin ?

Je vous le déconseille parceque si tous ceux qui lisent cette petite aide le font, cela serait la foire d'empoigne, mais sachez, si l'auteur est d'accord, que vous pouvez le faire à deux conditions :
  1. Editer le Json pour permettre les deux installations
  2. Ajouter une aide (autre didacticiel, ici) pour expliquer que le plugin a maintenant deux données appelées par 2 XPath différents.