Seite 1 von 1

Falsches Format Error

Verfasst: 19. Nov 2020 20:20
von hulda
Hallo,
kann mir jemand sagen warum ich diesen Fehler erhalte in OH2?
Es funktioniert alles ausser diese Fehlermeldung

Code: Alles auswählen

2020-11-19 20:14:07.056 [WARN ] [.binding.knx.internal.bus.KNXBinding] - Value '1.0' could not be sent to the KNX bus using datapoint 'command DP 4/4/60 WZ_Betriebsart_HVAC, DPT main 0 id 5.005, low priority' - retrying one time: 5.005 Decimal factor: wrong value format: 1.0
2020-11-19 20:14:07.057 [ERROR] [.binding.knx.internal.bus.KNXBinding] - Value '1.0' could not be sent to the KNX bus using datapoint 'command DP 4/4/60 WZ_Betriebsart_HVAC, DPT main 0 id 5.005, low priority' - giving up after second try: 5.005 Decimal factor: wrong value format: 1.0

Danke
Dirk

Re: Falsches Format Error

Verfasst: 19. Nov 2020 23:22
von udo1toni
Na ja, es steht ja da... Du versuchst, einen Float Wert in eine GA zu schreiben, die nur PercentType akzeptiert. Es gibt verschiedene Gründe, warum das passiert. Meist hängt das mit einer Persisctence zusammen :)

Re: Falsches Format Error

Verfasst: 20. Nov 2020 08:34
von hulda
hilft mir irgendwie nicht weiter....
das ist die Regel:

Code: Alles auswählen

rule "KZ01_Betriebsart"
when
    Item KZ01_Status_HVAC received update
    or System started
then
    if (KZ01_Status_HVAC.state instanceof DecimalType) {
        var value = KZ01_Status_HVAC.state as DecimalType
        logDebug("heating", "Received HVAC status " + value)
        if ((value.intValue().bitwiseAnd(0x08)) == 0x08) {
            postUpdate(KZ01_Betriebsart_HVAC, 4)
        }
        else if ((value.intValue().bitwiseAnd(0x04)) == 0x04) {
            postUpdate(KZ01_Betriebsart_HVAC, 3)
        }
        else if ((value.intValue().bitwiseAnd(0x02)) == 0x02) {
            postUpdate(KZ01_Betriebsart_HVAC, 2)
        }
        else if ((value.intValue().bitwiseAnd(0x01)) == 0x01) {
            postUpdate(KZ01_Betriebsart_HVAC, 1)
        }
    }
end

das ist das item

Code: Alles auswählen

Number                  KZ01_Betriebsart_HVAC                         "KZ01 OG [%d]"                                                <hvac>                 (Hvac)                                                     {knx="5.005:4/4/5"}
Number                  KZ01_Status_HVAC                              "Status [%d]"                                                                        (Hvac)                                                     {knx="<5.005:4/4/4"}

Gruß

Re: Falsches Format Error

Verfasst: 20. Nov 2020 11:19
von udo1toni
Ich zeige mal meine funktionierende Steuerung der RTR-Betriebsart.
Alle Devices sind bei mir gleichartig angelegt. Deshalb hier nur ein RTR Device (es handelt sich um einen Gira TS2plus, wie leicht am Thing zu erkennen - andere Channel wie z.B. Temperaturmessung lasse ich mal außen vor):

Code: Alles auswählen

    Thing device GiraTSplus1_1_120 "TS2plus Bad EG" @ "KNX" [ 
        address="1.1.120"
     ] {
        Type number : opMode "Betriebsart ist"      [ ga="5.005:<1/7/36" ] // letzter Teil der GA
        Type number : opSet "Betriebsart soll"      [ ga="5.005:1/7/28" ] // entspricht KO-Nummer
    }
Die Items dazu:

Code: Alles auswählen

Group GHeat_Mode "Betriebsart Nr." <heating>
Group GHeat_Set  "Betriebsart"     <heating>
Number TS2plusBadEG_OpMode "Betriebsart ist"  (GHeat_Mode) {channel="knx:device:bridge:GiraTSplus1_1_120:opMode"}
Number TS2plusBadEG_OpSet  "Betriebsart soll" (GHeat_Set)  {channel="knx:device:bridge:GiraTSplus1_1_120:opSet"}
Die Gruppenzugehörigkeit ist der Schlüssel für den nächsten Schritt. Alle Items aller RTR bei mir sind exakt so angelegt, d.h. die Gruppenzugehörigkeit ist exakt die selbe, der erste Teil des Itenmnamens ist pro RTR identisch, derzweite Teil des Itemnamens ist pro Funktion identisch (und damit innerhalb einer Gruppe identisch). Nun brauche ich exakt eine Rule (egal, wie viele RTR ich nutze):

Code: Alles auswählen

rule "Betriebsart RTR"
 when
    Member of GHeat_Mode changed
 then
    var Integer newMode 
    val mode = (triggeringItem.state as DecimalType).toBigDecimal.toBigInteger
    val iName = triggeringItem.name.split("_").get(0).toString
    logDebug("rtr","Name is: {}, Mode is: {}",iName,mode)
    switch (mode) {
        case mode.testBit(0) : newMode = 1
        case mode.testBit(2) : newMode = 3
        case mode.testBit(3) : newMode = 4
        default : newMode = 2
    }
    val myItem = GHeat_Set.members.filter[ f | f.name.startsWith(iName) ].head
    var Integer oldMode = 0
    if(myItem.state instanceof Number) oldMode = (myItem.state as Number).intValue
    if(oldMode != newMode) {
        logDebug("rtr","Name is: {}, oldMode is: {}, newMode is: {}",myItem.name,oldMode,newMode)
        myItem.postUpdate(newMode)
    }	
