Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme bei der Portierung KNX Binding portierung

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

    Probleme bei der Portierung KNX Binding portierung

    Hallo zusammen,

    verwende nun schon seit 2012 openHAB. Da bisher soweit alle lief, habe ich mich in letzter Zeit nicht mehr um die Feinheiten gekümmert.
    Nun macht mein Raspberry Pi auf dem openHAB läuft seit ein paar Monaten immer wieder Probleme. Daher habe ich mich dazu entschieden mein System komplett neu aufzusetzen.

    Bisher hatte ich openHAB2 mit dem KNX Binding aus openHAB 1 am laufen. Nun habe ich gesehen, dass es ein "neues" KNX Binding für openHAB2 gibt.
    Meine Portierung läuft aktuell leider noch nicht nach meiner Zufriedenheit, evtl. könnt ihr mir weiterhelfen!

    Die Kommunikation funktioniert, allerdings merkt sich openHAB nicht den Status der Lichter!

    Mein bisheriges openHAB KNX Setup sah wie folgt aus:

    knx.cfg
    Code:
    # KNX gateway IP address
    # (optional, if serialPort or connection type 'ROUTER' is specified)
    ip=192.168.128.118
    
    # Local KNX Binding bus address.
    # Use it, when two or more openHAB Instances are connected to the same KNX bus.
    # (optional, defaults to 0.0.0)
    #busaddr=
    
    # Ignore local KNX Events, prevents internal events coming from
    # 'openHAB event bus' a second time to be sent back to the 'openHAB event bus'.
    # Note: To send back events second time is a Bug, but for backward compatibility, the behavior is not changed.
    # For new installations, its recommend to set "ignorelocalevents=true"
    # (optional, defaults to false)
    ignorelocalevents=true
    
    # KNX IP connection type. Could be either TUNNEL or ROUTER (optional, defaults to TUNNEL)
    # Note: If you cannot get the ROUTER mode working (even if it claims it is connected),
    # use TUNNEL mode instead with setting both the ip of the KNX gateway and the localIp.
    type=TUNNEL
    
    # KNX gateway port (optional, defaults to 3671)
    # Note: If you use eibd, setting to 6720
    #port=
    
    # Local endpoint to specify the multicast interface, no port is used (optional)
    localIp=192.168.128.117
    
    # Serial port of FT1.2 KNX interface (ignored, if ip is specified)
    # Valid values are e.g. COM1 for Windows and /dev/ttyS0 or /dev/ttyUSB0 for Linux
    #serialPort=
    
    # Pause in milliseconds between two read requests on the KNX bus during
    # initialization (optional, defaults to 50)
    #pause=
    
    # Timeout in milliseconds to wait for a response from the KNX bus (optional,
    # defaults to 10000)
    #timeout
    
    # Number of read retries while initialization items from the KNX bus (optional,
    # defaults to 3)
    #readRetries
    
    # Seconds between connect retries when KNX link has been lost
    # 0 means never retry, it will only reconnect on next write or read request
    # Note: without periodic retries all events will be lost up to the next read/write
    #       request
    # (optional, default is 0)
    #autoReconnectPeriod=30
    
    ### Auto refresh feature
    # Number of entries permissible in the item refresher queue.
    # (optional, defaults to 10000)
    #maxRefreshQueueEntries=
    
    # Number of parallel threads for refreshing items. (optional, defaults to 5)
    #numberOfThreads=
    
    # Seconds to wait for an orderly shutdown of the auto refresher's
    # ScheduledExecutorService. (optional, defaults to 5)
    #scheduledExecutorServiceShutdownTimeoutString=
    
    # Use NAT (Network Address Translation)
    #  (optional; defaults to false)
    #useNAT=true
    Ich hatte eine große Items-Datei in der alles definiert ist. Hier der Auszug der Lichter:

    main.items
    Code:
    /* Licht */
    Switch Licht_EG_Esszimmer_Decke      "Licht Esszimmer Decke"                (EG_Esszimmer, Licht)          {knx="2/1/6"}
    Switch Licht_EG_Kueche_Decke        "Licht Küche Decke"                         (EG_Kueche, Licht)                {knx="2/1/5"}
    Switch Licht_EG_WC                               "Licht Gäste WC"                              (EG_WC, Licht)                      {knx="2/1/9"}
    Switch Licht_EG_Schlafzimmer               "Licht Schlafzimmer Decke"            (EG_Schlafzimmer, Licht)      {knx="2/1/18"}
    
    Switch Licht_OG_Kind1_Licht1               "Schreibtisch"                                    (OG_Buero, Licht)                   {knx="2/2/1"}
    Switch Licht_OG_Kind2_Licht1               "Decke rechts"                                  (OG_Gast, Licht)                     {knx="2/2/3"}
    Switch Licht_OG_Bad                             "Licht Bad OG"                                  (OG_Bad, Licht)                       {knx="2/2/2"}
    Switch Licht_OG_Treppenhaus              "Licht Treppenhaus OG"                    (OG_Treppenhaus, Licht)        {knx="2/3/1"}
    Bisher hatte openHAB sich den Status der Lichter gemerkt und der Status wurde korrekt angezeigt wenn ein Licht an einem Schalter eingeschaltet wurde.

    Mit meinem neuen Setup ist das nicht der Fall. In der Datei event.log finde ich folgende Einträge:

    Code:
    2019-01-04 12:00:16.449 [ome.event.ItemCommandEvent] - Item 'Licht_OG_Bad' received command ON
    2019-01-04 12:00:16.461 [nt.ItemStatePredictedEvent] - Licht_OG_Bad predicted to become NULL
    Mein neues Setup sieht wie folgt aus:

    knx.things
    Code:
    Bridge knx:ip:bridge [
        ipAddress="192.168.128.118",
        portNumber=3671,
        localIp="192.168.128.117",
        type="TUNNEL",
        readingPause=50,
        responseTimeout=10,
        readRetriesLimit=3,
        autoReconnectPeriod=1,
        localSourceAddr="0.0.0"
    ] {
        Thing device generic [
            address="1.2.3",
            fetch=true,
            pingInterval=300,
            readInterval=3600
        ] {
            Type switch        : Licht_EG_Esszimmer_Decke     "Licht Esszimmer Decke"       [ ga="1.001:2/1/6" ]
            Type switch        : Licht_EG_Kueche_Decke           "Licht Küche Decke"               [ ga="1.001:2/1/5" ]
            Type switch        : Licht_EG_WC                              "Licht Gäste WC"                    [ ga="1.001:2/1/9" ]
            Type switch        : Licht_EG_Schlafzimmer             "Licht Schlafzimmer Decke"    [ ga="1.001:2/1/18" ]
    
            Type switch        : Kinderzimmer1_Licht1                "Schreibtisch"                           [ ga="1.001:2/2/0" ]
            Type switch        : Kinderzimmer2_Licht1               "Decke rechts"                          [ ga="1.001:2/2/10" ]
            Type switch        : Bad_OG_Licht                            "Licht Bad OG"                         [ ga="1.001:2/2/30" ]
            Type switch        : Licht_OG_Treppenhaus            "Licht Treppenhaus OG"           [ ga="1.001:2/3/1" ]
        }
    }
    Die bisherige Items-Datei (ein große Datei) habe ich nun in mehrere kleine Dateien aufgeteilt.

    Licht.items
    Code:
    * Aktive Gruppen */
    Group:Switch:OR(ON, OFF)                Licht           "Status Licht [(%d)]"                                   <switch>                        // Gruppe aller Lichter
    Group:Dimmer:OR(ON, OFF)                Licht_Dimmer    "Status Dimmer [(%d)]"                                  <switch>                        // Gruppe aller Dimmer
    
    /* Licht */
    Switch    Licht_EG_Esszimmer_Decke      "Licht Esszimmer Decke"           <light>   (EG_Esszimmer, Licht)             { channel="knx:device:bridge:generic:Licht_EG_Esszimmer_Decke" }
    Switch    Licht_EG_Kueche_Decke         "Licht Küche Decke"               <light>   (EG_Kueche, Licht)                { channel="knx:device:bridge:generic:Licht_EG_Kueche_Decke" }
    Switch    Licht_EG_WC                   "Licht Gäste WC"                  <light>   (EG_WC, Licht)                    { channel="knx:device:bridge:generic:Licht_EG_WC" }
    Switch    Licht_EG_Schlafzimmer         "Licht Schlafzimmer Decke"        <light>   (EG_Schlafzimmer, Licht)          { channel="knx:device:bridge:generic:Licht_EG_Schlafzimmer" }
    
    Switch    Licht_OG_Kind1_Licht1         "Schreibtisch"             <light>   (OG_Buero, Licht)                 { channel="knx:device:bridge:generic:Kinderzimmer1_Licht1" }
    Switch    Licht_OG_Kind2_Licht1         "Decke"                    <light>   (OG_Gast, Licht)                  { channel="knx:device:bridge:generic:Kinderzimmer2_Licht1" }
    Switch    Licht_OG_Bad                  "Licht Bad OG"                    <light>   (OG_Bad, Licht)                   { channel="knx:device:bridge:generic:Bad_OG_Licht" }
    Switch    Licht_OG_Treppenhaus          "Licht Treppenhaus OG"            <light>   (OG_Treppenhaus, Licht)           { channel="knx:device:bridge:generic:Licht_OG_Treppenhaus" }
    Wer hat eine Idee woran es liegen kann?
    Was kann ich noch ausprobieren oder ändern?

    In der Things-Datei habe ich auch schon die DPT weg gelassen.
    Dieser Thread geht in die gleiche Richtung, wollte aber mein Anliegen nicht dort mit hinein packen!

    Gruß
    mepi0011

    #2
    Das eine ist der Parameter readInterval, setze den bitte auf 0 (oder lasse ihn weg) Dieser Parameter bewirkt, dass openHAB statt einmalig beim Start nun regelmäßig Read Requests sendet (falls solche GA definiert sind).
    Das zweite ist das Fehlen jeglicher Rückmeldungen. Das knx2 Binding arbeitet anders als knx1, insbesondere unterscheidet knx2 zwischen senden und empfangen, was zu dem von Dir beschriebenen Problem führen dürfte.
    Du solltest also am besten GA für die Statusrückmeldungen definieren (je Schaltkanal im Aktor, mit gesetztem L(esbar) Flag. Diese gibst Du dann zusätzlich an.

    Kommentar

    Lädt...
    X