Widget multi-ouvrants proportionnel?

Salut @Salvialf,

ça te branche pas de te mettre dessus c’est ça ? :disappointed_relieved:

Bison

1 « J'aime »

Salut,

En fait je suis complètement sur autre chose, je continues de m’auto-former à la programmation ça m’occupe bien en ce moment…

…Mais t’as bien fait de me relancer, j’ai commencé à reprendre le widget SlidVertical de @cadavor :smiley:
20200327_123055

Par contre y’ pas mal de boulot encore pour finir de le remettre totalement d’aplomb mais le plus dur est fait :wink:

Je post dès que c’est prêt

2 « J'aime »

C’est celui que j’utilise celui de Cavador.
Je suis content que tu regardes, merci.

Par contre je comprends pas trop pourquoi tu tentes de le faire sur un autre widget et non sur le tient ?

T’es en V3 ? car il ne fonctionne pas en V4 normalement c’est même pour cette raison que je le reprend :wink:

Parce que c’est énormément de taf de faire un widget action/curseur qui reprenne l’état en même temps et un widget qui le fait existe déjà donc autant le reprendre. MultiOuvrants ne fait qu’afficher des images en fonction de la valeur alors que SlidVertical génère un affichage à la volée à l’aide de plusieurs bouts d’images (par exemple les lames des volets sont constituées d’un assemblage d’une image de lame unique…)

Oui je suis encore en V3 et merci pour l’explication sur la différence de fonctionnement :slight_smile:

1 « J'aime »

Hello @Bison,

Tu devrais être content ça valait le coup d’attendre:

Oups je viens de voir que tu es en V3 :upside_down_face:

Non, tu as pas fait ça ? Argh :crazy_face:

Edit : je viens de regarder ton post poule widget V4 mais du coup le code n’a pas l’air de permettre de prendre en compte un temps de décollage du volet pour que le pourcentage visuel dans Jeedom soit le même que le visuel réel ?

1 « J'aime »

Non j’ai pas pris en compte le temps de décollement mais j’y ai réfléchis cette nuit et j’ai peut-être trouvé une solution (vous êtes plusieurs à me faire cette demande). Je test mon idée et mettrais à jour le code si OK

ok super, merci. Donc par contre pour la V3 c’est cuit ou tu adapteras aussi le widget de cadavor ?

1 « J'aime »

Pour le décollement visuellement ça ressemble à ça, moi je trouve que ça correspond plutôt bien à la réalité:
decollement

Tu as fait la modification pour prendre en compte la proportionnalité ? Donc là sur le widget le bas du volet est encore bien collé en effet.
Mais les 8% …

Si tu indiques 50% est-ce que le widget est bien au milieu et le volet réel au millieu ?

Malheureusement je n’ai pas de poil de cul pour vérifier :laughing:

Je n’ai rien fait du tout car c’est à se faire des nœuds au cerveau pour rien, en voulant voir ce que je pouvais mettre en place je me suis aperçu que le slider avait également un temps de décollement comme un volet physique du fait du sélecteur qui dépasse légèrement du slider.

Le léger décalage du au temps de décollement ne me gênait déjà pas mais là pour moi je trouve que ça colle à la réalité. De toute façon pour le moment ce widget est fonctionnel je passe à autre chose :sunglasses: :nerd_face:

Édit: au pire je pourrais jouer sur la hauteur du sélecteur a l’avenir en fonction des retours :wink:

Je penses que tu peux clore ce sujet :wink:

Il me semble pourtant assez visuel (et sans poil de cul :slight_smile:) de s’apercevoir que le volet réel n’a absolument pas la bonne position quand on lui demande de monter (ou descendre) à 50% depuis Jeedom (par exemple).

Volet Jeedom 50%

Visuellement on a plus l’impression d’avoir demandé une ouverture à 30% qu’à 50% et ceci parce que le temps d’ouverture ou fermeture des lames est inclus dans le temps total de montée ou descente et donc dans le pourcentage.

L’affaire n’est donc pas juste une histoire de visuel du décollement mais c’est parce que le temps de décollement n’est pas pris en compte que la position final du volet ne reflète pas les 25, 50 ou 75% demandé par exemple.

