Scénarios ouverture et fermeture de tous les volets

Bonjour à tous,
je voudrais ouvrir tous les volets en même temps en passant par un virtuel pour avoir un up down et stop sur la même tuile et 3 scénarios pour les 3 actions citées précédemment.
qqn pourrait il m’aiguiller?
J ‹ ai vu quelques posts sur le sujet, mais mes maigres connaissances ne permettent pas d › y arriver.
merci encore pour votre aide.

Bonjour,

Avez-vous lu la doc du plug-in ?
Un exemple s’y trouve: https://doc.jeedom.com/fr_FR/plugins/programming/virtual/

1 « J'aime »

Bonjour,

Le principe pour le UP est de faire un scénario Volets_UP et de l’appeler en allant dans les options avancées de ta commande UP. Il y a une possibilité de déclencher des actions après la commande, c’est ici qu’il faut lui dire d’appeler ton scénario Volets_UP.

Ensuite dans ce scénario et bien x action qui déclenche le UP de tes volets.

Idem pour STOP et DOWN.

Tu peux aussi éviter de passer par un scénario en positionnant les commandes de chaques volets sur la commande de ton virtuel à l aide des &&.
Exemple pour la commande UP
Volet1.up && Volet2.up&& volet.n+1.up et ainsi de suite

1 « J'aime »

Pourquoi faire simple quand on peut faire compliqué (proverbe Shadok).
Nul besoin de scénarios. Un virtuel permet d’émettre des commandes multiples très simplement et d’y affecter tout aussi simplement un widget UP/STOP/DOWn de type inter volet roulant :slight_smile:

Bonjour Tof,

très simple de mon coté, sans scenario

Dans ta commande action UP de ton virtuel, tu mets toutes les commandes UP avec && entre chacune
#[volet1][UP]# && #[volet2][UP]# && …
idem pour ta commande STOP et ta commande DOWN

https://doc.jeedom.com/fr_FR/plugins/programming/virtual/#Multiple%20commandes

J’ai aussi integré toutes les commandes info position pour avoir une vue synthetique

image

Norbert

Salut Norbert, et merci à tous pour vos réponses,
comment as tu fait pour intégrer les pictogrammes et renvoi d’état. tu pourrais m’en dire plus.
Merci

Si tu parles de la représentation graphique :
Présentation en mode tableau 2x4 dans mon cas, un volet par case + les pictos dans la 8eme.

Pour les pictos de montée et descente, j’ai juste associé des icones aux commandes + retour à la ligne après pour qu’ils soient bien alignés …

image

Norbert

Encore merci Norbert mais je parlais des graphiques de volets disposés dans la tuile du virtuel.
C vrai ton rendu de tuile est vraiment sympa.

D ailleurs est ce que tu as une remontée d etat de la position du volet stp??

Je suppose que c est ce dont tu parles plus haut sur tes remontes d etat mais c est le graphique qui te situe la position ou c est un pourcentage qui s affiche.

Merci…:thinking:

