NEWS
Supportthread Resol-Adapter
-
@faz Danke , dann kannst Du die Zeile
this.log.debug('received raw data: ' + JSON.stringify(packetFields));auskommentieren , sonnst wird Dein Protokoll so voll gemüllt. ( mit // am Anfang)
Dann muß ich auf die Antwort vom Daniel warten. Ich hatte gehofft da gäbe es ein majorVersion
-
@faz Du kannst nochmal eins versuchen.
Such mal im main.js dies :
const options = { optimize: !readConfig };und ersetze es mit diesem
const options = { optimize: !readConfig, deviceMajorVersion : 2 };dann die Instanz neu starten und schauen ob dann die Fehlermeldung weg ist.
Evtl. funktioniert es dann ja auch.Andernfalls müssen wir auf Daniel warten.
-
@faz Du kannst nochmal eins versuchen.
Such mal im main.js dies :
const options = { optimize: !readConfig };und ersetze es mit diesem
const options = { optimize: !readConfig, deviceMajorVersion : 2 };dann die Instanz neu starten und schauen ob dann die Fehlermeldung weg ist.
Evtl. funktioniert es dann ja auch.Andernfalls müssen wir auf Daniel warten.
-
@faz Daniel hat sich noch nicht gemeldet , aber jetzt habe ich noch etwas gefunden:
Suche mal in main.js dies (das gibt es zwei mal, alle beide ersetzen)const optimizer = await vbus.ConfigurationOptimizerFactory.createOptimizerByDeviceAddress(context.deviceAddress);kommentiere es aus mit '//' am Anfang und setze dafür dies ein :
const options1 = { deviceAddress : context.deviceAddress, version : 2 } const optimizer = await vbus.ConfigurationOptimizerFactory.createOptimizer(options1);Damit teilst Du dem Optimizer auch die Version mit.
Und Instanz wieder neu starten. -
@faz Daniel hat sich noch nicht gemeldet , aber jetzt habe ich noch etwas gefunden:
Suche mal in main.js dies (das gibt es zwei mal, alle beide ersetzen)const optimizer = await vbus.ConfigurationOptimizerFactory.createOptimizerByDeviceAddress(context.deviceAddress);kommentiere es aus mit '//' am Anfang und setze dafür dies ein :
const options1 = { deviceAddress : context.deviceAddress, version : 2 } const optimizer = await vbus.ConfigurationOptimizerFactory.createOptimizer(options1);Damit teilst Du dem Optimizer auch die Version mit.
Und Instanz wieder neu starten. -
@faz Versuch mal
deviceMajorVersion : 2anstatt
version : 2an beiden Stellen und die Instanz wieder neu starten.
Ist im Moment ziemlich eine Raterei, aber ich meine da wäre die richtige Stelle.
-
@gargano Version ist die 1.3.0.
Es sind nur diese Dateien in Verzeichnis vorhanden.

Im Verzeichnis
/opt/iobroker/node_modules/resol-vbus/src/configuration-optimizers
sind diese Dateien

Sollte da nicht die "resol-deltasol-mx-2xx-data.js" sein?
@faz sagte in Supportthread Resol-Adapter:
Sollte da nicht die "resol-deltasol-mx-2xx-data.js" sein?
Schau mal in dieses Verzeichnis ob, die Datei auch in dem Verzeichnis ist.
/opt/iobroker/node_modules/iobroker.resol/node_modules/resol-vbus/src/configuration-optimizersDa wird wahrscheinlich auch die optimizer drin sein, aber ohne resol-deltasol-mx-2xx-data.js.
Damit der Resol Adapter den richtigen Pfad nimmt ändere bitte ganz am Anfang den Pfad von
const vbus = require('resol-vbus');nach
const vbus = require('../resol-vbus');Und dann Instanz nochmal starten.
-
@faz sagte in Supportthread Resol-Adapter:
Sollte da nicht die "resol-deltasol-mx-2xx-data.js" sein?
Schau mal in dieses Verzeichnis ob, die Datei auch in dem Verzeichnis ist.
/opt/iobroker/node_modules/iobroker.resol/node_modules/resol-vbus/src/configuration-optimizersDa wird wahrscheinlich auch die optimizer drin sein, aber ohne resol-deltasol-mx-2xx-data.js.
Damit der Resol Adapter den richtigen Pfad nimmt ändere bitte ganz am Anfang den Pfad von
const vbus = require('resol-vbus');nach
const vbus = require('../resol-vbus');Und dann Instanz nochmal starten.
-
@gargano Super jetzt funktioniert es :ok_hand:
Vielen Dank für deine Ausdauer :+1:Übrigens die resol-deltasol-mx-2xx-data.js ist in diesem Vereichnis dies wurde mit dem MyVbus
dort erzeugt.@faz na endlich. Dann war das zum Schluss noch der falsche Pfad.
Kannst Du bitte noch einen Test machen:Nimm mal bei den Options die deviceMajorVersion raus. (Einfach auskommentieren). Ich möchte nur wissen, ob er automatisch in beiden Optimizer Files sucht.
Dann Instanz wieder neu starten. -
@faz na endlich. Dann war das zum Schluss noch der falsche Pfad.
Kannst Du bitte noch einen Test machen:Nimm mal bei den Options die deviceMajorVersion raus. (Einfach auskommentieren). Ich möchte nur wissen, ob er automatisch in beiden Optimizer Files sucht.
Dann Instanz wieder neu starten. -
@faz das Komma auch wegnehmen :
const options1 = { deviceAddress : context.deviceAddress } -
@faz ok, dann brauchen wir die Versions Info unbedingt. Muss ich mal schauen, wie ich das dann in dem Adapter allgemein gültig unterbringe. Die jetzige Lösung funktioniert, ist aber ein Hack und würde mit dem nächsten Update wieder weg sein.
Vielen Dank fürs Testen.Schalten kannst Du auch unter Actions?
-
@faz ok, dann brauchen wir die Versions Info unbedingt. Muss ich mal schauen, wie ich das dann in dem Adapter allgemein gültig unterbringe. Die jetzige Lösung funktioniert, ist aber ein Hack und würde mit dem nächsten Update wieder weg sein.
Vielen Dank fürs Testen.Schalten kannst Du auch unter Actions?
-
@faz ok, dann brauchen wir die Versions Info unbedingt. Muss ich mal schauen, wie ich das dann in dem Adapter allgemein gültig unterbringe. Die jetzige Lösung funktioniert, ist aber ein Hack und würde mit dem nächsten Update wieder weg sein.
Vielen Dank fürs Testen.Schalten kannst Du auch unter Actions?
-
Hallo @faz
jaaa, das ist ein kleines (mehrschichtiges) Problem.
Die Dinge, die man steuern kann, sind je Controller in einer speziellen Datei des Adapters hinterlegt. Da ich selber nur einen Adapter habe, kann ich auch nur den selbst testen. Den Code, der die Steuerungsaufgaben implementiert habe ich auch nicht selbst geschrieben; den hat @Gargano beigesteuert. Dabei hat er sich durch die SEHR rudimentäre Doku zur Resol-Js-Lib und diverse Handbücher der Controller gefräst. Ich selbst habe das aus Zeitmangel nur am Rande mitbekommen.Was ich sagen kann: Wenn Du das selbst rausknobeln möchtest: Die zugehörige Datei ist die
lib/resol-setup/deltasol-mx.js. Das ist eine JSON-Datei, in der müssen die entsprechenden Informationen eingetragen werden. Das Handbuch deines Controllers und ein paar andere Dateien als Referenz, sollten helfen.Tut mit leid, dass ich da nicht viel mehr zu sagen kann. Wenn Du es hinbekommst, würde ich mich aber über einen Pull-Request auf github, freuen, oder Du postest die Datei hier, dann übernehme ich das gerne in den Adapter.
liebe Grüße
grizzelbee@grizzelbee Hi grizzelbee,
das war ein etwas fummeliger Act mit dem MX-Controller, da der ja 2 Dateien hat aber mit der gleichen Adresse.
Dazu muss man dann im createOptimizer die Version mit angeben.Leider gibt der MX Controller keine Info über die Version aus. Eine Lösung wäre das in der Konfiguration wählbar zu machen.
Noch ein Punkt:
Im Main ist der Pfad für den VBus so beschriebenconst vbus = require('resol-vbus');Das hat zur Folge das die VBus LIb im Pfad vom Resol sich befinden muss.
/opt/iobroker/node_modules/iobroker.resol/node_modules/resol-vbusBei einem normalen Install vom Vbus befindet sich der VBus aber hier :
/opt/iobroker/node_modules/resol-vbusWas zur Folge hat, daß der require Pfad so aussehen muss
const vbus = require('../resol-vbus');Ein Update vom Vbus wird auch in das Verzeichnis gemacht
/opt/iobroker/node_modules/resol-vbusViele Grüße
-
@grizzelbee Hi grizzelbee,
das war ein etwas fummeliger Act mit dem MX-Controller, da der ja 2 Dateien hat aber mit der gleichen Adresse.
Dazu muss man dann im createOptimizer die Version mit angeben.Leider gibt der MX Controller keine Info über die Version aus. Eine Lösung wäre das in der Konfiguration wählbar zu machen.
Noch ein Punkt:
Im Main ist der Pfad für den VBus so beschriebenconst vbus = require('resol-vbus');Das hat zur Folge das die VBus LIb im Pfad vom Resol sich befinden muss.
/opt/iobroker/node_modules/iobroker.resol/node_modules/resol-vbusBei einem normalen Install vom Vbus befindet sich der VBus aber hier :
/opt/iobroker/node_modules/resol-vbusWas zur Folge hat, daß der require Pfad so aussehen muss
const vbus = require('../resol-vbus');Ein Update vom Vbus wird auch in das Verzeichnis gemacht
/opt/iobroker/node_modules/resol-vbusViele Grüße
Freut mich riesig, dass ihr das klären konntet.
War schon interessant so als Zuschauer am Spielfeldrand zu stehen. ;)@Gargano schrieb:
Ich habe ein Issue bei Daniel aufgemacht, daß mit den 2 verschiedenen Adressen (32273 und 32289) ist mir unbekannt.
das war ein etwas fummeliger Act mit dem MX-Controller, da der ja 2 Dateien hat aber mit der gleichen Adresse.
Dazu muss man dann im createOptimizer die Version mit angeben.
Leider gibt der MX Controller keine Info über die Version aus. Eine Lösung wäre das in der Konfiguration wählbar zu machen.Hmmm. In der Konfig ginge das natürlich - fände ich aber eher unelegant, weil es ja keine generelle Konfig wäre. Kontextsensitive Einstellungen, die nur bei Auswahl einer bestimmten anderen Einstellung angezeigt werden, habe ich im Broker noch nicht gesehen und auch keine Idee, wie man das realisieren könnte.
EDIT: Der FullyBrowser-Adapter macht genau das. Da könnte ich also zur Not spicken wie das geht. :)
So als Arbeitshypothese (keine Ahnung ob da etwas dran ist) - ist vielleicht die 32273 die V2 und 32289 die V1??
Dann könnte man das doch unterscheiden. Zumindest, wenn ich das Ganze Thema beim Mitlesen richtig verstanden habe.Bei einem normalen Install vom Vbus befindet sich der VBus aber hier :
Du meinst vom myVBus Adapter?
Wenn ja - würde ich tendenziell bei der Variante:const vbus = require('resol-vbus');bleiben wollen, weil die Lib ja ausschließlich vom Resol Adapter verwendet wird, und für meinen Geschmack deshalb genau dorthin (
/opt/iobroker/node_modules/iobroker.resol/node_modules/resol-vbus) gehört.
Zum einen um beim Löschen des Adapters auch richtig erwischt zu werden und zum anderen um sich nicht mit anderen Adaptern (hier speziell myVBus), die die selbe Lib verwenden mit der Version der Lib nicht in die Quere zu kommen. Wäre ja blöd, wenn ein Adapter eine spezielle Version einer Lib benötigt und ein anderer Adapter die plump überschreibt und damit den Adapter kaputt macht. Bei einer seltenen lib wie VBus mag das noch kein (großes) Problem sein, aber stell dir das Problem mal zum Beispiel bei Axios vor - da zerschießt ein allgemeines Update ggf. einen Großteil der Adapter.
Wenn es eine neue Version der Lib gibt, die der Adapter benötigt, wird die ja mit dem nächsten Release ausgeliefert/installiert und alles ist gut.Wie machen wir weiter? Reichst Du einen PR mit den erarbeiteten Änderungen ein? Dann würde ich noch die Abhängigkeiten aktualisieren und ein neues Release bauen - also nachdem wir diesen V1/V2 Problem irgendwie gelöst und ggf. die Konfig angepasst haben - falls nötig.
viele Grüße
grizzelbee -
Freut mich riesig, dass ihr das klären konntet.
War schon interessant so als Zuschauer am Spielfeldrand zu stehen. ;)@Gargano schrieb:
Ich habe ein Issue bei Daniel aufgemacht, daß mit den 2 verschiedenen Adressen (32273 und 32289) ist mir unbekannt.
das war ein etwas fummeliger Act mit dem MX-Controller, da der ja 2 Dateien hat aber mit der gleichen Adresse.
Dazu muss man dann im createOptimizer die Version mit angeben.
Leider gibt der MX Controller keine Info über die Version aus. Eine Lösung wäre das in der Konfiguration wählbar zu machen.Hmmm. In der Konfig ginge das natürlich - fände ich aber eher unelegant, weil es ja keine generelle Konfig wäre. Kontextsensitive Einstellungen, die nur bei Auswahl einer bestimmten anderen Einstellung angezeigt werden, habe ich im Broker noch nicht gesehen und auch keine Idee, wie man das realisieren könnte.
EDIT: Der FullyBrowser-Adapter macht genau das. Da könnte ich also zur Not spicken wie das geht. :)
So als Arbeitshypothese (keine Ahnung ob da etwas dran ist) - ist vielleicht die 32273 die V2 und 32289 die V1??
Dann könnte man das doch unterscheiden. Zumindest, wenn ich das Ganze Thema beim Mitlesen richtig verstanden habe.Bei einem normalen Install vom Vbus befindet sich der VBus aber hier :
Du meinst vom myVBus Adapter?
Wenn ja - würde ich tendenziell bei der Variante:const vbus = require('resol-vbus');bleiben wollen, weil die Lib ja ausschließlich vom Resol Adapter verwendet wird, und für meinen Geschmack deshalb genau dorthin (
/opt/iobroker/node_modules/iobroker.resol/node_modules/resol-vbus) gehört.
Zum einen um beim Löschen des Adapters auch richtig erwischt zu werden und zum anderen um sich nicht mit anderen Adaptern (hier speziell myVBus), die die selbe Lib verwenden mit der Version der Lib nicht in die Quere zu kommen. Wäre ja blöd, wenn ein Adapter eine spezielle Version einer Lib benötigt und ein anderer Adapter die plump überschreibt und damit den Adapter kaputt macht. Bei einer seltenen lib wie VBus mag das noch kein (großes) Problem sein, aber stell dir das Problem mal zum Beispiel bei Axios vor - da zerschießt ein allgemeines Update ggf. einen Großteil der Adapter.
Wenn es eine neue Version der Lib gibt, die der Adapter benötigt, wird die ja mit dem nächsten Release ausgeliefert/installiert und alles ist gut.Wie machen wir weiter? Reichst Du einen PR mit den erarbeiteten Änderungen ein? Dann würde ich noch die Abhängigkeiten aktualisieren und ein neues Release bauen - also nachdem wir diesen V1/V2 Problem irgendwie gelöst und ggf. die Konfig angepasst haben - falls nötig.
viele Grüße
grizzelbee@grizzelbee
Da ja V1 und V2 die gleichen Adressen haben (32273) kann ich nicht auf die 32289 gehen.
Ich kontaktiere nochmal Daniel, um zu klären ob man die deviceMajorVersion aus dem MX Controller auslesen kann.
Das wäre am besten.
Falls das nicht geht, bleibt nur eine User Auswahl. Die müsste dann entweder alle Einträge vom Resol-Types anzeigen, oder nach erkennen der Adresse nur die anzeigen, die die Adresse haben. In dem Falle hieße es das die Auswahl erst nach dem Starten der Instanz angezeigt wird. Was aber z.B,. Device Watcher auch macht.
Im Fall vom MX würden dann 2 Einträge da stehen : V1 und V2, bei allen anderen nur ein Eintrag .Ich schick Dir dann ein PR , wenn ich vom Daniel Nachricht habe.



