Mon tout premier Script

Pour ceux qui veulent commencer les plugins, il faut déjà commencer par les scripts, et pour commencer les scripts, il faut accéder au PHP, et pour accéder au PHP, il faut un déclencheur, savoir ou commencer, et pas se contenter des didacticiels généralistes avec leurs "hello world" qui nous embrouillent très vite en commençant par des choses qui ne servent à rien

Il faut donc se faire guider avec un exemple qui serait le plus simple des programmes, alors, à ce moment, ça va se faire tout seul, en essayant d'aller plus loin, en se servant d'un bac à sable chaque fois qu'on ne comprend pas et en allant chercher les didacticiels vu plus haut qui enfin vont nous "parler": on va mettre le pied dans l'étrier en quelque sorte.

Comment commencer ?

Wooo Wooo Wooo ! c'est bien gentil ça, mais si on écrit un script, on ne va même pas savoir comment le tester, ni savoir comment le mettre en place dans l'Eedomus ! donc on va voir ça dans l'ordre ainsi que de savoir à quoi il va bien pouvoir servir ! Alors on va être ambitieux, on va aller faire un super script qui... donne l'heure ! on va apprendre ensuite à s'en servir pour créer un capteur qui... donne l'heure. On a promis 2 lignes, si vous êtes curieux, les voila vous pouvez vous contenter de les recopier, mais si vous voulez savoir ce que sont ces signes bizarres en rouge, ces points-virgules, ce echo, ces points entre ces date() etc. maintenant, commençons

Principe

Il faut comprendre comment on fait, c'est tout, n'oubliez pas le principe : pied à l'étrier !

Que doit faire le script ?

afficher l'heure, au format 24h, sous la forme hh:mm:ss elle sera renvoyée dans un XML qui pourra être interrogé par un XPath dans un capteur qui pourra ainsi l'afficher.

Môman, c'est quoi le format XML ?

On va faire simple ! c'est un format, qui permet de se faire interroger par une commande XPath (oui, oui, on en parle juste après), pour extraire facilement une donnée, il est constitué comme suit:
(BALISE) - DONNEE - (FIN BALISE)
il ya une structure a respecter : les balises sont entre les signes plus petit < et plus grand > et la fin est représentée par un slash / , cela donne donc :
<balise>donnée</balise>
Il peut être encadré par une super balise qui en regroupe d'autres
<super_balise><balise1>donnée1</balise1><balise2>donnée2</balise2></super_balise>
on peut mettre des retour lignes pour que ce soit plus clair.
<super_balise>
<balise1>donnée1</balise1>
<balise2>donnée2</balise2>
</super_balise>
On peut mettre autant de balises, de super balises, de super super balises que l'on veut, c'est le principe.
Attendez attendez, ce serait trop simple: il y a aussi des limitations, sinon, ça ne fonctionnera pas : il ne peut pas y avoir d'espaces, pas de noms commençant par un chiffre, des caractères sont interdits... voir ici : rien que des choses pour nous embêter et c'est pour cette raison que les scripts sont indispensables :
C'est la base de tous les scripts pratiquement : créer un XML à partir d'un HTML afin de le rendre exploitable par des demandes XPath
Mais pour l'instant, on ne va pas aller si loin, on va s'arrêter la, puisqu'ici on ne part même pas d'un HTML, on n'a besoin que d'une balise, qui ne comporte qu'un seul mot, alors voyons plutôt comment ça doit se présenter:
<heure>12:34:56</heure>
on retient bien cela pour comprendre pourquoi ensuite, on ne se contentera pas d'afficher une variable !

Et le Xpath ?

Le Xpath c'est le language d'interrogation du XML, il suffit... de donner la balise !
avec une petite règle quand même : on sépare les balises dans l'ordre par un slash / quand il peut y avoir confusion et qu'il existe des super balises, et on peut sauter directment à la balise voulue par deux slash // si la balise est unique ! chance ! ici c'est le cas, il n'y en à qu'une ! l'interrogation devient avec l'exemple ci-dessus :
//heure

