Wert eines Reading auslesen und vergleichen

Begonnen von o.l.i, 17 Juli 2020, 22:03:14

Vorheriges Thema - Nächstes Thema

o.l.i

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

MadMax-FHEM

#1
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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

ä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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MadMax-FHEM

#3
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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)