J'ai un interrupteur mural que je veux utiliser pour faire varier le volume d'une sonos.
L'interrupteur est sur le bus knx.
La sonos est commandée par le plugin squeezeboxcontrol.
Je passe sur le paramétrage de l'inter qui ne parlerait qu'aux adeptes du knx.
Je récupère dans jeedom une grandeur qui prend les valeurs suivantes:
-1 lorsque l'on appui sur l'inter pour diminuer
0 lorsque l'on relâche
1 lorsque l'on appui sur l'inter pour augmenter
0 lorsque l'on relâche
L'idée serait de déclencher un scénario par la grandeur
Tant que la valeur vaut -1 j'envoie des commandes volume- à la squeezebox
Lorsque je reçois 0 j'arrête la variation
Et inversement lorsque je reçois 1.
Sachant que je si je ne me trompe pas on n'a pas accès à la fonction while et que j'aimerais éviter l'emploi de sleep pour contrôler le timing d'envoi des commandes volume+ ou volume-, comment puis je envisager ce scénario?
edit: a priori on peut faite des boucles while dans un bloc code.
J'ai donc une question plus précise à poser.
J'ai une grandeur que je récupère come ceci:
Code : Tout sélectionner
$cmdEvent=cmd::byString('#[Salle de bains 2][Volume Sonos Sdb2][dimming volume]#');
$cmdDimming=$cmdEvent->execCmd();
je veux faire une boucle while avec une condition sur cette valeur:
Code : Tout sélectionner
while ($cmdDimming ==-1
{ envoie commande volume-
usleep(10000)
$cmdEvent=cmd::byString('#[Salle de bains 2][Volume Sonos Sdb2][dimming volume]#');
$cmdDimming=$cmdEvent->execCmd();
}
Est ce que la valeur de $cmdDimming va être évaluée a chaque itération ?
Pour l'instant je ne vois pas d'autre soulte que le usleep.