[HOW TO] Création de plugin
Re: [HOW TO] Création de plugin
Bonjour,
ZygOm4t1k, Merci encore pour les 'mis a jour'. CORN est la fonction exactement Je voudrais implement pour mon plugin!
Mais, common puis je faire si j'ai un button et je souhaite le command dans mon plugin sera exécuté automatiquement quand je pousse sur le bouton?
Le button est piloté par un script python (deamon).
ZygOm4t1k, Merci encore pour les 'mis a jour'. CORN est la fonction exactement Je voudrais implement pour mon plugin!
Mais, common puis je faire si j'ai un button et je souhaite le command dans mon plugin sera exécuté automatiquement quand je pousse sur le bouton?
Le button est piloté par un script python (deamon).
Re: [HOW TO] Création de plugin
Pas compris?
Un bouton?
Un bouton?
Re: [HOW TO] Création de plugin
Les paramètres. Les options
C’est un chapitre important et il faut le comprendre avant de passer à la suite.
Pour le moment, nous avons donc utiliser 3 classes du core de jeedom : EqLogic, cmd , cron . Aller pour info , On en ajoute une 4eme avec la class plugin dans le fichier desktop.php que vous ouvrez et laissez ouvert car on va l’éditer .
Il faut comprendre que tout est fait pour nous faciliter la tâche.
Pour un paramètre/une option interne au plugin , on va utiliser une des méthodes de la class eqLogic du core : setConfiguration() en y ajoutant les paramètres que l’on souhaite. Par exemple :
Pour laisser le choix à l’utilisateur , on retourne sur le fichier desktop.php que vous avez laissé ouvert car vous suivez ce TP au pied de la lettre
Chercher
Et remplacer par
Enregistrer et aller sur un équipement du plugin que vous avez déjà créé en suivant ce TP (Rafraichir si besoin).
Dans le champs « Paramètre» d’un équipement, taper « aleatoire » et sauvegarder.
Parfait le paramètre est sauvegardé.
C’est simple,non? .C’est pourquoi il ne faut surtout pas toucher à cette ligne de code comme indiqué dans le premier menu « test » . C’est lui qui fait tout le travail
Si vous regardez de plus près le fichier desktop.php il y a
Etc…
Si vous avez bien assimilé tout ça on va pouvoir passer à la suite. Mais avant on va changer dans le fichier desktop.php
Par
Important : Le texte entre accolades correspond au texte qui sera traduit si vous poussez le plugin sur le market
Pour la suite , on va faire évoluer le plugin en choisissant un type de vdm(aleatoire ou epicees ou tops) que l'on souhaite ainsi qu'un cron personnalisé pour chaque équipement.
C’est un chapitre important et il faut le comprendre avant de passer à la suite.
Pour le moment, nous avons donc utiliser 3 classes du core de jeedom : EqLogic, cmd , cron . Aller pour info , On en ajoute une 4eme avec la class plugin dans le fichier desktop.php que vous ouvrez et laissez ouvert car on va l’éditer .
Code : Tout sélectionner
$plugin = plugin::byId('vdm'); // appelle la classe plugin du core
Pour un paramètre/une option interne au plugin , on va utiliser une des méthodes de la class eqLogic du core : setConfiguration() en y ajoutant les paramètres que l’on souhaite. Par exemple :
Code : Tout sélectionner
$this->setConfiguration("type","mon_type"); // si on veut définir un paramètre type de valeur mon_type. Comme on a défini la largeur du widget via la méthode setDisplay()
Chercher
Code : Tout sélectionner
<input type="text" class="eqLogicAttr form-control" data-l1key="configuration" data-l2key="city" placeholder="param1"/>
Code : Tout sélectionner
<input type="text" class="eqLogicAttr form-control" data-l1key="configuration" data-l2key="type" placeholder="option"/> //Important de laisser la classe eqLogicAttr
Dans le champs « Paramètre» d’un équipement, taper « aleatoire » et sauvegarder.
Parfait le paramètre est sauvegardé.
C’est simple,non? .C’est pourquoi il ne faut surtout pas toucher à cette ligne de code comme indiqué dans le premier menu « test » . C’est lui qui fait tout le travail
Code : Tout sélectionner
<?php include_file('core', 'plugin.template', 'js');?>//Chargement du fichier core/js/plugin.template.js (en partant de la racine du site)
Code : Tout sélectionner
<input type="text" class="eqLogicAttr form-control" data-l1key="id" style="display : none;" /> // retourne l’id(unique) de l’eqLogic(équipement) . Qu’on va pouvoir récupérer via $this->getId() ;
Code : Tout sélectionner
<input type="text" class="eqLogicAttr form-control" data-l1key="name" placeholder="{{Nom de l'équipement}}"/>// retourne le nom de l’eqLogic(équipement) . Qu’on va pouvoir récupérer via $this->getName() ;
Si vous avez bien assimilé tout ça on va pouvoir passer à la suite. Mais avant on va changer dans le fichier desktop.php
Code : Tout sélectionner
<label class="col-sm-3 control-label">{{Paramètre}}</label>
Code : Tout sélectionner
<label class="col-sm-3 control-label">{{Type de vdm}}</label>
Pour la suite , on va faire évoluer le plugin en choisissant un type de vdm(aleatoire ou epicees ou tops) que l'on souhaite ainsi qu'un cron personnalisé pour chaque équipement.
Re: [HOW TO] Création de plugin
Utilisation des options/paramétres
Pour aller plus loin et bien comprendre le chapitre précédent, on va laisser à l’utilisateur de choisir un type de vdm (aleatoire ou epicees ou tops)
On pourrait le laisser taper dans l’input « Type de vdm » : aleatoire ou epicees ou tops mais on va faire autrement en le laissant choisir via une balise select
Si vous avez tout suivi ,vous devriez avoir dans le fichier desktop.php
Qu’on va remplacer par
Ici le paramètre « type» prendra la valeur du select choisi soit aleatoire ou epicees ou tops.
Maintenant on va tenir compte de notre paramètre dans la fonction randomVdm() dans le fichier vdm.class.php
Chercher
Et remplacer par
Maintenant changer la valeur du select sur un équipement,sauvegarder et aller sur le dashboard pour voir ce que cela donne.
Pour aller plus loin et bien comprendre le chapitre précédent, on va laisser à l’utilisateur de choisir un type de vdm (aleatoire ou epicees ou tops)
On pourrait le laisser taper dans l’input « Type de vdm » : aleatoire ou epicees ou tops mais on va faire autrement en le laissant choisir via une balise select
Si vous avez tout suivi ,vous devriez avoir dans le fichier desktop.php
Code : Tout sélectionner
<div class="form-group">
<label class="col-sm-3 control-label">{{Type de vdm}}</label>
<div class="col-sm-3">
<input type="text" class="eqLogicAttr form-control" data-l1key="configuration" data-l2key="type" placeholder="option"/>
</div>
</div>
Code : Tout sélectionner
<div class="form-group">
<label class="col-sm-3 control-label" >{{ Type de vdm }}</label>
<div class="col-sm-3">
<select class="form-control eqLogicAttr" data-l1key="configuration" data-l2key="type ">
<option value="aleatoire">{{Aleatoire}}</option>
<option value="epicees">{{Coquin}}</option>
<option value="tops">{{Best}}</option>
</select>
</div>
</div>
Maintenant on va tenir compte de notre paramètre dans la fonction randomVdm() dans le fichier vdm.class.php
Chercher
Code : Tout sélectionner
$url = "http://www.viedemerde.fr/aleatoire";
Code : Tout sélectionner
$type = $this->getConfiguration("type ");
if($type == "") { //si le paramètre est vide ou n’existe pas
$type = "aleatoire"; //on prends le type aleatoire
}
$url = "http://www.viedemerde.fr/" .$type ;
Re: [HOW TO] Création de plugin
Merci pour response.
Oui, c'est un button physique qui est connecté en GPIO de RPi et piloté par un script Python.
Par example, quand Je pusse, le script indiquera qu'il y a un signal de déclenchement.
Je voudrais implement un plugin qui pout observer ce signal et appel un 'Command' qui Je poux configure en tant que paramètre..
Donc le problem est, pour le fonction corn, it fait 'check' ou 'execute' par un période specific(common 5, 10, 30 minute). Mais je voudrais un fonction qui pout réagir immédiatement quand le signal est envoyé par script python.
Re: [HOW TO] Création de plugin
Hello,
je m'accroche à ce sujet qui est tombé à pic, j'ai une idée que je voulais tester, pas simple pour un mec comme moi, mais je vais tenter, si je bloque, je sais à qui poser des questions
Merci pour la lecture actuelle et à venir
je m'accroche à ce sujet qui est tombé à pic, j'ai une idée que je voulais tester, pas simple pour un mec comme moi, mais je vais tenter, si je bloque, je sais à qui poser des questions
Merci pour la lecture actuelle et à venir
Re: [HOW TO] Création de plugin
Amélioration du widget
On va améliorer le widget car je suis d'accord qu'il est pas terrible pour le moment.
On est sur le widget par défaut. Même avec des lunettes ça pique !!
Le template ( de la commande/méthode postSave()) ne convient pas on va donc le changer par celui par défaut.
Ouvrir le fichier vdm.class.php et on fait les changements
Maintenant c'est la taille du widget de l'équipement (eqLogic/méthode preSave()) qui ne convient plus , on la change
Bien joli mais le nom de la commande apparaît sur le widget.
On laisse le choix à l'utilisateur donc il peut aller sur l'équipement/onglet Commandes . Il clique sur l'engrenage à droite de la commande "Histoire" et là il peut configurer si le nom(de la commande) est visible ou non sur le dashboard.
Bien beau tout ça , mais pas envie de laisser le choix à l'utilisateur car ça sert à rien et inutile. On va donc passer par le code pour cacher le nom de la commande.Dans le méthode postSave() de l'équipement on ajoute le code qui suit pour la commande "history"
ça veut dire que les commandes ont aussi une méthode setDisplay() ?? Suffit de vérifier sur la doc du core ==>
https://jeedom.github.io/documentation/ ... index.html
Pour s'exercer on va configurer pour que le nom de l'équipement (eqLogic) ne soit pas visible aussi. Et on va utiliser ... Le paramètre "showNameOndashboard" ( wouah le même que la commande) de la méthode setDisplay() de la classe Eqlogic
Méthode preSave() on ajoute:
Enregister les équipements pour obtenir sur le dashboard
Je reviendrai sur un autre post sur les paramètres et comment les retrouver
IMPORTANT
Attention , nous avons changer des paramètres natif au core . C'est à dire que si l'utilisateur veut changer les paramètres il ne pourra pas. Car à la sauvegarde ce sont les paramètres que nous avons défini qui écraseront ce qu'il a choisi. (postSave() et preSave())
On va améliorer le widget car je suis d'accord qu'il est pas terrible pour le moment.
On est sur le widget par défaut. Même avec des lunettes ça pique !!
Le template ( de la commande/méthode postSave()) ne convient pas on va donc le changer par celui par défaut.
Ouvrir le fichier vdm.class.php et on fait les changements
Code : Tout sélectionner
$info->setTemplate('dashboard','default'); // Pour la commande on change le template.Sauvegarder et regarder le rendu
Code : Tout sélectionner
$this->setDisplay("width","400px");// Sauvegarder et regarder le rendu
On laisse le choix à l'utilisateur donc il peut aller sur l'équipement/onglet Commandes . Il clique sur l'engrenage à droite de la commande "Histoire" et là il peut configurer si le nom(de la commande) est visible ou non sur le dashboard.
Bien beau tout ça , mais pas envie de laisser le choix à l'utilisateur car ça sert à rien et inutile. On va donc passer par le code pour cacher le nom de la commande.Dans le méthode postSave() de l'équipement on ajoute le code qui suit pour la commande "history"
Code : Tout sélectionner
$info->setDisplay("showNameOndashboard",0);// Sauvegarder et regarder le rendu.
ça veut dire que les commandes ont aussi une méthode setDisplay() ?? Suffit de vérifier sur la doc du core ==>
https://jeedom.github.io/documentation/ ... index.html
Pour s'exercer on va configurer pour que le nom de l'équipement (eqLogic) ne soit pas visible aussi. Et on va utiliser ... Le paramètre "showNameOndashboard" ( wouah le même que la commande) de la méthode setDisplay() de la classe Eqlogic
Méthode preSave() on ajoute:
Code : Tout sélectionner
$this->setDisplay("showNameOndashboard",0);//
Je reviendrai sur un autre post sur les paramètres et comment les retrouver
IMPORTANT
Attention , nous avons changer des paramètres natif au core . C'est à dire que si l'utilisateur veut changer les paramètres il ne pourra pas. Car à la sauvegarde ce sont les paramètres que nous avons défini qui écraseront ce qu'il a choisi. (postSave() et preSave())
Re: [HOW TO] Création de plugin
J'ai ajouté le lien pour télécharger les sources dans le premier post.
Le plugin en l'état est fonctionnel , vous pouvez l'essayer tel quel.
Le plugin en l'état est fonctionnel , vous pouvez l'essayer tel quel.
Re: [HOW TO] Création de plugin
Code : Tout sélectionner
$refresh = $this->getCmd(null, 'refresh');
if (!is_object($refresh)) {
$refresh = new vdmCmd();
$refresh->setName(__('Rafraichir', __FILE__));
}
$refresh->setEqLogic_id($this->getId());
$refresh->setLogicalId('refresh');
$refresh->setType('action');
$refresh->setSubType('other');
$refresh->save();
En d'autres termes, cet appel de fonction devrait avoir le même résultat en cliquant sur l'icône de 'refresh' sur le widget.
J'ai souhaité que je poux trover un description dans API https://jeedom.github.io/documentation/ ... ource-view, mais je n'ai pas réussi
Je me demande si je peux simplement faire cet appel comme suit:
Code : Tout sélectionner
cmd::byLogicalId('refresh').execute()
Re: [HOW TO] Création de plugin
Il faut montrer le code .
Ou est la fonction et comment tu l'appelles?
Mais Il faut retourner l'eqlogic (L'équipement)
Il faut regarder comment sont faits les autres plugins.
Ou est la fonction et comment tu l'appelles?
Mais Il faut retourner l'eqlogic (L'équipement)
Code : Tout sélectionner
$eq = .... //retourne l'eqlogic
$cmd = $eq->getCmd(null, 'refresh'); // recherche la commande avec logicalId "refresh" de l'eqLogic
if (is_object($cmd)) { //Si la commande existe
$cmd->exec(); // On l'execute
}
Re: [HOW TO] Création de plugin
Oui, j'ai fait common ça. Ça marche bien. Mais une nouvelle question se pose: quelle est la différence entre la méthode 'execute' et 'execCmd'?ZygOm4t1k a écrit : ↑01 juin 2018, 19:34Il faut montrer le code .
Ou est la fonction et comment tu l'appelles?
Mais Il faut retourner l'eqlogic (L'équipement)
Il faut regarder comment sont faits les autres plugins.Code : Tout sélectionner
$eq = .... //retourne l'eqlogic $cmd = $eq->getCmd(null, 'refresh'); // recherche la commande avec logicalId "refresh" de l'eqLogic if (is_object($cmd)) { //Si la commande existe $cmd->exec(); // On l'execute }
Et une autre question, si je veux lire une configuration d'un équipement dans un fichier JS, comment puis-je faire?
Par exemple, la lumière de l'équipement a une option de configuration «luminosité», je voudrais afficher cette valeur dans le fichier JavaScript.
En php, Je sais on pout appeler eq->getConfiguration('luminosité');.. Mais dans JavaScript, Je ne sais pas..
Merci d'avance pour votre response!
Re: [HOW TO] Création de plugin
Bonjour les amis,
Voila je me lance enfin dans la création d'un plugin, mais je sèche depuis trois jour sur les options de paramètre de mon plugin malgres que j'ai lu relu des tonnes de doc.
Dans mon fichier desktop.PHP
j'ais bien mis mes paramètres comme indiquer dans ce tuto , mais je n'arrive pas a récupérer l'info.
<div class="form-group">
<label class="col-sm-3 control-label">{{Ville}}</label>
<div class="col-sm-2">
<input type="text" class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='ville' placeholder="Ville"/>
</div>
Dans mon fichier Core/class/php
Ce qui devrais me donner dans mes logs le nom de la ville que j'aurais mis dans mon control
$ville = $this->getConfiguration("ville");
log::add('mto','Info',"je vais y arriver " . $ville);
Mais hellas mon log ce créer bien avec ma phrase, mais pas de nom de ville.
Si une personne pourrait me débloquer pour que je puisse continue mon codage ce serais sympa car la je bloque.
merci.
Voila je me lance enfin dans la création d'un plugin, mais je sèche depuis trois jour sur les options de paramètre de mon plugin malgres que j'ai lu relu des tonnes de doc.
Dans mon fichier desktop.PHP
j'ais bien mis mes paramètres comme indiquer dans ce tuto , mais je n'arrive pas a récupérer l'info.
<div class="form-group">
<label class="col-sm-3 control-label">{{Ville}}</label>
<div class="col-sm-2">
<input type="text" class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='ville' placeholder="Ville"/>
</div>
Dans mon fichier Core/class/php
Ce qui devrais me donner dans mes logs le nom de la ville que j'aurais mis dans mon control
$ville = $this->getConfiguration("ville");
log::add('mto','Info',"je vais y arriver " . $ville);
Mais hellas mon log ce créer bien avec ma phrase, mais pas de nom de ville.
Si une personne pourrait me débloquer pour que je puisse continue mon codage ce serais sympa car la je bloque.
merci.
- Pièces jointes
-
- Capture.PNG (366.24 Kio) Consulté 6135 fois
JEEDOMBOARD
Z-wave : FGS221,FGMS-001,WALL PLUG FGWPE-101,Aeon ZW080, TZ66S, FRGM222 ect ( 28 modules)
CM15pro : DS90, MS90, LM12, AM12W
http://location.cap.d.agde.free.fr
Z-wave : FGS221,FGMS-001,WALL PLUG FGWPE-101,Aeon ZW080, TZ66S, FRGM222 ect ( 28 modules)
CM15pro : DS90, MS90, LM12, AM12W
http://location.cap.d.agde.free.fr
Re: [HOW TO] Création de plugin
Punaise a force de chercher et encore chercher, c'est bon j'ai trouver tous seul.
JEEDOMBOARD
Z-wave : FGS221,FGMS-001,WALL PLUG FGWPE-101,Aeon ZW080, TZ66S, FRGM222 ect ( 28 modules)
CM15pro : DS90, MS90, LM12, AM12W
http://location.cap.d.agde.free.fr
Z-wave : FGS221,FGMS-001,WALL PLUG FGWPE-101,Aeon ZW080, TZ66S, FRGM222 ect ( 28 modules)
CM15pro : DS90, MS90, LM12, AM12W
http://location.cap.d.agde.free.fr
Re: [HOW TO] Création de plugin
mériterais largement de remplacer le tuto officiel !
Coin!
Thermostat lowcost MaxCube DataTransfert (upload vers cloud)
Développeur embarqué (rtos/drivers linux/c/xilinx/atmel/pic/arm/mips), système (linux,docker,qnx), scientifique (c++/python/mongodb), web (php/mysql), webservices (java/nodejs)
Thermostat lowcost MaxCube DataTransfert (upload vers cloud)
Développeur embarqué (rtos/drivers linux/c/xilinx/atmel/pic/arm/mips), système (linux,docker,qnx), scientifique (c++/python/mongodb), web (php/mysql), webservices (java/nodejs)
Re: [HOW TO] Création de plugin
Bonjour,
Merci pour ce tuto très intéressant.
Je pense avoir bien suivi et ça fonctionne bien jusqu'à ce que je passe au paragraphe "cronHourly ".
Après avoir intégré le code dans la fonction, j'ai une erreur à l'ouverture de l’équipement, "Type incorrect (classe équipement inexistante) : vdm".
Auriez vous une idée ?
Merci
Merci pour ce tuto très intéressant.
Je pense avoir bien suivi et ça fonctionne bien jusqu'à ce que je passe au paragraphe "cronHourly ".
Après avoir intégré le code dans la fonction, j'ai une erreur à l'ouverture de l’équipement, "Type incorrect (classe équipement inexistante) : vdm".
Auriez vous une idée ?
Merci
Re: [HOW TO] Création de plugin
Merci pour ce super tuto. Après une étape galère et disparition soudaine de l'interface jeedom lorsque j'ai mis le cron. Cela fonctionne et j'ai même réussi à ajouter une seconde ligne...
Grand merci
Sent from my Redmi Note 4 using Tapatalk
Grand merci
Sent from my Redmi Note 4 using Tapatalk
Re: [HOW TO] Création de plugin
Salut.
Pour la suite de ce how to je propose de créer un plugin qui créé une horloge analogique.
https://codehimblog.github.io/jquery-co ... log-clock/
Ce serait bien si on était plusieurs à mettre les mains dedans. Un plugin corpo quoi. @winhex je sais pas si t'es partant? D'autres utilisateurs?
On fera ensuite évoluer le plugin avec des objectifs précis:
- Essayer de customiser l'horloge au couleur de jeedom . S'il y a des pros du css , c'est nickel
- Ajouter au widget des informations récupérées dans jeedom (des commandes style température extérieure , ou d'autres idées , ). Ah la gestion des commandes!
- Créer une "alarme" qui permettra de lancer des actions/scénario à l'heure dite. Permettra de bien comprendre le système de cron (simplifié de base dans le core de jeedom)
L'id du plugin sera " anaclock".
Donc il faut commencer par la base.
avec
Nom : Horloge Analogique
Id : anaclock
==> viewtopic.php?f=27&t=37630#p621495
Une fois fait on intégrera la librairie pour créer le widget de base avec l'horloge
Pour la suite de ce how to je propose de créer un plugin qui créé une horloge analogique.
https://codehimblog.github.io/jquery-co ... log-clock/
Ce serait bien si on était plusieurs à mettre les mains dedans. Un plugin corpo quoi. @winhex je sais pas si t'es partant? D'autres utilisateurs?
On fera ensuite évoluer le plugin avec des objectifs précis:
- Essayer de customiser l'horloge au couleur de jeedom . S'il y a des pros du css , c'est nickel
- Ajouter au widget des informations récupérées dans jeedom (des commandes style température extérieure , ou d'autres idées , ). Ah la gestion des commandes!
- Créer une "alarme" qui permettra de lancer des actions/scénario à l'heure dite. Permettra de bien comprendre le système de cron (simplifié de base dans le core de jeedom)
L'id du plugin sera " anaclock".
Donc il faut commencer par la base.
avec
Nom : Horloge Analogique
Id : anaclock
==> viewtopic.php?f=27&t=37630#p621495
Une fois fait on intégrera la librairie pour créer le widget de base avec l'horloge
Re: [HOW TO] Création de plugin
Une fois que l'on a le plugin de base on l'ajoute au dossier plugins de jeedom et on l'active.
on va s'occuper de créer le widget avec l'horloge.
On commence donc par télécharger la librairie sur le site https://codehimblog.github.io/jquery-co ... log-clock/
On décompresse le fichier et on va ajouter les fichiers dans le dossier 3rparty du plugin.
J'ai choisi de renommer le dossier jquery-codehim-analog et je l'ajoute au dossier 3rparty.
Maintenant on va éditer le fichier core/class/anaclock.class.php
- On dé-commente la function toHtml (qui va permettre de visualiser notre widget) et on l'édite
- On ajoute la possibilité de personnaliser le widget
Voilà c'est tout . On enregistre le fichier.
Passons au template du widget.
On va dans core/template/dashboard et on renomme le fichier existant en eqlogic.html (eqlogic que vous retrouvez dans le return de la fonction tohtml éditée plus haut). Et on va l'éditer.
Enregistrer et aller sur le dashboard pour voir ce que cela donne.
Pas grand chose je suis d'accord Mais c'est un bon début.
Encore 2 minutes et c'est fini.
On va charger la librairie en éditant le fichier eqlogic.html , créer la div qui va recevoir l'horloge et le javascript qui permet tout ça
On enregistre le tout et on retourne sur le dashboard. Ok l'horloge dépasse mais on se met en mode modification en cliquant sur le crayon en haut à droite et on resize le widget.
Ce qui donne
Bien sûr si on va dans la configuration avancée/affichage on peut caché le nom , mettre la tuile en transparent , etc...
Voilà avec très peu de changement au niveau du plugin template on arrive déjà à faire ce qu'on veut.
Étonnant non?
on va s'occuper de créer le widget avec l'horloge.
On commence donc par télécharger la librairie sur le site https://codehimblog.github.io/jquery-co ... log-clock/
On décompresse le fichier et on va ajouter les fichiers dans le dossier 3rparty du plugin.
J'ai choisi de renommer le dossier jquery-codehim-analog et je l'ajoute au dossier 3rparty.
Maintenant on va éditer le fichier core/class/anaclock.class.php
- On dé-commente la function toHtml (qui va permettre de visualiser notre widget) et on l'édite
Code : Tout sélectionner
public function toHtml($_version = 'dashboard') {
$replace = $this->preToHtml($_version); //récupère les informations de notre équipement
if (!is_array($replace)) {
return $replace;
}
$this->emptyCacheWidget(); //vide le cache. Pratique pour le développement
$version = jeedom::versionAlias($_version);
return $this->postToHtml($_version, template_replace($replace, getTemplate('core', $version, 'eqlogic', 'anaclock')));// retourne notre template qui se nomme eqlogic pour le widget
}
Code : Tout sélectionner
class anaclock extends eqLogic {
/* * *************************Attributs****************************** */
public static $_widgetPossibility = array('custom' => true); // c'est cette ligne qu'il faut ajouter
Passons au template du widget.
On va dans core/template/dashboard et on renomme le fichier existant en eqlogic.html (eqlogic que vous retrouvez dans le return de la fonction tohtml éditée plus haut). Et on va l'éditer.
Code : Tout sélectionner
<div class="eqLogic eqLogic-widget allowResize allowReorderCmd " style="border:#border#;border-radius:#border-radius#;background-color: #background-color#;color: #color#;width: #width#;height: #height#;#style#" data-eqLogic_id="#id#" data-eqLogic_uid="#uid#" data-version="#version#" >
<center class="widget-name"><strong><a href="#eqLink#" style="font-size : 1.1em;#hideEqLogicName#">#name_display# <span style="font-size: 0.85em;position: relative;top:-2px;">#object_name#</span></a></strong></center>
</div>
Pas grand chose je suis d'accord Mais c'est un bon début.
Encore 2 minutes et c'est fini.
On va charger la librairie en éditant le fichier eqlogic.html , créer la div qui va recevoir l'horloge et le javascript qui permet tout ça
Code : Tout sélectionner
<div class="eqLogic eqLogic-widget allowResize allowReorderCmd " style="border:#border#;border-radius:#border-radius#;background-color: #background-color#;color: #color#;width: #width#;height: #height#;#style#" data-eqLogic_id="#id#" data-eqLogic_uid="#uid#" data-version="#version#" >
<!--on charge la librairie js et css-->
<link rel="stylesheet" href="plugins/anaclock/3rparty/jquery-codehim-analog/css/codehim-clock.css">
<script src='plugins/anaclock/3rparty/jquery-codehim-analog/js/jquery.codehim.clock.js'></script>
<!---->
<center class="widget-name"><strong><a href="#eqLink#" style="font-size : 1.1em;#hideEqLogicName#">#name_display# <span style="font-size: 0.85em;position: relative;top:-2px;">#object_name#</span></a></strong></center>
<!--on crée la div pour y ajouter l'horloge-->
<div id="clock-place_#id#"> </div>
<!----------------->
<!--Et on lance le script -->
<script>
$("#clock-place_#id#").CodehimClock();
</script>
<!------------------------------------------->
</div>
Ce qui donne
Bien sûr si on va dans la configuration avancée/affichage on peut caché le nom , mettre la tuile en transparent , etc...
Voilà avec très peu de changement au niveau du plugin template on arrive déjà à faire ce qu'on veut.
Étonnant non?
Dernière édition par ZygOm4t1k le 10 mars 2019, 23:28, édité 2 fois.
Re: [HOW TO] Création de plugin
Pour ceux qui veulent télécharger les sources , c'est ici ==> Version bétâ à jour et fonctionnelle
Pour ceux qui veulent installer et tester le plugin . C'est simple , aller dans gestion des plugins et cliquer sur le plus ensuite paramétrer les informations
Type de source : GIthub
Id logique: anaclock
utilisateur: Zyg0m4t1k
Nom du dépôt: anaclock
Branche: beta
Cliquer sur enregistrer. Activer le plugin et ajouter un équipement et tester.
Pour ceux qui veulent installer et tester le plugin . C'est simple , aller dans gestion des plugins et cliquer sur le plus ensuite paramétrer les informations
Type de source : GIthub
Id logique: anaclock
utilisateur: Zyg0m4t1k
Nom du dépôt: anaclock
Branche: beta
Cliquer sur enregistrer. Activer le plugin et ajouter un équipement et tester.
Re: [HOW TO] Création de plugin
Bonjour
j'ai un gros souci avec le Template
j'essaye, en vain de mettre à jour mes commands via CheckAndUpdateCmd comme dans le plugin mais rie na faire, ca plante, erreur 500 sans plus d'explication
je viens de reprendre le template from scratch et pareil, alors qu'il n'y a strictement rien de changé à par le nom
en testant avec :
// On récupère la commande 'data' appartenant à l'équipement
$dataCmd = $tutorielObj->getCmd('info', 'story');
// On lui ajoute un évènement avec pour information 'Données de test'
$dataCmd->event("youpi");
// On sauvegarde cet évènement
$dataCmd->save();
ca fonctionne
une idée ??
Merci
j'ai un gros souci avec le Template
j'essaye, en vain de mettre à jour mes commands via CheckAndUpdateCmd comme dans le plugin mais rie na faire, ca plante, erreur 500 sans plus d'explication
je viens de reprendre le template from scratch et pareil, alors qu'il n'y a strictement rien de changé à par le nom
en testant avec :
// On récupère la commande 'data' appartenant à l'équipement
$dataCmd = $tutorielObj->getCmd('info', 'story');
// On lui ajoute un évènement avec pour information 'Données de test'
$dataCmd->event("youpi");
// On sauvegarde cet évènement
$dataCmd->save();
ca fonctionne
une idée ??
Merci
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité