Hallo zusammen,
hab mal wieder ein Problem, nach Neu installieren von Raspberry Jessy und Fhem 5.8 wird die Pumpe (IT-Steckdose) nicht mehr geschaltet, im alten System hat es funktioniert. Hab die alten Einstellungen gleich übernommen. Was will ich:
Die Pumpe soll nur bei Anwesenheit einer Person (iPhone) über einen bestimmten Zeitraum eingeschaltet sein, so sind meine Einstellungen.
1. Anwesenheit:
define D_iPhone PRESENCE
Internals:
CHANGED
DEF function {NetDevDa("xx:xx:xx:xx:xx:xx")} 10 10
MODE function
NAME D_iPhone
NOTIFYDEV global
NR 140
NTFY_ORDER 50-Dieters_iPhone
STATE present
TIMEOUT_NORMAL 10
TIMEOUT_PRESENT 10
TYPE PRESENCE
Readings:
2017-03-10 19:14:53 presence present
2017-03-10 19:14:53 state present
Helper:
CURRENT_STATE present
PRESENT_COUNT 0
call {NetDevDa("54:E4:3A:67:0A:6A")}
Attributes:
event-on-change-reading .*
icon it_smartphone
room Funksteckdosen
2. Doif
define Zirku_an DOIF
Internals:
DEF (([?18:25-18:35] or [?18:45-18:55] or [?19:33-19:42]) and ([D_iPhone:presence] eq "present" or [G_iPhone:presence] eq "present" )) (set IT_V3_xxxx on) DOELSE (set IT_V3_xxxx off)
NAME Zirku_an
NR 202
NTFY_ORDER 50-Zirku_an
STATE initialized
TYPE DOIF
Readings:
2017-03-10 18:15:54 cmd 0
2017-03-10 18:15:54 state initialized
2017-03-10 18:35:00 timer_01_c01 11.03.2017 18:25:00
2017-03-10 18:35:00 timer_02_c01 11.03.2017 18:35:00
2017-03-10 18:15:54 timer_03_c01 10.03.2017 18:45:00
2017-03-10 18:15:54 timer_04_c01 10.03.2017 18:55:00
2017-03-10 18:15:54 timer_05_c01 10.03.2017 19:33:00
2017-03-10 18:15:54 timer_06_c01 10.03.2017 19:42:00
Condition:
0 (DOIF_time($hash,0,1,$wday,$hms) or DOIF_time($hash,2,3,$wday,$hms) or DOIF_time($hash,4,5,$wday,$hms)) and (ReadingValDoIf($hash,'D_iPhone','presence') eq "present" or ReadingValDoIf($hash,'G_iPhone','presence') eq "present" )
Days:
Devices:
0 D_iPhone G_iPhone
all D_iPhone G_iPhone
Do:
0:
0 set Zirku on
1:
0 set Zirku off
Helper:
globalinit 1
last_timer 6
sleeptimer -1
Interval:
0 -1
1 0
2 -1
3 2
4 -1
5 4
Itimer:
Localtime:
0 1489253100
1 1489253700
2 1489167900
3 1489168500
4 1489170780
5 1489171320
Readings:
0 D_iPhone:presence G_iPhone:presence
all D_iPhone:presence G_iPhone:presence
Realtime:
0 18:25:00
1 18:35:00
2 18:45:00
3 18:55:00
4 19:33:00
5 19:42:00
Regexp:
All:
State:
Time:
0 18:25:00
1 18:35:00
2 18:45:00
3 18:55:00
4 19:33:00
5 19:42:00
Timecond:
0 0
1 0
2 0
3 0
4 0
5 0
Timer:
0 0
1 0
2 0
3 0
4 0
5 0
Timers:
Triggertime:
1489168500:
localtime 1489168500
Hash:
1489170780:
localtime 1489170780
Hash:
1489171320:
localtime 1489171320
Hash:
1489253100:
localtime 1489253100
Hash:
1489253700:
localtime 1489253700
Hash:
Attributes:
room A
3. myUtils
99_myUtils.pm
######## Netzwerk Gerät über Fritzbox abfragen ############
sub
NetDevDa($)
{
my $n = 0;
my ($Reading) = @_;
$Reading =~ tr/:/_/;
my @fbs = devspec2array("TYPE=FRITZBOX");
foreach( @fbs ) {
my $Name = ReadingsVal($_,"mac_" . $Reading,"");
if( ($Name ne "") && ($Name ne "inactive") ) {
$n++;
}
}
if( $n == 0) {
return 0;
} else {
return 1;
}
}
leider wird nichts geschaltet.
Wenn ich in der D_iPhone: "set D_iPhone statusRequest" ausführe, wird die Pumpe eingeschaltet und in der Doif erscheint :
nternals:
DEF (([?18:25-18:35] or [?19:55-19:05] or [?19:33-19:42]) and ([Dieters_iPhone:presence] eq "present" or [Gittas_iPhone:presence] eq "present" )) (set IT_V3_155b33c5 on) DOELSE (set IT_V3_155b33c5 off)
NAME Zirku_an
NR 202
NTFY_ORDER 50-Zirku_an
STATE cmd_1
TYPE DOIF
Readings:
2017-03-10 19:36:44 Device Dieters_iPhone
2017-03-10 19:36:36 cmd 1
2017-03-10 19:36:36 cmd_event Dieters_iPhone
2017-03-10 19:36:36 cmd_nr 1
2017-03-10 19:36:44 e_Dieters_iPhone_presence present
2017-03-10 19:37:16 mode enable
2017-03-10 19:36:36 state cmd_1
2017-03-10 18:53:00 timer_01_c01 11.03.2017 18:25:00
2017-03-10 18:53:00 timer_02_c01 11.03.2017 18:35:00
2017-03-10 19:05:00 timer_03_c01 10.03.2017 19:55:00
2017-03-10 19:05:00 timer_04_c01 11.03.2017 19:05:00
2017-03-10 18:53:00 timer_05_c01 10.03.2017 19:33:00
2017-03-10 18:53:00 timer_06_c01 10.03.2017 19:42:00
Condition:
0 ................
einfach nicht weiter.
Hoffe auf Ideen von euch,
Gruß Dieter
Das einzige triggernde Event kommt vom Presence device, dort hast du event-on-change request gesetzt. D. H dein DOIF wird nur getriggert, wenn sich der Status des PRESENCE devices ändert.
Könntest vielleicht mal sagen, was genau nicht funktioniert.
Ich tippe mal auf:
Du bist 'present' und die Pumpe geht zu den gewünschten Zeiten nicht an.
Deine Zeiten triggern wegen dem ? davor nicht. Deine Presence Funktion triggert auch nur bei Änderungen, wegen dem event-on-change-reading. Daher wird dein DOIF nur cmd_1 ausführen, wenn eine deiner Presence Definitionen während einer der Zeitbereiche wahr ist, auf 'presence' wechselt.
@automatisierer
ZitatDu bist 'present' und die Pumpe geht zu den gewünschten Zeiten nicht an
genau hab ich total vergessen, nach dem ich den ganzen Nachmittag probiert habe war mir das schon klar, euch natürlich nicht, sorry
Das wars, jetzt schaltet alles so wie ich es möchte.
Hier wird einem wirklich geholfen.
Vielen Dank
Gruß Dieter