Hallo,
ich möchte ein UserReadings (statevalue) das bei state "error" den Wert "nok" und bei state "T:xxxxxxx" (T: 21.6 H: 64.0) den Wert "ok" einnimmt.
Bekomme es aber irgendwie nicht hin.
Vielleicht hat ja jemand einen Tipp für mich.
EG_WE_TF userReadings statevalue {if(ReadingsVal($name,"state","") eq "error") {sprintf("nok")} elsif (split(":",ReadingsVal($name,"state","")))[0] eq "T") {sprintf("ok")}}
Danke!
Hi,
also wenn ich zumindest den ersten Teil einfach mal teste funktioniert das wie gewollt.
Was geht denn nicht?
Gruß Otto
Er zeigt mir einen Fehler im Userreadings an.
ZitatError evaluating EG_WE_TF userReading statevalue: syntax error at (eval 14261) line 1, near ")["
syntax error at (eval 14261) line 1, near "}}"
Da fehlt wo eine Klammer ( im zweiten Teil.
((split(":",ReadingsVal($name,"state","")))[0] eq "T") {sprintf("ok")}}
Ich bin mir über den Syntax mit dem ersten Element nicht sicher (split...)[0]
Du machst dir das ziemlich kompliziert mit dem split usw.
{
my $state = ReadingsVal("$name", 'state', undef);
return 'nok' if $state eq 'error';
return 'ok' if substr($state, 0, 1) eq 'T';
return '';
}
Ansonsten hast du in deinem Code eine Klammer falsch gesetzt. Wenn du den Code ordentlich formatierst, siehst du auch direkt wo diese falsch ist.
@Christoph Morrison:
Danke, das funktioniert schon mal ;D ;D ;D
EG_WE_TF userReadings statevalue {
If (ReadingsVal($name,"state","") eq "error") {sprintf("nok")}
elsif (split(":",ReadingsVal($name,"state","")))[0] eq "T") {sprintf("ok")}
}
Aber auch wenn ich es mir so anschaue, finde ich den Fehler nicht.
Schaust Du in meine Antwort 3 oder Du kopierst die Zeile in einen Code Editor der Dir die Klammern zeigt. Eigentlich zeigt auch der FHEm Editor wo die Klammer fehlt.
Oder einfach zählen auf: 123 zu:1234 ::) ;D
Gruß Otto
ZitatOder einfach zählen auf: 123 zu:1234 ::) ;D
Hatte ich eigentlich auch so gemacht... aber manchmal hat man was an den Augen ;)