Update command dans postSave equipement

Bonjour à tous,

Je tourne en rond… :smiley:
J’essaie de mettre à jour la configuration ‹ maxValue › d’une commande en fonction d’une configuration de l’équipement.

Pour ce faire, dans la méthode postSave() de l’eqLogic je rajoute le code suivant:

        $threshold = $this->getConfiguration('seuil','');
        $cmdCounter = $this->getCmd(null, 'counter');
        log::add(__CLASS__, 'debug', $this->getHumanName() . ' config before ' . $cmdCounter->getConfiguration('maxValue'));
        $cmdCounter->setConfiguration('maxValue', $threshold);
        log::add(__CLASS__, 'debug', $this->getHumanName() . ' config after ' . $cmdCounter->getConfiguration('maxValue'));
        $cmdCounter->save();

Mes deux lignes de logs remontent bien la valeur avant et après le changement.
En revanche, le save() ne fait rien du tout… pas d’erreur, mais la nouvelle valeur n’est pas sauvegardée…

Une idée de ce que je ne fais pas bien ?

Merci pour votre aide.

Salut,

Pas eu l’occasion de tester ni d’y regarder de plus près mais juste pour voir ça passe mieux en ajoutant un argument true à la fonction save() de la commande ? ça permet de sauver direct en base :

$cmdCounter->save(true);

Sinon la commande est bien une info/numérique ? Tu vois la valeur en BDD en allant dans la modale de configuration de la commande puis le bouton informations en haut à droite / champ configuration ?

Merci pour ton retour @Salvialf.
Un save(true) ne change rien… La valeur ne se met pas à jour en base… Et c’est bien une info/numerique…

Salut,

le save(true) permet surtout de ne pas exécuter les éventuels preSave, postSave etc, important pour ne pas tourner en rond le cas échéant :wink:

Pour le reste c’est curieux, je fais pareil, je ne vois pas ce qui cloche dans ce bout de code.
Essaye de convertir en int avant de faire le setConfiguration p-e?

Merci pour ton retour @Mips.
Malheureusement j’ai déjà essayé en forçant une valeur fixe int… même résultat…

hello,

où vérifies tu la prise en compte du changement de configuration dans ta commande ?

en Jeedom 4.1.20, j’ai fait un test et de mon côté je vois le changement.
click Engrenages sur ta commande, puis informations en haut à droite, tu as une section « configuration »

si c’est à jour, je pencherais plus pour un clearCacheWidget() à la fin de ta méthode postSave()

en espérant t’avoir aidé ou mis sur une piste :stuck_out_tongue:

Merci pour ton aide @ddelec24
Malheureusement, non, la configuration ne se met pas à jour. Donc pas un problème de cache widget mais vraiment un problème d’update de la base de données…

Je progresse dans mon investigation mais sans solution pour l’instant.
Mon bout de code fonctionne correctement au premier postUpdate, quand les commandes n’ont pas encore été créées (elles sont créées just avant dans la même fonction).
En revanche, lors d’une mise à jour de l’équipement (et donc de la configuration) la mise à jour de la commande ne fonctionne pas…

EDIT:
Lorsque je fais une mise à jour du plugin, la valeur maxValue est bien mise à jour avec la dernière valeur de la configuration !! Je deviens fou :smiley:

Problème résolu en suivant les indications de @Mips et @Bben dans ce post : Mise A jour equipement => modifier le nom et logical id - numéro 13

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.