Les actions via scripts ne veulent pas fonctionner

Bonjour,

J’ouvre un nouveau sujet suite à mon Topic qui lui a été résolu sur la récupération de valeur json

Par contre mon objectif n’est pas rempli à savoir allumer et éteindre mon ampli via jeedom. Ceci fonctionne via le plugin script lorsque je fais tester

Ensuite j’intègre cela dans le design et je vois bien mes boutons mais rien ne se passe.
J’ai vu sur un sujet qu’il fallait créer un virtuel puis :

Ensuite dans la roue crantée de la même action sur l’onglet « Configuration », dans la section « Action après exécution de la commande »

J’avoue ne pas comprendre, cela est redondant et je peux le faire depuis directement le script ?

Mais cela ne fonctionne pas non plus :-/

Salut,

Je ne comprends pas la question.
Pour moi il n’y a ni besoin de virtuel ni de faire des actions après exécution.

Tu dois juste appeler tes commandes

Hello Mips,

c’est aussi ce que je pensais puis en voyant ce sujet j’ai eu un doute:

on comprend pas bien ce que tu veux faire je pense.

tu as un script qui permet d’allumer / éteindre ton nad à partir de 2 commandes c’est bien ça ?
si tu veux créer un affichage avec les boutons, tu peux par exemple créer un virtuel avec deux actions qui déclenchent respectivement les actions du script on et off. Ensuite lui attribuer un look à l’aide des widgets en passant en mode édition ou en appliquant un widget sur mesure.

Pas besoin de virtuel, il faut utiliser les actions de l’équipement script directement

1 « J'aime »

Merci Mips c’est bien cela. En fait j’ai eu 2 soucis qui m’ont fait penser que cela ne fonctionnait pas. (un pb de com avec un serial usb, pile au moment où je testais et un pb avec mon widget.

A ce sujet, je ne sais pas comment faire pour modifier un widget existant.
1

Il a ce code (widget action):

<div class="cmd cmd-widget reportModeHidden" data-type="action" data-subtype="other" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
  <!--
    Création : @PhpVarious
    Date : 04/02/2023
    https://community.jeedom.com/t/creation-widget-avec-css/98824
  -->
  <div class="tuile#id# align-items-center#id#">
    <span class="iconCmd bg-icone#id# rounded-circle#id# execute"></span>
    <div class="margin-left#id#">
      <div class="d-flex#id# align-items-center#id#">
        <div class="margin-bottom#id# h3-#id#" id="titre#id#"></div>
      </div>
      <p class="font-color#id# margin-bottom#id# state#id#"></p>
    </div>
  </div>
  <template>
    <div>widthTuile : Largueur de la tuile [Défaut : 170]</div>
    <div>radiusTuile : Arrondi de la tuile [Défaut : 15]</div>
    <div>titleTuile : Titre du widget [Défaut : le nom de la commande état]</div>
    <div>texteIfOn : Texte affiché si Etat = 1 [Défaut : Allumé | accepte une valeur vide]</div>
    <div>texteIfOff : Texte affiché si Etat = 0 [Défaut : Éteint| accepte une valeur vide]</div>
    <div>radiusIcone : Arrondi de l'icone [Défaut : 50 (rond)]</div>
    <div>darkBackground : couleur de fond en thème Dark [Défaut : rgb(47, 47, 47)]</div>
    <div>lightBackground : couleur de fond en thème Light [Défaut : rgb(199 199 199)]</div>
    <div>darkBackgroundIcone : couleur de fond de l'icone en thème Dark [Défaut : rgb(69, 70, 72)]</div>
    <div>lightBackgroundIcone : couleur de fond de l'icone en thème Light [Défaut : rgb(100, 100, 100)]</div>
    <div>icone : icone à afficher dans le widget [ ex : icon jeedomapp-prise ]</div>
    <div>si ce paramètre n'est pas précisé, le widget affichera l'icône affecté a la commande.</div>
    <div>et si il n'y a pas d'icône affecté a la commande, le widget affichera un icone prédéfini en fonction du generic type.</div>
    
  </template>
  <script>
    var debug#id# = ('#debug#' != '#' + 'debug#' && '#debug#' == 1) ? true : false;
    var cmd#id# = $('.cmd[data-cmd_id=#id#]')
    var width#id# = is_numeric('#widthTuile#') ? parseFloat('#widthTuile#'):170;
    var title#id# = ('#titleTuile#' != '#' + 'titleTuile#') ? "#titleTuile#" : "#valueName#";
    var radiusIcone#id# = is_numeric('#radiusIcone#') ? parseFloat('#radiusIcone#'):50;
    var radiusTuile#id# = is_numeric('#radiusTuile#') ? parseFloat('#radiusTuile#'):15;
    var darkBackground#id# = ('#darkBackground#' != '#' + 'darkBackground#') ? '#darkBackground#' : 'rgb(47, 47, 47)';
    var lightBackground#id# = ('#lightBackground#' != '#' + 'lightBackground#') ? '#lightBackground#' : 'rgb(199 199 199)';
    var darkBackgroundIcone#id# = ('#darkBackgroundIcone#' != '#' + 'darkBackgroundIcone#') ? "#darkBackgroundIcone#" : 'rgb(69, 70, 72)';
    var lightBackgroundIcone#id# = ('#lightBackgroundIcone#' != '#' + 'lightBackgroundIcone#') ? "#lightBackgroundIcone#" : 'rgb(100, 100, 100)';
    var theme#id# = jeedom.widgets.getThemeImg("Light","Dark")
    var icone#id# = ('#icone#' != '#' + 'icone#') ? '<i class="#icone#"></i>' : '#name_display#';
    var texteIfOn#id# = 'Allumé'
    var texteIfOff#id# = 'Éteint'
    
    if (debug#id#) console.log('┌─────────────────── Chargement Widget (cmd:#id#) en debug')
    if (debug#id#) console.log('| generictype : #generic_type#');
    if(icone#id#.indexOf('<i ') === -1) {
      if (debug#id#) console.log('| icone absent');
      if (debug#id#) console.log('| name : #name#');
      if (jeedom.cmd.normalizeName('#name#') == 'off') {
        if (debug#id#) console.log('| normalizeName : NOT on');
        if ('#generic_type#'.indexOf('ENERGY') !== -1) icone#id# = '<i class="icon jeedomapp-prise icon_yellow"></i>'
        else if ('#generic_type#'.indexOf('HEATING') !== -1) icone#id# = '<i class="icon techno-heating3 icon_yellow"></i>'
        else if ('#generic_type#'.indexOf('MEDIA') !== -1) icone#id# = '<i class="fas fa-tv icon_yellow"></i>'
        else if ('#generic_type#'.indexOf('LOCK') !== -1) {
          icone#id# = '<i class="fas fa-lock-open icon_yellow"></i>'
          texteIfOn#id# = 'Ouvert'
          texteIfOff#id# = 'Fermé'
        }
        else icone#id# = '<i class="fas fa-lightbulb icon_yellow"></i>'
      } else if (jeedom.cmd.normalizeName('#name#') == 'on'){
        if (debug#id#) console.log('| normalizeName : on');
        if ('#generic_type#'.indexOf('ENERGY') !== -1) icone#id# = '<i class="icon jeedomapp-prise"></i>'
        else if ('#generic_type#'.indexOf('HEATING') !== -1) icone#id# = '<i class="icon techno-heating3"></i>'
        else if ('#generic_type#'.indexOf('MEDIA') !== -1) icone#id# = '<i class="fas fa-tv"></i>'
        else if ('#generic_type#'.indexOf('LOCK') !== -1) {
          icone#id# = '<i class="fas fa-lock"></i>'
          texteIfOn#id# = 'Ouvert'
          texteIfOff#id# = 'Fermé'
        }
        else icone#id# = '<i class="fas fa-lightbulb"></i>'
      }
      else
      {
        if (debug#id#) console.log('| Not normalizeName');
        if ('#generic_type#'.indexOf('ENERGY') !== -1) icone#id# = '<i class="icon jeedomapp-prise icon_orange"></i>'
        else if ('#generic_type#'.indexOf('HEATING') !== -1) icone#id# = '<i class="icon techno-heating3 icon_orange"></i>'
        else if ('#generic_type#'.indexOf('MEDIA') !== -1) icone#id# = '<i class="fas fa-tv icon_orange"></i>'
        else if ('#generic_type#'.indexOf('LOCK') !== -1) {
          icone#id# = '<i class="fas fa-lock icon_orange"></i>'
          texteIfOn#id# = 'Ouvert'
          texteIfOff#id# = 'Fermé'
        }
        else icone#id# = '<i class="fas fa-lightbulb icon_orange"></i>'
      }
    }
    
    if (debug#id#) console.log('| icone : ' + icone#id#);
    texteIfOn#id# = ('#texteIfOn#' != '#' + 'texteIfOn#') ? "#texteIfOn#" : texteIfOn#id#;
    texteIfOff#id# = ('#texteIfOff#' != '#' + 'texteIfOff#') ? "#texteIfOff#" : texteIfOff#id#;
    radiusIcone#id# = radiusIcone#id# > 50 ? 50 : radiusIcone#id#;
    if (jeedom.cmd.normalizeName('#name#') == 'on') cmd#id#.find('.state#id#').empty().append(texteIfOff#id#)
    if (jeedom.cmd.normalizeName('#name#') == 'off') cmd#id#.find('.state#id#').empty().append(texteIfOn#id#)
    cmd#id#.find('.iconCmd').empty().append(icone#id#)
    document.documentElement.style.setProperty('--width#id#', width#id#+'px');
    document.documentElement.style.setProperty('--border-radius-icone#id#', radiusIcone#id#+'%');
    if (jeedom.widgets.getThemeImg("Light","Dark") == "Light") {
      document.documentElement.style.setProperty('--bg-tuile#id#', lightBackground#id#);
      document.documentElement.style.setProperty('--bg-icone#id#', lightBackgroundIcone#id#);
    }
    else {
      document.documentElement.style.setProperty('--bg-tuile#id#', darkBackground#id#);
      document.documentElement.style.setProperty('--bg-icone#id#', darkBackgroundIcone#id#);
    }
    document.documentElement.style.setProperty('--border-radius-tuile#id#', radiusTuile#id#+'px');
    cmd#id#.find('#titre#id#').empty().append(title#id#)
    if (debug#id#) console.log('└───────────────────────────')
    
    //jeedom.cmd.addUpdateFunction('#id#',function(_options) {
    jeedom.cmd.update['#id#'] = function(_options){
      //cmd#id#.attr('title','Date de valeur : '+_options.valueDate+'<br/>Date de collecte : '+_options.collectDate)
      if (debug#id#) console.log('widget (id:#id#) jeedom.cmd.update [' + jeedom.cmd.normalizeName('#name#') + '] : _options.display_value = ' + _options.display_value)
      if (_options.display_value == '1' || _options.display_value >= 1 || _options.display_value == '99' || _options.display_value == 99 || _options.display_value == 'on') {
        if (jeedom.cmd.normalizeName('#name#') == 'on') cmd#id#.hide()
        else cmd#id#.show()
      } else {
        if (jeedom.cmd.normalizeName('#name#') == 'off') cmd#id#.hide()
        else cmd#id#.show()
      }
    }
    //);
    //jeedom.cmd.refreshValue([{cmd_id :'#id#',display_value: '#state#', valueDate: '#valueDate#', collectDate: '#collectDate#'}])
    //    jeedom.cmd.update['#id#']({display_value:'#state#',valueDate: '#valueDate#', collectDate: '#collectDate#'});
    jeedom.cmd.update['#id#']({display_value:'#state#'});
    $('.cmd[data-cmd_uid=#uid#] .execute').off().on('click', function() {
      jeedom.cmd.execute({id: '#id#'})
    })
    
    $('body').on('changeThemeEvent', function (event, theme) {
      let cmd = $('.cmd[data-cmd_id=#id#]')
      if (theme == "Light") {
        if (debug#id#) console.log('widget (id:#id#) : Passage en Light')
        document.documentElement.style.setProperty('--bg-tuile#id#', lightBackground#id#);
        document.documentElement.style.setProperty('--bg-icone#id#', lightBackgroundIcone#id#);
      }
      else {
        if (debug#id#) console.log('widget (id:#id#) : Passage en Dark')
        document.documentElement.style.setProperty('--bg-tuile#id#', darkBackground#id#);
        document.documentElement.style.setProperty('--bg-icone#id#', darkBackgroundIcone#id#);
      }
    })
  </script>
  <style>
    :root {
      --width#id#: 170px;
      --bg-icone#id#: var(--btn-default-color);
      --border-radius-icone#id# : 50%;
      --border-radius-tuile#id# : 15px;
      --bg-tuile#id#: var(--form-bg-color);
    }
    .tuile#id# {
      background-color: var(--bg-tuile#id#);
      padding: 10px;
      border-radius: var(--border-radius-tuile#id#);
      margin-bottom: 0;
      display: flex;
      width: var(--width#id#);
      min-width: 50px;
    }
    .rounded-circle#id# {
      border-radius: var(--border-radius-icone#id#);
      width: 50px;
      height: 50px;
      cursor: pointer !important;
      text-align: center;
    }
    .bg-icone#id# {
      background-color: var(--bg-icone#id#);
      
    }
    .tuile#id# i:first-child {
      line-height: 50px;
      font-size: 24px;
      color: var(--sc-lightTxt-color);
    }
    .margin-left#id# {
      margin-left: 10px;
    }
    .align-items-center#id# {
      align-items: center;
    }
    .d-flex#id# {
      display: flex;
    }
    .margin-bottom#id# {
      margin-bottom: 0;
      text-align: left;
    }
    .h3-#id# {
      font-size: 18px;
      margin-top: 0;
      line-height: 18px;
      color: var(--link-color);
    }
    .font-color#id# {
      color: var(--txt-color);
    }
  </style>
</div>

Je voudrais juste le rond et pas le rectangle gris clair. Du coup j’ai retiré ceci:

    .tuile#id# {
      background-color: var(--bg-tuile#id#);
      padding: 10px;
      border-radius: var(--border-radius-tuile#id#);
      margin-bottom: 0;
      display: flex;
      width: var(--width#id#);
      min-width: 50px;

:slight_smile: mais cela ne fonctionne pas. Je tente ^^

du coup c’est pas « a ce sujet » mais « hors sujet »; => crées un nouveau post dans la catégorie widget pour cette question.

et si le « problème » de ce sujet est réglé (ou disparu), alors plus qu’à coché la case « solution »

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