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 !

Ajout d'attributs dans la class d'un plugin

Cette partie est dédiée à la programmation sur le logiciel JEEDOM
Répondre
Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Ajout d'attributs dans la class d'un plugin

Message par Seki » 17 sept. 2018, 15:17

Bonjour,

J'aurai souhaité rajouter des attributs à la classe de mon plugin, mais je rencontre un soucis, la valeur n'est pas sauvegardée.

J'ai défini mon attribut '_test' de la sorte dans le code de la class de mon plugin.

Code : Tout sélectionner

class monPlugin extends eqLogic {
 /* * *************************Attributs****************************** */
 protected $_test = 'disable';
Puis les getter / setter.

Code : Tout sélectionner

 public function test() {
  return $this->_test;
}
    public function setTest($_status){
    $this->_test = $_status;
    return $this;
  }
Pour vérifier si cela fonctionnait bien, j'ai rajouté ça:

Code : Tout sélectionner

    public function preSave()
    {
        log::add('monPlugin', 'debug', 'preSave() : '.$this->test());
     $this->setTest('enable');
        log::add('monPlugin', 'debug', 'preSave() : '.$this->test());
}
Jusque là, pas de soucis.

Dans une fonction associée à un listener, j'ai ajouté ça:

Code : Tout sélectionner

 public static function externalConditionsEvents($_option)
    { 
     $eqLogic= monPlugin::byId($_option['eqLogicId']);
       log::add('monPlugin', 'debug', test() : '.print_r($eqLogic, true));
        log::add('monPlugin', 'debug', test() : '.$eqLogic->test());
        }
Et là, impossible de récupérer la valeur de l'attribut '_test', enfin si, mais la valeur retournée est 'disable', et non pas 'enable' comme affectée dans le preSave(). Mon objet est bien celui auquel j'ai affecté la valeur 'enable' à l'attribut '_test', j'ai vérifié.

En fouillant dans la doc du plugin template, je suis tombé là dessus:
le _ devant le nom de l’attribut indique à Jeedom que l’attribut ne doit pas être sauvegardé en base, donc si vous en ajoutez pour votre class pensez bien à le précéder d’un _
J'ai donc modifié mon attribut en $test, et là j'ai eu droit à une belle erreur:
[MySQL] Error code : 42S22 (1054). Unknown column 'test' in 'field list'
.


Pourquoi cela ne fonctionne-t-il pas? :?

Merci.

Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Ajout d'attributs dans la class d'un plugin

Message par domotruc » 17 sept. 2018, 22:01

Bonsoir,
Probablement parce que les process sont distincts et ne partagent donc pas le même objet. Pour confirmer tu peux afficher le pid du process via getmypid().
domotruc
Plugins jMQTT, jElocky
domotruc.com

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Ajout d'attributs dans la class d'un plugin

Message par Seki » 18 sept. 2018, 08:10

OK, je vais essayer.
Et si c'est ça, y a t il une solution pour s'en affranchir ?


Envoyé de mon ONEPLUS A6003 en utilisant Tapatalk


Avatar de l’utilisateur
Nebz
Modérateur
Messages : 6514
Inscription : 23 avr. 2017, 01:37
Localisation : Belgique

Re: Ajout d'attributs dans la class d'un plugin

Message par Nebz » 18 sept. 2018, 08:19

c'est en effet probablement ca... j'ai le meme problème, je veux garder un objet connecteur sans refaire la connexion à chaque fois mais entre un process CRON ou l'exécution de la class dans l'interface, c'est un PID différent et donc il garde pas... je ne vois pas trop comment faire non plus...
Dev plugin Homebridge

- Fournissez les logs, la capture de vos commandes et vos types génériques svp
- Constructif et bonne humeur, on est pas là pour se lancer des périfs z-wave à la figure :-)

Un petit don ça fait toujours plaisir :)

Avatar de l’utilisateur
domotruc
Timide
Messages : 254
Inscription : 23 févr. 2018, 08:35
Contact :

Re: Ajout d'attributs dans la class d'un plugin

Message par domotruc » 18 sept. 2018, 09:30

En utilisant les methodes setConfiguration/getConfiguration.
domotruc
Plugins jMQTT, jElocky
domotruc.com

Avatar de l’utilisateur
Nebz
Modérateur
Messages : 6514
Inscription : 23 avr. 2017, 01:37
Localisation : Belgique

Re: Ajout d'attributs dans la class d'un plugin

Message par Nebz » 18 sept. 2018, 09:50

mwai mais on peut pas y stocker un objet
Dev plugin Homebridge

- Fournissez les logs, la capture de vos commandes et vos types génériques svp
- Constructif et bonne humeur, on est pas là pour se lancer des périfs z-wave à la figure :-)

