Falsches Format Error

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
hulda
Beiträge: 68
Registriert: 13. Jan 2018 19:43
Answers: 0

Falsches Format Error

Beitrag 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

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Falsches Format Error

Beitrag 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 :)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

hulda
Beiträge: 68
Registriert: 13. Jan 2018 19:43
Answers: 0

Re: Falsches Format Error

Beitrag 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ß

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Falsches Format Error

Beitrag 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.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

hulda
Beiträge: 68
Registriert: 13. Jan 2018 19:43
Answers: 0

Re: Falsches Format Error

Beitrag 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

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Falsches Format Error

Beitrag von udo1toni »

Welche Version von openHAB nutzt Du denn?

Was mir noch auffällt: die 33 sollte doch eigentlich gar nicht gesendet werden?!?
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

hulda
Beiträge: 68
Registriert: 13. Jan 2018 19:43
Answers: 0

Re: Falsches Format Error

Beitrag 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

hulda
Beiträge: 68
Registriert: 13. Jan 2018 19:43
Answers: 0

Re: Falsches Format Error

Beitrag von hulda »

Hat niemand eine Idee??

Antworten