Hallo,
ich habe eine Steckdose die ich schalte wenn Handy_da ist.
Das klappt auch soweit.
handy_da:present {if((localtime)[2]~~[07..21]) {fhem("set Schalter3 on")}}
Jetzt wollte ich das so machen, das wenn die Handys aus sindn die Lampe wieder erlichscht.
handy_da:absent {if((localtime)[2]~~[07..21]) {fhem("set Schalter3 on-for-timer 600")}}
Beim Ausschalten kommt es jedoch zu folgendem Fehler im Log:
2015.11.27 19:42:22 1: PERL WARNING: Smartmatch is experimental at (eval 29142) line 1.
2015.11.27 19:42:22 3: eval: my $EVENT='absent';my $NAME='handy_da';my $EVTPART0='absent';my $SELF='Handy_da_Licht_Aus';my $TYPE='structure';{if((localtime)[2]~~[07..21]) {fhem("set Schalter3 on-for-timer 600")}}
Hier die List von handy_da
Internals:
ATTR room
DEF room Coolstream Petra_Handy Torsten_Handy
NAME handy_da
NR 142
NTFY_ORDER 50-handy_da
STATE absent
TYPE structure
Content:
Coolstream absent
Petra_Handy absent
Torsten_Handy absent
Readings:
2015-11-27 19:48:35 LastDevice Torsten_Handy
2015-11-27 19:48:35 LastDevice_Abs Torsten_Handy
2015-11-27 19:48:35 state absent
Attributes:
clientstate_behavior relative
clientstate_priority present absent
Vielen Dank schon mal und ein schönes Wochenende
Hoffi
Hallo Hoffi!
Das notify macht keinen Fehler.
Du erhältst vielmehr eine Perl Warnung, da Du in Deinem Perl-Code den Smartmatch Operator ~~ verwendest. Der löst eben diese Warnmeldung ab bestimmten Perl-Versionen aus. Details findest Du bei http://perldoc.perl.org. Ändere einfach Deinen Perl-Code entsprechend ab und die Warnung wird vermutlich verschwinden.
Gruß, Christian
ok... ??? Perl-Code ändern. Wie?
Alternativ kann man da auch ein DOIF draus basteln oder?
Könnt Ihr mir da ein Tipp zu geben? Mit den unterschiedlichen Klammern, komme ich immer durcheinander.
Wäre das so eine DOIF Möglichkeit?
define di_handy_da DOIF ([handy_da] eq "present") (set Licht on) DOELSE (set Licht off)
Dank
Hoffi
Der gezeigte Code ist weder notify noch DOIF sondern eine structure - wenn ich das richtig gesehen habe.
Man sollte sich schon auf eines festlegen um zu einer Lösung zu kommen.
Aber das ein ändern von on auf on-for-timer die Meldung auslöst lässt mich ... etwas wundern.
Für das DOIF wirst du aber vermutlich noch die notwendigen Attribute brauchen - siehe commandref (auch auf deutsch).