Ankündigung

Einklappen
Keine Ankündigung bisher.

4 Byte Wert von KNX in Openhab anzeigen DPT12.1200

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

    4 Byte Wert von KNX in Openhab anzeigen DPT12.1200

    Ich habe folgendes Problem:

    Ich messe die Regenmenge mit einem Zähler in einem Digitleingang auf der KNX Seite. Der Zählwert wird mit einem 4 Byte Wert auf den KNX Bus geschrieben.
    Der Wert hat bei KNX den DPT12.1200

    4byte.JPG

    Diesen Wert möchte ich mit OPENHAB visualisieren und habe hierfür dieses Item.

    NumberRaintotal"Regen gesamt [%.2f l/m²]" <rain> { channel="knx:device:bridge:generic:Raintotal"}
    und dieses THING:

    Typenumber:Raintotal"Regenmenge gesamt l/m²" [ ga="<10/5/0" ]
    Wenn ich bei der GA 10/5/0, den Datenpunkttyp 12.1200 voranstelle [ ga="12.1200:<10/5/0" ] , dann erhalte ich diesen Eintrag im Log:

    2020-11-1310:16:44.204 [INFO ] [g.knx.internal.dpt.KNXCoreTypeMapper] - Translator couldn't parse data for datapoint type '12.1200' (KNXFormatException).
    2020-11-1310:16:44.207 [WARN ] [.internal.handler.DeviceThingHandler] - Ignoring KNX bus data: couldn't transform to any Type (destination='10/5/0', datapoint='command DP 10/5/0 'knx:device:bridge:generic', DPT id 12.1200, low priority', data='0x0000000E')
    Wenn ich den Datentyp weglasse bekomme ich keine Meldung im Log, aber die Anzeige stimmt nicht, es wird mir 0,0 angezeigt,obwohl meines Erachtens der Wert 14 drinsteht, wie auf der KNX Seite ersichtlich.

    Hat hierzu jemand eine Idee?
    Zuletzt geändert von Tom0101; 16.11.2020, 09:21.
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
    Albert Einstein

    #2
    Nimm stattdessen 12.000 oder 12.001. Der Unter-DPT spielt nur eine untergeordnete Rolle. 12.200 ist in der Liste der DPT nicht enthalten (kannst Du hier nachschauen: https://github.com/openhab/openhab-a...ypeMapper.java )

    Kommentar


      #3
      Wenn ich 12.000 oder 12.001 nehme, dann kommt in der Tat kein Fehlereintrag im Log, trotzdem wird der Wert nicht übertragen, genau so wie wenn ich gar keinen DPT eintrage.

      Es gibt auf dem Zähler noch einen weiteren Wert den ich übertrage der ist allerdings nur 2 byte groß, der funktioniert einwandfrei.

      Kann es an der Item Definition liegen ? Mir wären da aber keine Varianten bekannt.

      Für den 2 byte Wert sehe ich auch einen Eintrag im Events Log, der 4 byte Wert taucht dort gar nicht auf, deshalb vermute ich dass OH gar nicht registriert, dass der Wert sich geändert hat, obwohl ich die Wertänderung auf KNX Seite definitiv sehe.
      Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
      Albert Einstein

      Kommentar


        #4
        Nein, openHAB kann mit DPT 12.001 umgehen, da gibt es erst mal weiter nichts zu beachten. Hast Du openHAB nach der Änderung neu gestartet?

        Kommentar


          #5
          Ja genau, Neustart das war´s,

          Vielen Dank.
          Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
          Albert Einstein

          Kommentar


            #6

            Kommentar


              #7
              udo1toni ich stehe vor dem selben Problem. Habe es auf 12.000 geändert.
              grafik.png

              Sehe aber trotzdem nichts, muss ich was auf KNX Seite eigenltich auch ändern?
              Danke im Voraus.
              Lg Lukas

              Kommentar


                #8
                Das Thema ist ein paar Jahre alt... Aber grundsätzlich solltest Du auf knx-Seite nichts ändern müssen. Soweit ich im aktuellen Addon den Code zu verstanden haben glaube, berücksichtigt openHAB für den DPT 12 überhaupt keine SubDPT sondern wertet alles, was als Main DPT 12 eingetragen hat als reine 4-Byte Zahl.
                Funktioniert dann der Rest? Zugriff auf knx geht grundsätzlich, nur diese GA (oder meinetwegen noch gleichartige) macht Probleme? In der ETS siehst Du die Daten?

                Kommentar


                  #9
                  udo1toni habe den Busmonitor mitlaufen lassen, da funktioniert alles...liegt eindeutig bei Openhab das Problem -> Im KNX/Busmonitor schickt halt mit DPT 12.1200, ist das OK oder muss ich das auf ein anderes DPT ändern? Auf DTP 12.000?
                  Lg Lukas

                  Kommentar


                    #10
                    Habe es auch gerade mit dem MDT Logikmodul umgewandelt von 12. DPT auf 9 DPT umgewandelt, da würde es funktionieren...
                    Lg Lukas

                    Kommentar


                      #11
                      Du kannst in der ETS gewöhnlich keinen anderen DPT einstellen. Das Gerät sendet die Daten so, wie sie im Gerät vorliegen. Dabei gibt es keinerlei Information über das Format des Datums, außer die Länge der Information (also wie viele Bit oder Byte das Datum hat).
                      Das ist auch der Grund, warum man in openHAB den DPT mit angeben muss, es gibt schlicht keine Möglichkeit, den DPT zweifelsfrei aus den ankommenden Datentelegrammen zu ermitteln.

                      Welche Version von openHAB setzt Du denn ein? Laut https://www.openhab.org/addons/bindi...-openhab-types ist 12.1200 in der aktuellen stable Version openHAB4.2.2 explizit unterstützt.
                      Wichtig ist aber, dass man das verlinkte Item auch als Number:Volume anlegt, vielleicht ist das das Problem?

                      Kommentar


                        #12
                        udo1toni ich habe nun auf der Openhabseite 12.001 eingetragen und mit dem hat es funktioniert.


                        Eines will ich noch machen aber ich weiß nicht wie ich es genau umsetzen kann... Ich will in einer Rule festlegen, dass um 23:59 der Wert in ein anderes Item geschrieben wird...

                        Hätte das hier:​

                        ________________________________
                        rule "Regenmenge Vortag"
                        when
                        Time cron "0 59 23 * * ? *" // Regel wir jeden Tag um 23:59 ausgeführt
                        then
                        regenmengenzaehlergestern_regenmengenzaehlergester n.postUpdate(regenemengenzaehler_regenemengenzaehl er.state as Number)

                        end​
                        _________________________________

                        Es funktioniert aber leider nicht, könntest du mir da auf die Sprünge helfen?
                        Vielen Dank im Voraus.

                        PS: Ich bin beim Scripten ein reiner Anfänger sry...
                        Lg Lukas

                        Kommentar


                          #13
                          Im Grunde sollte die Rule funktionieren, allerdings sind da ein paar Leerzeichen enthalten, die nicht dorthin gehören.
                          Evtl. hat da die Forensoftware ihre Finger im Spiel (deshalb ist es wichtig, Code immer als Code markiert zu posten, nie inline im Fließtext)

                          Sauber ist es, die Daten auf Gültigkeit zu prüfen:
                          Code:
                          rule "Regenmenge Vortag"
                          when
                          Time cron "59 59 23 * * ? *" // Regel wir jeden Tag um 23:59:59 ausgeführt
                          then
                              var nMenge = 0
                              if(regenemengenzaehler_regenemengenzaehler.state instanceof Number)
                                  nMenge = (regenemengenzaehler_regenemengenzaehler.state as Number).floatValue
                              regenmengenzaehlergestern_regenmengenzaehlergestern.postUpdate(nMenge)
                          end​
                          Die Itemnamen sind fürchterlich. Ja, openHAB erzeugt diese Namen selbst. Nein, man muss die Namen nicht unverändert übernehmen
                          Nur zur Sicherheit: Bist Du sicher, dass der Wert in regenemengenzaehler_regenemengenzaehler steht?

                          Kommentar


                            #14
                            udo1toni ah danke es war wirklich der eine Tippfehler...ach ich bin so blöd! scheint jetzt zu funktionieren!! Danke
                            Lg Lukas

                            Kommentar

                            Lädt...
                            X