Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[HOW TO] Création de plugin

Cette partie est dédiée à la programmation sur le logiciel JEEDOM
coorfang
Timide
Messages : 15
Inscription : 24 mai 2018, 14:19

Re: [HOW TO] Création de plugin

Message par coorfang » 29 mai 2018, 10:50

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
Actif
Messages : 1702
Inscription : 08 sept. 2014, 20:52

Re: [HOW TO] Création de plugin

Message par ZygOm4t1k » 29 mai 2018, 18:37

Pas compris?

Un bouton?

ZygOm4t1k
Actif
Messages : 1702
Inscription : 08 sept. 2014, 20:52

Re: [HOW TO] Création de plugin

Message par ZygOm4t1k » 29 mai 2018, 22:02

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 .

Code : Tout sélectionner

$plugin = plugin::byId('vdm'); // appelle la classe plugin du core
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 :

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()
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 :D

Chercher

Code : Tout sélectionner

<input type="text" class="eqLogicAttr form-control" data-l1key="configuration" data-l2key="city" placeholder="param1"/>
Et remplacer par

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 
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é.

Image


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)
Si vous regardez de plus près le fichier desktop.php il y a

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() ;
Etc…

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>
Par

Code : Tout sélectionner

<label class="col-sm-3 control-label">{{Type de vdm}}</label>
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.

ZygOm4t1k
Actif
Messages : 1702
Inscription : 08 sept. 2014, 20:52

Re: [HOW TO] Création de plugin

Message par ZygOm4t1k » 29 mai 2018, 23:13

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

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>
Qu’on va remplacer par

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>
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

Code : Tout sélectionner

$url = "http://www.viedemerde.fr/aleatoire";
Et remplacer par

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  ;
Maintenant changer la valeur du select sur un équipement,sauvegarder et aller sur le dashboard pour voir ce que cela donne.

coorfang
Timide
Messages : 15
Inscription : 24 mai 2018, 14:19

Re: [HOW TO] Création de plugin

Message par coorfang » 30 mai 2018, 11:58

ZygOm4t1k a écrit :
29 mai 2018, 18:37
Pas compris?

Un bouton?
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.

TaG
Actif
Messages : 1159
Inscription : 26 oct. 2016, 11:02

Re: [HOW TO] Création de plugin

Message par TaG » 30 mai 2018, 16:41

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 :D

Merci pour la lecture actuelle et à venir :)

ZygOm4t1k
Actif
Messages : 1702
Inscription : 08 sept. 2014, 20:52

Re: [HOW TO] Création de plugin

Message par ZygOm4t1k » 31 mai 2018, 21:50

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

Code : Tout sélectionner

$info->setTemplate('dashboard','default'); // Pour la commande on change le template.Sauvegarder et regarder le rendu
Maintenant c'est la taille du widget de l'équipement (eqLogic/méthode preSave()) qui ne convient plus , on la change

Code : Tout sélectionner

$this->setDisplay("width","400px");// Sauvegarder et regarder le rendu
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"

Code : Tout sélectionner

$info->setDisplay("showNameOndashboard",0);// Sauvegarder et regarder le rendu.
Image


ç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);//
Enregister les équipements pour obtenir sur le dashboard

Image

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())

ZygOm4t1k
Actif
Messages : 1702
Inscription : 08 sept. 2014, 20:52

Re: [HOW TO] Création de plugin

Message par ZygOm4t1k » 31 mai 2018, 22:11

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.

coorfang
Timide
Messages : 15
Inscription : 24 mai 2018, 14:19

Re: [HOW TO] Création de plugin

Message par coorfang » 01 juin 2018, 14:14

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();  
Si je veux déclencher cette commande dans l'une des méthodes sous le classe lui meme, quel fonction dois-je appeler? :?:

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()
Merci beaucoup d'avance de votre response!

ZygOm4t1k
Actif
Messages : 1702
Inscription : 08 sept. 2014, 20:52

Re: [HOW TO] Création de plugin

Message par ZygOm4t1k » 01 juin 2018, 19:34

Il faut montrer le code .
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
}
Il faut regarder comment sont faits les autres plugins.

coorfang
Timide
Messages : 15
Inscription : 24 mai 2018, 14:19

Re: [HOW TO] Création de plugin

Message par coorfang » 08 juin 2018, 11:34

ZygOm4t1k a écrit :
01 juin 2018, 19:34
Il faut montrer le code .
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
}
Il faut regarder comment sont faits les autres plugins.
Oui, j'ai fait common ça. Ça marche bien. :D Mais une nouvelle question se pose: quelle est la différence entre la méthode 'execute' et 'execCmd'?

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!

Avatar de l’utilisateur
micfri
Timide
Messages : 120
Inscription : 24 oct. 2014, 18:08
Localisation : Nevers
Contact :

Re: [HOW TO] Création de plugin

Message par micfri » 20 oct. 2018, 18:54

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.
Pièces jointes
Capture.PNG
Capture.PNG (366.24 Kio) Consulté 5547 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

Avatar de l’utilisateur
micfri
Timide
Messages : 120
Inscription : 24 oct. 2014, 18:08
Localisation : Nevers
Contact :

Re: [HOW TO] Création de plugin

Message par micfri » 20 oct. 2018, 19:28

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

Avatar de l’utilisateur
fensoft
Actif
Messages : 1314
Inscription : 07 mai 2015, 11:26

Re: [HOW TO] Création de plugin

Message par fensoft » 04 janv. 2019, 15:38

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)

alaingl
Timide
Messages : 35
Inscription : 18 déc. 2017, 14:20

Re: [HOW TO] Création de plugin

Message par alaingl » 28 janv. 2019, 16:32

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

Swr
Actif
Messages : 707
Inscription : 08 nov. 2016, 20:56
Localisation : 44

Re: [HOW TO] Création de plugin

Message par Swr » 28 févr. 2019, 12:05

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


ZygOm4t1k
Actif
Messages : 1702
Inscription : 08 sept. 2014, 20:52

Re: [HOW TO] Création de plugin

Message par ZygOm4t1k » 10 mars 2019, 21:01

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

ZygOm4t1k
Actif
Messages : 1702
Inscription : 08 sept. 2014, 20:52

Re: [HOW TO] Création de plugin

Message par ZygOm4t1k » 10 mars 2019, 23:04

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

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	  
      }
- On ajoute la possibilité de personnaliser 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
	
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.

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>
Enregistrer et aller sur le dashboard pour voir ce que cela donne.

Pas grand chose je suis d'accord :lol: 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>
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

Image

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.

ZygOm4t1k
Actif
Messages : 1702
Inscription : 08 sept. 2014, 20:52

Re: [HOW TO] Création de plugin

Message par ZygOm4t1k » 10 mars 2019, 23:20

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

Image

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.

fishton
Timide
Messages : 17
Inscription : 19 janv. 2018, 08:10

Re: [HOW TO] Création de plugin

Message par fishton » 16 mars 2019, 17:32

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

Répondre

Revenir vers « Développements sur Jeedom »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité