Question sur utilisation segments WLED

Bonjour @vedrine et bravo pour ce plugin prometteur. Je débute en WLED et je viens de faire un montage avec 3 LED pilotées par un ESP32 WROOM. Les 3 LED sont affectées à 3 segments différents. La découverte auto du plugin me fait apparaitre 3 WLED correspondants aux 3 segments. Ok je trouve ça cohérent même si cela peut vite devenir touffu si on a un bandeu avec plusieurs dizaines de LED et que l’on veut les piloter individuellement mais j’avoue franchement que je ne sais pas comment tu pourrais faire autrement… Ce qui me gène par contre c’est le OFF du segment 0 qui éteint toutes les LED, comment faire pour n’éteindre que celle correspondant au segment 0? Ou alors je fais un segment 0 qui prend toutes les LED puis un par LED ce qui m’en donnerait 4 pour mon cas?

Merci

je me répond: cela fonctionne mais donne des résultats bizarres. Pour pouvoir allumer et éteindre les LED il faut que le segment 0 soit à 1 et si on fait ON ou OFF sur un autre segment la LED s’allume et s’éteint bien mais l’état reste toujours à 1 même éteinte

Pourtant quand on regarde dans le json: http://192.168.1.140/json/state on voit bien le passage de "on":true à "on":false pour l’ID concernée

En fait je ne peut pas faire ce que je veux dans le plugin, je suis tributaire de l’API WLED et le segment 0 est très spécial, il faut lire la page :
https://kno.wled.ge/features/segments/
Voila une traduction partielle de cette page

SEGMENTS
Cette fonctionnalité vous permet de définir différentes zones sur la bande LED, chacune exécutant un effet ou une couleur différente.
Il existe un segment principal, le segment 0 par défaut. Ce segment présente quelques différences importantes par rapport aux autres segments :

  • Les transitions de couleurs ne fonctionnent que sur le segment principal
  • La couleur du segment principal est celle qui sera signalée aux API HTTP et MQTT

Le segment 0 a une LED de démarrage de 0 et une LED d’arrêt égale au nombre de LED que vous avez défini dans Configuration, Préférences de LED.
La LED Stop n’est pas incluse dans le segment. Actuellement, vous pouvez créer un maximum de 10 segments. Les préréglages 1 à 15 utilisent uniquement le segment 0 par défaut. Le préréglage 16 est le seul préréglage qui enregistre les paramètres des segments 1 à 10.

Ceci dit je pense que mon support des segments dans le plugin Jeedom pourrait être perfectionné, mais je manque d’idée :crazy_face: Je crée un objet par segment car avec le système des commandes Jeedom je ne vois pas comment faire autrement, mais il y a peut-être une meilleure idée. Je suis ouvert aux sugggestions.

Ok mais pourquoi l’état reste à 1 même lorsque le segment est éteint ?

Pour la création des équipements j’avoue que je ne vois pas trop non plus comment faire autrement. Si on a plusieurs wled comment sont gérés les noms des segments identiques sur chaque wled? Ce serait bien que lors de la création de l’équipement le nom donné aux segments indique à quel wled ils appartiennent

je regarde un peu ton code et j’ai l’impression que dans la fonction « applystate » tu ne regardes que le segment 0 ce qui explique pourquoi l’état ne change pas lorsque l’on éteint un autre segment. Je dis une connerie?

Edit: en effet je dis une connerie. Tu regardes bien le bon id mais le « [on] » ne contient aucune donnée:

