NEWS
[Gelöst] Discovery über Ping
-
Hast Du auch das richtige Verzeichnis erwischt wo das file (lib/adapter) drin liegt?
-
Hast Du auch das richtige Verzeichnis erwischt wo das file (lib/adapter) drin liegt? `
Ich gehe davon aus:
ls -lah /opt/iobroker/node_modules/iobroker.discovery/lib/adapters/ | grep son -rwxrwxrwx 1 pi pi 1,4K Aug 6 21:34 epson_stylus_px830.js -rwxrwxrwx 1 pi pi 1,7K Aug 6 22:16 sonnen.js -rwxrwxrwx 1 pi pi 6,7K Aug 6 21:34 sonos.js
Er sollte ja einfach über jeden Adapter drüber iterieren, im debug zeigt er jeden an außer meinen hinzugefügten. Müsste eigentlich irgend ein ganz stupider Fehler sein.
-
Du hattest ein paar Fehler drin. Schaue ob es läuft: https://github.com/ioBroker/ioBroker.di … /sonnen.js
-
Du hattest ein paar Fehler drin. Schaue ob es läuft: https://github.com/ioBroker/ioBroker.di … /sonnen.js `
Nach wie vor, geht er bei mir gar nicht in den Code rein. Im Debug Log stehen die aufgerufenen Suchmethoden je Adapter, jedoch nicht für meinen:
Ausschnitt aus dem Log, gesamter Lauf ist zu umfangreich:
2018-08-07 23:27:31.825 - debug: discovery.0 Test 192.168.178.26 maxcube 2018-08-07 23:27:31.826 - debug: discovery.0 Test 192.168.178.26 megad 2018-08-07 23:27:31.828 - debug: discovery.0 Test 192.168.178.26 miele 2018-08-07 23:27:31.829 - debug: discovery.0 Test 192.168.178.26 mihome 2018-08-07 23:27:31.829 - debug: discovery.0 Test 192.168.178.26 musiccast 2018-08-07 23:27:31.830 - debug: discovery.0 Test 192.168.178.26 nut 2018-08-07 23:27:31.831 - debug: discovery.0 Test 192.168.178.26 openhab 2018-08-07 23:27:31.835 - debug: discovery.0 Test 192.168.178.26 ping 2018-08-07 23:27:31.836 - debug: discovery.0 Test 192.168.178.26 ping DETECTED! 2018-08-07 23:27:31.837 - debug: discovery.0 Test 192.168.178.26 samsung 2018-08-07 23:27:31.838 - debug: discovery.0 Test 192.168.178.26 sonos 2018-08-07 23:27:31.842 - debug: discovery.0 Test 192.168.178.26 sql 2018-08-07 23:27:31.844 - debug: discovery.0 Test 192.168.178.26 squeezebox
beste Grüße
fox
-
Das gleiche Problem hatte ich auch. Das liegt daran, dass es eine Function gibt, die überprüft ob deine Erweiterung bereits im Repo besteht und ansonsten ignoriert. Bin gerade unterwegs, darum kann ich nicht genau schauen wie diese heißt. Aber man kann zwei Zeilen davon auskommentieren und schon läuft es auch mit deinem Code.
Näheres heute Abend, falls gewünscht.
-
Das gleiche Problem hatte ich auch. Das liegt daran, dass es eine Function gibt, die überprüft ob deine Erweiterung bereits im Repo besteht und ansonsten ignoriert. Bin gerade unterwegs, darum kann ich nicht genau schauen wie diese heißt. Aber man kann zwei Zeilen davon auskommentieren und schon läuft es auch mit deinem Code.
Näheres heute Abend, falls gewünscht. `
An so was dachte ich auch schon, hatte dann nur ehrlich gesagt keine Lust mehr zu debuggen.
Entsprechend wäre es super cool, wenn du mir Namen + Location der Funktion sagen könntest.
-
In der main.js des Discovery gibt es die Function:
function isValidAdapter(adapterName, type, dependencies) { if (!adapters.hasOwnProperty(adapterName)) return false; var adapter = adapters[adapterName]; if (typeof adapter.type === 'string' && adapter.type !== type) return false; if (typeof adapter.type === 'object' && adapter.type.indexOf(type) === -1) return false; return ((!!adapter.dependencies) === dependencies); }
Hier meine ich die erste if-Zeile auskommentiert zu haben. Falls es so nicht klappt, melde ich mich heute Abend.
Edit: Ich schaue doch besser nochmal nach. Stimmt wohl so eher nicht.
-
In der main.js des Discovery gibt es die Function:
function isValidAdapter(adapterName, type, dependencies) { if (!adapters.hasOwnProperty(adapterName)) return false; var adapter = adapters[adapterName]; if (typeof adapter.type === 'string' && adapter.type !== type) return false; if (typeof adapter.type === 'object' && adapter.type.indexOf(type) === -1) return false; return ((!!adapter.dependencies) === dependencies); }
Hier meine ich die erste if-Zeile auskommentiert zu haben. Falls es so nicht klappt, melde ich mich heute Abend.
Edit: Ich schaue doch besser nochmal nach. Stimmt wohl so eher nicht. `
Das wars leider nicht. Trotzdem schon mal vielen Dank.
-
Jetzt hab ichs glaub ich:
! ```
`function enumAdapters(repository) {
var dir = fs.readdirSync(__dirname + '/lib/adapters');for (var f = 0; f < dir.length; f++) { var parts = dir[f].split('.'); if (parts[parts.length - 1] === 'js') { parts.pop(); var moduleName = __dirname + '/lib/adapters/' + dir[f]; var aName = parts.join('.'); if (adapters && adapters[aname] && adapters[aname].reloadModule) { var module = require.resolve(moduleName); delete require.cache[module]; delete adapters[aname]; }
! // check if this adapter available in repository
if (!adapters[aname] && (!repository || repository.indexOf(aName) !== -1)) {
adapters[aname] = require(moduleName);
}
}
}
}! In der letzte if-Zeile muss
[code]&& (!repository || repository.indexOf(aName) !== -1)[/code]` entfernt werden. Ich hab mir die Zeile kopiert und ausgeklammert im Entwicklungssystem.[/aname][/aname][/aname][/aname][/aname] -
Jetzt hab ichs glaub ich:
! ```
`function enumAdapters(repository) {
var dir = fs.readdirSync(__dirname + '/lib/adapters');for (var f = 0; f < dir.length; f++) { var parts = dir[f].split('.'); if (parts[parts.length - 1] === 'js') { parts.pop(); var moduleName = __dirname + '/lib/adapters/' + dir[f]; var aName = parts.join('.'); if (adapters && adapters[aname] && adapters[aname].reloadModule) { var module = require.resolve(moduleName); delete require.cache[module]; delete adapters[aname]; }
! // check if this adapter available in repository
if (!adapters[aname] && (!repository || repository.indexOf(aName) !== -1)) {
adapters[aname] = require(moduleName);
}
}
}
}! In der letzte if-Zeile muss
[code]&& (!repository || repository.indexOf(aName) !== -1)[/code]entfernt werden. Ich hab mir die Zeile kopiert und ausgeklammert im Entwicklungssystem. ! Wow, da ist ja sogar nen Comment im Code --> dann bin ich selbst schuld :D ! Ist auf jeden Fall der Ursprung des Problems, vielen Dank.[/aname][/aname][/aname][/aname][/aname] ```