EDIT : En fait j’avais commencé par adapté le widget comme ça :

       jeedom.cmd.update['#id#'] = function(_options) {        
         var new_value = (_options.display_value == '') ? 0 : parseInt(_options.display_value-24+((_options.display_value-24)*6/19));
         if (new_value == 99 && '#Fibaro#'.trim() == '1') {
           new_value = 100;
         }
         if (new_value < 24 && new_value != 0) {
           new_value = 1;
         }

Mais ça me donne pas le bon résultat car 98% en haut et je ne comprend pas pourquoi.

Peux-être peux-tu juste m’aider à corriger du coup ?

Alors je viens de passer plusieurs heures la-dessus et le seul moyen précis que je vois est de calculer le temps total et de faire un ratio avec le temps de course donc pas jouable sur un widget…

Ta solution n’empêche pas ton volet d’être visuellement à 30% au lieu des 50% indiqués si je ne m’abuse :wink:

Je vais continuer d’y réfléchir mais pour le moment je lâche l’affaire

Je ne comprends pas pourquoi ça ne serait pas jouable avec un widget ? Dans le code d’un widget on peut bien mettre des calculs et donc faire en sorte de modifier le pourcentage que le widget indique (donc la position du volet dans Jeedom) en rectifiant ce pourcentage en fonction pourcentage correspondant à la position réelle du volet.

2 ou 3 exemple de valeurs avec le code que j’avais essayé :

  • Si le pourcentage calculé naturellement par le module est en dessous de 24% alors on rectifie et on fait comme si c’était 1% car chez moi il n’est pas encore décollé à 24% (mais pas fermé). C’est cette valeur qui va changer suivant les personnes
  • Si le pourcentage calculé naturellement par le module est de 50% alors on rectifie à la valeur (50-24+(50-24)*6/19) = 34% ce qui fait que le visuel colle à la réalité car à 50% le volet n’est en fait qu’à 34% puisqu’il lui a fallut plusieurs secondes pour décoller. Il est bien à la moitié de son temps de trajet total mais qu’au tiers de sa position
  • Si le pourcentage calculé naturellement par le module est de 75% alors on rectifie à la valeur (75-24+(75-24)*6/19) = 67%

Et donc avec ces modifications, quand la position du volet rectifiée par le widget est à 50%, le vrai volet a eu le temps de grimper plus longtemps et il est … vraiment à la moitié du chemin, c’est-ce pas ? :slight_smile:

1 « J'aime »

T’aurais du me donner les calculs avant j’aurais gagné du temps je suis une bille en math !

J’essaye ça et je te redis merci

1 « J'aime »

ça date du 11 janvier ça remonte un peu et … je m’étais vraiment fais suer aussi pour trouver ça !

Comme je le disais, le soucis c’est que la formule à laquelle j’étais arrivée avec le « *6/19 » dépendait, de mémoire, de mon pourcentage de décollement à 24% car j’avais simplifié à la fin :sweat_smile:
Mais je retrouve pas ma feuille de calcul … bon s’il le faut je devrais arriver à le refaire… j’espère.

Du coup il est probable que ce soit moins juste si chez toi ça décolle à 20%…

PourcentageModule-PourcentageDecollement+((PourcentageModule-PourcentageDecollement)*6/19)

Ah bah si t’as plus d’infos ça m’intéresse. Sur le coup j’ai pensé que c’était universel ces 2 valeurs…

Je viens de vérifier je décolle à 12% (sûrement pour cette raison que ça me choque moins, ce sont tes photos qui m’ont convaincu d’approfondir la question).

Je regardes après avoir couché les enfants, si tu retrouves tes calculs ça devrait aider :wink:

Je tente de le refaire car j’avais cherché mais pas retrouvé :frowning:
Enfin vu comme je m’étais pris le choux, tu pourras déjà essayé d’intégrer cette formuler au widget de la bonne façon (puisque volet ouvert Jeedom m’indique 98% j’ai du me rater mais je comprends pas où) et il suffira de modifier la formule par la suite si la base est posée !

Merci à toi :slight_smile:

J’ai réussi à retrouver comment j’avais fais et du coup j’ai clarifié tout ça :star_struck:

Le principe, si ça intéresse, a été de découper en 4 intervalles ce qu’il reste à parcourir réellement entre le moment du décollement et l’ouverture complète pour trouver :

  • l’écart en pourcentage entre chaque intervalle
  • la différence à appliquer, à chaque intervalle, pour corriger la valeur sur le widget

Soit D = valeur en pourcentage du décollement.

On va avoir besoin de 2 variables.

  • L’écart E = (100-D)/4
  • Le pas P = D/4

Le pourcentage rectifié R d’une valeur de module X pourra alors être calculé par la formule suivante :
R = ((X-D)*P/E)+X-D

Exemple avec ton 12% de décollement si le module indique un volet à 56% :
R = ((56-12)*3/22)+56-12 = 50%
Le widget pourra alors afficher 50% et le visuel du widget, tout comme en principe le vrai volet, seront bien au milieu !

1 « J'aime »