Bon ! On commence quand ?

Ben maintenant, maintenant qu'on a tout, yapuka, on va attaquer le script, donc les bases du PHP, et on va avancer peu à peu, pour ça on va jouer dans le bac à sable, pour voir illico ce que donnent nos délires !

Le Bac à sable

On va voir dans "trucs et astuces" s'il n'est pas mentionné : et oui, il est la. On peut virer tout ce qu'il y a dans la fenêtre, sauf bien entendu la balise indiquant qu'il s'agit de php, mais on va tout de suite lui rajouter la balise de fin, comme indiqué dans "trucs et astuces" et on commence de suite ! ... par la fin
On remarque tout de suite le "Execute Code" : on cliquera dessus pour lancer notre script, quand il y 'en aura un minimum qui puisse afficher quelque chose, pour l'instant rien, mais au moins on n'a pas de message d'erreur.

Elements du langage

Ho la, on s'affole pas, on ne va voir que 4 choses !

1- Le PHP, on vient de le voir, commence toujours par ... un identificateur PHP, qui est, <? ou mieux <?php et se termine toujours par ?> on écrit donc ces 2 balises et on laisse un grand blanc entre
<?php


?>
2- Les commentaires
et pour vous y retrouver, mettez en ! se signalent par un double slash // et tout ce qui suit est un commentaire jusqu'à la fin de la ligne, on peut les mettre après un code ! voir aussi dans "trucs et astuces"
<?php
// c'est mon commentaire
?>

3- On termine TOUJOURS un code par un point-virgule (voir ici), c'est comme ça, cherchez pas ! sauf éventuellement avec les accolades et les crochets, mais en fait, ils font parti du code qui peut s'étaler sur plusieurs lignes.

<?php
echo "Hello World";
// ah m... ! j'avais dit que je ne la ferai pas celle la !
?>
ça y est vous pouvez commencer à taper sur Exécuter le Code maintenant !

4- Les variables commencent toujours par un dollar $

<?php
$montexte = "Hello World";
echo $montexte;

?>
5- ...
- comment ça 5 ? t'avais dit 4 !
- oui mais tu vois j'avais mis "echo" dans le code alors...
- alors rien du tout ! tu nous a berné !
- bon d'accord, de toute façon on démarre tout de suite le programme en fait, donc on ne va pas le faire ici, on va démarrer dans le chapitre suivant.

C'est parti !

La commande d'affichage : echo

On va commencer par la fin, avec la commande echo : c'est une commande d'affichage, quand vous avez cliqué "Exécuter le Code", vous avez vu s'afficher ce qu'il ya après echo, que ce soit un texte, délimité par des guillemets à l'anglaise, soit double " soit simple ' attention, il ne doit pas y avoir de délimiteur dans le texte, sinon, cela va signer la fin du texte, si vous voulez les y inclure, il faut les "échapper" avec un antislash \" ou \' selon. Dans un texte en général, on va trouver pas mal d'apostrophes, donc on va préférer les guillemets "double quote"; on donne quand même un exemple ici, bien que cela ne nous servira pas puisque notre texte sera récupéré directement dans une variable !
<?php
$montexte = "ceci est un guillemet: \"";
echo $montexte;

?>
- Bah oui, mais c'est encore un exemple, quand c'est qu'on commence ?
- Maintenant : quand on va envoyer le XML, on va l'envoyer simplement avec la commande echo ! c'est pour cela que - j'ai dit qu'on commençait par la fin ! donc on suppose qu'on a pu écrire notre heure formatée dans une variable, et surtout on n'oublie pas les balises, comme on en a parlé au début de ce didacticiel !
Mais avant, on jette un oeil dans trucs et astuces sur la concaténation pour savoir justement comment écrire les balises qui encadrent notre variable.
cela donne...
<?php
$heure = ?????
echo "<heure>" . $heure . "</heure>";
?>
- Hein ? ça commence déjà à ressembler à quelque chose non ?
- heu... c'est quoi ce "?????"
- Ben cool, on va la définir ton heure, ça arrive de suite.

