Hauptmenü

Probleme mit notify

Begonnen von Markus, 13 Februar 2015, 13:00:08

Vorheriges Thema - Nächstes Thema

Markus

Dieser code Funktioniert aber ich wollte es jetzt als einzeiler lösen aber das klappt nicht so wie ich es will,
Vielleicht kann mir ja jemand einen tipp geben ;-)

define Gefrierschrank1_zu_Warm notify Gefrier.* \
{ fhem ("set petzeGefrier Ein") if (ReadingsVal("Gefrierschrank_1","temperature","") >= -10 && Value("petzeGefrier") eq "bereit") }\
{ fhem ("set petzeGefrier Ein") if (ReadingsVal("Gefrierschrank_2","temperature","") >= -10 && Value("petzeGefrier") eq "bereit") }\
{ fhem ("set petzeGefrier Ein") if (ReadingsVal("Gefrierschrank_3","temperature","") >= -10 && Value("petzeGefrier") eq "bereit") }\
{ fhem ("set petzeGefrier Ein") if (ReadingsVal("Gefrierschrank_4","temperature","") >= -10 && Value("petzeGefrier") eq "bereit") }\
{ fhem ("set petzeGefrier Ein") if (ReadingsVal("Gefrierschrank_5","temperature","") >= -10 && Value("petzeGefrier") eq "bereit") }\
{ fhem ("set petzeGefrier Ein") if (ReadingsVal("Gefrierschrank_6","temperature","") >= -10 && Value("petzeGefrier") eq "bereit") }


Ich hab es in dieser art versucht funktioniert aber nicht...


define Gefrierschrank1_zu_Warm notify Gefrier.* \
{ fhem ("set petzeGefrier Ein") if (ReadingsVal("@","temperature","") >= -10 && Value("petzeGefrier") eq "bereit") }


define Gefrierschrank1_zu_Warm notify Gefrier.* \
{ fhem ("set petzeGefrier Ein") if (ReadingsVal("$name","temperature","") >= -10 && Value("petzeGefrier") eq "bereit") }

define Gefrierschrank1_zu_Warm notify Gefrier.* \
{ fhem ("set petzeGefrier Ein") if (ReadingsVal("Gefrier.*","temperature","") >= -10 && Value("petzeGefrier") eq "bereit") }


gruss Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

nesges

Warum nicht einfach per IF?

define Gefrierschrank1_zu_Warm notify Gefrier.* IF ( [petzeGefrier] eq "bereit" && ( [Gefrierschrank_1] >= -10 || [Gefrierschrank_2] >= -10 || [Gefrierschrank_3] >= -10 ..etc.. ) ) ( set petzeGefrier Ein )

Wobei ich jetzt nicht getestet habe, ob IF mit geschachtelten Klammern zurecht kommt; aber davon gehe ich aus.
Ansonsten sowas in der Art in die 99_myUtils.pm:

sub check() {
    if(Value("petzeGefrier") eq "bereit")) {
        foreach my $device (qw(Gefrierschrank_1 Gefrierschrank_2 Gefrierschrank_3 Gefrierschrank_4 Gefrierschrank_5 Gefrierschrank_6)) {
            if( ReadingsNum($device,"temperature",0) >= -10) {
                fhem("set petzeGefrier Ein");
                return 1;
            }
        }
    }
    return 0;
}


Ungesteter Code, Typos nicht ausgeschlossen - aber die Idee sollte klar werden.

Mitch

Die Klammern im DOFI sind falsch  ;)

Ich würde das mit einer Struktur für die Gefrierschrank_1 bis _6 machen:

define Gefrierschraenke structure Gefrier Gefrierschrank_1 Gefrierschrank_2 Gefrierschrank_3 Gefrierschrank_4 Gefrierschrank_5 Gefrierschrank_6

dann den notify

define Gefrierschrank1_zu_Warm notify Gefrier.* \
{ fhem ("set petzeGefrier Ein") if (ReadingsVal("Gefrierschraenke","temperature","") >= -10 && Value("petzeGefrier") eq "bereit") }


oder DOIF

define Gefrierschrank1_zu_Warm DOIF ([Gefrieschraenke] >= "-10" and [petzeGefrier] eq "bereit") (set petzeGefrier Ein)

Und wenn Du doch die myUtils nutzen willst, einfach ein array anlegen.
FHEM im Proxmox Container

Markus

Danke für die Antworten!

hab wo anders dieses Beispiel gefunden und scheint zu Funktionieren

.cfg
define Sofa_Benutzt_zu_Warm notify Gefrier.* { \
  if ($EVTPART1 > -10) { \
    fhem("set petzeGefrier Ein")\
}  \
}
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Markus

Dieses notify funktioniert aber ich habe immer diese Meldung im log

define Sofa_Benutzt_zu_Warm notify Gefrier.* { \
  if ($EVTPART1 > -10) { \
    fhem("set petzeGefrier Ein")\
}  \
}


2015.02.22 20:18:13 3: Sofa_Benutzt_zu_Warm return value: Global symbol "$EVTPART1" requires explicit package name at (eval 113) line 2.

2015.02.22 20:18:14 3: Sofa_Benutzt_zu_Warm return value: Global symbol "$EVTPART1" requires explicit package name at (eval 116) line 2.

2015.02.22 20:18:16 3: Sofa_Benutzt_zu_Warm return value: Global symbol "$EVTPART1" requires explicit package name at (eval 119) line 2.

2015.02.22 20:18:18 3: Sofa_Benutzt_zu_Warm return value: Global symbol "$EVTPART1" requires explicit package name at (eval 122) line 2.

2015.02.22 20:18:28 3: Sofa_Benutzt_zu_Warm return value: Global symbol "$EVTPART1" requires explicit package name at (eval 137) line 2.

2015.02.22 20:18:30 3: Sofa_Benutzt_zu_Warm return value: Global symbol "$EVTPART1" requires explicit package name at (eval 140) line 2.

2015.02.22
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Mitch

Welches Event wird denn von Gefrier.* erzeugt?
FHEM im Proxmox Container

Markus

Die Events im Eventsmonitor schauen so aus:


2015-02-23 11:12:31 OWTHERM Gefrierschrank_1 temperature: -20.8275
2015-02-23 11:12:31 OWTHERM Gefrierschrank_1 T: -20.83 °C ▾
2015-02-23 11:12:38 OWTHERM Gefrierschrank_2 temperature: -21.35
2015-02-23 11:12:38 OWTHERM Gefrierschrank_2 T: -21.35 °C ▾
2015-02-23 11:12:39 OWTHERM Gefrierschrank_3 temperature: -20.5
2015-02-23 11:12:39 OWTHERM Gefrierschrank_3 T: -20.50 °C ▾
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Mitch

Wenn ich das richtig im Kopf habe, dann ist doch $EVTPART1 temperature: und T:?
Müsste es nicht $EVTPART2 sein?

Ich würde aber nach wie vor eine Struktur einrichten und auf die readings triggern.
FHEM im Proxmox Container