Scène avec un bouton (double ou simple clic)

OK partons sur ça :smiley:

1 « J'aime »

Ah bah bravo, moi qui pensais que ça bossait dur :stuck_out_tongue_winking_eye:

2 « J'aime »

Juste un petit retour, du coup l’issue a été fixée sur la PR Zigbee2mqtt?

@lmilcent tu as réussi à faire tes scènes? :slight_smile:

Non, jai deux problèmes :

1- mon interrupteur de cuisine est reconnu par Gladys comme une prise de courant.

2- mon interrupteur sans fil est toujours impossible à contrôler pour le moment, même si j’utilise 1 comme valeur par défaut

Ok, @cicoub13 vous pouvez regarder ça ensemble ? :slight_smile:

Je me souviens du problème : la feature “Switch” permet de contrôler la lumière depuis le dashboard avec un bouton.
Mais dans les scènes c’est reconnu comme une prise.

La feature “light” permet de contrôler dans les scènes pour allumer les lumières mais pas d’avoir le bouton sur le dashboard.

Quelle est la bonne feature a utiliser dans ce cas ?

Pas d’avoir le bouton sur le dashboard? Vous êtes sur que vous avez bien défini un feature type avec les caractéristiques suivantes:

  • category: light
  • type: binary

?

Toutes les autres intégrations qui gèrent des lampes (Philips Hue, MQTT, etc…) sont contrôlable aussi bien dans les scènes que sur le dashboard.

@cicoub13 je ne me souviens plus du fichier qui gère l’association, mais ça doit être ça l’erreur !

Au niveau des modèles il faudra aussi faire une vérification. Typiquement mon interrupteur est mal déclaré (Switch au lieu de light).

Je pense qu’on a déjà eu ce débat mais un interrupteur est un interrupteur :slight_smile: On ne peut pas savoir qu’est-ce qu’il contrôle (une lampe ou autre chose).

Si on parle bien du modèle WXKG06LM, il est déclaré avec :
category: DEVICE_FEATURE_CATEGORIES.BUTTON,
type: DEVICE_FEATURE_TYPES.BUTTON.CLICK,

Je vais unifier le comportement pour les valeurs et proposer un UX plus simple dans les scènes.

C’est vraiment le cas pour ce modèle ?

Je suis d’accord que dans le cas d’une prise télécommandée ça peut être n’importe quoi derrière, mais dans ce cas là est ce que des gens utilisent ça pour autre chose qu’une lampe ?

Idéalement il faudrait pouvoir re catégoriser dans l’UI si c’est si tu estime que l’usage est si “varié” que ça.

Je suis du même avis que @cicoub13, un interrupteur devrait automatiquement proposer un bouton dédié dans l’interface, comme les switch.

Même s’il ne contrôle pas une lumière directement.

Pour l’instant, j’ai ajouté la gestion de la récupération de la valeur dans la PR Zigbee.
Au lieu d’avoir les valeurs single, double et long, l’état sera 1,2 ou 5.

Ce qui te permet de les utiliser dans les scènes :rocket: @lmilcent Est-ce que tu peux tester la nouvelle image ?

Comme dit précédemment, je veux bien travailler sur l’UX et proposer un bouton plus facile à utiliser dans les scènes (et pour l’affichage dans les box) + uniformiser entre le service Xiaomi et Zigbee2Mqtt (seuls services utilisant ce type de device button).

Mais je pense que c’est mieux de faire ça dans une autre PR et surtout, j’aimerais partager des spécifications ici avant de me lancer :wink:

Pour ajouter une feature Lumière à la place d’un bouton, cela me semble trop complexe pour le moment. Il faudrait que je conserve le type réel Zigbee et le type Gladys de chaque feature pour pouvoir convertir les valeurs ET émettre des actions vers Zigbee (ce qui est impossible pour ces devices).

1 « J'aime »

ça fonctionne nickel !!

Pourquoi 1,2 ou 5 ?

Il me semblait qu’on voulait comme au niveau du Xiaomi ?

const SWITCH_STATUS = {
NO_CLICK: 0,
CLICK: 1,
DOUBLE_CLICK: 2,
LONG_CLICK_PRESS: 3,
LONG_CLICK_RELEASE: 4,
};

Je suis d’accord! Je pense c’est une autre PR et effectivement il faut en discuter !

J’ai supprimé le NO_CLICK (qui n’avait pas de sens) et l’interrupteur WXKG06LM envoie un évènement hold dans Zigbee (équivalent à un LONG_CLICK). Il ne gère pas l’appui (press) et le relâchement de l’appui (release)

J’ai donc gardé les valeurs 3 et 4 pour ne pas casser le service Xiaomi (cas d’autres interrupteurs) et j’ai :

const BUTTON_STATUS = {
  CLICK: 1,
  DOUBLE_CLICK: 2,
  LONG_CLICK_PRESS: 3,
  LONG_CLICK_RELEASE: 4,
  LONG_CLICK: 5,
};

@cicoub13 ok ça me semble bien :slight_smile:

Parfait pour la retro compatibilité

Est-ce que ces derniers developpements peuvent répondre à ma problématique ?

Je souhaite utiliser mon switch Aqara pour allumer / éteindre une ampoule avec un clic simple.
Je crée une scène du type

Declencheur : changement d'état > switch = 1
Action : allumer lumière (reconnue comme un interrupteur pour le moment )

J’arrive donc à allumer ma lumière avec un simple clic… mais je ne peux pas utiliser un simple clic pour éteindre , ou alors j’ai pas compris.

J’ai un bouton Aqara et une prise connectée.

  • scène 1 : si simple clic, continuer si c’est éteint, allumer la prise.
  • scène 2 : si simple clic, continuier si cest allumer, éteindre.

Ça résoud ta problématique ?

A priori ça peut la résoudre oui, mais j’ai 2 remarques :

  • Dans cette partie je ne sais absolument pas quoi marquer :


    Je n’ai rien dans les select

  • Même si ça fonctionne, j’avoue que c’est pas tellement intuitif d’après moi.
    J’aurais plutot vu un fonctionnement ET :
    SI simple clic ET lumière éteinte > Allumer lumière / prise

Ah ah, c’était l’objet d’un échange avec @pierre-gilles il n’y a pas longtemps justement :laughing:

Avant chaque « continuer si », il faut utiliser une brique « récupérer la dernière valeur ».
Ensuite tu sélectionnes ta lumière, et 1 = allumé, 0 = éteint.