Ankündigung

Einklappen
Keine Ankündigung bisher.

Error during the execution of rule

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

    Error during the execution of rule

    Hallo,

    Ich habe hier eine Rule mit der ich eine CSV-Datei aufsplitte und die Daten in Items speichere.
    Soweit funktioniert die Rule, nur bekomme ich gelegentlich folgenden Fehler:

    2021-07-18 11:02:02.079 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule 'Judo': 34
    Woran kann das liegen?

    Hier die CSV-Datei und der Code:

    Code:
    rule "Judo"
    when
    
        Time cron "0 2 0/1 1/1 * ? *" //or // wird jede Stunde + 2 Min ausgeführt
      
    then
        
        var Integer i
        //var Integer size
        var String[] lines
        var String[] line
        var String csv = sendHttpGetRequest("http://192.xxx.xxx.xxx/judo/judodaten.csv")
    
        lines = csv.split('\n') // Aufteilen in Zeilen
        //size = 2
        i = 1
    
            //logInfo("rule","CSV: " + size +  " lines")
    
            //while (i < size)
            //{
                line = lines.get(i).split(',') // Zeile am ; splitten
                //logInfo("rule","CSV0: " + line.get(2))
                water_current_r.postUpdate(line.get(0))
                water_current_w.postUpdate(line.get(1))
                rawwater.postUpdate(line.get(2))
                decarbonatedwater.postUpdate(line.get(3))
                water_average.postUpdate(line.get(4))
                actual_quantity.postUpdate(line.get(5))
                salt_quantity.postUpdate(line.get(6))
                salt_range.postUpdate(line.get(7))
                residual_hardness.postUpdate(line.get(8))
                natural_hardness.postUpdate(line.get(9))
                valve.postUpdate(line.get(10))
                watermon.postUpdate(line.get(11))
                watertue.postUpdate(line.get(12))
                waterwed.postUpdate(line.get(13))
                waterthu.postUpdate(line.get(14))
                waterfri.postUpdate(line.get(15))
                watersat.postUpdate(line.get(16))
                watersun.postUpdate(line.get(17))
                waterjan.postUpdate(line.get(18))
                waterfeb.postUpdate(line.get(19))
                watermar.postUpdate(line.get(20))
                waterapr.postUpdate(line.get(21))
                watermai.postUpdate(line.get(22))
                waterjun.postUpdate(line.get(23))
                waterjul.postUpdate(line.get(24))
                wateraug.postUpdate(line.get(25))
                watersep.postUpdate(line.get(26))
                waterokt.postUpdate(line.get(27))
                waternov.postUpdate(line.get(28))
                waterdez.postUpdate(line.get(29))
                judoeventdate.postUpdate(line.get(30).replace("\"",""))
                judoevent1.postUpdate(line.get(31).replace("\"","").replace(" ",""))
                judoevent2.postUpdate(line.get(32).replace("\"","").replace(" ",""))
                judoevent3.postUpdate(line.get(33).replace("\"","").replace(" ",""))
                judoevent4.postUpdate(line.get(34).replace("\"","").replace(" ",""))
    
                var String judoeventStr1 = transform("MAP", "judo.map", judoevent1.state.toString)
                var String judoeventStr2 = transform("MAP", "judo.map", judoevent2.state.toString)
                var String judoeventStr3 = transform("MAP", "judo.map", judoevent3.state.toString)
                var String judoeventStr4 = transform("MAP", "judo.map", judoevent4.state.toString)
    
                judoevent.postUpdate(judoeventStr1 + " " + judoeventStr2 + " " + judoeventStr3 + " " + judoeventStr4)
                //i = i +1
    //}
    
    end
    Zuletzt geändert von TomW80; 12.08.2021, 17:48.

    #2
    Habe den Fehler gefunden, die CSV-Datei hat nicht immer die Anzahl der Parameter die ich hier abfrage:

    Code:
    judoevent1.postUpdate(line.get(31).replace("\"","" ).replace(" ",""))
    judoevent2.postUpdate(line.get(32).replace("\"","" ).replace(" ",""))
    judoevent3.postUpdate(line.get(33).replace("\"","" ).replace(" ",""))
    judoevent4.postUpdate(line.get(34).replace("\"","" ).replace(" ",""))
    Habe das nun so gelöst:

    Code:
    ....
     //Event2
                if ((lines.get(i).toString.split(",").length - 1) >= 32)    
                {
                    judoevent2.postUpdate(line.get(32).replace("\"","").replace(" ",""))
                }
                else
                {
                    judoevent2.postUpdate("")
                }
    ....


    Kommentar

    Lädt...
    X