NEWS
zigbee-herdsmann-converter ändern
-
@arteck Danke für Deine schnelle Antwort!
Ich habe zum testen ob meine Änderung übernommen wurde, den Namen des connectors geändert (model und description). Aber beide Änderungen sind nicht ins Front übernommen worden.
Ein Syntax Fehler enthält meine Änderung wohl nicht, ansonsten hätte ich ja im Log eine Fehlermeldung gesehen, bzw. der Restart der Zigbee Instanz wäre nicht möglich.
Wie kann ich überprüfen, ob meine Änderung übernommen wurde? Ein Ändern von model und description wird ja nicht sichtbar? -
@clausmuus sagte in zigbee-herdsmann-converter ändern:
Hallo,
ich muss einen zigbee-herdsmann-converter ändern, damit mein Gerät vollständig funktioniert.
Dafür habe ich das Gerät in der entsprechenden Datei unter zigbee-herdsmann-converters/devices angepasst und die Zigbee Instanz neu gestartet. Die Änderung wird aber nicht übernommen.
Was muss ich machen, damit meine Änderung übernommen wird und das Gerät mit der geänderten Funktion angesprochen wird?Du willst eigentlich nie direkt im Code des Zigbee-Herdsman-Converters Änderungen vornehmen.
Was du machen solltest:
- Mach eine Kopie der .js Datei die du ändern würdest
- Reduziere sie auf das Gerät welches du ändern willst
- Stell sicher das keine Referenz auf "legacy" vorhanden ist (sonst geht der folgende Schritt schief)
- Kopiere die so entstandene Datei in Daten-Verzeichnis deines Zigbee Adapters (da wo auch die shepherd.db liegt)
- Trag den Dateinamen als "externen Konverter" in der Konfiguration ein
- Starte den Adapter neu. Achte im Log dabei das eine Meldung kommt die Dir mitteilt das der externe Konverter aus Deiner Datei auch geladen wird.
In den moisten Fällen kommst du damit zum Ziel. Es gibt noch ein Wenig Arbeit an diesem System, aber damit hast du deutlich bessere Kontrolle darüber was du änderst, und Deine Änderungen überleben auch ein update des zigbee-herdsman-converters.
A.
Nachtrag: das ganze geht ab zigbee version 1.8.10 -
@asgothian geht das auch, wenn bereits ein Converter für mein Gerät existiert, und ich den nur ändern möchte? Dann würden ja zwei Converter für den selben fingerprint (modelID und manufacturerName) existieren (die original und meine)?
-
@asgothian wie muss der Pfad bei externen Konvertern im require lauten? Normalerweise ist in den Konvertern ein ../lib/... angegeben. Ich vermute aber das passt beim externen Konverter nicht, da scheinbar eine andere Version der tuya lib geladen wird.
-
OK, hab's gefunden. Bei externen Konvertern verweis ein ../lib auf iobroker/node_modules/zigbee-herdsman-converters/lib und nicht auf iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/lib, und dadurch auf eine andere Version des zigbee-herdsman-converters Modules.
Das sollte vermutlich beim externen Konverter noch geändert werden.
-
@clausmuus sagte in zigbee-herdsmann-converter ändern:
OK, hab's gefunden. Bei externen Konvertern verweis ein ../lib auf iobroker/node_modules/zigbee-herdsman-converters/lib und nicht auf iobroker/node_modules/iobroker.zigbee/node_modules/zigbee-herdsman-converters/lib, und dadurch auf eine andere Version des zigbee-herdsman-converters Modules.
Das sollte vermutlich beim externen Konverter noch geändert werden.
Nein, das wird automatisch beim laden der externen Konverter umgesetzt. Die Pfade dürfen so bleiben wie sie in der Datei eingetragen sind
@clausmuus sagte in zigbee-herdsmann-converter ändern:
@asgothian geht das auch, wenn bereits ein Converter für mein Gerät existiert, und ich den nur ändern möchte? Dann würden ja zwei Converter für den selben fingerprint (modelID und manufacturerName) existieren (die original und meine)?
Ja, der externe übersteuert den internen Konverter
-
@asgothian Danke für Deine Hilfe.
Es ist definitiv so, dass der zigbee-herdsman-converters aus dem falschen Ordner genommen wird. Der Pfad im require wird zwar angepasst, aber halt nicht korrekt.
Ich habe mir damit beholfen, den Ordner iobroker/node_modules durch einen Link auf den richtigen Ordner zu ersetzen. Und jetzt funktioniert es auch.Mein Problem ist somit also gelöst
-
Ich hab noch einen Hinweis.
Ich habe eine Anleitung für externe Konverter gefunden. Dort ist zu sehen, dass für externe Konverter im require nicht der Pfad ../lib genommen werden muss, sondern zigbee-herdsman-converters/lib
So werden die libs dann auch aus dem richtigen Verzeichnis genommen. -
@clausmuus sagte in zigbee-herdsmann-converter ändern:
Ich hab noch einen Hinweis.
Ich habe eine Anleitung für externe Konverter gefunden. Dort ist zu sehen, dass für externe Konverter im require nicht der Pfad ../lib genommen werden muss, sondern zigbee-herdsman-converters/lib
So werden die libs dann auch aus dem richtigen Verzeichnis genommen.Kannst du bitte die require statements posten wie sie waren als es nicht funktioniert haben, sowie so wie sie sind wenn es geht ?
Ich hab eigentlich ein Rewrite drin das genau den genommenen Herdsman mit einbindet.
A.
-
@asgothian kein Problem. Ursprünglich hatte ich das so geschrieben:
const exposes = require('../lib/exposes');
was nicht funktioniert. Uns so funktioniert es:
const exposes = require('zigbee-herdsman-converters/lib/exposes');
Ich verwende den zigbee Adapter version 1.8.10