Ankündigung

Einklappen
Keine Ankündigung bisher.

Lesen eines Byte-Objektes (nicht Standart DPT)

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

    Lesen eines Byte-Objektes (nicht Standart DPT)

    Hallo,

    mal wieder ein Problem, bei dem ich ohne Hilfe nicht weiterkommen.

    Die Jung-Raumcontroller, die ich einsetze, liefern ihren Status per 1 Byte-Objekt aus, nur so bekommt man mit, ob was umgeschaltet wurde oder nicht.

    Das Objekt ist in der Doku mit nicht Standart-DPT angegeben und hat folgenden Aufbau:

    Bit
    0 - Komfort - An/Aus
    1 - Standby - An/Aus
    2 - Nacht An/Aus
    3 - Frostschutz An/Aus
    4 - Regler gesperrt
    5 - Heizen
    6 - Regler inaktiv
    7- Frostalarm

    Wie bekomme ich die Adresse z.B. 1/2/10 als Zahl (dezimal reicht mir) ausgelesen. Folgende Konfig:
    Number Betriebsart_DG_Arbeitszimmer_Status "Status" <heating> (DG_Arbeitszimmer) { knx="<1/2/10" }

    liefert mir die Fehlermeldung:
    16:58:27.405 DEBUG o.o.b.k.i.bus.KNXBinding[:456]- Sending read request to KNX for item Betriebsart_DG_Arbeitszimmer_Status
    16:58:27.499 WARN o.o.b.k.i.bus.KNXBinding[:464]- Error sending KNX read request for 'Betriebsart_DG_Arbeitszimmer_Status': data length 0 < KNX data type width 2
    16:58:27.506 ERROR o.o.b.k.i.bus.KNXBinding[:247]- Error while receiving event from KNX bus: tuwien.auto.calimero.exception.KNXIllegalArgumentE xception: data length 0 < KNX data type width 2

    Das Parsen würd ich schon hinbekommen, wenn in der rules-Datei & Verknüfungen erlaubt sind.

    Gruß
    Daniel

    #2
    Welchen DPT hat die Adresse 1/2/10 denn? Wenn es 1byte ist, dann wohl eine 5.xxx, richtig? Versuche mal ein knx="<5.001:1/2/10", ob er es dann schafft, diese GA korrekt auszulesen.

    Grüße,
    Kai

    Kommentar


      #3
      Zitat von kkreuzer Beitrag anzeigen
      Welchen DPT hat die Adresse 1/2/10 denn? Wenn es 1byte ist, dann wohl eine 5.xxx, richtig? Versuche mal ein knx="<5.001:1/2/10", ob er es dann schafft, diese GA korrekt auszulesen.

      Grüße,
      Kai
      Hallo,

      genau da ist das Problem. Es hat keine Standart DPT.
      Nun bekomme ich folgende Fehlermeldung:

      11:48:43.062 WARN o.o.b.k.i.d.KNXCoreTypeMapper[:151] - Failed creating a translator for datapoint type ‘<5.0001‘.
      tuwien.auto.calimero.exception.KNXException: main number not found for <5.0001
      at tuwien.auto.calimero.dptxlator.TranslatorTypes.cre ateTranslator(TranslatorTypes.java:442)

      Die Definition im items-File lautet:
      Number Betriebsart_DG_Arbeitszimmer_Status "Status [(%d)]" <heating> (DG_Arbeitszimmer) { knx="<5.0001:1/2/10" }

      Ich habs nicht nur mit 5.001 versucht sondern auch mit fast jedem anderen, den ich im Standart gefunden habe (9.0001 usw.)

      Wenn ich den DPT weglasse:

      11:51:09.876 WARN o.o.b.k.i.bus.KNXBinding[:464] - Error sending KNX read request for 'Betriebsart_DG_Arbeitszimmer_Status': data length 0 < KNX data type width 2
      11:51:09.873 ERROR o.o.b.k.i.bus.KNXBinding[:247] - Error while receiving event from KNX bus: tuwien.auto.calimero.exception.KNXIllegalArgumentE xception: data length 0 < KNX data type width 2

      Das ganze wird in der Jung-Doku als "Non-Standart) beschrieben und auch in der ETS wird er als "undefiniert" geführt.

      Ich weiß sol langsam nicht mehr weiter.

      Gruß Daniel

      Kommentar


        #4
        Hast du es auch mit 5.001 statt 5.0001 probiert?

        Kommentar


          #5
          Zitat von kkreuzer Beitrag anzeigen
          Hast du es auch mit 5.001 statt 5.0001 probiert?
          Ja, sorry. War ein Schreibfehler. Ich habe es nur mit 5.001 versucht, auch wenn der letzte Post so aussieht. Das war nur ein kurzer Hack um die Fehlermeldung zu reproduzieren.
          Bei 5.001 kann die oben genannte Fehlermeldung auch.

          Meine Vermutung ist, das die Fehlermeldung kommt, wenn KEIN DPT im Telegram gesetzt ist. Denn für dieses Telegramm ist halt kein DPT definiert (laut Manuel von Jung). Ich habe hier auch noch Temperatursensoren von MDT im Einsatz, die auf die gleiche Weise den Betriebszustand melden. Sie nennen den Zustand DPT_HVAC Status mit fast der gleichen Bit-Kodierung wie die Jung-Regler (nur Bit 4 und Bit 6 sind nicht definiert).
          Auch für dieses Objekt wird kein Standart DPT benutzt sondern in der ETS ist für das Datagram der DPT ungesetzt eingetragen, genauso wie beim Jung-Regler.
          MDT gibt extra an, das diese Objekte zur Visualisierung benutzt werden können.

          Wie geht openhab damit um, wenn kein DPT gesetzt ist?

          Gruß Daniel

          Kommentar


            #6
            Zitat von Zigulle Beitrag anzeigen
            Ja, sorry. War ein Schreibfehler. Ich habe es nur mit 5.001 versucht, auch wenn der letzte Post so aussieht.
            Bist Du Dir da ganz sicher? Dein Logauszug sagte:

            Code:
            11:48:43.062 WARN o.o.b.k.i.d.KNXCoreTypeMapper[:151] - Failed creating a translator for datapoint type ‘<5.0001‘.
            tuwien.auto.calimero.exception.KNXException: main number not found for <5.0001
            at tuwien.auto.calimero.dptxlator.TranslatorTypes.cre ateTranslator(TranslatorTypes.java:442)
            Diese Meldung kann ich mir bei einer korrekten Konfiguration mit 5.001 nicht vorstellen...

            Kommentar


              #7
              Hallo,

              Zitat von kkreuzer Beitrag anzeigen
              Bist Du Dir da ganz sicher? Dein Logauszug sagte:

              Code:
              11:48:43.062 WARN o.o.b.k.i.d.KNXCoreTypeMapper[:151] - Failed creating a translator for datapoint type ‘<5.0001‘.
              tuwien.auto.calimero.exception.KNXException: main number not found for <5.0001
              at tuwien.auto.calimero.dptxlator.TranslatorTypes.cre ateTranslator(TranslatorTypes.java:442)
              Diese Meldung kann ich mir bei einer korrekten Konfiguration mit 5.001 nicht vorstellen...
              Ok, dann hier noch mal die Meldung für einen korrekten Eintrag in der items-Datei mit DPT 5.001:

              Code:
              Number Betriebsart_DG_Arbeitszimmer_Status      "Status [(%d)]"         <heating> (DG_Arbeitszimmer) { knx="<5.001:1/2/10" }
              Code:
              4:57:15.642 WARN  o.o.b.k.i.d.KNXCoreTypeMapper[:151] - Failed creating a translator for datapoint type ‘<5.001‘.
              tuwien.auto.calimero.exception.KNXException: main number not found for <5.001
              Wie gesagt. ich habs mit mehreren in Frage kommenden DPT´s versucht. Immer das gleiche.

              Interessant ist, wenn ich folgende Definition nehme:
              Code:
              Number Betriebsart_DG_Arbeitszimmer_Status      "Status [(%d)]"         <heating> (DG_Arbeitszimmer) { knx="5.001:1/2/10" }
              bekomme ich folgende Fehlermeldung:

              Code:
              15:03:58.536 ERROR o.o.b.k.i.bus.KNXBinding[:247] - Error while receiving event from KNX bus: java.lang.NullPointerException
              und bei der Angabe von keinem DTP:
              Code:
              Number Betriebsart_DG_Arbeitszimmer_Status      "Status [(%d)]"         <heating> (DG_Arbeitszimmer) { knx="1/2/10" }
              folgendes:
              Code:
              15:07:06.447 ERROR o.o.b.k.i.bus.KNXBinding[:247] - Error while receiving event from KNX bus: tuwien.auto.calimero.exception.KNXIllegalArgumentException: data length 0 < KNX data type width 2
              bzw:
              bei:
              Code:
              Number Betriebsart_DG_Arbeitszimmer_Status      "Status [(%d)]"         <heating> (DG_Arbeitszimmer) { knx="<1/2/10" }
              als Fehler:
              Code:
              15:07:57.896 ERROR o.o.b.k.i.bus.KNXBinding[:247] - Error while receiving event from KNX bus: tuwien.auto.calimero.exception.KNXIllegalArgumentException: data length 0 < KNX data type width 2
              15:07:57.898 WARN  o.o.b.k.i.bus.KNXBinding[:464] - Error sending KNX read request for 'Betriebsart_DG_Arbeitszimmer_Status': data length 0 < KNX data type width 2
              Gruß
              Daniel

              Kommentar


                #8
                Ok, da scheint es mir also gleich mehrere Bugs auf einmal zu geben.
                Erstens wird das "<" nicht richtig entfernt, wenn der DPT herausgefunden werden soll. Dann gibt es NPEs bei der Nutzung des DPT 5.001. Und last but not least würde vermutlich auch noch der Prozentwert falsch abgebildet.

                Ich schaue mir das bei Gelegenheit mal an, um es gerade zu ziehen.

                Grüße,
                Kai

                Kommentar


                  #9
                  Sorry, hat etwas gedauert.
                  Jetzt habe ich aber gerade einen Fix gepusht, welcher das Problem beim Parsen des "<" behebt als auch Support für den DPT 5.001 einführt.

                  Da ich gerade weder ein KNX System zur Hand habe, noch den DPT 5.001 irgendwo in meiner Installation benutze, habe ich diesen Fix "blind" gemacht - kann also gut sein, dass es noch nicht so funktioniert, wie es soll.

                  Wenn Du aber schonmal testen möchstest, nur zu! Bin auf Dein Feedback gespannt

                  Viele Grüße,
                  Kai

                  Kommentar


                    #10
                    Zitat von kkreuzer Beitrag anzeigen
                    Jetzt habe ich aber gerade einen Fix gepusht, welcher das Problem beim Parsen des "<" behebt als auch Support für den DPT 5.001 einführt.

                    Da ich gerade weder ein KNX System zur Hand habe, noch den DPT 5.001 irgendwo in meiner Installation benutze, habe ich diesen Fix "blind" gemacht - kann also gut sein, dass es noch nicht so funktioniert, wie es soll.

                    Wenn Du aber schonmal testen möchstest, nur zu! Bin auf Dein Feedback gespannt
                    Würd ich gerne, allerdings ist Euer Repository nicht sehr intuitiv strukturiert.
                    Ich verwende noch das 1.0.0 Bundle aus dem Download-Bereich. Ich hab das Repro schon ausgeheckt. Reicht es, die knx-Bindings zu ersetzen oder muss ich auch an den Core dran.

                    Könntet Ihr so was wie ein Nightly-Bundle anbieten, dann ist das Testen einfacher?

                    Gruß Daniel

                    Kommentar


                      #11
                      Hat sich erledigt, ich hab das Bundle gebaut und werde den aktuellen Snapshot ausprobieren. Ich melde mich, wenn ich einige Erfahrung damit habe.

                      Gruß Daniel

                      Kommentar


                        #12
                        So, hier ne Rückmeldung.

                        Ich bekomme den Wert nun per <5.001: eingelesen.

                        Allerdings gibt der DPT 5.001 einen Prozentwert zurück. Ich bräuchte aber den HEX-Wert um daraus den Status zu bauen. Wie kann ich aus dem Prozentwert den Hex-Wert bekommen. Wenn ich Mathematik bemühe, dann hab ich leider das Problem der Rundungsfehler.

                        Gruß
                        Daniel

                        Kommentar


                          #13
                          Zitat von Zigulle Beitrag anzeigen
                          Könntet Ihr so was wie ein Nightly-Bundle anbieten, dann ist das Testen einfacher?
                          Den gibt es schon lange, Du findest ihn hinter dem Link "openHAB Snapshot Builds" auf der Homepage unten links (bei "External links").

                          Grüße,
                          Kai

                          Kommentar


                            #14
                            Zitat von Zigulle Beitrag anzeigen
                            Allerdings gibt der DPT 5.001 einen Prozentwert zurück. Ich bräuchte aber den HEX-Wert um daraus den Status zu bauen. Wie kann ich aus dem Prozentwert den Hex-Wert bekommen. Wenn ich Mathematik bemühe, dann hab ich leider das Problem der Rundungsfehler.
                            Hm, ich hatte Dein ursprüngliches Problem nicht mehr im Blick. 5.001 ist als 0-100% spezifiziert, also kommt genau das korrekte zurück.
                            Für Dich wäre wohl 5.005 das passende - DECIMALFACTOR 0-255. Werde zusehen, dass ich das zeitnah auch noch aufnehme...

                            Kommentar


                              #15
                              Zitat von kkreuzer Beitrag anzeigen
                              Hm, ich hatte Dein ursprüngliches Problem nicht mehr im Blick. 5.001 ist als 0-100% spezifiziert, also kommt genau das korrekte zurück.
                              Für Dich wäre wohl 5.005 das passende - DECIMALFACTOR 0-255. Werde zusehen, dass ich das zeitnah auch noch aufnehme...
                              Hallo, das ursprüngliche Problem lag darin, dass ich im Raumthermostat bitcodiert stehen habe, welcher Modus ausgewählt ist.

                              1-Bit -> Komfort
                              2-Bit -> Standby
                              3-Bit -> Nacht
                              4-Bit -> Frostschutz
                              6-Bit -> Heizen aktiv

                              Ich hab jetzt den DPT auf 5.004 gestellt (War ein Versuch) und damit klappt es, obwohl nach der DPT es mit 5.005 gehen sollte.

                              Das nächste Problem ist, dass ich die Zahl, die ich erhalte nicht dargestellt bekomme.

                              Code:
                              Number Betriebsart_DG_Arbeitszimmer_Status      "Status [(%d)]" <heating> (DG_Arbeitszimmer) { knx="<5.004:1/2/10" }
                              sollte mir eingentlich die Zahl (zwischen 33 und 40) darstellen. Tut sie aber nicht, ich bekomme nur ein (-) angezeigt.

                              Anzeigen ist für mich der erste Schritt, danch muss dass noch geparst werden.

                              Gruß Daniel

                              Kommentar

                              Lädt...
                              X