Closed genovoxx closed 6 years ago
Hallo, wo genau tritt der Fehler auf, der dazu führt, das der Refresh-Timer nicht mehr gesetzt wird. Welches abgeschaltetes WLAN verursacht den Fehler?
Moin,
mal sehen, ob ich es ordentlich erklären kann :-)
Zunächst legen Sie ja alle 4 Devicetypen an und laden sie in den names array:
{ func: 'getExternalIPAddress', state: states.externalIP.name, result: 'NewExternalIPAddress', format: function (val) { return val; }}, { func: 'getWLAN', state: states.wlan24.name, result: 'NewEnable', format: function (val) { return !!(val >> 0);}} { func: 'getWLAN5', state: states.wlan50.name, result: 'NewEnable', format: function (val) { return !!(val >> 0);}},
{ func: 'getWLANGuest', state: states.wlanGuest.name, result: 'NewEnable', format: function (val) { return !!(val >> 0);}}
Danach iterieren Sie über names und fragen die Devicestates ab:
var name = names[i++]; if (!tr064Client[name.func]) { return doIt(); } tr064Client[name.func] ( function (err, res) { if (!err && res) { devStates.set(name.state, name.format ? name.format(res[name.result]) : name.result); } setTimeout(doIt, 10); });
Wenn allerdings einer der 4 Devicetypes nicht angeschaltet war (bei mir das 5GHz WLAN, bei einem anderen User in diesem Thread http://downloads.iobroker.com/forum/viewtopic.php?f=20&t=7107&p=93046&sid=ab26c6102465b3d414ec34cf9467a8fb#p93046 war es das WLANGuest) dann wird das wohl beim Funktionen anlegen nicht bemerkt, aber dann schlägt der Aufruf tr064.client(name.func) fehl und die Funktion steigt aus.
Da Sie dann ja (verständlicher Weise) erst nach (erfolgreichem) Durchlauf von alle 4 Devicetypes den Timer setzen für den Refresh:
if (i >= names.length) {...
kommt er dort nie an, da i nie >= names.length wird.
Da ich das 5GHz WLAN nicht nutzen möchte (sonst kommt das alte iPhone meiner Frau nicht mehr ins WLAN laut FritzBox), habe ich mir zunächst so erfolgreich beholfen:
{ func: 'getExternalIPAddress', state: states.externalIP.name, result: 'NewExternalIPAddress', format: function (val) { return val; }}, { func: 'getWLAN', state: states.wlan24.name, result: 'NewEnable', format: function (val) { return !!(val >> 0);}} // { func: 'getWLAN5', state: states.wlan50.name, result: 'NewEnable', format: function (val) { return !!(val >> 0);}}, // { func: 'getWLANGuest', state: states.wlanGuest.name, result: 'NewEnable', format: function (val) { return !!(val >> 0);}}
Ich habe aus Zeitmangel nicht weiter gemacht, man müsste wahrscheinlich einfach den names array nur um solche Funktionen erweitern, die von der Fritzbox auch als angeschaltet gemeldet werden, oder?
Hoffe, das war einiger Maßen verständlich?
Ansonsten ein toller Adapter, habe schon einige Skripte meiner Homeautomation erstellt, die auf der Anwesenheitserkennung über tr64 basieren und sehr gut laufen :-) - Vielen Dank!
Viele Grüße, Ihr Christian Hennig
ZELLKRAFTWERK GmbH | Christian Hennig MD | CSO | Fon: +49-511-5324168 | Fax: +49-511-87429053 | Cell: +49-175-4155794 | www.zellkraftwerk.com
Am 1. November 2017 um 19:42 schrieb Soef notifications@github.com:
Hallo, wo genau tritt der Fehler auf, der dazu führt, das der Refresh-Timer nicht mehr gesetzt wird. Welches abgeschaltetes WLAN verursacht den Fehler?
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/soef/ioBroker.tr-064/issues/48#issuecomment-341200735, or mute the thread https://github.com/notifications/unsubscribe-auth/AfvdfL5jbtTnuP-RLAyn5tuVAxmQhbvbks5syLuBgaJpZM4QOFCd .
Hallo,
ich kann das Problem zwar nicht nachvollziehen (bei mir funktioniert der Aufruf von getWLANGuest auch bei abgeschaltetem Guest-WLAN), aber ich habe einmal zwei Änderungen vorgenommen. Könnt ihr einmal schauen, ob es nun auch bei euch funktioniert? PS.: Welche Fritzbox habt ihr im Einsatz?
Viele Grüße.
Jepp, damit geht's, er refreshed den Status und merkt innerhalb weniger sekunden, wenn das Gerät ausgebucht ist:
Meine Fritzbox ist ein 6360 cable, was Heiko aus dem Thread für eine hat, weiss ich leider nicht.
Viele Grüße, Christian
ZELLKRAFTWERK GmbH | Christian Hennig MD | CSO | Fon: +49-511-5324168 | Fax: +49-511-87429053 | Cell: +49-175-4155794 | www.zellkraftwerk.com
Am 3. November 2017 um 08:44 schrieb Soef notifications@github.com:
Hallo,
ich kann das Problem zwar nicht nachvollziehen (bei mir funktioniert der Aufruf von getWLANGuest auch bei abgeschaltetem Guest-WLAN), aber ich habe einmal zwei Änderungen vorgenommen. Könnt ihr einmal schauen, ob es nun auch bei euch funktioniert? PS.: Welche Fritzbox habt ihr im Einsatz?
Viele Grüße.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/soef/ioBroker.tr-064/issues/48#issuecomment-341638345, or mute the thread https://github.com/notifications/unsubscribe-auth/AfvdfGrN2nP8EBvoR-mqgquAUOzxZ7SVks5sysRSgaJpZM4QOFCd .
Hallo, vielen Dank, dass ihr euch dem Thema angenommen habt. Ich freue mich schon sehr darauf, dass bald alles funktioniert. Ich wollte den Adapter mit der neuen Funktion sofort installieren, erhalte dabei jedoch folgende Fehlermeldung.
Vielen Dank nochmal und einen schönen Abend Falk
$ ./iobroker url "https://github.com/soef/ioBroker.tr-064" install https://github.com/soef/ioBroker.tr-064/tarball/master npm install https://github.com/soef/ioBroker.tr-064/tarball/master --production --prefix "/opt/iobroker" (System call) got /opt/iobroker/node_modules/iobroker.tr-064/admin upload [2] tr-064.admin /opt/iobroker/node_modules/iobroker.tr-064/admin/words.js words.js application/javascript upload [1] tr-064.admin /opt/iobroker/node_modules/iobroker.tr-064/admin/tr-064.png tr-064.png image/png upload [0] tr-064.admin /opt/iobroker/node_modules/iobroker.tr-064/admin/index.html index.html text/html ERROR: module.js:590 throw err; ^
SyntaxError: /opt/iobroker/node_modules/iobroker.tr-064/io-package.json: Unexpected token , in JSON at position 5309 at Object.parse (native) at Object.Module._extensions..json (module.js:587:27) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.require (module.js:497:17) at require (internal/module.js:20:19) at Upload.uploadAdapter (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/setupUpload.js:214:23) at /opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js:675:40 at upload (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/setupUpload.js:280:57)
ERROR: process exited with code 1
Moin, Installer habe ich nicht getestet, habe nur die tr-064.js ausgetauscht...
Gruß Christian
ZELLKRAFTWERK GmbH | Christian Hennig MD | CSO | Fon: +49-511-5324168 | Fax: +49-511-87429053 | Cell: +49-175-4155794 | www.zellkraftwerk.com
2017-11-03 18:17 GMT+01:00 Falk2109 notifications@github.com:
Hallo, vielen Dank, dass ihr euch dem Thema angenommen habt. Ich freue mich schon sehr darauf, dass bald alles funktioniert. Ich wollte den Adapter mit der neuen Funktion sofort installieren, erhalte dabei jedoch folgende Fehlermeldung.
Vielen Dank nochmal und einen schönen Abend Falk
$ ./iobroker url "https://github.com/soef/ioBroker.tr-064" install https://github.com/soef/ioBroker.tr-064/tarball/master npm install https://github.com/soef/ioBroker.tr-064/tarball/master --production --prefix "/opt/iobroker" (System call) got /opt/iobroker/node_modules/iobroker.tr-064/admin upload [2] tr-064.admin /opt/iobroker/node_modules/iobroker.tr-064/admin/words.js words.js application/javascript upload [1] tr-064.admin /opt/iobroker/node_modules/ iobroker.tr-064/admin/tr-064.png tr-064.png image/png upload [0] tr-064.admin /opt/iobroker/node_modules/ iobroker.tr-064/admin/index.html index.html text/html ERROR: module.js:590 throw err; ^
SyntaxError: /opt/iobroker/node_modules/iobroker.tr-064/io-package.json: Unexpected token , in JSON at position 5309 at Object.parse (native) at Object.Module._extensions..json (module.js:587:27) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.require (module.js:497:17) at require (internal/module.js:20:19) at Upload.uploadAdapter (/opt/iobroker/node_modules/ iobroker.js-controller/lib/setup/setupUpload.js:214:23) at /opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js:675:40 at upload (/opt/iobroker/node_modules/iobroker.js-controller/lib/ setup/setupUpload.js:280:57)
ERROR: process exited with code 1
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/soef/ioBroker.tr-064/issues/48#issuecomment-341769812, or mute the thread https://github.com/notifications/unsubscribe-auth/AfvdfGoGLQ30cl1U_P1bjqn--TGDmAUJks5sy0qvgaJpZM4QOFCd .
Oh, da war die io-package.json zerschossen. Ist in 0.4.9 korrigiert.
Habe auf einen Post im iobroker Forum hin und meinen eigenen Erfahrungen mal einen Blick in den Quellcode geworfen und den debugger angeworfen, da der Adapter bei der Initialisierung die aktiven/inaktiven Devices korrekt erkennt, danach aber keine Änderungen wahrnimmt. Der Fehler entsteht wie folgt: Bei der Initialisierung des Adapters fragt dieser alle vorkommenden WLAN-Arten (Wlan24, Wlan50, WlanGuest) ab. Wenn einer dieser WLANs abgeschaltet ist in der Fritzbox, läuft der Adapter zwangsläufig in einen Error und bricht die Intialisierung ab, der Timer für den Refresh wird nicht gesetzt. Idee: Bei der Intialisierung prüfen, ob die betreffende WLAN-Art in der Fritzbox aktiviert ist, sonst nicht mehr abfragen.
Viele Grüße, Christian