(Z2M V2.0.0) Externe Converter.js wird nicht mehr geladen

Hallo,

ich bin neu hier und am verzweifeln. Der Hintergrund meines Problems:

Ich habe 2 Zigbee Temperatursensoren ZTH01. Einer davon wird fälschlicherweise als TS0201, also Sensor mit Display, erkannt. Ein Firmware-Update wird gefunden oder angeboten.

In der Z2M Version 1.36.1 habe ich eine custom_converters.js angelegt und dort den entsprechenden Code abgespeichert. Dann habe ich nach Anleitung noch die configuration.yaml des z2m angepasst und aus dem TS0201 wurde ein ZTH01.

Heute habe ich dann auf V2.0.0 aktualisiert. Nach Einlesen in den Änderungen habe ich gesehen, dass sich an diesem Vorgehen etwas geändert hat. Man muß jetzt nicht mehr die config.yaml anpassen, damit externe converter-Dateien geladen und verarbeitet werden. Diese werden jetzt wohl automatisch geladen, wenn sich etwas in Verzeichnis data/external_converters befindet.

Ich habe also die entsprechenden Ordner angelegt, daraus hat sich folgende Struktur ergeben: config/zigbee2mqtt/data/external_converters. In diesen Ordner habe ich dann die .js Datei verschoben und z2m neu gestartet. Nichts passiert.

Ich habe verschiedene Versionen der .js Datei versucht mit Hilfe der Anleitung, der KI usw. Der Sensor wird einfach nicht mehr geändert. Ich bin mir nicht mal sicher, ob die Datei überhaupt geladen wird, da absolut nichts im Log auftaucht, auch im Debug Modus nicht. Es gibt nicht mal eine Fehlermeldung, wenn ich da einfach nur Schrott rein schreibe.

So sieht aktuell eine Version meiner ts0201tozth01_converter.js aus:

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 ota = require('zigbee-herdsman-converters/lib/ota');
const utils = require('zigbee-herdsman-converters/lib/utils');
const globalStore = require('zigbee-herdsman-converters/lib/store');
const e = exposes.presets;
const ea = exposes.access;
const tuya = require('zigbee-herdsman-converters/lib/tuya');

const definition = {
    zigbeeModel: ['TS0201'],
    model: 'TS0201',
    vendor: '_TZ3000_v1w2k9dd',
    description: 'Automatically generated definition',
    extend: [battery(), temperature(), humidity()],
    meta: {},
};

module.exports = [
    {
        fingerprint: [{modelID: 'TS0201', manufacturerName: '_TZ3000_v1w2k9dd'}],
        model: 'ZTH01',
        vendor: 'Tuya',
        description: 'Beschreibung des Geräts',
        fromZigbee: [fz.temperature, fz.humidity, fz.battery],
        toZigbee: [],
        exposes: [e.temperature(), e.humidity(), e.battery()],
    },
];

Ich weiß aktuell nicht mehr weiter und hoffe nun hier auf Hilfe.

Vielen Dank im voraus,
Thomas

Backup zurückspielen und abwarten.
Empfehlungen Keine "0"er Updates installieren.
Auch nicht von HA Core.

1 „Gefällt mir“

Das kann ich nur bestätigen. Siehe auch https://community-smarthome.com/t/zigbee2mqtt-2-0-0-update-und-nix-geht-mehr/2610

Eigentlich läuft alles nach den Updates, nur die Converter „noch“ nicht. Da es läuft und ich sonst Statistikdaten von Gestern auf Heute verlieren würde, lasse ich es dann erst mal so laufen und hoffe auf die nächsten Updates.

Was mich gewundert hat ist, dass das Update die entsprechende Ordnerstruktur nicht selbst angelegt hat, wenn sie doch nun Voraussetzung ist. Mal schauen was und wann etwas passiert.

Es funktioniert, ich habe die Lösung gefunden!!!

Ich wollte schauen, ob es im Github schon eine Meldung deswegen gab, denn ich konnte doch nicht der einzige sein mit dem Problem. Die gab es.

In der Anleitung wird geschrieben, dass ab V2.0.0 die externen Converter Dateien im Ordner /data/external_converters erwartet werden. Wenn man den Ordner nun aber direkt als Unterordner von zigbee2mqtt erstellt, dann klappt es, dann versucht das Addon die externen Converter auszuführen.

Da stellt sich die Frage, wo nun der Fehler liegt, in der Anleitung oder im Code? :wink:

Also für alle, die ebenfalls auf das Problem stossen, den Ordner external_converters direkt als Unterordner von zigbee2mqtt anlegen.

Ich würde mir wünschen, dass sowas im Update automatisch mit umgesetzt wird. Handarbeit in solchen Fällen ist immer riskant und frustrierend, wenn’s nicht läuft :thinking:

1 „Gefällt mir“

Die Anleitung ist leider korrekt, hier mal mein Verzeichnisbaum des Z2M Docker Containers…

user@rpi4-8GB:/opt/docker/zigbee2mqtt# ll
insgesamt 4
drwxr-xr-x 3 dietpi dietpi 4096  6. Jan 00:01 data/
user@rpi4-8GB:/opt/docker/zigbee2mqtt# cd data/
user@rpi4-8GB:/opt/docker/zigbee2mqtt/data# ll
insgesamt 204
-rw-r--r--   1 dietpi dietpi   3724 19. Sep 03:20 configuration.yaml
-rw-r--r--   1 root   root      780  5. Jan 02:58 coordinator_backup.json
-rw-r--r--   1 root   root    46796  6. Jan 00:01 database.db
drwxr-xr-x 485 dietpi dietpi 139264  5. Jan 03:01 log/
-rw-r--r--   1 root   root     8187  6. Jan 00:51 state.json

In der Anleitung hätten sie wohl besser schreiben sollen, dass man das Verzeichnis auf die Ebene indem die configuration.yaml zu finden ist hinterlegen muss.
Den Verzeichnisbaum kann man theoretisch frei wählen und dann passt es nicht mehr für alle.

Im Container selber findet man das Verzeichnis unter…
/app/data

wobei ich mir mal die Verzeichnisse im Container angeschaut habe und finde es schon merkwürdig das unter /app und unter /app/data eine configuration.yaml liegt…

/ # ls -l
total 60
drwxr-xr-x    1 root     root          4096 Dec  1 14:44 app
drwxr-xr-x    1 root     root          4096 Dec  1 14:40 bin
drwxr-xr-x    5 root     root           320 Jan  5 03:00 dev
drwxr-xr-x    1 root     root          4096 Dec  5 00:35 etc
drwxr-xr-x    2 root     root          4096 Sep 28  2023 home
drwxr-xr-x    1 root     root          4096 Dec  1 14:40 lib
drwxr-xr-x    5 root     root          4096 Sep 28  2023 media
drwxr-xr-x    2 root     root          4096 Sep 28  2023 mnt
drwxr-xr-x    2 root     root          4096 Sep 28  2023 opt
dr-xr-xr-x  224 root     root             0 Jan  5 03:00 proc
drwx------    1 root     root          4096 Jan  6 01:02 root
drwxr-xr-x    1 root     root          4096 Dec  5 00:35 run
drwxr-xr-x    1 root     root          4096 Dec  1 14:40 sbin
drwxr-xr-x    2 root     root          4096 Sep 28  2023 srv
dr-xr-xr-x   12 root     root             0 Jan  5 03:00 sys
drwxrwxrwt    2 root     root          4096 Sep 28  2023 tmp
drwxr-xr-x    1 root     root          4096 Sep 28  2023 usr
drwxr-xr-x   12 root     root          4096 Sep 28  2023 var
/ # cd app/
/app # ls -l
total 68
-rw-r--r--    1 root     root         35141 Dec  1 14:39 LICENSE
-rw-r--r--    1 root     root           760 Dec  1 14:39 configuration.example.yaml
-rw-r--r--    1 root     root           444 Dec  1 14:39 configuration.yaml
drwxr-xr-x    3 1000     1000          4096 Jan  6 01:01 data
drwxr-xr-x    1 root     root          4096 Dec  1 14:39 dist
-rw-r--r--    1 root     root          5631 Dec  1 14:39 index.js
drwxr-xr-x  185 root     root          4096 Dec  1 14:42 node_modules
-rw-r--r--    1 root     root          3725 Dec  1 14:39 package.json
/app # cd data/
/app/data # ls -l
total 204
-rw-r--r--    1 1000     1000          3724 Sep 19 03:20 configuration.yaml
-rw-r--r--    1 root     root           780 Jan  5 02:58 coordinator_backup.json
-rw-r--r--    1 root     root         46799 Jan  6 01:01 database.db
drwxr-xr-x  485 1000     1000        139264 Jan  5 03:01 log
-rw-r--r--    1 root     root          8186 Jan  6 01:01 state.json

echt schwierig das so leicht an alle zu erläutern :wink:

1 „Gefällt mir“

Das heisst, HA im Docker hat einen Data-Ordner mit der gesamten Konfig? Ich habe es als VM in Proxmox laufen, da gibt’s den nicht, da liegt alles erstmal direkt im zigbee2mqtt Ordner. Das heisst, die Lösung aus Github funktioniert nur bei den VM-Installationen?

Dann liegt der Fehler nicht in der Anleitung, sondern in den verschiedenen Strukturen. Das sollte man dann schon vereinheitlichen. Ich bin jetzt erst mal froh das es läuft.