Capteur de vibration Tuya Zigbee

Bonsoir,

Je voudrais appairer un détecteur de vibration Tuya commandé sur Ali : Capteur vibration avec un dongle CC2652 BLE.

Ca n’a pas l’air de fonctionner, voici le début du log de configuration :

debug 2021-10-26 16:38:21: Loaded state from file /app/data/state.json
info 2021-10-26 16:38:21: Logging to console and directory: ‘/app/data/log/2021-10-26.16-37-59’ filename: log.txt
debug 2021-10-26 16:38:22: Removing old log directory '/app/data/log/2021-10-26.09-35-58’
info 2021-10-26 16:38:22: Starting Zigbee2MQTT version 1.21.2 (commit #4492212)
info 2021-10-26 16:38:22: Starting zigbee-herdsman (0.13.149)
debug 2021-10-26 16:38:22: Using zigbee-herdsman with settings: '{“adapter”:{“concurrent”:null,“delay”:null,“disableLED”:false},“backupPath”:"/app/data/coordinator_backup.json",“databaseBackupPath”:"/app/data/database.db.backup",“databasePath”:"/app/data/database.db",“network”:{“channelList”:[11],“extendedPanID”:[221,221,221,221,221,221,221,221],“networkKey”:“HIDDEN”,“panID”:6754},“serialPort”:{“path”:"/dev/ttyACM0"}}'
info 2021-10-26 16:38:33: zigbee-herdsman started (resumed)
info 2021-10-26 16:38:33: Coordinator firmware version: '{“meta”:{“maintrel”:1,“majorrel”:2,“minorrel”:7,“product”:1,“revision”:20210708,“transportrev”:2},“type”:“zStack3x0”}'
debug 2021-10-26 16:38:33: Zigbee network parameters: {“channel”:11,“extendedPanID”:“0x00124b0022a4cbcf”,“panID”:6754}
info 2021-10-26 16:38:33: Currently 0 devices are joined:
info 2021-10-26 16:38:33: Zigbee: disabling joining new devices.
info 2021-10-26 16:38:33: Connecting to MQTT server at mqtt://localhost:1884
debug 2021-10-26 16:38:33: Using MQTT login with username: z2m
info 2021-10-26 16:38:38: Connected to MQTT server
info 2021-10-26 16:38:38: MQTT publish: topic ‘zigbee2mqtt/bridge/state’, payload 'online’
info 2021-10-26 16:38:40: Started frontend on port 0.0.0.0:8080
debug 2021-10-26 16:40:32: Received MQTT message on ‘zigbee2mqtt/bridge/config/devices/get’ with data ''
debug 2021-10-26 16:42:43: Received MQTT message on ‘zigbee2mqtt/bridge/config/devices/get’ with data ''
debug 2021-10-26 16:43:11: Received MQTT message on ‘zigbee2mqtt/bridge/config/devices/get’ with data ''
debug 2021-10-26 16:43:21: Saving state to file /app/data/state.json
debug 2021-10-26 16:45:43: Received MQTT message on ‘zigbee2mqtt/bridge/config/devices/get’ with data ''
debug 2021-10-26 16:48:21: Saving state to file /app/data/state.json

Lorsque je fais un scan, j’obtiens le message : “Aucun nouvel appareil trouvé”

J’utilise l’image Gladys officielle, quelqu’un peut-il me dépanner, c’est la première fois que j’utilise des devices zigbee.

Merci à la communauté.

Bonjour.
Il faut autoriser l’association (voir documentation ici Zigbee2Mqtt | Gladys Assistant)
Puis appairer ton appareil au réseau Zigbee. La procédure dépend de chaque appareil mais généralement, un appui long sur le bouton physique fonctionne.

Mais je pense que personne n’a intégré ce capteur dans Gladys encore :neutral_face:

Il y a un travail en cours pour intégrer beaucoup plus de périphériques Zigbee.

Merci @cicoub13 c’est justement après avoir autorisé l’association et appui long que l’appairage n’a pas l’air de s’effectuer.

Le log dit que l’appairage est désactivé. C’est pour ça que j’indiquais ces étapes.
Est-ce que tu as une ligne comme ça dans les logs ?

Zigbee2mqtt device <name> not configured in Gladys.

Eureka !
Finalement, j’ai réussi à appairer mon capteur de vibration en ajoutant le fichier converter qui va bien dans le dossier /z2m.
Je retrouve bien les payloads dans les logs avec les bonnes data, mais il n’est toujours pas reconnu dans la liste des devices par Gladys, j’ai toujours le message : “Auncun appareil zigbee2mqtt n’a encore été ajouté.”
Comment l’ajouter dans la liste ?

Pour info, à signaler une petite coquille : le message est bien ’ Auncun’ au lieu de ‘Aucun’ dans l’interface Gladys

Salut @jparbel!

Suite à ton email, je pense c’est mieux qu’on en discute ici.

Je ne suis pas expert Zigbee2mqtt (je n’ai jamais utilisé cette intégration) mais je peux aider quand même :smiley:

Est-ce que tu peux être plus précis sur ce qui marche/ce qui ne marche pas ?

@cicoub13 @AlexTrovato
Mon capteur est un TuYa TS0210

Pour faire reconnaître ce capteur, j’ai ajouté un converter externe dans le fichier /var/lib/gladysassistant/zigbee2mqtt/z2m/configuration.yaml :

external_converters:
** - TS0210.js**
devices:
** ‘0x50325ffffe031386’:**
** # friendly_name: ‘0x50325ffffe031386’**
** friendly_name: ‘vibration’**

puis j’ai défini le fichier TS0210.js comme suit :

const fz = require(‘zigbee-herdsman-converters/converters/fromZigbee’);
const tz = require(‘zigbee-herdsman-converters/converters/toZigbee’);
const exposes = require(‘zigbee-herdsman-converters/lib/exposes’);
const reporting = require(‘zigbee-herdsman-converters/lib/reporting’);
const extend = require(‘zigbee-herdsman-converters/lib/extend’);
const e = exposes.presets;
const ea = exposes.access;
const tuya = require(“zigbee-herdsman-converters/lib/tuya”);

const definition = {
** // Since a lot of Tuya devices use the same modelID, but use different data points**
** // it’s usually necessary to provide a fingerprint instead of a zigbeeModel**
** fingerprint: [**
** {**
** // The model ID from: Device with modelID ‘TS0210’ is not supported**
** // You may need to add \u0000 at the end of the name in some cases**
** modelID: ‘TS0210’,**
** // The manufacturer name from: Device with modelID ‘TS0210’ is not supported.**
** manufacturerName: ‘_TYZB01_3zv6oleo’**
** },**
** ],**
** model: ‘TS0210’,**
** vendor: ‘TuYa’,**
** description: ‘Vibration sensor’,**
** fromZigbee: [fz.battery, fz.ias_vibration_alarm_1_with_timeout],**
** toZigbee: [tz.TS0210_sensitivity],**
** configure: async (device, coordinatorEndpoint, logger) => {**
** const endpoint = device.getEndpoint(1);**
** await reporting.bind(endpoint, coordinatorEndpoint, [‘genBasic’]);**
** },**
** exposes: [**
** // Here you should put all functionality that your device exposes**
[e.battery(), e.vibration(), exposes.enum(‘sensitivity’, exposes.access.STATE_SET, [‘low’, ‘medium’, ‘high’])],
};

module.exports = definition;

Si je consulte les log il est bien reconnu, voici un extrait :

debug 2021-11-01 20:12:25: Received Zigbee message from ‘vibration’, type ‘commandStatusChangeNotification’, cluster ‘ssIasZone’, data ‘{“extendedstatus”:0,“zonestatus”:1025}’ from endpoint 1 with groupID 0
info 2021-11-01 20:12:25: MQTT publish: topic ‘zigbee2mqtt/vibration’, payload '{“battery”:100,“battery_low”:false,“linkquality”:132,“tamper”:false,“vibration”:true,“voltage”:3000}'
debug 2021-11-01 20:13:10: Saving state to file /app/data/state.json
info 2021-11-01 20:13:55: MQTT publish: topic ‘zigbee2mqtt/vibration’, payload '{“battery”:100,“battery_low”:false,“linkquality”:132,“tamper”:false,“vibration”:false,“voltage”:3000}'
debug 2021-11-01 20:18:10: Saving state to file /app/data/state.json

Par contre, il n’apparaît pas dans la liste des devices après avoir scanné un nouvel appareil.

J’ai essayé d’aller voir côté serveur : /var/lib docker/overlay2/…/server/services/zigbee2mqtt/model/tuya.js

j’ai ajouté mon capteur dans le fichier tuya.js :
TS0210: [features.battery, features.vibration, features.sensitivity, features.linkquality],

J’ai modifié egalement le fichier …/utils/features.js en ajoutant la définition de la valeur de vibration :

vibration: {
** category: DEVICE_FEATURE_CATEGORIES.VIBRATION,**
** type: DEVICE_FEATURE_TYPES.SENSOR.BINARY,**
** name: ‘Vibration Sensor’,**
** read_only: true,**
** has_feedback: false,**
** min: 0,**
** max: 1,**
** zigbeeField: ‘vibration’,**
** },**

je ne l’ai pas fait pour les autres valeurs de payload, c’est peut-être nécessaire ?

Après chaque modif, je relance le container mais ça ne marche toujours pas.

J’avoue que je ne maîtrise pas tout, j’ai essayé de suivre ton dernier live @pierre-gilles sur les intégrations, mais je ne saisis pas trop les rôles respectifs du front et du back, autant dire que j’ai eu du mal à suivre au bout d’un certain temps.

Mais ne perds pas trop ton temps, si c’est trop compliqué, j’ai commandé un Xiaomi qui normalement devrait être reconnu d’office, du moins je l’espère.

Autre question, avec Gladys 4 comment ouvrir la base de données, avec la V3, j’utilisais express-admin ?

Merci pour votre aide.

Salut, ça a changé, si tu mets à jour le code, tu n’aura plus de fichier tuya.js, mais un binaryType (si vibration est un booléen), avec le nom de l’attribut zigbee2mqtt comme clé.
Tu n’auras que la catégorie et le type de la feature a déclarer.

Merci @AlexTrovato pour ta réponse.
Mais est-ce-que tu peux être un peu plus explicite ?
Tu parles de la mise à jour de Gladys ? Il me semblait qu’elle s’effectuait automatiquement avec la V4, sinon comment fait-on une maj manuelle ?
Pour l’instant, j’ai toujours le fichier tuya.js.

C’est effectivement automatique, il n’y a rien à faire :slight_smile:

La PR de @AlexTrovato a été mergée en début de semaine, je ferais une release dans les jours/semaines qui viennent (j’ai pas de date à te donner là dessus, mais ça va venir), et ça viendra tout seul chez toi !

@jparbel Je te déconseille quand même de modifier les fichiers dans le container Gladys (c’est bien ce que tu as fais?), c’est le meilleur moyen de casser quelque chose :smiley:

@pierre-gilles
Ah merci, je comprends mieux.

Pour l’instant, je suis en phase de test avec la V4, donc même si je casse quelque chose c’est pas bien grave, je n’ai rien d’important à perdre.

Ok! Dans ce cas pas de soucis :slight_smile:

@AlexTrovato Je viens de tester Gladys V4.7, merci pour cette release concernant l’intégration Zigbee.

Malheureusement, mon detecteur Tuya TS0210, n’a toujours pas l’air d’être reconnu, le périphérique s’affiche bien dans la fenêtre de scan puis quelques secondes plus tard il disparaît et j’ai le message suivant :

Nom
0x50325ffffe031386
L’appareil n’est pas encore géré, veuillez nous contacter pour nous aider à le connecter dans Gladys !
Proposer ce périphérique

Par contre, on le retrouve bien dans le fichier state.json

Bonne soirée

C’est un capteur de vibration non géré pour le moment ( comme tout ce qui est vibration)

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

Aussi ce n’est parce qu’il est compatible avec zigbee2mqtt qu’il est géré dans Gladys.

Y’a pas grand chose à faire pour le supporter, on va l’ajouter rapidement

Rien à voir mais tu l’utilise comment/pourquoi ?

Merci @VonOx mon projet est d’équiper ma résidence secondaire d’un système d’alarme avec de préference du zigbee pour les détecteurs d’intrusion.
J’avais donc commencé avec un seul capteur, qui n’est donc pas reconnu pour l’instant. Depuis j’ai commandé un capteur de vibration Xiaomi, qui lui, est parfaitement reconnu. Je pense que je vais m’équiper avec ce genre de capteur par la suite.
Pour le capteur Tuya, c’est, dans un premier temps, juste pour un retour d’expérience, si ça peut servir à l’intégrer…

@VonOx, tu dis :

Mais pourtant je le vois bien dans les types disponibles :

Est-ce que je dois comprendre qu’il manque « simplement » l’affichage sur le dashboard ?

EDIT : @jparbel j’ai fait une erreur de mapping en considérant que le capteur de vibration était un capteur numérique, alors qu’il est binaire. Je propose un correctif.

1 « J'aime »

J’allais répondre mais tu as edit, du coup ça sera dans la prochaine release :+1:

@VonOx @AlexTrovato
J’ai intégré ta modif de la pull request concernant les capteurs de vibration binaires et ça fonctionne. Merci pour cette intégration, super boulot !
Il resterait à intégrer la sensibilité pour régler les 3 niveaux. Mais on peut peut-être faire ce réglage à la main, avec un client MQTT ?
Bonne soirée.

1 « J'aime »

Avec cette image de test, tu peux vérifier que les contrôleurs fonctionnent toujours ?
Car j’ai fait un changement pour integrer une multiprise, j’aimerais vérifier que je n’ai rien casser sur la partie actionneurs.

@AlexTrovato En fait, je n’ai pas téléchargé l’image de test, j’ai juste modifié les 2 fichiers relatifs à ta PR.
De quels contrôleurs et actionneurs parles tu ?