La Suite ! La Suite !!!

La suite, c'est comment on définit l'heure, ça tombe bien, c'est dans les "trucs et astuces"

Ben voila, on l'a notre code ! et donc, si on l'insère on obtient le final... tadaaaaaa...
<?php
$heure = date('H') . ":" . date('i') . ":" . date('s');
echo "<heure>" . $heure . "</heure>";
?>
Si vous êtes venu ici par curiosité, on revient à "Comment Commencer"

Principe: on attribue à la variable $heure des instructions date() qui sont concaténées (.) avec des "deux points" : et dont les paramètres qui sont expliqués dans les renvois de lien de "trucs et astuces" sont l'heure sur 24h et sur 2 chiffres (H), les minutes sur 2 chiffres (i) et les secondes sur 2 chiffres (s).
"et voila comment votre fille est muette"

- tout ça pour ça ?
- tout ça pour ça
- y avait pas besoin de tout ce charabia pour en arriver la
- ça te semble simple ?
- bah oui, mais qu'est-ce qu'on en fait maintenant ?
- déjà si ça te semble simple, c'est que tu as mis le pied à l'étrier !
ensuite, on va voir ce qu'on en fait de ce script, le but c'est de faire un capteur à mettre dans une pièce ? allons-y, il faut:

Enregistrer le script

Il vous faut un vrai éditeur, la, maintenant, on va vers le vif du sujet et il faut que ça se présente immédiatement de manière claire ! Je conseille Notepad ++ c'est libre, gratuit, et ça va vous mettre en forme selon le langage, ici PHP, vous y ajouterez des indentations dans le code pour le rendre plus clair (avec tabulation, vous pouvez tabuler par bloc dans ce logiciel).
Donc la première des chose à faire, une fois lancé Notepad ++, c'est d'y copier le code dans un "nouveau document", il va être reconnu immédiatement comme PHP puisqu'il y a les balises PHP dans votre code, vous vous souvenez ?
Immédiatement, et une fois pour toute, vous allez ouvrir le menu "encodage" et cliquer "convertir en ANSI", si vous ouvez à nouveau ce menu, ANSI sera coché, c'est bon, vous pouvez à présent "enregistrer sous", puisque c'est la première fois et vous lui donnez un nom du genre : heure.php - ensuite vous pouvez l'associer à Notepad ++ mais sachez que de toute manière, avec le bouton droit, dans le menu contextuel, vous aurez l'option d'ouverture Notepad++ avec tout ce que vous voudrez, y compris votre précieux php !

Upload sur Eedomus

Vous pouvez vous référez à la page Eedomus concernée, ou à ce didacticiel si vous n'êtes pas physiquement présent à côté de votre box

Créer un HTTP-Capteur

Configuration / Ajouter un périphérique / Ajouter un autre type de périphérique / Réseau / HTTP-Capteur

Faites créer

Configuration de l'HTTP-Capteur

puis dans la fenêtre de configuration, indiquez principalement 2 choses:

Vous configurerez évidemment le type de donnée à "texte", Usage à "autre indicateur", choisissez la pièce et pour la fréquence d'acquisition ... paratras, vous n'avez le choix que de la minute, et heureusement, sinon, votre Eedomus ne ferait que cela au détriment de ses fonctions principales.
=> On n'oublie pas que ce script n'a pas vocation a être utilisé tel quel, il ne s'agit que de mettre le pied à l'étrier ! donc on regarde si tout fonctionne bien, c'est à dire qu'on a une mise à l'heure toutes les minutes, puis on va le supprimer ! mais on n'aura pas fait cela pour rien, si dans un script on a besoin d'afficher l'heure (une heure d'appel au script par exemple), eh bien maintenant on en connait le code.

Et comment on fait un plugin ?

Dans un autre didacticiel de la série 'pied à l'étrier'.