Hallo,
ich möchte mein Reading GA_FuellstandRegentonne:level einmal täglich auslesen und vergleichen. Dann soll entsprechend eine Ansage abgespielt werden.
Ich stocke etwas mit dem Vergleich.
Ist der level 0-5, dann Ansage1 abspielen.
Ist der level 6-15, dann Ansage2 abspielen
Ist der level 16-25, dann Ansage3 abspielen
...
Wie mache ich dies am einfachsten?
Grüße,
Oliver
Ein tägliches at für die gewünschte Überprüfungsuhrzeit definieren.
Dann entweder direkt dort per Perl und if/elsif etc. die Bedingungen definieren und die Ansagen ausgeben...
Abfragen der Werte eines Readings entweder mit ReadingsVal("Devicename","Readingname","Ersatzwert") oder ReadingsNum("Devicename","Readingname",Ersatzwert)
Oder (aber da bin ich raus): ein DOIF mit Zeittrigger...
Beispiel (nur mal ein if / musst nat. weiter machen, wenn du deine Fälle umsetzen willst, siehe sub):
define atPruefen at *17:00:00 {if(ReadingsNum("GA_FuellstandRegentonne","level",0) < 5){fhem("Befehl für Ansage")}
EDIT: um aus Perl heraus fhem-Aufrufe nutzen zu können braucht man dann die "fhem-Funktion" fhem("Hier das übliche fhem Kommando") / fhem("set Licht on") / https://wiki.fhem.de/wiki/Klammerebenen
Besser das "auslagern" in eine Sub in myUtils: https://wiki.fhem.de/wiki/99_myUtils_anlegen
Beispiel:
define atPruefen at *17:00:00 {mySubCheck()}
sub mySubCheck()
{
my $ValueToCheck = ReadingsNum("GA_FuellstandRegentonne","level",0);
if($ValueToCheck >= 0 && $ValueToCheck <= 5)
{
fhem("Befehl für Ansage 1");
}
elsif($ValueToCheck >= 6 && $ValueToCheck <= 15)
{
fhem("Befehl für Ansage 2");
}
elsif($ValueToCheck >= 16 && $ValueToCheck <= 25)
{
fhem("Befehl für Ansage 3");
}
}
Gruß, Joachim
äh...
ReadingsNum("Test","Reading","n.a.");
wenn man mit ReadingsNum() arbeitet, sollte man besser keinen alphanumerischen Wert wie "n.a." als default Wert zurückgeben.
Jaja, sorry, copy&paste ;)
Ändere ich...
EDIT: wenigstens war ja die Erläuterung der Befehle korrekt... ;) Gut und man hofft ja auf ein wenig Mitdenken beim "Verwender"... ;)
EDIT: gut, habe dann auch gleich die vom TE genannten Namen eingebaut... ;)
Danke, Joachim