Traitement segment Array (     [id] => 1     [start] => 0     [stop] => 1     [len] => 1     [grp] => 1     [spc] => 0     [of] => 0     [on] =>      [frz] =>      [bri] => 255

Ok donc je te propose la modification ci dessous de la fonction « applystate ». Elle va récupérer les info d’état et de brillance une fois que le segment concerné aura été isolé du json et maintenant on peut allumer et éteindre un segment seul depuis ton plugin:

    public function applyState($result) {
        log::add('wled', 'debug', 'applyState for '. print_r($result, true));
        $numseg = $this->getConfiguration('segment', 0);
        // A revoir utiliser segment "id"
        $segment = $result['seg'][$numseg];
        log::add('wled', 'debug', 'Traitement segment '. print_r($segment, true));
        $info = $segment['on'];
        if ($info==1) {
            $this->checkAndUpdateCmd('state', 1);
        } else {
            $this->checkAndUpdateCmd('state', 0);
        }
        $info = $segment['bri'];
        $this->checkAndUpdateCmd('brightness_state', $info);
        $effectNumber = $segment['fx'];
        $this->checkAndUpdateCmd('effect_state', $effectNumber);
        $effectCmd = $this->getCmd(null, "effect");
        if (is_object($effectCmd)) {
            $elements = explode(';', $effectCmd->getConfiguration('listValue', ''));
            foreach ($elements as $element) {
                $coupleArray = explode('|', $element);
                if ($effectNumber == $coupleArray[0]) {
                    $this->checkAndUpdateCmd('effect_name', $coupleArray[1]);
                }
            }
        }
        $paletteNumber = $segment['pal'];
        $this->checkAndUpdateCmd('palette_state', $paletteNumber);
        $paletteCmd = $this->getCmd(null, "palette");
        if (is_object($paletteCmd)) {
            $elements = explode(';', $paletteCmd->getConfiguration('listValue', ''));
            foreach ($elements as $element) {
                $coupleArray = explode('|', $element);
                if ($paletteNumber == $coupleArray[0]) {
                    $this->checkAndUpdateCmd('palette_name', $coupleArray[1]);
                }
            }
        }           
        $this->checkAndUpdateCmd('speed_state', $segment['sx']);
        $this->checkAndUpdateCmd('intensity_state', $segment['ix']);
        log::add('wled', 'debug', 'segment '. print_r($segment, true));
        
        $mainColor = $segment['col'][0];
        log::add('wled', 'debug', 'main color '. print_r($mainColor, true));
        log::add('wled', 'debug', 'bg color '. print_r($bgColor, true));
        log::add('wled', 'debug', 'third color '. print_r($thirdColor, true));
        $value = '#' . sprintf('%02x', $mainColor[0]) . sprintf('%02x', $mainColor[1]) . sprintf('%02x', $mainColor[2]);
        log::add('wled', 'debug', 'color value '. $value);
        $this->checkAndUpdateCmd('color_state', $value);
        $value = '#' . sprintf('%02x', $bgColor[0]) . sprintf('%02x', $bgColor[1]) . sprintf('%02x', $bgColor[2]);
        log::add('wled', 'debug', 'color bg value '. $value);
        $this->checkAndUpdateCmd('color_state_bg', $value);
        $value = '#' . sprintf('%02x', $thirdColor[0]) . sprintf('%02x', $thirdColor[1]) . sprintf('%02x', $thirdColor[2]);
        log::add('wled', 'debug', 'color third value '. $value);
        $this->checkAndUpdateCmd('color_state_third', $value);
    }

Par contre lorsque tu « joues » avec le segment 0 en gros ça fait « power on » et « power off » mais ça n’agit pas sur le segment lui même. Les réactions ne correspondent pas à ce que tu peux faire depuis l’interface web sur ce segment

Lorsque tu lances un on ou off sur le segment 0 tu envoies le payload:

Non GET request payload : {"on":false}

Alors que lorsque tu lances les mêmes action sur le segment 1 par exemple tu as:

Non GET request payload : {"seg":[{"id":1, "on":false}]}

Est ce que tu ne devrais pas avoir la même chose entre les 2 segments?

Lorsque j’applique la modification ci dessous à la fonction « execute » je retrouve le fonctionnement équivalent à celui de l’interface web. Si tu n’as qu’un seul segment => segment 0, un on ou un off joue sur toutes les leds. Si tu as plus d’un segment => segment 0 + segment 1 + segment 2 + …, un on ou un off sur le segment 0 ne fait rien (en fait sur l’interface web cela te propose ou t’enlève des effets qui ne sont pas possibles sur les autres segments => androïd, …) mais un on ou un off sur un des autres segments allume ou éteint les LED associées à ce segment.

La modif que je te propose:

    public function execute($_options = array()) {
        if ($this->getType() != 'action') {
            return;
        }
        
        $eqLogic = $this->getEqLogic();
        $segment = $eqLogic->getConfiguration('segment', 0);
        $action= $this->getLogicalId();
        log::add('wled', 'debug', 'execute action '. $action);
        log::add('wled', 'debug', 'execute options '. print_r($_options, true));
        if ($action == 'on') {
            $data = '{"seg":[{"id":' . $segment . ', "on":true}]}';
        } else if ($action == 'off') {
            $data = '{"seg":[{"id":' . $segment . ', "on":false}]}';
        } else if ($action == 'brightness') {
            $data = '{"seg":[{"id":' . $segment . ', "bri":' . intval($_options['slider']) . '}]}';
        } else if ($action == 'effect') {
            $data = '{"seg":[{"id":' . $segment . ', "fx":' . intval($_options['select']) . '}]}';
        } else if ($action == 'palette') {
            $data = '{"seg":[{"id":' . $segment . ', "pal":' . intval($_options['select']) . '}]}';
        } else if ($action == 'color') {
            list($r, $g, $b) = str_split(str_replace('#', '', $_options['color']), 2);
            $r= hexdec($r);
            $g = hexdec($g);
            $b = hexdec($b);
            $data = '{"seg":[{"id":' . $segment . ', "col":[[' . $r . ',' . $g . ',' .  $b . ']]}]}';
        } else if ($action == 'color_bg') {
            list($r, $g, $b) = str_split(str_replace('#', '', $_options['color']), 2);
            $r = hexdec($r);
            $g = hexdec($g);
            $b = hexdec($b);
            $data = '{"seg":[{"id":' . $segment . ', "col":[[],[' . $r . ',' . $g . ',' .  $b . '],[]]}]}'; 
        } else if ($action == 'color_third') {
            list($r, $g, $b) = str_split(str_replace('#', '', $_options['color']), 2);
            $r = hexdec($r);
            $g = hexdec($g);
            $b = hexdec($b);
            $data = '{"seg":[{"id":' . $segment . ', "col":[[],[],[' . $r . ',' . $g . ',' .  $b . '],[]]}]}'; 
        } else if ($action == 'speed') {
            $data = '{"seg":[{"id":' . $segment . ', "sx":' . intval($_options['slider']) . '}]}';
        } else if ($action == 'intensity') {
            $data = '{"seg":[{"id":' . $segment . ', "sx":' . intval($_options['slider']) . '}]}';
        } else if ($action == 'preset') {
            $data = '{"ps":' . $_options['message']  . '}';
        } else if ($action == 'psave') {
            $data = '{"psave":' . $_options['message']  . '}';
        } else if ($action == 'effectbyname') {
			$effectCmd = $eqLogic->getCmd(null, "effect");
			if (is_object($effectCmd)) {
				$listeffects = $effectCmd->getConfiguration('listValue', array());
				$listeffects = explode(';', $listeffects);
				foreach ($listeffects as $k => $option) {
					$effect = explode('|', $option);
					if ($effect[1] == $_options['message']) {
						$data = '{"seg":[{"id":' . $segment . ', "fx":' . intval($effect[0]) . '}]}';
					}
				}
			}
		} else if ($action == 'palettebyname') {
			$paletteCmd = $eqLogic->getCmd(null, "palette");
			if (is_object($paletteCmd)) {
				$listpalettes = $paletteCmd->getConfiguration('listValue', array());
				$listpalettes = explode(';', $listpalettes);
				foreach ($listpalettes as $k => $option) {
					$palette = explode('|', $option);
					if ($palette[1] == $_options['message']) {
						$data = '{"seg":[{"id":' . $segment . ', "pal":' . intval($palette[0]) . '}]}';
					}
				}
			}
		} else if ($action == 'effectbynum') {
			$effectCmd = $eqLogic->getCmd(null, "effect");
			if (is_object($effectCmd)) {
				$listeffects = $effectCmd->getConfiguration('listValue', array());
				$listeffects = explode(';', $listeffects);
				log::add('wled', 'debug', 'list effets '. print_r($listeffects, true));
				foreach ($listeffects as $k => $option) {
					$effect = explode('|', $option);
					log::add('wled', 'debug', 'effet '. print_r($effect, true));
					if ($effect[0] == $_options['message']) {
						$data = '{"seg":[{"id":' . $segment . ', "fx":' . intval($effect[0]) . '}]}';
					}
				}
			}
		} else if ($action == 'palettebynum') {
			$paletteCmd = $eqLogic->getCmd(null, "palette");
			if (is_object($paletteCmd)) {
				$listpalettes = $paletteCmd->getConfiguration('listValue', array());
				$listpalettes = explode(';', $listpalettes);
				foreach ($listpalettes as $k => $option) {
					$palette = explode('|', $option);
					if ($palette[0] == $_options['message']) {
						$data = '{"seg":[{"id":' . $segment . ', "pal":' . intval($palette[0]) . '}]}';
					}
				}
			}
		}
        log::add('wled', 'debug', 'execute data '. $data);
        $endPoint ='/json/state';
        $ipAddress = $eqLogic->getConfiguration('ip_address');
        $result = wled::request($ipAddress, $endPoint, $data, 'POST', false);
        log::add('wled', 'debug', 'execute request result '. $result);
        $eqLogic->getWledStatus();
        $eqLogic->refreshWidget();
     }

Si tu souhaites conserver le fonctionnement actuel où lorsque tu « éteins » le segment 0 tu éteints toutes les LED alors tu peux appliquer plutôt cette modification:

    public function execute($_options = array()) {
        if ($this->getType() != 'action') {
            return;
        }
        
        $eqLogic = $this->getEqLogic();
        $segment = $eqLogic->getConfiguration('segment', 0);
        $action= $this->getLogicalId();
        log::add('wled', 'debug', 'execute action '. $action);
        log::add('wled', 'debug', 'execute options '. print_r($_options, true));
        if ($action == 'on') {
            if ($segment == 0) {
                $data = '{"on":true,"seg":[{"id":' . $segment . ', "on":true}]}';
            } else {
                $data = '{"seg":[{"id":' . $segment . ', "on":true}]}';
            }
        } else if ($action == 'off') {
            if ($segment == 0) {
                $data = '{"on":false,"seg":[{"id":' . $segment . ', "on":false}]}';
            } else {
                $data = '{"seg":[{"id":' . $segment . ', "on":false}]}';
            }
        } else if ($action == 'brightness') {
            if ($segment == 0) {
                $data = '{"bri":' . intval($_options['slider']) . ',"seg":[{"id":' . $segment . ', "bri":' . intval($_options['slider']) . '}]}';
            } else {
                $data = '{"seg":[{"id":' . $segment . ', "bri":' . intval($_options['slider']) . '}]}';
            }
        } else if ($action == 'effect') {
            $data = '{"seg":[{"id":' . $segment . ', "fx":' . intval($_options['select']) . '}]}';
        } else if ($action == 'palette') {
            $data = '{"seg":[{"id":' . $segment . ', "pal":' . intval($_options['select']) . '}]}';
        } else if ($action == 'color') {
            list($r, $g, $b) = str_split(str_replace('#', '', $_options['color']), 2);
            $r= hexdec($r);
            $g = hexdec($g);
            $b = hexdec($b);
            $data = '{"seg":[{"id":' . $segment . ', "col":[[' . $r . ',' . $g . ',' .  $b . ']]}]}';
        } else if ($action == 'color_bg') {
            list($r, $g, $b) = str_split(str_replace('#', '', $_options['color']), 2);
            $r = hexdec($r);
            $g = hexdec($g);
            $b = hexdec($b);
            $data = '{"seg":[{"id":' . $segment . ', "col":[[],[' . $r . ',' . $g . ',' .  $b . '],[]]}]}'; 
        } else if ($action == 'color_third') {
            list($r, $g, $b) = str_split(str_replace('#', '', $_options['color']), 2);
            $r = hexdec($r);
            $g = hexdec($g);
            $b = hexdec($b);
            $data = '{"seg":[{"id":' . $segment . ', "col":[[],[],[' . $r . ',' . $g . ',' .  $b . '],[]]}]}'; 
        } else if ($action == 'speed') {
            $data = '{"seg":[{"id":' . $segment . ', "sx":' . intval($_options['slider']) . '}]}';
        } else if ($action == 'intensity') {
            $data = '{"seg":[{"id":' . $segment . ', "sx":' . intval($_options['slider']) . '}]}';
        } else if ($action == 'preset') {
            $data = '{"ps":' . $_options['message']  . '}';
        } else if ($action == 'psave') {
            $data = '{"psave":' . $_options['message']  . '}';
        } else if ($action == 'effectbyname') {
			$effectCmd = $eqLogic->getCmd(null, "effect");
			if (is_object($effectCmd)) {
				$listeffects = $effectCmd->getConfiguration('listValue', array());
				$listeffects = explode(';', $listeffects);
				foreach ($listeffects as $k => $option) {
					$effect = explode('|', $option);
					if ($effect[1] == $_options['message']) {
						$data = '{"seg":[{"id":' . $segment . ', "fx":' . intval($effect[0]) . '}]}';
					}
				}
			}
		} else if ($action == 'palettebyname') {
			$paletteCmd = $eqLogic->getCmd(null, "palette");
			if (is_object($paletteCmd)) {
				$listpalettes = $paletteCmd->getConfiguration('listValue', array());
				$listpalettes = explode(';', $listpalettes);
				foreach ($listpalettes as $k => $option) {
					$palette = explode('|', $option);
					if ($palette[1] == $_options['message']) {
						$data = '{"seg":[{"id":' . $segment . ', "pal":' . intval($palette[0]) . '}]}';
					}
				}
			}
		} else if ($action == 'effectbynum') {
			$effectCmd = $eqLogic->getCmd(null, "effect");
			if (is_object($effectCmd)) {
				$listeffects = $effectCmd->getConfiguration('listValue', array());
				$listeffects = explode(';', $listeffects);
				log::add('wled', 'debug', 'list effets '. print_r($listeffects, true));
				foreach ($listeffects as $k => $option) {
					$effect = explode('|', $option);
					log::add('wled', 'debug', 'effet '. print_r($effect, true));
					if ($effect[0] == $_options['message']) {
						$data = '{"seg":[{"id":' . $segment . ', "fx":' . intval($effect[0]) . '}]}';
					}
				}
			}
		} else if ($action == 'palettebynum') {
			$paletteCmd = $eqLogic->getCmd(null, "palette");
			if (is_object($paletteCmd)) {
				$listpalettes = $paletteCmd->getConfiguration('listValue', array());
				$listpalettes = explode(';', $listpalettes);
				foreach ($listpalettes as $k => $option) {
					$palette = explode('|', $option);
					if ($palette[0] == $_options['message']) {
						$data = '{"seg":[{"id":' . $segment . ', "pal":' . intval($palette[0]) . '}]}';
					}
				}
			}
		}
        log::add('wled', 'debug', 'execute data '. $data);
        $endPoint ='/json/state';
        $ipAddress = $eqLogic->getConfiguration('ip_address');
        $result = wled::request($ipAddress, $endPoint, $data, 'POST', false);
        log::add('wled', 'debug', 'execute request result '. $result);
        $eqLogic->getWledStatus();
        $eqLogic->refreshWidget();
     }

Salut, j’avance dans mes aventures avec ton plugin et WLED :wink:

En ce qui concerne les presets, est ce que tu ne pourrais pas donner la liste de ceux qui sont enregistrés? Quand tu vas sur le json http://ip-wled/presets.json tu as la liste des presets et leurs noms

Alors je répond à tes deux derniers messages.
Pour ce qui est des commandes on/off et luminosité, j’ai jeté un coup d’oeil à l’interface de l’app smartphone (IOS pour moi mais je suppose que c’est pareil sur Android)
Et je pense que la bonne solution c’est d’avoir

  • d’une part des commandes qui agissent sur tous les segments équivalents de ce qu’on trouve sur la page d’accueil de l’app (le bouton on/off et le curseur)
  • d’autre part des commandes on/off et luminosité qui agissent sur un segment donné équivalentes à ce qu’on peut faire dans l’app en sélectionnant un segment

Comme çà chacun pourra faire ce qu’il veut. La seule chose qui me reste à faire c’est de trouver les noms de ces différentes commandes, je pensais à power on / power off et luminosité totale pour les commandes globales et simplement on/off et luminosité pour les commandes au niveau du segment. Et aussi à savoir si je ne met les commandes globales que pour l’objet segment 0 ou si je les mets pour chaque segment.
Pour les presets, récupérer les noms n’est pas un problème, mais je ne vois pas où les mettre car le seul type de commande Jeedom qui permet çà c’est la commande de type liste mais avec 250 presets possibles ce ne sera pas pratique du tout et en plus j’ai choisi une commande de type message pour pouvoir mettre des enchainements de presets comme "1~4~" ou "4~10~r" (voir la doc du plugin) avec une liste ce ne serait plus possible.

Voila j’ai mis en oeuvre mon idée dans la version beta.
Les commandes action globales ont pour nom Ruban on, Ruban off (pas le choix pour que les widgets marchent il faut que çà contienne on et off !) et Ruban luminosité. Les commandes info associées sont Ruban état et Ruban état luminosité.
Elles n’existent que pour le segment 0. La procédure de mise à jour les ajoute aux équipements existants.
Si certains utilisateurs qui utilisent la version béta peuvent tester et me donner leur avis.
Mes interrogations :

  • Les anciennes commandes On, Off et luminosité qui agissaient sur toutes les leds du contrôleur agissent maintenant sur le segment 0 (pas de changement pour les commandes en question pour les autres segments). J’ai cherché mais je n’ai pas trouvé de moyen simple de faire autrement, il aurait fallu faire des changements de nom et de LogicalId sur les commandes des équipements existants lors de la mise à jour et çà aurait certainement foutu le bazar dans la BdD.
  • Pour les utilisateurs qui ne se servent pas des segments il y a maintenant des commandes qui font double emploi car agir sur le segment 0 ou sur tout le contrôleur pour eux c’est la même chose. Là aussi je ne vois pas comment faire autrement simplement car on peut à tout moment diviser un ruban en segments mêm s’il n’en avait qu’un au départ. Le plus simple pour eux est de masquer les commandes inutiles en décochant « Afficher ».

j’ai pas mal tourné en rond avec cette histoire de segments. Je les créais et lorsque je redémarrais l’esp32 ils avaient disparus. En fait si tu ne créés pas de presets les segments ne sont pas sauvegardés donc dans l’esprit de WLED les segments n’existent que pour y appliquer des presets.

pas certain car tu pourrais très bien ne mettre que 10 LEDS sur 50 dans le segment 0 même s’il est seul. Bon ok je ne vois pas pourquoi on ferait ça mais c’est une possibilité :wink:

là c’est cohérent avec le fonctionnement de l’interface web, merci.

reste en suspends:

  • afficher une liste des presets (voir mon post un peu plus haut)
  • serait il possible d’avoir sur le segment 0 les effets qui n’existent que pour lui (Androïd, …) en plus de ceux qui sont communs à tous ?

Pour la liste des presets, comme je te l’ai dit dans un message précédent, je ne vois pas comment faire pour que ce soit utile, bien sûr je peux créer une commande info texte et y mettre une liste des effets qui pourra s’afficher dans le widget, mais je ne vois pas à quoi çà pourra servir. peux tu préciser ta pensée ?
Je n’étais pas au courant qu’il y avait des effets particuliers pour le segment 0 (en fait je n’utilise pas les segments, j’ai juste un wled de test avec des segments que j’utilise pour tester mon code) Peux tu me dire où tu les vois ? Jette un oeil aux fonctions getWledEffects et updateEffects et dis moi ce que je devrais faire de différents pour ces effets là.

Pour les prêts voici à quoi cela peut servir https://onedrive.live.com/redir?resid=7A8AD26CF5E25D52!178138&authkey=!AgVMmoM0tuLpdcs&page=View&wd=target(Divers.one|2c65ca65-11cd-47f7-8087-10a38a92fe67%2FVISULED|4e8153c5-9a0f-4f08-a11b-5d6c21bf0220%2F)&wdorigin=NavigationUrl

1 « J'aime »

J’avais oublié de répondre à cette question : chaque wled est identifié par son adresse ip donc le nom du segment sera adresseip_segnumseg qui est forcément unique. J’avais essayé avec une combinaison du nom du ruban et du numéro de segment mais j’avais souvent des erreurs car Jeedom refuse les noms identiques et il peut très bien y avoir des noms de ruban identiques dans 2 pièces différentes et donc quand je créait les objets pour les segments comme à ce stade je ne peux pas savoir dans quelle pièce ils sont si par exemple il y avait des rubans nommés monbeauruban à la fois dans le salon et la chambre (ce qui est permis) au niveau des segments boum çà donnait le même nom monbeauruban_seg0 et donc une erreur. J’en ai eu marre de chercher une solution à ce problème de collision de noms et j’ai opté pour l’adresse ip. Mais note qu’on peut très bien changer le nom à la main par la suite.

Merci pour cette url je ne connaissais pas Visuled c’est très intéressant.
Intéressant aussi l’implémentation de wled dans home assistant, j’ai un peu honte mais je n’étais pas allé la regarder, j’aurais dû.
Je trouve la page de Visuled un peu sévère avec le plugin jeedom même si je sais bien qu’il est largement perfectible.
Je ne sais pas pourquoi ma fonction de découverte ne marche pas chez certains, chez moi sur tous les jeedom de test où je l’ai essayé elle a toujours trouvé tous les wled du réseau donc dur pour moi de debugger, d’autant que je comprends mal ce truc de mDNS donc j’ai plus ou moins recopié du code exemple trouvé sur le net.
Sur la page de visuled, j’avoue que je trouve compliqué le fait de dire au gens de créer un objet script avec la requête http

 http://IP_de_votre_VISULED/win&PL=ID_du_preset_a_lancer 

Alors que depuis pas mal de temps il y a dans le plugin WLED la commande anciennement « Preset » et désormais (en béta) « Preset par numéro » qui fait çà très bien et s’intègre parfaitement dans les scénarios.
Je viens de mettre en ligne une nouvelle version béta avec une commande liste qui permet de choisir un preset par son nom.
Faut il cacher le preset 0 qui ne semble servir à rien ? A moins que je me trompe ?
Aussi les preset ne semblent pas être rangés par id croissante ?? En tout cas son mon wled de test. C’est curieux.

Je pense qu’il parle d’une version bien antérieure à celle actuelle et qui ne devait pas trop bien fonctionner.

Oui, c’est pour ça que ton plugin me semble bien plus intéressant

Top, je l’installe et je te dis :wink:

la liste apparait bien mais il ne se passe rien quand tu sélectionnes une des valeurs, ça fonctionne encore par le numéro

j’ai l’impression que c’est classé par ordre alphabétique

Oops je crois que j’ai oublié de modifier la fonction execute :crazy_face:

1 « J'aime »

Et je viens de me rendre compte que j’avais aussi oublié de mettre à jour la commande info associée preset_state dans la fonction applyState je pousse une correction de la correction !

1 « J'aime »

comme les presets s’appliquent à tous les segments, est ce que c’est utile de les reprendre sur tous les segments ou le mieux (je pense) ne serait il pas uniquement sur le segment 0?