ich habe einige Schleifen angelegt um z.B. den Batterie-Status meiner Homatic-Geräte zu überwachen.
Dazu habe ich das Batterie-Item aller Geräte in die Gruppe >gBatterien< gelegt.
Die Schleife prüft nun ob ein Itewm dieser Gruppe auf ON steht und benachrichtigt michb dann mittels sendNotification.
Alles funktioniert sowei ganz gut aber ich bekomme meine Schleife in Visual Studio immer als fehlerhaft angezeigt.
Code: Alles auswählen
//-------------------------- Batterien ------------------------
rule "Batteriebetriebene Geräte überwachen. Geräte müssen der Gruppe 'gBatterien' zugeordnet sein"
when
Member of gBatterien changed
then
var Integer z = 0
var Integer i = 0
var String s = ''
gBatterien?.members.forEach
[i |
if (i.state == ON )
{
s = s + "\n" + i.name
z ++
sendNotification("meine_email@mailaccount.de",
"Batterie leer!\n" + transform("MAP", "batterie.map", i.name.toString))
}
]
if (z > 0)
{
sendCommand(Batterien_Sammelmeldung,ON)
}
if (z == 0)
{
sendCommand(Batterien_Sammelmeldung,OFF)
}
end
var Integer i = 0 -> The value of the local variable i is not used
[i | -> Duplicate local variable i
s = s + "\n" + i.name -> Cannot refer to the non-final variable s inside a lambda expression
z ++ -> Cannot refer to the non-final variable z inside a lambda expression
Die erste Meldung bekomme ich weg wenn ich die Zeile weg lasse in der ich i definiere. Vermutlich wird i nach der eckigen Klammer noch mal definiert.
Aber bei den anderen, roten Meldungen bin ich mir unsicher ob da tatsächlich etwas falsch ist.
Danke und Gruß
Florian