Action type liste barre verticale

Bonjour,
Je rencontre un souci avec une action de type liste (puisque depuis la version de @Domochip on peut les gérer directement via le plugin), je dois envoyer lors de mon set l’une des valeurs suivantes:
<<;<;|;>;>>;swing et donc la déclare comme suit: <<|<<;<|<;||Centre;>|>;>>|>>;swing|Swing

Évidemment, la barre verticale | pose problème (puisqu’elle sert comme séparateur dans la définition de la liste)

Avez-vous une idée pour résoudre ce souci?

Merci d’avance

Je connais pas du tout cette façon de faire mais bon, à tu tenté de mettre un \ devant le | qui ne doit pas être considéré comme un séparateur de la liste ? On sait jamais, sur un malentendu :face_with_hand_over_mouth:

Hello, tu as testé en mode ISO:
&#124|Centre

Merci pour vos deux réponses, j’avais déja testé en échappant via \ ça ne fonctionne pas, même chose pour le code iso :frowning:

C’est forcement la meilleur solution, mais dans un virtuel sa a l’air de passer.

@pm2036 et @Phpvarious Pourriez-vous confirmer que ca fonctionne dans un virtuel? Si c’est le cas, on jetera un oeil pour voir comment c’est implémenté et reproduire le bon fonctionnement dans jMQTT.

Alors, je sais pas si la méthode est bonne mais voici ce que j’ai fait :

  • Virtuel :


Action après exécution de la commande :
image

  • Jmqtt :

(Action/Défaut)

  • Test :

2

4

Edit :
Bizarrement dans les log de l’équipement j’ai ceci :
Exécution de la commande [jMQTT][Alarme_test][Melody_set] avec les paramètres {"background":"0","select":""}
Alors que dans le log jMQTT_daemon :
Sending message to broker (topic="zigbee2mqtt/AlarmeTest/set", payload="{"melody":"<"}", QoS=1, retain=False)

1 « J'aime »

@Domochip
Bon 2ème retour :wink:
J’ai analysé la class jMQTTCmd et bingo
$request = str_replace('#select#', $_options['select'], $request);

ça marche très bien directement sur Jmqtt en utilisant mode ISO, pas besoin de virtuel.
soit dans la liste : <<|<<;<|<;&#124|Centre;>|>;>>|>>
et dans valeur mettre {"melody":"#select#"}

@pm2036, si tu peut tester en réel avec ton équipement.

Par contre j’ai aperçu un petit bug : lorsqu’on modifie la liste et qu’on enregistre, la tuile ne se refresh pas (mais bien update en bdd) , il faut faire une sauvegarde dans la commande pour que la tuile se refresh.

1 « J'aime »

@Phpvarious, j’avais du rater quelque chose lors de mon précédent test, mais effectivement, je te confirme que cela fonctionne parfaitement avec le code iso &#124

Merci beaucoup!

1 « J'aime »

@Phpvarious, par contre une chose qui ne fonctionne pas, c’est la sélection de la valeur dans le widget lorsqu’on est sur &#124, l’appareil renvoyant | , je pense que la comparaison ne se fait pas bien. C’est Ok pour les autres valeurs.

Faudrait-il que je convertisse tous mes caractères (dans mon set) en code ISO et ensuite que je réussisse à convertir la valeur renvoyée par mon appareil en code iso également?

Bonsoir effectivement, je n’avais pas remarqué ce point, c’est bien un problème d’encodage.
Mais la c’est le Core qui gère le retour html sur le dashbord, a moins que l’équipe Jeedom accepte une modification pour un cas exceptionnel, je ne vois pas d’autre solution.
Je donne quand même la solution:
Version stable, dans la class toHtml, ligne 1303
if ($cmdValue->execCmd() == $coupleArray[0]) {
a remplacer par :
if ($cmdValue->execCmd() == $coupleArray[0] || $cmdValue->execCmd() == mb_convert_encoding($coupleArray[0].';', 'UTF-8', 'HTML-ENTITIES')) {

3 « J'aime »

Merci pour le retour.
Effectivement, la modification du core permet d’avoir le bon fonctionnement.
Par contre, pas gagné d’avoir une PR acceptée pour un cas si particulier :frowning:

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