C’est bien le graphique qui me donne la position :
image
Comme indiqué, j’ai mis dans mon virtuel les commandes info position de mes volets (ensuite, ca depend de la capacité de tes matériels à envoyer la position en temps reel. j’ai des shelly 2.5, très rapide, donc tu vois monter le volet, et une KF200 ou la MAJ se fait à la fin de la montée)
Pour le coté visuel, j’ai utilisé des scripts de @JAG que j’ai un peu adapté il y a très longtemps (je n’y connais strictement rien en PHP !!!) mais je pense que tu peux le faire avec le module WIDGET sans souci (info / numérique / multistate avec une image par état (0, <10, <20, …)

je te mets mon code PHP si ca t’interesse :

<div style="min-width:98px; min-height:80px;" class="cmd #history# tooltips cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" title="#collectDate#">
    <!-- Info Widget
        Widget de           : JAG
        Widget pour le Core : V4
        Mise à jour         : JAG 20200502 => Ajout Version Core
	-->
    <div class="title #hide_name#">
        <div class="cmdName" style="#hideCmdName#">#name_display#</div>
    </div>
    <div class="content-sm ">
        <span class="iconCmd#id#"></span>
    </div>
<!--
     <div class="value">
        <span style="min-width:100px" class="timeCmd#id# timeCmd label label-default value"></span>
    </div> 	
    <div class="value">
        <span class="value#id# timeCmd label label-default value"></span>
    </div>
-->
    <!-- Historique -->
    <div class="cmdStats #hide_history#" style="#displayHistory# font-size : 10px;margin-top:0px;">
        <span title="Min" class="tooltips">#minHistoryValue# #unite#</span>|<span title="Max" class="tooltips">#maxHistoryValue# #unite#</span> <i class="#tendance#"></i>
    </div>
    <script>
        jeedom.cmd.update['#id#'] = function(_options) {
            // Options de personnalisation avec valeur par defaut
            // Variable masque pour div historique ou maxmin
            var srcvalue = ('#masque_valeur#' != '#' + 'masque_valeur#') ? "#masque_valeur#" : "NO";
            // Paramètre "sizehw" : à déclarer en pixels - 80 maxi
            var srcImgHeight = (is_numeric('#sizeh#')) ? parseFloat('#sizeh#') : 90;
            var srcImgWidth = (is_numeric('#sizew#')) ? parseFloat('#sizew#') : 90;
            var srcImgSize = 'height=' + srcImgHeight + 'px width=' + srcImgWidth + 'px';
            // Paramétrage Niveau
            var level_0 = (is_numeric('#level_0#')) ? parseFloat('#level_0#') : 0;
            var level_1 = (is_numeric('#level_1#')) ? parseFloat('#level_1#') : 17;
            var level_2 = (is_numeric('#level_2#')) ? parseFloat('#level_2#') : 35;
            var level_3 = (is_numeric('#level_3#')) ? parseFloat('#level_3#') : 45;
            var level_4 = (is_numeric('#level_4#')) ? parseFloat('#level_4#') : 55;
            var level_5 = (is_numeric('#level_5#')) ? parseFloat('#level_5#') : 63;
            var level_6 = (is_numeric('#level_6#')) ? parseFloat('#level_6#') : 73;
            var level_7 = (is_numeric('#level_7#')) ? parseFloat('#level_7#') : 84;
            var level_8 = (is_numeric('#level_8#')) ? parseFloat('#level_8#') : 92;
            var level_9 = (is_numeric('#level_9#')) ? parseFloat('#level_9#') : 95;
            var level_10 = (is_numeric('#level_10#')) ? parseFloat('#level_10#') : 100;
            // Affichage durée changement dernier etat
            var srcImglogoTime = '#logoTime#';
            // Paramétrage des images
            var srcImgURL = 'data/customTemplates/dashboard/cmd.action.other.Multi-action-Defaut/store/';
            var srcImgURL_ER = 'data/customTemplates/dashboard/cmd.action.other.Multi-action-Defaut/error/';
            // Paramètrage du logo
            var srcImglogo = ('#logo#' != '#' + 'logo#') ? "#logo#" : "st_volet_pos";
            var srcImglogo_T = ('#logo_type#' != '#' + 'logo_type#') ? "#logo_type#" : "png";
            // Paramètrage du logo ERREUR
            var srcImglogoER = ('#logo_error#' != '#' + 'logo_error#') ? "#logo_error#" : "er_oups1";
            var srcImglogoER_T = ('#logo_error_type#' != '#' + 'logo_error_type#') ? "#logo_error_type#" : "png";
            // Variable Image
            var srcPictureID;

            // Update
            var State = parseFloat(_options.display_value);
            if (State == level_0) {
                srcPictureID = "0";
            } else if (State > level_0 && State <= level_1) {
                srcPictureID = "1";
            } else if (State > level_1 && State <= level_2) {
                srcPictureID = "10";
            } else if (State > level_2 && State <= level_3) {
                srcPictureID = "20";
            } else if (State > level_3 && State <= level_4) {
                srcPictureID = "30";
            } else if (State > level_4 && State <= level_5) {
                srcPictureID = "40";
            } else if (State > level_5 && State <= level_6) {
                srcPictureID = "50";
            } else if (State > level_6 && State <= level_7) {
                srcPictureID = "60";
            } else if (State > level_7 && State <= level_8) {
                srcPictureID = "70";
            } else if (State > level_8 && State <= level_9) {
                srcPictureID = "80";
            } else if (State > level_9 && State <= level_10) {
                srcPictureID = "99";
            } else {
                srcPictureID = "error";
                srcImgURL = srcImgURL_ER;
            }
            // Update IMG + gestion erreur
            if (srcPictureID == "error") {
                $('.cmd[data-cmd_uid=#uid#] .iconCmd#id#').empty().append('<img src="' + srcImgURL + srcImglogoER + '.' + srcImglogoER_T + '" ' + srcImgSize + '>');
            } else {
                $('.cmd[data-cmd_uid=#uid#] .iconCmd#id#').empty().append('<img src="' + srcImgURL + srcImglogo + srcPictureID + '.' + srcImglogo_T + '" ' + srcImgSize + '>');
            }
            $('.cmd[data-cmd_uid=#uid#] .value#id#').empty().append(_options.display_value + ' ' + '#unite#');

            // Derniere durée changement dernier etat //Merci @Salvialf pour le code
//            if (srcImglogoTime == "duree" || srcImglogoTime == "durée") {
//                jeedom.cmd.displayDuration(_options.valueDate, $('.cmd[data-cmd_uid=#uid#] .timeCmd#id#'));
//            } else if (srcImglogoTime == "date") {
//                var srcdate = new Date(_options.valueDate);
//                var srcformat = $.datepicker.formatDate('D dd/mm', srcdate);
//                var srctime = "à " + srcdate.getHours() + ":" + (srcdate.getMinutes() < 10 ? '0' : '') + srcdate.getMinutes();
//                $('.cmd[data-cmd_id=#id#] .timeCmd#id#').empty().html(srcformat + ' ' + srctime);
//            } else if (srcImglogoTime == "heure") {
//                var srcdate = new Date(_options.valueDate);
//                var srctime = "à " + srcdate.getHours() + ":" + (srcdate.getMinutes() < 10 ? '0' : '') + srcdate.getMinutes() + ":" + (srcdate.getSeconds() < 10 ? '0' : '') + srcdate.getSeconds() + "";
//                $('.cmd[data-cmd_id=#id#] .timeCmd#id#').empty().html(srctime);
//            };
            //Masque des données
            if (srcvalue == "NO") {
                $("span.value#id#").css("display", "visible");
            } else if (srcvalue == "YES") {
                $("span.value#id#").css("display", "none");
            }
        }
        jeedom.cmd.update['#id#']({
            display_value: '#state#',
            valueDate: '#valueDate#',
            collectDate: '#collectDate#',
            alertLevel: '#alertLevel#'
        });

    </script>
</div>

Norbert

1 « J'aime »