Fehlerhaftes Binding/Thing/Channel läßt Channel-Informationen im Control-Bereich verschwinden

Themen auf die es innerhalb eines Jahres keine Antwort gab, werden hier archiviert.

Moderatoren: Cyrelian, seppy, udo1toni

Gesperrt
Weltenbummler18
Beiträge: 6
Registriert: 27. Jan 2020 12:21
Answers: 0

Fehlerhaftes Binding/Thing/Channel läßt Channel-Informationen im Control-Bereich verschwinden

Beitrag von Weltenbummler18 »

Hallo zusammen,

seit dem Wochenende habe ich auf Basis eines Raspi 2 B openHab laufen. Hier ein par Daten dazu:

Code: Alles auswählen

###############################################################################
###############  bigbrother  ##################################################
###############################################################################
##        Ip = 192.168.201.199
##   Release = Raspbian GNU/Linux 10 (buster)
##    Kernel = Linux 4.19.93-v7+
##  Platform = Raspberry Pi 2 Model B Rev 1.1
##    Uptime = 0 day(s). 0:0:27
## CPU Usage = 35.79% avg over 4 cpu(s) (4 core(s) x 1 socket(s))
##  CPU Load = 1m: 1.09, 5m: 0.26, 15m: 0.09
##    Memory = Free: 0.68GB (72%), Used: 0.26GB (28%), Total: 0.95GB
##      Swap = Free: 0.09GB (100%), Used: 0.00GB (0%), Total: 0.09GB
##      Root = Free: 11.33GB (82%), Used: 2.45GB (18%), Total: 14.40GB
##   Updates = 0 apt updates available.
##  Sessions = 1 session(s)
## Processes = 111 running processes of 32768 maximum processes
###############################################################################

              Welcome to            __  _____    ____  _
            ____  ____  ___  ____  / / / /   |  / __ )(_)___ _____
           / __ \/ __ \/ _ \/ __ \/ /_/ / /| | / __  / / __ `/ __ \
          / /_/ / /_/ /  __/ / / / __  / ___ |/ /_/ / / /_/ / / / /
          \____/ .___/\___/_/ /_/_/ /_/_/  |_/_____/_/\__,_/_/ /_/
              /_/
                  openHAB 2.5.1-2 (Release Build)
Nachdem ich wie in der Dokumentation beschrieben, verschiedene Bindings installiert hatte, Things definiert und dann auch die dazugehörigen Channels installiert und dazugewählt hatte, konnte ich sehr schön im Control-Bereich die Channel-Informationen nach Standort sortiert anschauen.

Da ich eine SolarEdge-Solar-Anlage betreibe, habe ich auch das SolarLog- und das SolarEdge-Binding installiert, das dazugehörende Thing mit key und standort-id versehen und siehe da, auch dies wurde mir nach der Channel-Definition sauber angezeigt (SolarLog- nicht, aber SolarEdge schon).

Heute morgen dann die Ernüchterung. Von den fünf Things die ich in einem Raum hatte, wurde mir nur noch eines angezeigt. Das gleiche galt für die anderen Standorte. Viele Channels waren hier verschwunden. Meine Vermutung war, daß dies mit einem Fehler in einem Solaredge-Binding zusammenhängen könnte. Also löschte ich die entsprechenden Things der Bindings SolarEdge und Solar-Log (das hatte ich gestern schon nicht ans Laufen bekommen, da es eine HTTP-URL verlangte, mein Modbus aber nur TCP anbietet), bootete den Raspi durch und siehe da, die Channels im Control-Bereich waren alle wieder da.

Als nächstes erstellte ich zur Diagnose erneut ein Thing über das SolarEdge-Binding, konigurierte es korrekt und wähle die CHannels aus und auch hierbei landeten die Daten korrekterweise im Control-Bereich, wenn auch nicht alle Werte korrekt sind. Dann schaute ich mir das openhab.log-File an und entdeckte dabei die folgende Exception:

Code: Alles auswählen

2020-01-27 13:27:15.569 [ERROR] [ore.common.registry.AbstractRegistry] - Cannot inform the listener "org.eclipse.smarthome.core.thing.internal.ChannelItemProvider$2@3d12e0" about the "ADDED" event: Error creating a dimension Class instance for name 'Percent'.
java.lang.IllegalArgumentException: Error creating a dimension Class instance for name 'Percent'.
	at org.eclipse.smarthome.core.types.util.UnitUtils.parseDimension(UnitUtils.java:89) ~[bundleFile:?]
	at org.eclipse.smarthome.core.library.items.NumberItem.<init>(NumberItem.java:75) ~[bundleFile:?]
	at org.eclipse.smarthome.core.library.CoreItemFactory.createItem(CoreItemFactory.java:81) ~[bundleFile:?]
	at org.eclipse.smarthome.core.library.CoreItemFactory.createItem(CoreItemFactory.java:1) ~[bundleFile:?]
	at org.eclipse.smarthome.core.thing.internal.ChannelItemProvider.createItemForLink(ChannelItemProvider.java:241) ~[?:?]
	at org.eclipse.smarthome.core.thing.internal.ChannelItemProvider.access$2(ChannelItemProvider.java:227) ~[?:?]
	at org.eclipse.smarthome.core.thing.internal.ChannelItemProvider$2.added(ChannelItemProvider.java:348) ~[?:?]
	at org.eclipse.smarthome.core.thing.internal.ChannelItemProvider$2.added(ChannelItemProvider.java:1) ~[?:?]
	at org.eclipse.smarthome.core.common.registry.AbstractRegistry.notifyListeners(AbstractRegistry.java:346) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractRegistry.notifyListenersAboutAddedElement(AbstractRegistry.java:379) [bundleFile:?]
	at org.eclipse.smarthome.core.thing.link.ItemChannelLinkRegistry.notifyListenersAboutAddedElement(ItemChannelLinkRegistry.java:121) [bundleFile:?]
	at org.eclipse.smarthome.core.thing.link.ItemChannelLinkRegistry.notifyListenersAboutAddedElement(ItemChannelLinkRegistry.java:1) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractRegistry.added(AbstractRegistry.java:157) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractRegistry.added(AbstractRegistry.java:1) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:56) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:75) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListenersAboutAddedElement(AbstractProvider.java:79) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractManagedProvider.add(AbstractManagedProvider.java:64) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractRegistry.add(AbstractRegistry.java:325) [bundleFile:?]
	at org.eclipse.smarthome.core.thing.link.ThingLinkManager$3.createLinkIfNotAdvanced(ThingLinkManager.java:224) [bundleFile:?]
	at org.eclipse.smarthome.core.thing.link.ThingLinkManager$3.added(ThingLinkManager.java:211) [bundleFile:?]
	at org.eclipse.smarthome.core.thing.link.ThingLinkManager$3.added(ThingLinkManager.java:1) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:56) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:75) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractProvider.notifyListenersAboutAddedElement(AbstractProvider.java:79) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractManagedProvider.add(AbstractManagedProvider.java:64) [bundleFile:?]
	at org.eclipse.smarthome.core.common.registry.AbstractRegistry.add(AbstractRegistry.java:325) [bundleFile:?]
	at org.eclipse.smarthome.io.rest.core.internal.thing.ThingResource.create(ThingResource.java:237) [bundleFile:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_222]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_222]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_222]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_222]
	at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) [bundleFile:?]
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) [bundleFile:?]
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) [bundleFile:?]
	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) [bundleFile:?]
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) [bundleFile:?]
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) [bundleFile:?]
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) [bundleFile:?]
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) [bundleFile:?]
	at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) [bundleFile:?]
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) [bundleFile:?]
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) [bundleFile:?]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:315) [bundleFile:?]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:297) [bundleFile:?]
	at org.glassfish.jersey.internal.Errors.process(Errors.java:267) [bundleFile:?]
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) [bundleFile:?]
	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) [bundleFile:?]
	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) [bundleFile:?]
	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) [bundleFile:?]
	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) [bundleFile:?]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) [bundleFile:?]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) [bundleFile:?]
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) [bundleFile:?]
	at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76) [bundleFile:?]
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:852) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:544) [bundleFile:9.4.20.v20190813]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [bundleFile:?]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:536) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1581) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1307) [bundleFile:9.4.20.v20190813]
	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293) [bundleFile:?]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:482) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1549) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1204) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [bundleFile:9.4.20.v20190813]
	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [bundleFile:?]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.Server.handle(Server.java:494) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:374) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:268) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:426) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:320) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:158) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:367) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:782) [bundleFile:9.4.20.v20190813]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:918) [bundleFile:9.4.20.v20190813]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
==> /var/log/openhab2/events.log <==
Daraus ergeben sich nun ein Verbesserungsvorschlag und eine Frage. Die Frage: bei wem ist die Exception am besten audgehoben? Normalerweise hätte ich vermutet, daß der Autor des Bindings hier der erste Adressat wäre, aber die Klassennamen deutet eher auf ein allgemeines Problem hin.

Der Verbesserungsvorschlag: dem oben beschriebenen Verhalten nach bricht anscheinend der Darstellung-Prozess der Channel-Informationen bei einem Fehler eines Channels/Things/Bindings ab. Vielleicht kann das Exception-Handling an der entsprechenden Stelle so modifiziert werden, daß die nicht fehlerhaften Channels weiter angezeigt werden. Als Java-Entwickler könnte ich mich in Zukunft einbringen, aber soweit bin ich noch nicht.

Viele Grüße,
Thomas

Gesperrt