Tuya Zigbee Vibrationssensor

Hallo,

Ich möchte einen Vibrationsmelder von Tuya, den ich bei Ali bestellt habe: Vibrationssensor mit einem CC2652 BLE-Dongle koppeln.

Es scheint nicht zu funktionieren, hier ist der Anfang des Konfigurationslogs:

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

Wenn ich einen Scan durchführe, erhalte ich die Meldung: „Keine neuen Geräte gefunden“

Ich verwende das offizielle Gladys-Image, kann mir jemand helfen? Es ist das erste Mal, dass ich Zigbee-Geräte verwende.

Vielen Dank an die Community.

Hallo.
Man muss die Verbindung (siehe Dokumentation hier https://gladysassistant.com/de/docs/integrations/zigbee2mqtt/) autorisieren
Dann das Gerät mit dem Zigbee-Netzwerk koppeln. Das Verfahren hängt von jedem Gerät ab, aber meistens funktioniert ein langer Druck auf den physischen Knopf.

Aber ich glaube, niemand hat diesen Sensor in Gladys integriert :neutral_face:
https://github.com/GladysAssistant/Gladys/blob/master/server/services/zigbee2mqtt/model/TuYa.js

Es gibt laufende Arbeiten, um viel mehr Zigbee-Geräte zu integrieren.

Danke @cicoub13, genau nachdem ich die Verbindung und die lange Taste gedrückt habe, scheint das Pairing nicht zu funktionieren.

Das Log sagt, dass das Pairing deaktiviert ist. Deshalb habe ich diese Schritte angegeben.
Hast du eine solche Zeile in den Logs?

Zigbee2mqtt Gerät <name> in Gladys nicht konfiguriert.

Eureka!
Schließlich habe ich es geschafft, meinen Vibrationssensor zu paaren, indem ich die passende Converter-Datei in den Ordner /z2m hinzugefügt habe.
Ich sehe die Payloads in den Logs mit den richtigen Daten, aber er wird immer noch nicht in der Geräteliste von Gladys erkannt, ich habe immer noch die Meldung: « Auncun zigbee2mqtt-Gerät wurde bisher hinzugefügt. »
Wie kann ich ihn zur Liste hinzufügen?

Zur Info: Ein kleiner Tippfehler ist zu beachten: Die Meldung lautet tatsächlich ’ Auncun’ statt ‹ Aucun › in der Gladys-Oberfläche

Hallo @jparbel!

Aufgrund deiner E-Mail denke ich, dass wir das hier besprechen sollten.

Ich bin kein Zigbee2mqtt-Experte (ich habe diese Integration noch nie verwendet), aber ich kann trotzdem helfen :smiley:

Kannst du genauer beschreiben, was funktioniert und was nicht?

@cicoub13 @AlexTrovato
Mein Sensor ist ein TuYa TS0210

Um diesen Sensor zu erkennen, habe ich einen externen Converter in die Datei /var/lib/gladysassistant/zigbee2mqtt/z2m/configuration.yaml hinzugefügt:

external_converters:
** - TS0210.js**
devices:
** ‹ 0x50325ffffe031386 ›:**
** # friendly_name: ‹ 0x50325ffffe031386 ›**
** friendly_name: ‹ vibration ›**

Dann habe ich die Datei TS0210.js wie folgt definiert:

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 = {
** // Da viele Tuya-Geräte dasselbe ModellID verwenden, aber unterschiedliche Datenpunkte**
** // Es ist in der Regel notwendig, einen Fingerabdruck statt eines zigbeeModells bereitzustellen**
** fingerprint: [**
** {**
** // Die Modell-ID von: Gerät mit ModellID ‹ TS0210 › wird nicht unterstützt**
** // Sie müssen möglicherweise \u0000 am Ende des Namens in einigen Fällen hinzufügen**
** modelID: ‹ TS0210 ›,**
** // Der Herstellername von: Gerät mit ModellID ‹ TS0210 › wird nicht unterstützt.**
** manufacturerName: ‹ _TYZB01_3zv6oleo ›**
** },**
** ],**
** model: ‹ TS0210 ›,**
** vendor: ‹ TuYa ›,**
** description: ‹ Vibrationssensor ›,**
** 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: [**
** // Hier sollten Sie alle Funktionen einfügen, die Ihr Gerät bereitstellt**
[e.battery(), e.vibration(), exposes.enum(‹ sensitivity ›, exposes.access.STATE_SET, [‹ low ›, ‹ medium ›, ‹ high ›])],
};

module.exports = definition;

Wenn ich die Logs überprüfe, wird er korrekt erkannt, hier ein Auszug:

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

Er erscheint jedoch nicht in der Geräteliste, nachdem ein neues Gerät gescannt wurde.

Ich habe versucht, auf der Serverseite nachzusehen: /var/lib docker/overlay2/…/server/services/zigbee2mqtt/model/tuya.js

Ich habe meinen Sensor in der Datei tuya.js hinzugefügt:
TS0210: [features.battery, features.vibration, features.sensitivity, features.linkquality],

Ich habe auch die Datei …/utils/features.js geändert, indem ich die Definition des Vibrationswerts hinzugefügt habe:

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 ›,**
** },**

Ich habe das nicht für die anderen Payload-Werte gemacht, vielleicht ist das notwendig?

Nach jeder Änderung starte ich den Container neu, aber es funktioniert immer noch nicht.

Ich gebe zu, dass ich nicht alles beherrsche, ich habe versucht, deinem letzten Live @pierre-gilles zu den Integrationen zu folgen, aber ich verstehe nicht ganz die jeweiligen Rollen von Frontend und Backend, ich hatte also Schwierigkeiten, nach einer Weile zu folgen.

Aber verliere nicht zu viel Zeit, wenn es zu kompliziert ist, habe ich einen Xiaomi bestellt, der normalerweise von Haus aus erkannt werden sollte, zumindest hoffe ich das.

Eine andere Frage, wie öffne ich mit Gladys 4 die Datenbank, mit der V3 habe ich express-admin verwendet?

Danke für eure Hilfe.

Hallo, das hat sich geändert, wenn du den Code aktualisierst, wirst du keine Datei tuya.js mehr haben, sondern einen binaryType (falls vibration ein boolescher Wert ist), mit dem Attributsnamen von zigbee2mqtt als Schlüssel.
Du musst nur die Kategorie und den Typ des Features deklarieren.

Danke @AlexTrovato für deine Antwort.
Aber könntest du etwas genauer sein?
Du sprichst von einem Update für Gladys? Mir schien, dass es mit der V4 automatisch erfolgt, ansonsten wie macht man ein manuelles Update?
Bisher habe ich immer noch die Datei tuya.js.

Das ist tatsächlich automatisch, da muss man nichts machen :slight_smile:

Der PR von @AlexTrovato wurde Anfang der Woche gemerged, ich werde in den kommenden Tagen/Wochen eine Release machen (ich habe kein genaues Datum dafür, aber es wird kommen), und dann wird es bei dir von alleine passieren!

@jparbel Ich rate dir trotzdem davon ab, die Dateien im Gladys-Container zu ändern (ist das das, was du gemacht hast?), das ist der beste Weg, etwas zu kaputt zu machen :smiley:

@pierre-gilles
Ah danke, jetzt verstehe ich besser.

Derzeit teste ich die V4, also selbst wenn ich etwas kaputt mache, ist das nicht so schlimm, ich habe nichts Wichtiges zu verlieren.

Alles klar! In dem Fall kein Problem :slight_smile:

@AlexTrovato Ich habe gerade Gladys V4.7 getestet, vielen Dank für das Release bezüglich der Zigbee-Integration.

Leider wird mein Tuya TS0210-Detektor immer noch nicht erkannt, das Gerät wird zwar im Scan-Fenster angezeigt, verschwindet aber nach einigen Sekunden und ich erhalte folgende Meldung:

Name
0x50325ffffe031386
Das Gerät wird noch nicht unterstützt, bitte kontaktieren Sie uns, um uns bei der Verbindung mit Gladys zu helfen!
Dieses Gerät vorschlagen

Allerdings wird es im state.json-Datei gefunden

Gute Nacht

Das ist ein Vibrationssensor, der derzeit nicht unterstützt wird (wie alles, was mit Vibration zu tun hat)

Nur weil er mit zigbee2mqtt kompatibel ist, heißt das nicht, dass er in Gladys unterstützt wird.

Es gibt nicht viel zu tun, um ihn zu unterstützen, wir werden ihn schnell hinzufügen

Aber das ist ein anderes Thema, wie und warum nutzt du ihn?

Danke @VonOx, mein Projekt ist es, mein Ferienhaus mit einem Alarmsystem auszustatten, wobei ich bevorzugt Zigbee für die Einbruchmelder verwenden möchte.
Ich hatte daher mit einem einzelnen Sensor begonnen, der derzeit nicht erkannt wird. Seitdem habe ich einen Xiaomi-Vibrationssensor bestellt, der perfekt erkannt wird. Ich denke, ich werde mich in Zukunft mit dieser Art von Sensoren ausstatten.
Der Tuya-Sensor ist zunächst nur für einen Erfahrungsbericht, falls es hilft, ihn zu integrieren…

@VonOx, du sagst:

Aber ich sehe ihn doch in den verfügbaren Typen:

Soll ich daraus schließen, dass es im Dashboard „einfach nur“ an der Anzeige fehlt?

EDIT: @jparbel Ich habe einen Fehler beim Mapping gemacht, indem ich annahm, dass der Vibrationssensor ein digitaler Sensor ist, obwohl er binär ist. Ich schlage eine Korrektur vor.

Ich wollte antworten, aber du hast editiert, also wird es in der nächsten Version enthalten sein :+1:

@VonOx @AlexTrovato
Ich habe deine Modifikation aus dem Pull Request bezüglich der binären Vibrationssensoren integriert und es funktioniert. Danke für diese Integration, super Arbeit!
Es bleibt noch die Empfindlichkeit zu integrieren, um die 3 Stufen einzustellen. Aber vielleicht können wir diese Einstellung manuell mit einem MQTT-Client vornehmen?
Guten Abend.

Mit diesem Testbild kannst du überprüfen, ob die Controller noch funktionieren?
Denn ich habe eine Änderung vorgenommen, um eine Mehrfachsteckdose zu integrieren, und ich möchte sicherstellen, dass ich nichts an der Aktuatorenseite kaputt gemacht habe.

@AlexTrovato Eigentlich habe ich das Testbild nicht heruntergeladen, ich habe nur die 2 Dateien geändert, die zu deinem PR gehören.
Welche Controller und Aktoren meinst du?