Télécommande AwoX 33952 et détection des touches

Bonjour,
J’ai une télécommande AwoX 33952 que j’ai associé en Zigbee.

J’ai un problème pour scénariser les touches. En effet, quand j’appuie sur une touche, je vois bien la touche et dans la même seconde le « on ».

Comment faire pour bien détecter la première touche et pas le « on », sans pour autant inhiber la touche « on » quand elle est bien appuyée ?

Merci

info 2025-03-27 21:33:52z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0xa4c13809e93e2d35', payload '{"action":"red","action_group":32776,"device":{"applicationVersion":2,"friendlyName":"0xa4c13809e93e2d35","hardwareVersion":60,"ieeeAddr":"0xa4c13809e93e2d35","manufacturerID":4417,"manufacturerName":"AwoX","model":"33952","networkAddress":46979,"powerSource":"Battery","softwareBuildID":"2.7.6_1477","stackVersion":1,"type":"EndDevice","zclVersion":3},"last_seen":"2025-03-27T20:33:52.263Z","linkquality":252}'
info 2025-03-27 21:33:52z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0xa4c13809e93e2d35', payload '{"action":"on","action_group":32776,"device":{"applicationVersion":2,"friendlyName":"0xa4c13809e93e2d35","hardwareVersion":60,"ieeeAddr":"0xa4c13809e93e2d35","manufacturerID":4417,"manufacturerName":"AwoX","model":"33952","networkAddress":46979,"powerSource":"Battery","softwareBuildID":"2.7.6_1477","stackVersion":1,"type":"EndDevice","zclVersion":3},"last_seen":"2025-03-27T20:33:52.358Z","linkquality":255}'
info 2025-03-27 21:33:52z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/0xa4c13809e93e2d35', payload '{"device":{"applicationVersion":2,"friendlyName":"0xa4c13809e93e2d35","hardwareVersion":60,"ieeeAddr":"0xa4c13809e93e2d35","manufacturerID":4417,"manufacturerName":"AwoX","model":"33952","networkAddress":46979,"powerSource":"Battery","softwareBuildID":"2.7.6_1477","stackVersion":1,"type":"EndDevice","zclVersion":3},"last_seen":"2025-03-27T20:33:52.358Z","linkquality":255}'

Je suis pas certain de comprendre, quand tu appuies sur une touche cela déclenche deux payloads? Quelle commande côté Jeedom est modifiée, et avec quelle valeur ?

Hello @rom.jou ,
Oui c’est bien ça.
La commande action sous Jeedom va passer de la valeur de la touche à « on » dans la même seconde.
J’ai essayé via un scénario, en appuyant 3 fois sur la même touche « green ».

Du coup essayé de mettre en déclencheur de ton scénario [blabla](button)== "green" et tu n’auras qu’un seul déclenchement. (Syntaxe exacte à vérifier)

Ok, mais du coup, comment différencier le « on » ?

C’est impossible … J’ai essayé pendant des semaines (mois !!!) a faire fonctionner correctement cette télécommande.
Ce « On » envoyé avant chaque appui est juste un enfer.
La chose qui s’approchait le plus d’un fonctionnement « normal », c’est de ne rien mettre sur le On …
Mais j’avais l’impression que jeedom (z2m plutot) n’était pas assez rapide pour détecter tous les messages envoyés et me transmettait aléatoirement le On (su rlequel rien n’etait paramétré), ou le green (dans ton exemple plus haut).
Bref, il fallait appuyer 3 fois sur le bouton pour espérer avec la bonne commande qui déclenche le bon scenario …

J’ai opéré un rangement vertical, direct dans la poubelle de cette belle merde de telecommande

Norbert

1 « J'aime »

Et y’a pas moyen de dire dans le configuration.yaml d’inhiber la deuxième commande dans la même seconde ?

Dans la config yaml de z2m … Non !
De manière générale, d’après ce que j’ai pu comprendre, il n’ets pas possible dans z2m de filtré sur la valeur d’un attribut.
J’ai compris que l’on pouvait mettre des filtres dans z2m sur les topics ou sur les attributs des topics (action), mais pas sur la valeur de l’attribut (« action: on »)
Les seules solutions proposées c’est un filtrage à posteriori par un outil tierce type node-red … bref, une usine à gaz pour un interrupteur

