als erstes einmal vielen Dank für die bisherigen Codeschnipsel, die haben mich schon weit gebracht

Ich habe nur das Problem, dass ich immer folgende Meldung im Log bekomme:
Code:
2020-09-10 14:25:22.497 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'eine rule für alle': null
Code:
rule "eine rule für alle"
when
Member of gSMA_Input changed
then
val output = Inverter.members.filter[i|triggeringItem.name.startsWith(i.name)].head
var Number nWert = 0
if(triggeringItem.state instanceof Number) {
var Number nGrenze = 0
switch(triggeringItem.name.split("_").get(2)) {
case "voltage" : nGrenze = 240
case "ampere" : nGrenze = 20
case "watt" : nGrenze = 4500
}
if((triggeringItem.state as Number) < nGrenze) {
nWert = triggeringItem.state as Number
}
}
output.sendCommand(nWert)
end
Ich musste bei meinem Sunny Boy 4.0 erst die Firmware updaten. Geupdated wurde von 1.1.32.R auf 3.10.18.R.
Vorher wurden einige der Items mit unsinnigen Werten gefüllt, da anscheinend die Adressen nicht passten.
Und in den Items hat sich ein (Kopier-) Fehler eingeschlichen, bei folgenden Items gibt es hinten ein Leerzeichen welches zu Fehlern führte:
Code:
Number SMA_input_ampere_1_In (gSMA_Input) {channel="modbus:data:smaTCP:smaHolding7:sma_input _ampere_1:number"}
Number SMA_input_voltage_1_IN (gSMA_Input) {channel="modbus:data:smaTCP:smaHolding7:sma_input _voltage_1:number"}
Number SMA_input_ampere_2_In (gSMA_Input) {channel="modbus:data:smaTCP:smaHolding8:sma_input _ampere_2:number"}
Number SMA_input_voltage_2_In (gSMA_Input) {channel="modbus:data:smaTCP:smaHolding8:sma_input _voltage_2:number"}
Number SMA_input_watt_2_In (gSMA_Input) {channel="modbus:data:smaTCP:smaHolding8:sma_input _watt_2:number"}

Da war sie wieder, die Klammer. Ein dünner Strich und doch so wichtig. Funktioniert natürlich.



Eine andere Idee wäre Filtern mit 2 Parametern, aber dazu habe ich auch nichts gefunden 





Einen Kommentar schreiben: