Notify "zündet" nicht

Begonnen von thoweiss, 23 Januar 2013, 09:41:45

Vorheriges Thema - Nächstes Thema

thoweiss

Hallo zusammen,
ich hoffe ich bin hier richtig - ich habe ein Problem mit einem notify in Verbindung mit OWDevice.

Für die Steuerung meiner Lüftungsanlage benutze ich einen DS2408 der über Relais die Stufen der Ventilatoren schaltet.

Da ich im Moment noch misterhouse und fhem parallel nutze soll fhem die Lüfterstufe mitloggen wenn misterhouse diese Ändert.

Das ist das dummy device zur Anzeige der Lüfterstufe
define stufe_kwl dummy
attr stufe_kwl alias Lüfterstufe
attr stufe_kwl room lueftung
attr stufe_kwl webCmd Aus:Stufe_1:Stufe_2:Stufe_3


Das ist das OWDevice DS2408

define ds2408_relais OWDevice 29.568E01000000 300
attr ds2408_relais model DS2408
attr ds2408_relais polls PIO.0,PIO.1,PIO.2,PIO.3


Und das ist das notify das abhängig vom Zustand der PIOs das Dummy-Device stufe_kwl auf die entsprechende Stufe setzen soll...
Das funktioniert leider nicht.

define nt.kwl.read.stufe notify ds2408_relais {if \
(ReadingsVal("ds2408_relais","PIO.0","") eq "0")and\
(ReadingsVal("ds2408_relais","PIO.1","") eq "0")and\
(ReadingsVal("ds2408_relais","PIO.2","") eq "0")and\
(ReadingsVal("ds2408_relais","PIO.3","") eq "0") \
{fhem("setstate stufe_kwl aus")} elsif\
(ReadingsVal("ds2408_relais","PIO.0","") eq "0")and\
(ReadingsVal("ds2408_relais","PIO.1","") eq "0")and\
(ReadingsVal("ds2408_relais","PIO.2","") eq "1")and\
(ReadingsVal("ds2408_relais","PIO.3","") eq "1")\
{fhem("setstate stufe_kwl stufe_1")} elsif\
(ReadingsVal("ds2408_relais","PIO.0","") eq "1")and\
(ReadingsVal("ds2408_relais","PIO.1","") eq "0")and\
(ReadingsVal("ds2408_relais","PIO.2","") eq "1")and\
(ReadingsVal("ds2408_relais","PIO.3","") eq "1")\
{fhem("setstate stufe_kwl stufe_2")} elsif\
(ReadingsVal("ds2408_relais","PIO.0","") eq "0")and\
(ReadingsVal("ds2408_relais","PIO.1","") eq "1")and\
(ReadingsVal("ds2408_relais","PIO.2","") eq "1")and\
(ReadingsVal("ds2408_relais","PIO.3","") eq "1")\
{fhem("setstate stufe_kwl stufe_3")}}


Wann wird ein notify getriggert?
Immer bei Änderung des State oder auch wenn die readings eines Device sich ändern?

Oder habe ich einen Denkfehler?

Gruß,
Thorsten

thoweiss

So bin einen Schritt weiter

da ist wohl ein Tippfehler drin

nt.kwl.read.stufe return value: syntax error at (eval 78) line 1, near ")and"

ich geh mal suchen..

thoweiss

Manchmal hat man ein Brett vor dem Kopf...
Kaum mach man es richtigt - läuft es

Ich habs jetzt:
ds2408_relais {
my $pio0 = ReadingsVal ("ds2408_relais","PIO.0","");
my $pio1 = ReadingsVal ("ds2408_relais","PIO.1","");
my $pio2 = ReadingsVal ("ds2408_relais","PIO.2","");
my $pio3 = ReadingsVal ("ds2408_relais","PIO.3","");
if (($pio0 eq "0") and ($pio1 eq "0") and ($pio2 eq "0") and ($pio3 eq "0")) {fhem("setstate stufe_kwl aus")}
elsif (($pio0 eq "0") and ($pio1 eq "0") and ($pio2 eq "1") and ($pio3 eq "1")){fhem("setstate stufe_kwl stufe_1")}
elsif (($pio0 eq "1") and ($pio1 eq "0") and ($pio2 eq "1") and ($pio3 eq "1")){fhem("setstate stufe_kwl stufe_2")}
elsif (($pio0 eq "0") and ($pio1 eq "1") and ($pio2 eq "1") and ($pio3 eq "1")){fhem("setstate stufe_kwl stufe_3")}
}


Ich muss mich erst an diesen gemischten Code in FHEM gewöhnen, bei Misterhouse schreibe ich puren perl-code das fällt mir leichter.