FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: FHEM-Wohnung am 11 August 2017, 18:33:58

Titel: Vorhandenen DEF-Code umschreiben kleiner als Wert vom Sensor
Beitrag von: FHEM-Wohnung am 11 August 2017, 18:33:58
Hallo :)

ich habe einen Sensor, welcher meine Pflanze überwacht. Dieser soll mir eine Nachricht schreiben mit PushOver, wenn ein bestimmter Wert unterschritten ist. Dies soll aber auch nur einmal zb. alle 4 Stunden passieren. Die Werte vom Sensor werden von FHEM jedoch alle 8 Minuten aufgenommen.

Nun habe ich angelegt:

Der Sensor
Draussen_BalkonPflanze
moisture XX
Hier steht der zu kontrollierende Wert z.B. 30

Die Kontrolle ob informiert wurde
BalkonPflanze_informiert
setList ja nein
webCmd ja:nein


Die Benachrichtigung
Draussen.Notify_BalkonPflanze
DEF:
Draussen_BalkonPflanze {
    if (Value("BalkonPflanze_informiert") eq "nein") {
        fhem("set pushmsg msg 'Bitte die Balkonpflanzen gießen' '$EVENT'");
        fhem("set BalkonPflanze_informiert ja");
        fhem("define status_BalkonPflanze at +4:00:00 set BalkonPflanze_informiert nein");
    }
}


Der DEF-Code fragt den BalkonPflanzen_informiert ob er schonmal mir geschrieben hat. Wenn Nein: sendet er mir eine Nachricht. Danach wird das BalkonPflanzen_informiert auf Ja gesetzt. So erhalte ich dann keine weiteren Nachrichten die nächsten 4 Stunden.
Dies klappt auch alles soweit.

Wie bekomme ich den DEF Code nun so geschrieben, das er vom Gerät "Draussen_BalkonPflanze" den Wert "moisture" kontrolliert ob dieser kleiner (<) ist als zb. 30?

Ich würde mich sehr freuen wenn jemand mir das sagen könnte :)
Danke
Titel: Antw:Vorhandenen DEF-Code umschreiben kleiner als Wert vom Sensor
Beitrag von: Otto123 am 11 August 2017, 18:43:23
Hi,

mit so etwas:

(ReadingsVal("Draussen_BalkonPflanze","moisture","0") < 30)

Wenn ReadingsVal("Draussen_BalkonPflanze","moisture","0") wirklich eine Zahl liefert. Was Du leicht in der Kommandozeile von FHEM testen kannst:
{ReadingsVal("Draussen_BalkonPflanze","moisture","0")}

Gruß otto
Titel: Antw:Vorhandenen DEF-Code umschreiben kleiner als Wert vom Sensor
Beitrag von: FHEM-Wohnung am 11 August 2017, 22:46:53
Guten Abend :)

vielen Dank für die Information! Unter dem Code konnte ich auch was im internet was finden. Leider komme ich aber nicht wirklich damit zurecht wie ich dies nun eingebe. Reicht ein && oder muss ich noch eine if else einbauen? Sorry das ist das erste mal das ich mich mit der Programmiersprache beschäftige  ::)

Der Zahlenwert wird mit dem Code in FHEM ausgegeben:
{ReadingsVal("Draussen_BalkonPflanze","moisture","0")}

Vielen Dank!
Titel: Antw:Vorhandenen DEF-Code umschreiben kleiner als Wert vom Sensor
Beitrag von: Otto123 am 11 August 2017, 22:53:02
 Du meinst Du willst beide Bedingungen verknüpfen? Dann einfach die if Abfrage erweitern
if (Value("BalkonPflanze_informiert") eq "nein" and ReadingsVal("Draussen_BalkonPflanze","moisture","0") < 30) {}

Gruß Otto
Titel: Antw:Vorhandenen DEF-Code umschreiben kleiner als Wert vom Sensor
Beitrag von: FHEM-Wohnung am 11 August 2017, 23:01:17
Super vielen Dank! Du warst mir eine große Hilfe :)

Draussen_BalkonPflanze {
if (Value("BalkonPflanze_informiert") eq "nein" and ReadingsVal("Draussen_BalkonPflanze","moisture","0") < 32) {
fhem("set pushmsg msg 'Bitte die Balkonpflanzen gießen' '$EVENT'");
        fhem("set BalkonPflanze_informiert ja");
        fhem("define status_BalkonPflanze at +4:00:00 set BalkonPflanze_informiert nein");
}
}


Draussen_BalkonPflanze {
if (Value("BalkonPflanze_informiert") eq "nein" and ReadingsVal("Draussen_BalkonPflanze","moisture","0") < 32)
{
fhem("set pushmsg msg 'Balkonpflanzen gießen' 'Die Feuchtigkeit beträgt [Draussen_BalkonPflanze:moisture]%'");
        fhem("set BalkonPflanze_informiert ja");
        fhem("define status_BalkonPflanze at +4:00:00 set BalkonPflanze_informiert nein");
}
}

Hier wird der Wert des Feuchtigkeit noch in der Nachricht angezeigt