Un petit don ça fait toujours plaisir :)

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Ajout d'attributs dans la class d'un plugin

Message par Seki » 18 sept. 2018, 10:06

Le setConfig oblige à faire un save.

Envoyé de mon ONEPLUS A6003 en utilisant Tapatalk


Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Ajout d'attributs dans la class d'un plugin

Message par Seki » 18 sept. 2018, 15:51

Bon, j'ai testé et le pid est bien le même, aussi bien dans la fonction preSave() que dans celle appeller sur détection d'un évènement par le listener.
Ça ne doit donc pas être ça.

Envoyé de mon ONEPLUS A6003 en utilisant Tapatalk


Avatar de l’utilisateur
loic
Administrateur
Messages : 14862
Inscription : 01 févr. 2014, 16:21

Re: Ajout d'attributs dans la class d'un plugin

Message par loic » 18 sept. 2018, 17:00

Bonjour,

En faite le soucis la vient de la compréhension des objets php (comme l'autre probleme) et n'a absolument rien a voir avec jeedom.

Pour ce genre de soucis je vous invite a poser la question sur le site partenaire (portail des dev) qui est plus adapté.
Aide nous à t'aider : mets des logs, détaille ton soucis... Vous n'aurez aucune réponse de ma part si votre demande n'est pas détaillée (log, capture d'écran lisible...) ou si vous ne postez pas dans la bonne section

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Ajout d'attributs dans la class d'un plugin

Message par Seki » 18 sept. 2018, 18:14

Bon bien je vais me replonger dans les docs php alors.
Au pire, si je n'y arrive pas, je ferais autrement et vu que c'est uniquement pour mon besoin perso, pas bien grave.

Merci pour vos réponses.

Envoyé de mon ONEPLUS A6003 en utilisant Tapatalk


Avatar de l’utilisateur
Nebz
Modérateur
Messages : 6514
Inscription : 23 avr. 2017, 01:37
Localisation : Belgique

Re: Ajout d'attributs dans la class d'un plugin

Message par Nebz » 18 sept. 2018, 18:31

Perso je ferais une classe singleton qui te renvoi ce que tu as besoin... le problème c'est qu'on ne peut pas faire une autre classe que son plugin si j'ai bien compris ?


Envoyé de mon iPhone en utilisant Tapatalk
Dev plugin Homebridge

- Fournissez les logs, la capture de vos commandes et vos types génériques svp
- Constructif et bonne humeur, on est pas là pour se lancer des périfs z-wave à la figure :-)

Un petit don ça fait toujours plaisir :)

Avatar de l’utilisateur
tomdom
Actif
Messages : 925
Inscription : 14 nov. 2016, 05:46

Re: Ajout d'attributs dans la class d'un plugin

Message par tomdom » 18 sept. 2018, 18:45

Bonjour,