end
In der Sitemap ist das Item so eingetragen:

Code: Alles auswählen

Switch item=TS2plusBadEG_OpSet label="Betriebsart soll" mappings=[1="Komf",2="Stby",3="N8",4="Frost"]
Ich sende also die Zahlen 1, 2, 3 oder 4, wenn ich über die UI die Betriebsart auswähle. Ändere ich die Betriebsart am RTR direkt, so sendet knx die neue Betriebsart im Beispiel oben über die GA 1/7/36 an openHAB, woraufhin die Rule triggert (ein Member der Gruppe GHeat_Mode wurde geändert).
Die Rule zerlegt den Input in die entscheidenden Informationen, die in einer lokalen Konstanten gespeichert werden. mode enthält den neuen Status, und zwar als BigInteger. Für BigInteger stehen nette Bit-Operationen zur Verfügung.
Der erste Teil des Namens des Items, welches die Rule getriggert hat, wird in iName gespeichert.
Nun wird über das switch-case-Konstrukt die neue Betriebsart bestimmt und in der Integer Variablen newMode gespeichert.
Die Konstante myItem nimmt nun stellvertretend die Funktion des Zielitems ein (das ist dasjenige Item, welches sich in der Gruppe GHeat_Set befindet und mit dem gleichen Teilstring beginnt, wie iName)
In der Variablen oldMode landet der alte Modus.
Wenn sich die beiden Modi oldMode und newMode unterscheiden, wird das ZielItem per postUpdate auf die neue Betriebsart gesetzt.

Re: Falsches Format Error

Verfasst: 23. Nov 2020 13:25
von hulda
Hallo Toni,
ich habe alles so gemacht. Es funktioniert auch....
aber:
es kommt immer noch dieser Fehler

Code: Alles auswählen


2020-11-23 13:15:34.327 [WARN ] [.binding.knx.internal.bus.KNXBinding] - Value '33.0' could not be sent to the KNX bus using datapoint 'command DP 4/4/4 KZ01_Status_HVAC, DPT main 0 id 5.005, low priority' - retrying one time: 5.005 Decimal factor: wrong value format: 33.0
2020-11-23 13:15:34.327 [ERROR] [.binding.knx.internal.bus.KNXBinding] - Value '33.0' could not be sent to the KNX bus using datapoint 'command DP 4/4/4 KZ01_Status_HVAC, DPT main 0 id 5.005, low priority' - giving up after second try: 5.005 Decimal factor: wrong value format: 33.0

2020-11-23 13:12:39.883 [WARN ] [.binding.knx.internal.bus.KNXBinding] - Value '1.0' could not be sent to the KNX bus using datapoint 'command DP 4/6/13 SZ_Betriebsart_HVAC, DPT main 0 id 5.005, low priority' - retrying one time: 5.005 Decimal factor: wrong value format: 1.0
2020-11-23 13:12:39.884 [ERROR] [.binding.knx.internal.bus.KNXBinding] - Value '1.0' could not be sent to the KNX bus using datapoint 'command DP 4/6/13 SZ_Betriebsart_HVAC, DPT main 0 id 5.005, low priority' - giving up after second try: 5.005 Decimal factor: wrong value format: 1.0



und jetzt??? :shock:


Gruß Dirk

Re: Falsches Format Error

Verfasst: 24. Nov 2020 05:57
von udo1toni
Welche Version von openHAB nutzt Du denn?

Was mir noch auffällt: die 33 sollte doch eigentlich gar nicht gesendet werden?!?

Re: Falsches Format Error

Verfasst: 24. Nov 2020 11:12
von hulda
ich versuche Dir mal alle Infos zu geben:
Version 2.5



Code: Alles auswählen

Fehler:
2020-11-24 10:11:54.381 [WARN ] [.binding.knx.internal.bus.KNXBinding] - Value '1.0' could not be sent to the KNX bus using datapoint 'command DP 4/4/29 KZ02_Betriebsart_HVAC, DPT main 0 id 5.005, low priority' - retrying one time: 5.005 Decimal factor: wrong value format: 1.0
2020-11-24 10:11:54.382 [ERROR] [.binding.knx.internal.bus.KNXBinding] - Value '1.0' could not be sent to the KNX bus using datapoint 'command DP 4/4/29 KZ02_Betriebsart_HVAC, DPT main 0 id 5.005, low priority' - giving up after second try: 5.005 Decimal factor: wrong value format: 1.0

Code: Alles auswählen

Item:

Number                  KZ02_Betriebsart_HVAC                                                                                       <hvac>                 (GHeat_Set,Hvac)                                                {knx="5.005:4/4/29"}
Number                  KZ02_Status_HVAC                                                                                                                   (GHeat_Mode,Hvac)                                               {knx="5.005:<4/4/28"}


Code: Alles auswählen

Sitemap:

Switch item=KZ02_Betriebsart_HVAC label="KZ02 OG soll" mappings=[1="Komfort", 2="Standby", 3="Nacht", 4="Frost"] 
  Text   item=KZ02_Status_HVAC label="Status  [%d]"
Gruß Dirk

Re: Falsches Format Error

Verfasst: 27. Nov 2020 20:38
von hulda
Hat niemand eine Idee??