Et de toute facon, z2m gère les messages sequentiellement. Je ne pense pas qu’il sache quel message est arrivé avant

Norbert

Et faire une demande dévolution côté Zigbee2mqtt ?

Ben oui, tu peux le faire…
Moi, j’ai tout jeté

Allez, je vais tenter :slight_smile:

Hello à tous,
Je reviens sur le sujet.
Après un échange avec Koenkk sur github, il ne peut rien faire.
Du coup, je me suis lancé (avec l’aide de Chat GPT) pour faire un fichier dans « external_converters », sauf que je galère…

const fz = require('zigbee-herdsman-converters/converters/fromZigbee');

const eglo_custom_converter = {
    fingerprint: [
        { modelID: '33952', manufacturerName: 'AwoX' },
    ],
    fromZigbee: [
        // Power
        {
            cluster: 'genOnOff',
            type: ['commandOn'],
            convert: () => ({ action: 'power_on' }),
        },
        {
            cluster: 'genOnOff',
            type: ['commandOff'],
            convert: () => ({ action: 'power_off' }),
        },

        // Luminosité
        {
            cluster: 'genLevelCtrl',
            type: ['commandStepWithOnOff'],
            convert: () => ({ action: 'brightness_up' }),
        },
        {
            cluster: 'genLevelCtrl',
            type: ['commandStep'],
            convert: () => ({ action: 'brightness_down' }),
        },

        // Couleur chaude / froide
        {
            cluster: 'lightingColorCtrl',
            type: ['commandStepColorTemp'],
            convert: (model, msg) => {
                const stepmode = msg.data.stepmode;
                return {
                    action: stepmode === 1 ? 'color_temp_warmer' : 'color_temp_cooler'
                };
            },
        },

        // Mouvement lumière circulaire
        {
            cluster: 'lightingColorCtrl',
            type: ['commandEnhancedMoveHue'],
            convert: () => ({ action: 'cycle_light' }),
        },

        // Favoris
        {
            cluster: 'genScenes',
            type: ['commandRecall'],
            convert: (model, msg) => {
                return { action: `favorite_${msg.data.sceneid}` };
            },
        },

        // Boutons couleur en RAW
        {
            cluster: 'lightingColorCtrl',
            type: ['raw'],
            convert: (model, msg) => {
                const buffer = msg.data.data;
                const hex = buffer.map(b => b.toString(16).padStart(2, '0')).join('');

                const colorMap = {
                    '11d03000fe0800': 'red',
                    '11d230002a0800': 'yellow',
                    '11d43000540800': 'green',
                    '11d63000a90800': 'blue',
                };

                const color = colorMap[hex.toLowerCase()];
                if (color) {
                    return { action: `color_${color}` };
                }
                return;
            },
        },

        // Refresh (bouton sans nom ?)
        {
            cluster: 'genLevelCtrl',
            type: ['raw'],
            convert: (model, msg) => {
                const hex = msg.data.data.map(b => b.toString(16).padStart(2, '0')).join('');
                if (hex === '11df100101') {
                    return { action: 'refresh' };
                }
                return;
            },
        },
    ],
    toZigbee: [],
    exposes: [
        {
            type: 'enum',
            name: 'action',
            values: [
                'power_on', 'power_off',
                'brightness_up', 'brightness_down',
                'color_temp_warmer', 'color_temp_cooler',
                'cycle_light',
                'color_red', 'color_green', 'color_blue', 'color_yellow',
                'favorite_1', 'favorite_2',
                'refresh'
            ],
        },
    ],
};

module.exports = eglo_custom_converter;

Ce fichier est dans le dossier html/plugins/z2m/core/config/converters/AwoX/AwoX_33952.js et il est bien reconnu, puisque quand je relance Zigbee2mqtt, le chemin est inscrit en bas du fichier configuration.yaml.

Cependant, quand je clique sur les touches, j’ai toujours les anciennes dénominations.
Voyez-vous ce qui pose problème ?

Merci

pour info, je confirme que vous devriez plutot tout mettre à la poubelle …

Paragraphe 2

Norbert