Jeedom étant stateless par construction, le singleton va renvoyer une nouvelle instance à chaque changement de process (à chaque appel au travers d'apache ou à chaque exécution via cron). Le singleton est utile que dans le cas d'un daemon associé au plugin mais pas au sein du plugin lui même.
(sous réserve d'avoir tout compris à l'architecture Jeedom ...)
Il y a 10 catégories de personnes, celles qui connaissent le binaire et les autres
.

Avatar de l’utilisateur
Seki
Actif
Messages : 746
Inscription : 06 sept. 2017, 21:50

Re: Ajout d'attributs dans la class d'un plugin

Message par Seki » 18 sept. 2018, 19:07

J'ai un plugin exemple où c'est utilisé et avec également des listeners. Ce plugin est fonctionnel, je vais donc chercher pour ça semble marcher pour ce plugin et pas chez moi.

Envoyé de mon ONEPLUS A6003 en utilisant Tapatalk


Avatar de l’utilisateur
Nebz
Modérateur
Messages : 6514
Inscription : 23 avr. 2017, 01:37
Localisation : Belgique

Re: Ajout d'attributs dans la class d'un plugin

Message par Nebz » 18 sept. 2018, 19:09

Si je regarde côté plug-in sonos il a un controller dans chaque instance d'eqlogic, moi j'ai besoin d'un controller global... et qu'il se reconnecte pas à chaque fois... je vais aller voir dans d'autres plug-in qui ont un login dans configuration.php pour voir comment ils définissent cet objet global (j'ai tenté global évidemment mais c'est moyen...)


Envoyé de mon iPhone en utilisant Tapatalk
Dev plugin Homebridge

- Fournissez les logs, la capture de vos commandes et vos types génériques svp
- Constructif et bonne humeur, on est pas là pour se lancer des périfs z-wave à la figure :-)

Un petit don ça fait toujours plaisir :)

Avatar de l’utilisateur
HerveL
Timide
Messages : 478
Inscription : 11 sept. 2015, 22:46
Localisation : Nantes

Re: Ajout d'attributs dans la class d'un plugin

Message par HerveL » 22 févr. 2019, 13:22

loic a écrit :
18 sept. 2018, 17:00
Bonjour,

En faite le soucis la vient de la compréhension des objets php (comme l'autre probleme) et n'a absolument rien a voir avec jeedom.

Pour ce genre de soucis je vous invite a poser la question sur le site partenaire (portail des dev) qui est plus adapté.
Bonjour,

Quelqu'un peut-il m'indiquer ou se trouve le site partenaire (portail des dev) svp ?
J'ai beau chercher, je ne trouve pas
Merci
Hervé
Utilisateur Mini+ et SMART passionné
Zwave, IPX800V3, IPX800V4, Rfxcom, RFP1000

Avatar de l’utilisateur
loic
Administrateur
Messages : 14862
Inscription : 01 févr. 2014, 16:21

Re: Ajout d'attributs dans la class d'un plugin

Message par loic » 22 févr. 2019, 13:24

Bonjour,
Toute les info sont sur le site jeedom (https://www.jeedom.com/site/fr/dev.html)
Aide nous à t'aider : mets des logs, détaille ton soucis... Vous n'aurez aucune réponse de ma part si votre demande n'est pas détaillée (log, capture d'écran lisible...) ou si vous ne postez pas dans la bonne section

Avatar de l’utilisateur
HerveL
Timide
Messages : 478
Inscription : 11 sept. 2015, 22:46
Localisation : Nantes

Re: Ajout d'attributs dans la class d'un plugin

Message par HerveL » 22 févr. 2019, 14:00

loic a écrit :
22 févr. 2019, 13:24
Bonjour,
Toute les info sont sur le site jeedom (https://www.jeedom.com/site/fr/dev.html)
Merci Loic
Je cherchais dans le Forum, dans la Doc, sur Google, …
Mais je n'ai pas pensé au site
En tout cas la page est bien faite et très claire ;)
Hervé
Utilisateur Mini+ et SMART passionné
Zwave, IPX800V3, IPX800V4, Rfxcom, RFP1000

Répondre

Revenir vers « Développements sur Jeedom »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités