Conflict lors de l'ajout d'un device Z2M

Bonjour,

J’ai besoin d’un peu d’aide, je suis face à un refus d’ajout d’un périphérique enregistré dans Z2M sur Gladys. Pour info je suis sous une image de raspios buster avec docker d’installé et sur un Pi4 via un SSD.

Lors de l’ajout de celui une erreur m’indique “”, pas de message dans les logs de Gladys et dans la console de mon navigateur j’ai ceci :
image

Suite à ce message je suis allé supprimé tous mes périphériques dans chaque intégration (histoire d’être sur) et j’ai essayé de l’ajouter à nouveau toujours le même soucis.

Je suis alors passé par l’API pour vérifier tous les devices présent et rien qui ne pourrait porter le même nom.

Je suis aussi passé par un DBeaver pour interagir avec la base de donnée SQLite et rien non plus de particulier.

Auriez vous une autre idée ? (le périphérique est un capteur de présence de chez Xiaomi qui est bien intégré à Z2M)

Coucou, je suis prêt a parier que c’est la feature “luminosité décimale” qui génère unn conflit…
Il faudrait récupérer le contenu json de ce device, tu peux le faire depuis la console du navigateur, onglet réseau, lorsque tu accède à la page découverte.

Voici le json associé à l’appareil quand j’appuie sur l’ajout à Gladys :

{
  "name": "Bureau Capteur_presence",
  "model": "RTCGQ11LM",
  "external_id": "zigbee2mqtt:Bureau Capteur_presence",
  "features": [
    {
      "name": "Batterie",
      "read_only": true,
      "has_feedback": false,
      "min": 0,
      "max": 100,
      "category": "battery",
      "type": "integer",
      "unit": "percent",
      "external_id": "zigbee2mqtt:Bureau Capteur_presence:battery:integer:battery",
      "selector": "zigbee2mqtt-bureau-capteur-presence-battery-integer-battery"
    },
    {
      "name": "Détection mouvement Oui/Non",
      "read_only": true,
      "has_feedback": false,
      "category": "motion-sensor",
      "type": "binary",
      "min": 0,
      "max": 1,
      "unit": null,
      "external_id": "zigbee2mqtt:Bureau Capteur_presence:motion-sensor:binary:occupancy",
      "selector": "zigbee2mqtt-bureau-capteur-presence-motion-sensor-binary-occupancy"
    },
    {
      "name": "Température",
      "read_only": true,
      "has_feedback": false,
      "min": -100,
      "max": 150,
      "category": "temperature-sensor",
      "type": "decimal",
      "unit": "celsius",
      "external_id": "zigbee2mqtt:Bureau Capteur_presence:temperature-sensor:decimal:temperature",
      "selector": "zigbee2mqtt-bureau-capteur-presence-temperature-sensor-decimal-temperature"
    },
    {
      "name": "Tension moyenne",
      "read_only": true,
      "has_feedback": false,
      "min": 0,
      "max": 10000,
      "category": "switch",
      "type": "voltage",
      "unit": "millivolt",
      "external_id": "zigbee2mqtt:Bureau Capteur_presence:switch:voltage:voltage",
      "selector": "zigbee2mqtt-bureau-capteur-presence-switch-voltage-voltage"
    },
    {
      "name": "Luminosité décimale",
      "read_only": true,
      "has_feedback": false,
      "min": 0,
      "max": 100000,
      "category": "light-sensor",
      "type": "decimal",
      "unit": "lux",
      "external_id": "zigbee2mqtt:Bureau Capteur_presence:light-sensor:decimal:illuminance",
      "selector": "zigbee2mqtt-bureau-capteur-presence-light-sensor-decimal-illuminance"
    },
    {
      "name": "Luminosité décimale",
      "read_only": true,
      "has_feedback": false,
      "min": 0,
      "max": 100000,
      "category": "light-sensor",
      "type": "decimal",
      "unit": null,
      "external_id": "zigbee2mqtt:Bureau Capteur_presence:light-sensor:decimal:illuminance",
      "selector": "zigbee2mqtt-bureau-capteur-presence-light-sensor-decimal-illuminance"
    }
  ],
  "should_poll": false,
  "service_id": "515a15a0-d9e5-4d2b-89bf-80aca56106f7",
  "room_id": "c571780a-4da5-4801-8731-8735a8e2c5a2"
}

Est ce que c’est parce que la même feature est présente en double, ou parce que l’unité est null pour l’une des deux ?

ton device çà serait pas le RTCGQ11LM. j’ai le même soucis.

edit:

voici ce que j’ai trouvé en inspectant la console

{
    "status": 409,
    "code": "CONFLICT",
    "error": {
        "message": "external_id must be unique",
        "attribute": "external_id",
        "value": "zigbee2mqtt:Detecteur Alban:light-sensor:decimal:illuminance",
        "type": "unique violation"
    }
}

Si si c’est bien le même appareil, oui donc c’est bien parce que la luminance est en double dans ce cas là :smiley:

@AlexTrovato Il me semble qu’avant, c’était l’id zigbee qui était utilisé dans l’external id (0x00583685937). C’est quelque chose qui a changé ?

Justement non, ça a toujours été le friendly name…
Mais pour le problème de conflit, c’est du a la double feature identique. Est-ce normal sur ce device d’avoir 2 capteurs de luminosité ?

non il y a qu’un capteur de luminosité.

par contre attention il y a comme variable:
illuminance_precision et illuminance_lux_precision, deux variables décimales. Le problème ne viendrait pas de là ?

https://www.zigbee2mqtt.io/devices/RTCGQ11LM.html

[edit] j’ai essayé de tester en empêchant la venue d’une des deux variables mais sans succès. En fait on a deux fois la même propriété pour ce device

Faudrait avoir la possibilité de supprimer une feature lors de l’ajout d’un device dans Gladys, ça pourrait corriger ce doublon, mais également de pouvoir supprimer la température interne des appareils qui sont pris en compte dans le calcul des moyennes de température d’une pièce faussant la valeur pour la pièce. (je parle de ce sujet là)

tu peux pour la fonction “temperature” l’empêcher d’être transmise en allant sous gladys en port 8080, sur le device, onglet parametre " Attributs filtrés" et mettre temperature

Peut-être que la feature “precision” n’est pas nécessaire, si je comprends bien c’est un réglage plus qu’autre chose.

Ok, je viens de vérifier dans Github de zigbee2mqtt.
Souvent 2 features “illuminance” et “illuminance_lux” sont exposée pour un même appareil ayant un capteur de luminosité.
Hors, “illuminance” est simplement un indicateur de calbration/sensibilité, alors que “illuminace_lux” est la vraie valeur du capteur.
Je vais faire un correctif pour ne gérer QUE “illuminance_lux”.

3 « J'aime »

Ah merci je vais tester ça !

Hello et bonne année à tous !

Je rentre de vacances, je viens de voir ta PR @AlexTrovato :slight_smile:

Je regarde tout ça demain :slight_smile:

Je viens de merge la PR dans master, merci @AlexTrovato pour le fix! :pray:

Fix déployé dans Gladys Assistant v4.7.2 !

1 « J'aime »

Je confirme problème réglé !

2 « J'aime »

Hello,

Désolé de ré-ouvrir un vieux sujet, mais il me semble que ce problème est de retour. Sur le même device AQARA
RTCGQ11LM
.

Je tente de l’ajouter à mon installation et je tombe sur les mêmes erreurs, mêmes analyses. Double propriété, erreur de external_id, tout ça tout ça.

Y’a eu du mouvement (sans mauvais jeu de mots) sur ce point ?

Merci,

Je pense qu’il ne devait pas s’en rappeler mais la feature a été ajouté de nouveau avec cette PR suite à une demande sur le forum EN

@Sescandell @_Will_71 Je ne retrouve plus le sujet mais il me semble que @cicoub13 est allé créer une issue côté Zigbee2mqtt pour comprendre pourquoi certain appareils exposaient 2 fois l’illuminance sous 2 attributs différents ?

La solution de ne garder que « illuminance_lux » ne fonctionne pas, car certains appareils n’exposent que « illuminance »

2 options :

  • Soit le souci est côté Zigbee2mqtt
  • Soit de notre côté on créé un « cas spécial » pour les appareils qui ont les deux et on dé-duplique la feature dans ce cas là