NEWS
Test js-controller 0.15.1
-
Heute ist mir bei der Entwicklung meines neuen Adapters aufgefallen das bei Löschen einer Instanz nun folgende Fehlermeldung kommt:
2017-01-20 15:01:02.154 - info: iobroker host.bilbo Counted 1 instances of unifi.0 2017-01-20 15:01:02.778 - info: iobroker host.bilbo Counted 7 objects of unifi.0 2017-01-20 15:01:02.945 - info: iobroker host.bilbo Counted 6 objects of states of unifi.0 2017-01-20 15:01:02.945 - info: iobroker host.bilbo Deleting 7 object(s). 2017-01-20 15:01:02.947 - error: message system.adapter.unifi.0.alive null Cannot read property 'common' of null 2017-01-20 15:01:02.948 - error: message system.adapter.unifi.0.alive null Cannot read property 'common' of null 2017-01-20 15:01:02.947 - error: message system.adapter.unifi.0.alive null Cannot read property 'common' of null 2017-01-20 15:01:02.947 - error: message system.adapter.unifi.0.alive null Cannot read property 'common' of null 2017-01-20 15:01:02.949 - error: message system.adapter.unifi.0.alive null Cannot read property 'common' of null 2017-01-20 15:01:02.948 - error: message system.adapter.unifi.0.alive null Cannot read property 'common' of null 2017-01-20 15:01:02.948 - error: TypeError: Cannot read property 'common' of null at Object.that.objects.Objects.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:724:28) at Socket. <anonymous>(/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemClient.js:74:30) at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) at Socket.onevent (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:270:10) at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:228:12) at Manager. <anonymous>(/opt/iobroker/node_modules/component-bind/index.js:21:15) at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:332:8) at Decoder. <anonymous>(/opt/iobroker/node_modules/component-bind/index.js:21:15) at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/socket.io-parser/node_modules/component-emitter/index.js:134:20)</anonymous></anonymous></anonymous>
Ich meine mich zu erinnern das dies erst seit Installation der 0.15.1 passiert ist?!? Ich konnte zwar eine neue Instanz generieren und das auch ohne Probleme, aber der Fehler tritt hier reproduzierbar immer auf sobald ich wieder versuche eine Instanz zu löschen. Kann einer versuchen zu reproduzieren ob das löschen von Instanzen prinzipiell jetzt immer solch einen Fehler wirft?
-
Ich habe mal einen Pull Request auf GitHub gemacht, der mein Problem lösen sollte.
Das Problem ist, dass beim Check der Rechte pro State nie die Callbackfunktion aufgerufen wird, wenn die ids ein leeres Array sind.
-
Hm,
ich habe den schon länger drauf. Weiß nicht ob es am JS Controler liegt aber ich habe seitdem das Problem das ich keine Instanzen mehr vernünftig löschen kann.
Hatte ich an anderer Stelle schonmal mit logfile geschrieben:
http://forum.iobroker.net/viewtopic.php?f=22&t=4779
Auch weiß ich nicht ob die Falsche anzeige meiner VIS Version etwas damit zu tun hat, siehe hier:
http://forum.iobroker.net/viewtopic.php … 160#p47593
Gruß
Mirko
-
Hm,
ich habe den schon länger drauf. Weiß nicht ob es am JS Controler liegt aber ich habe seitdem das Problem das ich keine Instanzen mehr vernünftig löschen kann.
Hatte ich an anderer Stelle schonmal mit logfile geschrieben:
http://forum.iobroker.net/viewtopic.php?f=22&t=4779
Auch weiß ich nicht ob die Falsche anzeige meiner VIS Version etwas damit zu tun hat, siehe hier:
http://forum.iobroker.net/viewtopic.php … 160#p47593
Gruß
Mirko `
Bitte 0.15.2 installieren. Da ist es gefixt. -
Hi Bluefox,
habe eben aus dem Git aktualisiert ==> hab jetzt js-controller 0.15.3
Als Admin läuft die Version 1.6.10
Ich bin mir nicht sicher, aber ich sehe es jetzt zum ersten Mal - rechts oben im Admin kommt eine rote Meldung "Zu viele Ereignisse" (siehe Screenshot).
Die Meldung verschwindet auch nach kurzer Zeit. Als ich sie aber einmal angeklickt habe, war der Admin weg (Webseite nicht erreichbar) und kam auch erst nach einigen Sekunden zurück.
Muss ich mir Sorgen machen?
Gruß,
Eric
-
Hi Bluefox,
habe eben aus dem Git aktualisiert ==> hab jetzt js-controller 0.15.3
Als Admin läuft die Version 1.6.10
Ich bin mir nicht sicher, aber ich sehe es jetzt zum ersten Mal - rechts oben im Admin kommt eine rote Meldung "Zu viele Ereignisse" (siehe Screenshot).
ereignisse.png
Gruß,
Eric `
Wenn zu viele Ereignisse dauerhaft (3 Sekunden über 180 Events) kommen, dann werden die für admin abgeschaltet.Nach eine Minute wird es wieder eingeschaltet.
> Die Meldung verschwindet auch nach kurzer Zeit. Als ich sie aber einmal angeklickt habe, war der Admin weg (Webseite nicht erreichbar) und kam auch erst nach einigen Sekunden zurück.
Da sollte eine Fehlermeldung in /opt/iobroker/log/20…..log drin sein. Kann ich die sehen? -
Da sollte eine Fehlermeldung in /opt/iobroker/log/20…..log drin sein. Kann ich die sehen?
Meinst Du diese Meldung
> 2017-01-20 21:06:52.604 - info: admin.0 Unsubscribe from all states, except system's, because over 3 seconds the number of events is over 60 (in last second 0) `Ach so, ich habe Redis laufen.
Gruß,
Eric
-
Da sollte eine Fehlermeldung in /opt/iobroker/log/20…..log drin sein. Kann ich die sehen?
Meinst Du diese Meldung
> 2017-01-20 21:06:52.604 - info: admin.0 Unsubscribe from all states, except system's, because over 3 seconds the number of events is over 60 (in last second 0) `Ach so, ich habe Redis laufen.
Gruß,
Eric `
Es sollte Meldung sein, was bei Absturz von admin kommt. Gleich danach -
Hier mal einen ganzen Block (ab der Meldung):
`2017-01-20 21:25:05.104 - ^[[32minfo^[[39m: admin.0 Unsubscribe from all states, except system's, because over 3 seconds the number of events is over 60 (in last second 0) 2017-01-20 21:25:18.304 - ^[[32minfo^[[39m: admin.0 Subscribe on all states again 2017-01-20 21:25:18.801 - ^[[32minfo^[[39m: admin.0 received all states 2017-01-20 21:25:18.816 - ^[[31merror^[[39m: admin.0 uncaught exception: Cannot read property 'val' of null 2017-01-20 21:25:18.820 - ^[[31merror^[[39m: admin.0 TypeError: Cannot read property 'val' of null at /opt/iobroker/node_modules/iobroker.admin/admin.js:700:128 at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3337:61 at Command.callback (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:305:49) at normal_reply (/opt/iobroker/node_modules/redis/index.js:714:21) at RedisClient.return_reply (/opt/iobroker/node_modules/redis/index.js:816:9) at JavascriptRedisParser.Parser.returnReply (/opt/iobroker/node_modules/redis/index.js:188:18) at JavascriptRedisParser.execute (/opt/iobroker/node_modules/redis-parser/lib/parser.js:415:12) at Socket. <anonymous>(/opt/iobroker/node_modules/redis/index.js:267:27) at emitOne (events.js:77:13) at Socket.emit (events.js:169:7) 2017-01-20 21:25:18.820 - ^[[32minfo^[[39m: admin.0 terminating http server on port 8081 2017-01-20 21:25:18.845 - ^[[31merror^[[39m: host.iobroker instance system.adapter.admin.0 terminated with code 0 (OK) 2017-01-20 21:25:18.850 - ^[[32minfo^[[39m: hm-rpc.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.855 - ^[[32minfo^[[39m: fritzbox.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.855 - ^[[32minfo^[[39m: sonos.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.856 - ^[[32minfo^[[39m: pushover.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.856 - ^[[32minfo^[[39m: simple-api.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.857 - ^[[32minfo^[[39m: web.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.857 - ^[[32minfo^[[39m: node-red.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.858 - ^[[32minfo^[[39m: node-red.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.858 - ^[[32minfo^[[39m: socketio.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.859 - ^[[32minfo^[[39m: text2command.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.859 - ^[[32minfo^[[39m: sayit.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.860 - ^[[32minfo^[[39m: botvac.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.860 - ^[[32minfo^[[39m: hm-rpc.1 system.adapter.admin.0: logging false 2017-01-20 21:25:18.861 - ^[[32minfo^[[39m: harmony.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.862 - ^[[32minfo^[[39m: pushover.1 system.adapter.admin.0: logging false 2017-01-20 21:25:18.862 - ^[[32minfo^[[39m: cloud.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.866 - ^[[32minfo^[[39m: sql.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.864 - ^[[32minfo^[[39m: tankerkoenig.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.866 - ^[[32minfo^[[39m: sql.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.869 - ^[[32minfo^[[39m: javascript.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.869 - ^[[32minfo^[[39m: javascript.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.846 - ^[[32minfo^[[39m: host.iobroker Restart adapter system.adapter.admin.0 because enabled 2017-01-20 21:25:18.853 - ^[[32minfo^[[39m: hm-rega.0 system.adapter.admin.0: logging false[/code]</anonymous>` Gruß, Eric
-
Bei mir tritt leider auch der Fehler "Zu viele Ereignisse" auf.
Wahrscheinlich ist die Meldung zutreffend. Der Philips Hue Adapter verursacht bei mir viele Meldungen (zwei Adapter rund 70 Leuchtmittel). Stoppen dieser Adapter führt zum Erfolg. Auch der neue unifi Adapter geizt nicht mit Meldungen. Auf meinem Rechner ist das Limit von 180 Events/3 sec sicherlich nicht nötig. Vielleicht sollte man im admin Adapter das Limit einstellen können. Auf kleineren Maschinen wie raspi wird er sicherlich Sinn machen.
-
Ja. 180 ist schon zu wenig. Aber irgendwann ist auf jeder Machine Schluss.
Bitte bis zu nächster Version diese Zeile auf z.B 1000 anpassen:
https://github.com/ioBroker/ioBroker.ad … min.js#L40
value: 60,
Bis dorthin überlege ich wie es besser zu machen ist.
-
Hier mal einen ganzen Block (ab der Meldung):
`2017-01-20 21:25:05.104 - ^[[32minfo^[[39m: admin.0 Unsubscribe from all states, except system's, because over 3 seconds the number of events is over 60 (in last second 0) 2017-01-20 21:25:18.304 - ^[[32minfo^[[39m: admin.0 Subscribe on all states again 2017-01-20 21:25:18.801 - ^[[32minfo^[[39m: admin.0 received all states 2017-01-20 21:25:18.816 - ^[[31merror^[[39m: admin.0 uncaught exception: Cannot read property 'val' of null 2017-01-20 21:25:18.820 - ^[[31merror^[[39m: admin.0 TypeError: Cannot read property 'val' of null at /opt/iobroker/node_modules/iobroker.admin/admin.js:700:128 at /opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3337:61 at Command.callback (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:305:49) at normal_reply (/opt/iobroker/node_modules/redis/index.js:714:21) at RedisClient.return_reply (/opt/iobroker/node_modules/redis/index.js:816:9) at JavascriptRedisParser.Parser.returnReply (/opt/iobroker/node_modules/redis/index.js:188:18) at JavascriptRedisParser.execute (/opt/iobroker/node_modules/redis-parser/lib/parser.js:415:12) at Socket. <anonymous>(/opt/iobroker/node_modules/redis/index.js:267:27) at emitOne (events.js:77:13) at Socket.emit (events.js:169:7) 2017-01-20 21:25:18.820 - ^[[32minfo^[[39m: admin.0 terminating http server on port 8081 2017-01-20 21:25:18.845 - ^[[31merror^[[39m: host.iobroker instance system.adapter.admin.0 terminated with code 0 (OK) 2017-01-20 21:25:18.850 - ^[[32minfo^[[39m: hm-rpc.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.855 - ^[[32minfo^[[39m: fritzbox.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.855 - ^[[32minfo^[[39m: sonos.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.856 - ^[[32minfo^[[39m: pushover.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.856 - ^[[32minfo^[[39m: simple-api.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.857 - ^[[32minfo^[[39m: web.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.857 - ^[[32minfo^[[39m: node-red.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.858 - ^[[32minfo^[[39m: node-red.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.858 - ^[[32minfo^[[39m: socketio.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.859 - ^[[32minfo^[[39m: text2command.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.859 - ^[[32minfo^[[39m: sayit.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.860 - ^[[32minfo^[[39m: botvac.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.860 - ^[[32minfo^[[39m: hm-rpc.1 system.adapter.admin.0: logging false 2017-01-20 21:25:18.861 - ^[[32minfo^[[39m: harmony.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.862 - ^[[32minfo^[[39m: pushover.1 system.adapter.admin.0: logging false 2017-01-20 21:25:18.862 - ^[[32minfo^[[39m: cloud.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.866 - ^[[32minfo^[[39m: sql.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.864 - ^[[32minfo^[[39m: tankerkoenig.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.866 - ^[[32minfo^[[39m: sql.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.869 - ^[[32minfo^[[39m: javascript.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.869 - ^[[32minfo^[[39m: javascript.0 system.adapter.admin.0: logging false 2017-01-20 21:25:18.846 - ^[[32minfo^[[39m: host.iobroker Restart adapter system.adapter.admin.0 because enabled 2017-01-20 21:25:18.853 - ^[[32minfo^[[39m: hm-rega.0 system.adapter.admin.0: logging false[/code]</anonymous>` Gruß, Eric Danke. Konnte ich fixen. ``` `
-
Umsetzung hat geholfen. Spannend ist, ob Du eine Möglichkeit findest, die Zahl der max Events dynamisch ermitteln kannst? Evt. ist es interessant zu ermitteln, wie lange eine Subscription benötigt, um auf ein Event zu reagieren. Andererseits frage ich mich auch, ob wirklich so vile Events abgesetzt werden müssen. Beispielsweise treten bei dem unifi Adapter/genauso hue-Apdater häufig keine Änderungen auf. Wäre es nicht sinnvoll die Adapter-Entwickler zu animieren, die Zahl der Events auf die notwendigen zu beschränken? Dass dürfte das System insgesamt entlasten.
-
Hi Bluefox,
nur mal damit ichs verstehe. Für was steht denn dieser Wert? Denn ich konnte bisher zumindest keine negativen Erscheinungen feststellen. Und mein System haut wahrscheinlich ziemlich viele Events raus. Zumindest mehr, als der Browser (im selben Netz) unter dem Reiter Events flüssig darstellen kann.
Oder stehen diese Events für etwas anderes?
Vielleicht könnte man ja so etwas wie einen Eventzähler(Tacho?) in den Admin einbauen. So in der Art wie beim Log wenn ich dieses anhalte, nur eben dauernd. Als Pulsanzeige quasi.
Das wäre möglicherweise auch ein ziemlich guter Performancemesser für die unterschiedlichen Hardwareplattformen.
Bis 100 Transaktionen reicht ein Raspi.
Ab dann bis 500 wäre ein Raspi3 nötig.
und ab diesem Wert braucht es schnellere Prozessoren/mehr Ram etc.
Vielleicht ließe sich so eine ungefähre Kalkulation für den benötigten Rechner im Vorfeld einer Installation ermitteln.
Ist nur so ne Idee.
Gruß
Bernhard
-
Hallo Bernhard,
@Heinzelmaennchen:Das wäre möglicherweise auch ein ziemlich guter Performancemesser für die unterschiedlichen Hardwareplattformen. `
Ich verstehe leider nicht alles in diesem Thread, aber wenn das so ist, wie du es (nachvollziehbar) beschreibst, fände ich so eine Kennzahl wirklich brauchbar.Gruß
Rainer
-
Hi Bluefox,
nur mal damit ichs verstehe. Für was steht denn dieser Wert? Denn ich konnte bisher zumindest keine negativen Erscheinungen feststellen. Und mein System haut wahrscheinlich ziemlich viele Events raus. Zumindest mehr, als der Browser (im selben Netz) unter dem Reiter Events flüssig darstellen kann.
Oder stehen diese Events für etwas anderes?
Vielleicht könnte man ja so etwas wie einen Eventzähler(Tacho?) in den Admin einbauen. So in der Art wie beim Log wenn ich dieses anhalte, nur eben dauernd. Als Pulsanzeige quasi.
Das wäre möglicherweise auch ein ziemlich guter Performancemesser für die unterschiedlichen Hardwareplattformen.
Bis 100 Transaktionen reicht ein Raspi.
Ab dann bis 500 wäre ein Raspi3 nötig.
und ab diesem Wert braucht es schnellere Prozessoren/mehr Ram etc.
Vielleicht ließe sich so eine ungefähre Kalkulation für den benötigten Rechner im Vorfeld einer Installation ermitteln.
Ist nur so ne Idee.
Gruß
Bernhard `
Es geht um Browser. Wie viele events kann ein Browser verarbeiten.So ein Pulsmessung ist interessant.
-
Bei mir läuft der 15.3 ohne die Meldung. Wenn man sich die Ereignisse anschaut, dann ist der Philips Hue Adapter wirklich spitzenreiter.
@gst666
> zwei Adapter rund 70 Leuchtmittel
Hast du deine ganze Straße damit ausgestattet? :lol: :shock: -
In der nächsten js-controller Version kommen die States, die input/output rates zeigen.
Man kann damit die Übeltäter erkennen.
-
Bei mir läuft der 15.3 ohne die Meldung. Wenn man sich die Ereignisse anschaut, dann ist der Philips Hue Adapter wirklich spitzenreiter. `
Leider funktioniert die Hue Api ja nur mit Polling, dabei werden dann alle paar Sekunden alle Leuchten abgerufen und die Datenkpunkte gespeichert. Möglicherweise ist es auch hier sinnvoll nur tatsächlich geänderte Datenpunkte auch zu schreiben, ich gucke mir das mal an sobald ich Zeit dazu habe. Es hilft natürlich auch die Polling-Abstände in den Adapteroptionen zu verlängern.
-
Bei mir läuft der 15.3 ohne die Meldung. Wenn man sich die Ereignisse anschaut, dann ist der Philips Hue Adapter wirklich spitzenreiter. `
Ich denke es ist sicherlich nicht spezifisch bzgl des Philips Hue Adapters. Ich wage auch mal einfach die These aufzustellen das es auch vmtl daran liegt das viele Adapter (wenn nicht sogar die meisten) PullAdapter sind. D.h. Sie holen regelmäßig ihre werte ab und melden die dann per adapter.setState() egal ob die werte sich geändert haben oder nicht. Und so kommt ws das eben z.b. Der Hue Adapter auf einmal recht viele state änderungen publisht und das macht dann hin/wieder recht hohe state peaks. Helfen würde hierbei IMHO wenn Bluefox dem adapter.setState() wie hier besprochen (http://forum.iobroker.net/viewtopic.php?f=24&t=4868) eine möglichkeit verpassen würde die werte nur zu setzen/publishen wenn sich die werte auch geändert haben. IMHO wäre es ggf auch testweise mal interessant per default die adapter.setState() funktion sich so verhalten zu lassen und nur adapter die eben nicht in regelmäßigen Abständen werte abholen sondern diese aktiv geliefert bekommen sollten setState dann mit einer force option aufrufen. iMHO sollte sich somit das state change augkommen radikal reduzieren lassen.