Ajouter un paramètre optionnel d'un widget par le code

Bonjour à tous,
Toujours pour le plugin Home Connect j’ai des commandes curseur pour par exemple le départ différé d’un lave linge ou la température d’un café.
L’API HomeConnect me transmet un min, un max et un step qui est bien sûr très différent selon les cas.
Dans le core de Jeedom le widget le plus adapté me semble être button qui a justement un paramètre optionnel step.
Pas de problème pour attribuer le widget à ma commande, mais est-l possible aussi de fixer le step dans mon code ?
Merci de votre aide

Bonjour @vedrine,

Au cas ou ça puisse aider (pour l’exemple), seb821 avait fait un bout de code pour modifier les paramètres optionnels par scénario:

$cmd=cmd::byString("#[Tests][Virtuel test][Ma commande]#");
//$cmd->event('82');
$valeur=$cmd->execCmd();
$scenario->setLog("Valeur : $valeur");
$arr = $cmd->getDisplay('parameters');
$scenario->setLog("GetDisplay : ".print_r($arr, true));
if ($valeur > 50)  $arr['jauge'] = 'rouge';
 else if ($valeur > 30) $arr['jauge'] = 'bleu';
 else $arr['jauge'] = 'vert';
$cmd->setDisplay(parameters,$arr);
$p=$cmd->save();
$arr = $cmd->getDisplay('parameters');
$scenario->setLog("GetDisplay : ".print_r($arr, true));

Ok c’est lumineux donc si je fais

$arr = $cmd->getDisplay('parameters');
$arr['step'] = 5;
$cmd->setDisplay('parameters', $arr);
$cmd->save();

Ça devrait marcher. Merci beaucoup @Salvialf .

Je pense que j’abuse mais vu tes connaissances sur les widgets je vais te poser encore une question.
Pour certaines de mes commandes action cursor c’est une durée en secondes avec min = 1 et max = 86340 et step = 5 (çà fait une durée d’un peu moins de 24h) ces valeurs me sont transmises par l’API Home Connect.
C’est le cas par exemple pour la durée de cuisson d’un four ou le départ différé d’un lave vaisselle.
Avec le widget button ce n’est vraiment pas idéal de cliquer sur le + ou le - pour faire varier de 5s en 5s !
Sais-tu s’il existe un meilleur widget pour ce cas ?

my 2 cents:

  • soit tu laisses ca à l’utilisateur qui adaptera le widget / config selon son cas perso, dans les limites « techniques » permises (celles remontées par l’API)
  • soit tu prévois quelques cas dans une liste qui rencontreront 80% des situations; en fonction de l’appareil éventuellement, genre une programmation à +5min, +15m, +30m, +1h, +2h, +4h, +12h, +24h
    où pour une machine à café prévoir +5min ou +24h a probablement moins d’intérêt.
  • tu peux aussi prévoir un autre « curseur » qui fait +1h au lieu de +5m mais sur la même commande info et l’utlisateur utilise les 2 commandes.

@Mips a bien développé la réponse :grinning:

Il me semble que tu peux choisir le step sur le widget core button, peut-être que tu peux adapter le widget core en fonction de la commande sur laquelle il est appliqué ?

En fait le plugin est très complexe car le nombre d’appareils gérés est important par exemple certains fours font micro onde et tradi et les temps de marche ne sont pas du tout les mêmes et il faudrait que j’ai un fichier json de config par modèle et que je cherche sur internet s’ils font micro-onde ou pas (l’API ne me donne pas ce renseignement elle me fournit juste un step) et que j’ajuste le step en conséquence selon le programme sélectionné, c’est faisable mais difficilement gérable.

donc laisse le soin à l’utilisateur de choisir on step et de le configurer lui-même en mettant un step par défaut standard pour tout le monde;-)
au moins dans une première version, tu pourras toujours peaufiner le « défaut » plus tard,

bref:

le mieux est l’ennemi du bien

ou

keep it simple

ça fait un moment que c’est sur ma To-Do-List de faire un widget curseur digne de ce nom et plus abouti que Kontrol2

Je ne suis pas du tout sur les widgets en ce moment mais je vais essayer d’y réfléchir.

Merci à tous les deux pour votre aide.
Vous avez raison je vais laisser çà comme çà pour le moment.
J’ai déjà assez de mal avec ce plugin qui est plus complexe que les autres que j’ai faits avant.
Le plus dur (pour moi) c’est qu’il faut que je fasse un démon en nodejs pour écouter les événements en provenance du serveur en me servant comme point de départ de

Oui oui je lis le fil sur le développement du plugin j’ai vu ça !!

La-dessus je ne te serai d’aucune aide, je m’attaque tout juste au PHP d’ailleurs j’en profite car j’aimerai bien avoir l’analyse d’un dev sur mon 1er code: