Ankündigung

Einklappen
Keine Ankündigung bisher.

KNX mit OpenHAB - ich bin zu blöd dafür

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    KNX mit OpenHAB - ich bin zu blöd dafür

    Nachdem mein Wiregate vor kurzem gestorben ist wollte ich die Gelegenheit nutzen und endlich auf OpenHAB umsteigen, aber irgendwie komme ich damit nicht weiter.

    Ich hab in den letzten 15 Jahren schon viele Visus ausprobiert, aber OpenHAB ist irgendwie verwirrend, mit den unterschiedlichen UIs und Configs.

    Ist-Stand:
    Openhab läuft im Docker-Container auf meinem Linux-PC, zusätzlich laufen noch ein OWFS Container und ein CometVisu-Container.
    Als Schnittstelle habe ich ein MDT SCN-IP000.03 im Einsatz

    Cometvisu im Docker habe ich relativ rasch zum Laufen gebracht, das funktioniert auch.

    Zu OpenHAB habe ich einerseits schon vor einiger Zeit "Smarthome mit OpenHAB2" gelesen und einige Tutorials und die Doku.

    Angefangen habe ich dann mit der PaperUI, weil ich dachte damit kann man das alles schön via Web konfigurieren. Also mal die Bindings installiert und konfiguriert.
    Für OWFS hat das auch nach kleinen Hürden dann funktioniert, da sehe ich im PaperUI auch die entsprechenden Werte meiner Sensoren inzwischen.
    KNX hatte ich dann auch versucht, das war aber gar nicht so verständlich, wird in der PaperUI auch als OK angezeigt:
    1.) KNX Binding installiert
    2.) Thing für KNXD angelegt, als Router konfiguriert
    hat beim 2. oder 3. Versuch dann auch funktioniert, wird "grün" angezeigt
    3.) dann ein KNXD-Thing für den Licht-Aktor angelegt
    Bridge von 2 gewählt.
    Was mich hier schon stutzig macht: Warum arbeitet man hier mit PA und nicht mit GA?
    Aber sichtlich muss man hier die "Aktoren" anlegen und dann die Channels dazu
    Wenn man eine PA angibt, steht Status "OFFLINE", gibt man keine PA an dann ONLINE
    4.) also dann auch die Channels für das Licht angelegt
    ändert auch nix

    Hier habe ich einiges konfiguriert, aber eigentlich keine Ahnung wo diese Dinge
    dann gespeichert werden.

    Also habe ich mich dann mit den Konfigurationsdateien auseinander gesetzt und
    das ganze nochmal angelegt.

    1.) things-Datei mit Gateway, (sowohl ROUTER als auch TUNNEL getestet) und einem
    Aktor sowie 4 Lampen daran
    2.) items-Datei dafür
    3.) sitemap-Datei

    Das ganze dann in der BasicUI aufgerufen, wird dargestellt, und man kann auch
    Schalten, aber am KNX kommt nix an.

    Auch in den Logs vom openhab konnte ich nicht wirklich was dazu finden ausser irgendwelchen
    Fehlermeldungen die sichtlich aus irgendeiner-Demo-Konfiguration kommen

    Code:
    2019-11-02 09:15:21.693 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule 'Set random wifi variations': The name 'Wifi_Level' cannot be resolved to an item or type; line 128, column 16, length 10
    2019-11-02 09:15:30.002 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule 'Set random image URLs': The name 'ImageURL' cannot be resolved to an item or type; line 138, column 16, length 8
    2019-11-02 09:15:40.001 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule 'Set random wifi variations': The name 'Wifi_Level' cannot be resolved to an item or type; line 128, column 16, length 10
    2019-11-02 09:15:40.002 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule 'Set random image URLs': The name 'ImageURL' cannot be resolved to an item or type; line 138, column 16, length 8
    Irgendwie habe ich auch keine Ahnung, wie man das testen kann. KNX-Kommunikation funktioniert, dafür hatte ich mir extra einen Testcontainer installiert und mit dem knxtool experimentiert.

    Hat jemand einen Tipp für mich, wo ich hier ansetzen muss?

    danke, Chris

    #2
    Mit den Informationen hier? Nein.

    Das KNX2-Binding bildet einen Aktor als Thing ab. Bei einfachen Aktoren, z.B. Schaltaktoren, ist ein Kanal am Aktor in guter Näherung ein Kanal in OH. Diese werden ebenfalls im Thing definiert. Bei komplexeren Aktoren wird das etwas komplizierter, aber damit muss man ja nicht anfangen, bevor man die Systemarchitektur von OH verstanden hat. Über die OH-Kanäle wird im KNX2-Plugin die Bindung an die GAs gemacht. Um in OH irgendwas damit zu machen, musst du Items definieren und an die OH-Kanäle binden. Mit diesen Items kannst du dann in OH arbeiten (Visu, Regeln usw.).

    Aus deinem unvollständigen Log oben kann man nur erahnen, dass du versuchst, irgendwelche Kanäle zu benutzen ohne Items definiert zu haben. Oder irgendwelche Funktionen zu nutzen, ohne Items definiert zu haben. oder, oder, oder - wie gesagt: Ohne *.thing und zugehöriger *.items-Datei kann man mit deinen Informationen nicht mal raten, was du eigentlich machen willst, geschweige denn was schiefgeht.

    Hast du denn das sehr ausführliche Beispiel in der KNX-Binding-Doku mal mit einem Schaltaktor und einem Kanal (also einfach mal Licht an/aus) nachvollzogen? Da wirst du ja Schritt für Schritt vom Thing über den Kanal bis zum Item an die Hand genommen. Dein Beitrag klingt nicht danach, daher wäre das die allererste Empfehlung.

    Grundsätzlich gilt für das KNX-Binding: Entweder alles über die PaperUI konfigurieren (macht aber glaube ich niemand), oder wie auch in der Doku beschrieben alles über die Konfigurationsdateien (*.thing). "Mischbetrieb" geht schief.

    Kommentar


      #3
      Danke DiMa für das Feedback,

      Also ich habe eine Konfig ziemlich genau wie in der Doku

      THINGS:
      Code:
      Bridge knx:ip:bridge [  
          type="TUNNEL",
          ipAddress="10.0.15.223",
          portNumber=3671,
          localIp="10.0.15.211",
          readingPause=50,
          responseTimeout=10,
          readRetriesLimit=3,
          autoReconnectPeriod=60,
          localSourceAddr="0.0.0"
      ] {
          Thing device generic [
              address="1.1.45",
              fetch=true,
              pingInterval=300,
              readInterval=3600
          ] {
              Type switch        : EG_BAD_Licht_Decke  "Licht Bad"        [ ga="1/1/111+<1/4/111" ]
              Type switch        : EG_GA_Licht_Decke   "Licht Garderobe"  [ ga="1/1/121+<1/4/121" ]
          }
      }
      Das THING ist ein MDT-Schaltaktor

      ITEMS:
      Code:
      Switch          EG_BAD_Licht_Decke      "Bad [%s]"              <light>          { channel="knx:device:bridge:generic:EG_BAD_Licht_Decke" }
      Switch          EG_GA_Licht_Decke       "Garderobe [%s]"        <light>          { channel="knx:device:bridge:generic:EG_GA_Licht_Decke" }
      Und dann die Sitemap
      Code:
      sitemap knx label="GB15 KNX Sitemap" {
        Frame label="KNX Übersicht" {
          Switch item=EG_BAD_Licht_Decke
          Switch item=EG_GA_Licht_Decke
        }                
      }
      Grundsätzlich gilt für das KNX-Binding: Entweder alles über die PaperUI konfigurieren (macht aber glaube ich niemand), oder wie auch in der Doku beschrieben alles über die Konfigurationsdateien (*.thing). "Mischbetrieb" geht schief.
      Wenn ich das also richtig verstehe, dann lösche ich am besten alles aus dem PaperUI in Bezug auf KNX wieder raus?
      Oder gilt das auch für alle anderen Bindings?

      Wie bekomme ich denn am besten diese ganzen "Demo-Teile" weg

      Kommentar


        #4
        Was du mit "Demo-Teile" meinst, weiss ich nicht.

        Ansonsten sieht das OK aus. LocalIP richtig gesetzt? Sonst mal alles außer type, ipAddress und autoReconnectPeriod weglassen (siehe Doku).

        Was sagt denn das OpenHAB Logfile wenn du OH neu startest zur Initialisierung des Interfaces? Werden die channels korrekt angelegt ("Link '...' has been added.")? Was steht im Logfile, wenn du die Schaltfunktion über die Basic UI auslöst?

        Kommentar


          #5
          Mit den "Demo-Teilen" meine ich die Objekte aus der initialen Demo-Konfiguration. Hab eigentlich alle demo.things, items, sitemap usw gelöscht, aber irgendwie sind die lt. Log immer noch da.


          Hab den Container jetzt mal neu gestartet, und siehe da, jetzt steht da wirklich was von einem Problem mit dem Daemon, das hatte ich vorher noch nicht

          Code:
          2019-11-02 17:19:33.387 [INFO ] [arthome.ui.paper.internal.PaperUIApp] - Started Paper UI at /paperui
          2019-11-02 17:19:34.034 [ERROR] [KNXnet/IP Tunneling 10.0.15.223:3671] - communication failure on connect
          java.net.BindException: Cannot assign requested address (Bind failed)
                  at java.net.PlainDatagramSocketImpl.bind0(Native Method) ~[?:?]
                  at java.net.AbstractPlainDatagramSocketImpl.bind(AbstractPlainDatagramSocketImpl.java:93) ~[?:?]
                  at java.net.DatagramSocket.bind(DatagramSocket.java:392) ~[?:?]
                  at java.net.DatagramSocket.<init>(DatagramSocket.java:242) ~[?:?]
                  at tuwien.auto.calimero.knxnetip.ClientConnection.connect(ClientConnection.java:163) ~[?:?]
                  at tuwien.auto.calimero.knxnetip.KNXnetIPTunnel.<init>(KNXnetIPTunnel.java:159) ~[?:?]
                  at org.openhab.binding.knx.internal.client.IPClient.getConnection(IPClient.java:107) ~[?:?]
                  at org.openhab.binding.knx.internal.client.IPClient.createKNXNetworkLinkIP(IPClient.java:90) ~[?:?]
                  at org.openhab.binding.knx.internal.client.IPClient.establishConnection(IPClient.java:77) ~[?:?]
                  at org.openhab.binding.knx.internal.client.AbstractKNXClient.connect(AbstractKNXClient.java:178) ~[?:?]
                  at org.openhab.binding.knx.internal.client.AbstractKNXClient.lambda$0(AbstractKNXClient.java:145) ~[?:?]
                  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
                  at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
                  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
                  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
                  at java.lang.Thread.run(Thread.java:748) [?:?]
          2019-11-02 17:20:34.058 [ERROR] [KNXnet/IP Tunneling 10.0.15.223:3671] - communication failure on connect
          java.net.BindException: Cannot assign requested address (Bind failed)
                  at java.net.PlainDatagramSocketImpl.bind0(Native Method) ~[?:?]
                  at java.net.AbstractPlainDatagramSocketImpl.bind(AbstractPlainDatagramSocketImpl.java:93) ~[?:?]
                  at java.net.DatagramSocket.bind(DatagramSocket.java:392) ~[?:?]
                  at java.net.DatagramSocket.<init>(DatagramSocket.java:242) ~[?:?]
                  at tuwien.auto.calimero.knxnetip.ClientConnection.connect(ClientConnection.java:163) ~[?:?]
                  at tuwien.auto.calimero.knxnetip.KNXnetIPTunnel.<init>(KNXnetIPTunnel.java:159) ~[?:?]
                  at org.openhab.binding.knx.internal.client.IPClient.getConnection(IPClient.java:107) ~[?:?]
                  at org.openhab.binding.knx.internal.client.IPClient.createKNXNetworkLinkIP(IPClient.java:90) ~[?:?]
                  at org.openhab.binding.knx.internal.client.IPClient.establishConnection(IPClient.java:77) ~[?:?]
                  at org.openhab.binding.knx.internal.client.AbstractKNXClient.connect(AbstractKNXClient.java:178) ~[?:?]
                  at org.openhab.binding.knx.internal.client.AbstractKNXClient.lambda$0(AbstractKNXClient.java:145) ~[?:?]
                  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
                  at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
                  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
                  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
                  at java.lang.Thread.run(Thread.java:748) [?:?]
          Hab jetzt auch mal alles aus der config entfernt, jetzt sind die obigen Fehler weg, aber dafür hab ich:

          Code:
          2019-11-02 17:26:27.059 [ERROR] [KNXnet/IP Tunneling 10.0.15.223:3671] - establishing connection failed, timeout connecting to control endpoint /10.0.15.223:3671
          Wenn ich aber einen
          Code:
          telnet 10.0.15.223 3671
          mache, dann klappt das

          Aber jetzt hab ich endlich was im Log mit dem ich arbeiten kann, ich probiere jetzt nochmal ROUTER statt TUNNEL


          Kommentar


            #6
            Manchmal kann es so einfach sein ..

            Beim Test mit "ROUTER" zeigt OpenHAB das Binding zwar als ONLINE an, aber kann keine Geräte ansprechen, nach längerer Zeit sind da jetzt auch Log-Einträge mit Fehlern

            Code:
            2019-11-02 17:36:06.065 [WARN ] [nx.internal.client.AbstractKNXClient] - Giving up reading datapoint 1/4/91, the number of maximum retries (3) is reached.
            2019-11-02 17:36:16.117 [WARN ] [nx.internal.client.AbstractKNXClient] - Giving up reading datapoint 1/5/81, the number of maximum retries (3) is reached.
            2019-11-02 17:36:26.168 [WARN ] [nx.internal.client.AbstractKNXClient] - Giving up reading datapoint 1/4/81, the number of maximum retries (3) is reached.
            2019-11-02 17:36:36.220 [WARN ] [nx.internal.client.AbstractKNXClient] - Giving up reading datapoint 1/5/71, the number of maximum retries (3) is reached.
            2019-11-02 17:36:46.272 [WARN ] [nx.internal.client.AbstractKNXClient] - Giving up reading datapoint 1/4/71, the number of maximum retries (3) is reached.
            Schon mehr als Verzweiflung habe ich jetzt wieder auf TUNNEL umgestellt und den Parameter useNAT=true ergänzt, und siehe da: Plötzlich geht es...

            Jetzt kann ich da mal weiter machen

            danke DiMa für das auf den "richtigen Weg führen"

            lg, Chris

            Kommentar


              #7
              Mit Containern kommt es natürlich auch drauf an, wie der Container konfiguriert ist. Also ob das Netzwerk geNATtet ist oder nicht.
              Grundsätzlich ist gerade bei knx2 weniger mehr. Soll heißen, nur die absolut notwendigen Parameter angeben, in Deinem Fall also nur Tunnel und IP vom knx Gateway (das wäre ja eigentlich knxd, und das wäre dann 127.0.0.1, es sei denn, knxd ist in einem separaten Container eingerichtet).
              Für den Router Mode wird normalerweise keine Gateway IP gesetzt, stattdessen nur die der lokalen Schnittstelle (und auch die ist normalerweise unnötig), aber dazu muss natürlich Multicast durchgereicht werden, keine Ahnung, ob man da bei Containern etwas speziell konfigurieren muss.

              Da Du Dein Thing generic genannt hast, solltest Du auch dort erst mal keine weitere Konfiguration vornehmen, also weder address, noch fetch, ping- oder gar readInterval. letzter Parameter ist ohnehin mit Vorsicht zu genießen und er sollte nur im absoluten Ausnahmefall notwendig sein.

              Die Definition dieser Parameter ist (Stand jetzt - mit Ausnahme von readInteral) erst mal Spielerei, da openHAB nur ein paar zusätzliche Informationen ausspuckt (und das nicht mal zuverlässig).
              Zuletzt geändert von udo1toni; 02.11.2019, 23:14.

              Kommentar


                #8
                So, jetzt hab ich gedacht ich habe es kapiert und wollte mal alle Licht-Aktoren anlegen, aber irgendwie geht jetzt wieder nix mehr ...

                Hab die Konfiguration jetzt reduziert auf

                things:
                Code:
                Bridge knx:ip:bridge [
                    type="TUNNEL",
                    ipAddress="10.0.15.223",
                    autoReconnectPeriod=60,
                    useNAT=true
                ] {
                    Thing device generic [
                    ] {
                        Type switch        : EG_BAD_Licht_Decke "Licht Bad"                     [ ga="1/1/111+<1/4/111" ]
                        Type switch        : EG_GA_Licht_Decke  "Licht Garderobe"               [ ga="1/1/121+<1/4/121" ]
                        Type switch        : EG_KUE_Licht_Decke "Licht Küche"                   [ ga="1/1/91+<1/4/91" ]
                    }
                }
                items:
                Code:
                Switch          EG_BAD_Licht_Decke      "Bad [%s]"              <light>          { channel="knx:device:bridge:generic:EG_BAD_Licht_Decke" }
                Switch          EG_GA_Licht_Decke       "Garderobe [%s]"        <light>          { channel="knx:device:bridge:generic:EG_GA_Licht_Decke" }
                Switch          EG_KUE_Licht_Decke      "Küche [%s]"            <light>          { channel="knx:device:bridge:generic:EG_KUE_Licht_Decke" }
                sitemap
                Code:
                sitemap knx label="GB15 KNX Sitemap" {
                  Frame label="EG" icon="groundfloor" {
                    Switch item=EG_BAD_Licht_Decke
                    Switch item=EG_GA_Licht_Decke
                    Switch item=EG_KUE_Licht_Decke
                  }
                }
                im PaperUI zeigt er alles als ONLINE, im Log stehen keine Fehler dazu, in der Sitemap kann ich schalten, aber nix tut sich.

                Hab den Container jetzt neu gestartet, da kommt jetzt ein eigenartiger Fehler im Log

                Code:
                2019-11-03 11:12:21.477 [WARN ] [org.eclipse.jetty.server.HttpChannel] - /rest/events
                javax.servlet.ServletException: javax.servlet.ServletException: A MultiException has 1 exceptions.  They are:
                1. java.lang.IllegalStateException: ServiceLocatorImpl(__HK2_Generated_0,0,1798665920) has been shut down
                
                        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:88) ~[?:?]
                        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[84:org.eclipse.jetty.server:9.4.11.v20180605]
                        at org.eclipse.jetty.server.Server.handle(Server.java:531) ~[84:org.eclipse.jetty.server:9.4.11.v20180605]
                        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) [84:org.eclipse.jetty.server:9.4.11.v20180605]
                        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) [84:org.eclipse.jetty.server:9.4.11.v20180605]
                        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) [75:org.eclipse.jetty.io:9.4.11.v20180605]
                        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) [75:org.eclipse.jetty.io:9.4.11.v20180605]
                        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:291) [75:org.eclipse.jetty.io:9.4.11.v20180605]
                        at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:151) [75:org.eclipse.jetty.io:9.4.11.v20180605]
                        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) [75:org.eclipse.jetty.io:9.4.11.v20180605]
                        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) [75:org.eclipse.jetty.io:9.4.11.v20180605]
                        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) [87:org.eclipse.jetty.util:9.4.11.v20180605]
                        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) [87:org.eclipse.jetty.util:9.4.11.v20180605]
                        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) [87:org.eclipse.jetty.util:9.4.11.v20180605]
                        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) [87:org.eclipse.jetty.util:9.4.11.v20180605]
                        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) [87:org.eclipse.jetty.util:9.4.11.v20180605]
                        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762) [87:org.eclipse.jetty.util:9.4.11.v20180605]
                        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680) [87:org.eclipse.jetty.util:9.4.11.v20180605]
                        at java.lang.Thread.run(Thread.java:748) [?:?]
                Caused by: javax.servlet.ServletException: A MultiException has 1 exceptions.  They are:
                1. java.lang.IllegalStateException: ServiceLocatorImpl(__HK2_Generated_0,0,1798665920) has been shut down
                
                        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489) ~[?:?]
                        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) ~[?:?]
                        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) ~[?:?]
                        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) ~[?:?]
                        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) ~[?:?]
                        at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76) ~[?:?]
                        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) ~[?:?]
                        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535) ~[?:?]
                        at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) ~[?:?]
                        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) ~[?:?]
                        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) ~[?:?]
                        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) ~[?:?]
                        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317) ~[?:?]
                        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) ~[?:?]
                        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) ~[?:?]
                        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) ~[?:?]
                        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) ~[?:?]
                        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) ~[?:?]
                        ... 18 more
                Caused by: org.glassfish.hk2.api.MultiException: A MultiException has 1 exceptions.  They are:
                1. java.lang.IllegalStateException: ServiceLocatorImpl(__HK2_Generated_0,0,1798665920) has been shut down
                
                        at org.jvnet.hk2.internal.FactoryCreator.getFactoryHandle(FactoryCreator.java:106) ~[?:?]
                        at org.jvnet.hk2.internal.FactoryCreator.dispose(FactoryCreator.java:173) ~[?:?]
                        at org.jvnet.hk2.internal.SystemDescriptor.dispose(SystemDescriptor.java:526) ~[?:?]
                        at org.glassfish.jersey.process.internal.RequestScope$Instance.remove(RequestScope.java:532) ~[?:?]
                        at org.glassfish.jersey.process.internal.RequestScope$Instance.release(RequestScope.java:549) ~[?:?]
                        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:319) ~[?:?]
                        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) ~[?:?]
                        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) ~[?:?]
                        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) ~[?:?]
                        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) ~[?:?]
                        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) ~[?:?]
                        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) ~[?:?]
                        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) ~[?:?]
                        at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76) ~[?:?]
                        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) ~[?:?]
                        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535) ~[?:?]
                        at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) ~[?:?]
                        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) ~[?:?]
                        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) ~[?:?]
                        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) ~[?:?]
                        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317) ~[?:?]
                        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) ~[?:?]
                        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) ~[?:?]
                        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) ~[?:?]
                        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) ~[?:?]
                        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) ~[?:?]
                        ... 18 more
                Caused by: java.lang.IllegalStateException: ServiceLocatorImpl(__HK2_Generated_0,0,1798665920) has been shut down
                        at org.jvnet.hk2.internal.ServiceLocatorImpl.checkState(ServiceLocatorImpl.java:2288) ~[?:?]
                        at org.jvnet.hk2.internal.ServiceLocatorImpl.getServiceHandleImpl(ServiceLocatorImpl.java:629) ~[?:?]
                        at org.jvnet.hk2.internal.ServiceLocatorImpl.getServiceHandle(ServiceLocatorImpl.java:622) ~[?:?]
                        at org.jvnet.hk2.internal.ServiceLocatorImpl.getServiceHandle(ServiceLocatorImpl.java:640) ~[?:?]
                        at org.jvnet.hk2.internal.FactoryCreator.getFactoryHandle(FactoryCreator.java:103) ~[?:?]
                        at org.jvnet.hk2.internal.FactoryCreator.dispose(FactoryCreator.java:173) ~[?:?]
                        at org.jvnet.hk2.internal.SystemDescriptor.dispose(SystemDescriptor.java:526) ~[?:?]
                        at org.glassfish.jersey.process.internal.RequestScope$Instance.remove(RequestScope.java:532) ~[?:?]
                        at org.glassfish.jersey.process.internal.RequestScope$Instance.release(RequestScope.java:549) ~[?:?]
                        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:319) ~[?:?]
                        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) ~[?:?]
                        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) ~[?:?]
                        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) ~[?:?]
                        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) ~[?:?]
                        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) ~[?:?]
                        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) ~[?:?]
                        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) ~[?:?]
                        at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76) ~[?:?]
                        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) ~[?:?]
                        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535) ~[?:?]
                        at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) ~[?:?]
                       at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) ~[?:?]
                        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) ~[?:?]
                        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) ~[?:?]
                        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) ~[?:?]
                        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317) ~[?:?]
                        at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) ~[?:?]
                        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) ~[?:?]
                        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) ~[?:?]
                        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219) ~[?:?]
                        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) ~[?:?]
                        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) ~[?:?]
                        ... 18 more
                2019-11-03 11:12:23.247 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'knx.items'
                2019-11-03 11:12:23.509 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'rrd4j.persist'
                2019-11-03 11:12:24.913 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'demo.script'
                2019-11-03 11:12:24.989 [INFO ] [thome.model.lsp.internal.ModelServer] - Started Language Server Protocol (LSP) service on port 5007
                Hab jetzt alles nochmal deaktiviert, damit sind die Fehler weg

                Dann habe ich nacheinander eine Datei nach der anderen aktiviert und neu gestartet - jetzt sind die Fehler nicht wieder gekommen

                Nur KNX geht trotzdem nicht mehr ...

                Irgendwie ist das extem mühsam...

                Nochmal wer einen Tipp?

                lg, Chris
                Zuletzt geändert von chris5020; 03.11.2019, 11:37. Grund: + beim Kopieren der Things übersehen

                Kommentar


                  #9
                  So nach einigem weiter probieren habe ich jetzt ein paar News:

                  1.) bei Änderungen an den things muss man openHAB neu starten, sonst sind die nicht wirklich verfügbar
                  2.) bei den anderen Dateien items+sitemap ist das egal.

                  Hab jetzt wieder auf meine minimalistische Version umgestellt, jetzt geht es wieder, nachdem ich den Container neu gestartet habe.

                  Verständlich ist es nicht, denn eigentlich ist nicht viel anders wie vorher.

                  Kommentar


                    #10
                    Zitat von chris5020 Beitrag anzeigen
                    So nach einigem weiter probieren habe ich jetzt ein paar News:

                    1.) bei Änderungen an den things muss man openHAB neu starten, sonst sind die nicht wirklich verfügbar
                    2.) bei den anderen Dateien items+sitemap ist das egal.

                    Hab jetzt wieder auf meine minimalistische Version umgestellt, jetzt geht es wieder, nachdem ich den Container neu gestartet habe.

                    Verständlich ist es nicht, denn eigentlich ist nicht viel anders wie vorher.
                    Ist halt alles irgendwo doch Windows =>> reboot, tut gut

                    Kommentar


                      #11
                      So, jetzt bin ich endlich einige Schritte weiter, vielleicht hilft es ja jemandem

                      1.) Wenn man mehrere Things macht, dann darf man die nicht mehr generic nennen, sondern muss die eindeutig benennen, z.B.

                      Code:
                      Bridge knx:ip:bridge [  
                          type="TUNNEL",
                          ipAddress="10.0.15.223",
                          autoReconnectPeriod=60,
                          useNAT=true
                      ] {
                      // 1.1.45    MDT Schaltaktor 16-fach  8TE REG, 230VAC, 16A    AKK-1616.01
                          Thing device SA_1_1_45 "MDT 1.1.45" [
                          ] {
                              Type switch        : EG_BAD_Licht_Decke "Licht Bad"                     [ ga="1/1/111+<1/4/111" ]
                              Type switch        : EG_GA_Licht_Decke  "Licht Garderobe"               [ ga="1/1/121+<1/4/121" ]
                              Type switch        : EG_KUE_Licht_Decke "Licht Küche"                   [ ga="1/1/91+<1/4/91" ]
                          }
                      // 1.1.61    MDT Dimmaktor 4-fach  8TE REG, 230VAC, 250W    AKD-0401.01
                          Thing device DA_1_1_61 "MDT 1.1.61" [
                          ] {
                              Type dimmer        : EG_WZ_Licht_Decke      "Licht Wohnen"              [ switch="1/1/71+<1/4/71", position="1/3/71+<1/5/71", increaseDecrease="1/2/71" ]
                              Type dimmer        : EG_EZ_Licht_Decke      "Licht Esszimmer"           [ switch="1/1/81+<1/4/81", position="1/3/81+<1/5/81", increaseDecrease="1/2/81" ]
                          }
                      }
                      Ich habe also wirklich für jeden Aktor ein Thing angelegt und die Kanäle als Channels

                      2.) Bei den Items muss man natürlich auch die richtigen Thing-Namen hinterlegen

                      Code:
                      // ======== 1.1.45    MDT Schaltaktor 16-fach  8TE REG, 230VAC, 16A    AKK-1616.01
                      Switch          EG_BAD_Licht_Decke      "Bad [%s]"              <light>          { channel="knx:device:bridge:SA_1_1_45:EG_BAD_Licht_Decke" }
                      Switch          EG_GA_Licht_Decke       "Garderobe [%s]"        <light>          { channel="knx:device:bridge:SA_1_1_45:EG_GA_Licht_Decke" }
                      Switch          EG_KUE_Licht_Decke      "Küche [%s]"            <light>          { channel="knx:device:bridge:SA_1_1_45:EG_KUE_Licht_Decke" }
                      // ======== 1.1.61    MDT Dimmaktor 4-fach  8TE REG, 230VAC, 250W    AKD-0401.01
                      Dimmer          EG_WZ_Licht_Decke       "Wohnen [%d %%]"        <light>          { channel="knx:device:bridge:DA_1_1_61:EG_WZ_Licht_Decke" }
                      Dimmer          EG_EZ_Licht_Decke       "Essen [%d %%]"         <light>          { channel="knx:device:bridge:DA_1_1_61:EG_EZ_Licht_Decke" }
                      also für die Kanäle am 1. Schaltaktor statt "generic" muss da jetzt "SA_1_1_45" hin
                      knx:device:bridge:SA_1_1_45:EG_BAD_Licht_Decke

                      3.) Manchmal muss man OpenHAB einfach neustarten

                      Zeitweise übernimmt OpenHAB die neuen oder geänderten Things direkt nach der Änderung der Datei, man sieht die Things dann meist auch korrekt schon in der PaperUI
                      Manchmal fehlt hier aber ein "Device" oder ein "Channel", da hat man sich entweder vertippt, oder man startet den Dienst neu

                      Eine sehr gute Kontrolle ist auch:
                      Wenn die Devices und Channel in der PaperUI unter Things angezeigt werden, aber im Control nicht aufscheinen, dann stimmt irgendwas mit der Verknüpfung zwischen THINGS und ITEMS nicht.

                      Aktueller Status:
                      Sowohl meine Schalt- als auch Dimmaktoren sind jetzt richtig angelegt und funktionieren.


                      Im nächsten Schritt werde ich dann noch die Raffstores und die Wetterstation versuchen, sobald das funktioniert gibt es hier ein passendes Update.

                      Kommentar


                        #12
                        Zitat von chris5020 Beitrag anzeigen
                        bei Änderungen an den things muss man openHAB neu starten, sonst sind die nicht wirklich verfügbar
                        Nö, muss man normal nicht. Ich habe das Gefühl. Da ist irgendwas mit deiner Docker-Konfiguration im Argen. Vielleicht mal erst ohne Container mit 'nem Raspi oder in einer VM probieren?

                        Der Rest deines Beitrags... sind jetzt nicht unbedingt neue Erkenntnisse Grundsätzlich solltest du dich mal von der PaperUI lösen und in der Karaf-Konsole schauen, was eine Änderung von dir so im System auslöst. Mach' halt ein Terminal auf und lass das Log darin mitlaufen... Da siehst du sofort, ob die Links (Verbindung Item-Channel) korrekt angelegt werden, oder nicht.

                        Kommentar


                          #13
                          Zitat von DiMa Beitrag anzeigen
                          Nö, muss man normal nicht. Ich habe das Gefühl. Da ist irgendwas mit deiner Docker-Konfiguration im Argen. Vielleicht mal erst ohne Container mit 'nem Raspi oder in einer VM probieren?
                          Na ja... es kommt ein bisschen auf die Version an. openHAB muss keinesfalls neu gestartet werden, aber es kommt vor, dass ein Binding nicht mitbekommt, dass die zugrunde liegenden *.things Dateien geändert wurden. Dieses Problem tritt auch im Zusammenhang mit mqtt2 immer wieder auf.
                          Es reicht aber aus, das Addon neu zu starten, geht ganz einfach mittels Karaf Konsole:
                          Code:
                          openhabian@openhab2:~$ openhab-cli console
                          
                          Logging in as openhab
                          
                                                    __  _____    ____
                            ____  ____  ___  ____  / / / /   |  / __ )
                           / __ \/ __ \/ _ \/ __ \/ /_/ / /| | / __  |
                          / /_/ / /_/ /  __/ / / / __  / ___ |/ /_/ /
                          \____/ .___/\___/_/ /_/_/ /_/_/  |_/_____/
                              /_/                        2.5.0-SNAPSHOT
                                                         Build #1502
                          
                          Hit '<tab>' for a list of available commands
                          and '[cmd] --help' for help on a specific command.
                          Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown openHAB.
                          
                          openhab> bundle:restart org.openhab.binding.knx
                          openhab> logout
                          openhabian@openhab2:~$

                          Kommentar


                            #14
                            ja, so ähnlich kann ich das gerade auch wieder nachvollziehen.
                            im Log ein Fehler mit einem falschen Datentyp, in der PaperUI steht auch noch der alte Wert, dabei hatte ich die things schon mehrfach geändert, neue Things wurden auch ergänzt aus der Datei, aber die bestehenden nicht unbedingt aktualisiert.

                            Gleiches gilt für die Bezeichnungen einiger Things.

                            Habe den Tipp mit bundle:restart probiert, hat bei mir nicht gewirkt...

                            Erst nach dem Neustart von Openhab habe ich die geänderten Texte und Datentypen gesehen.

                            Kommentar

                            Lädt...
                            X