Frage zu setFn bei readingsProxy

Begonnen von eldrik, 21 Februar 2014, 09:18:05

Vorheriges Thema - Nächstes Thema

eldrik

Hi,

ich versuche gerade über einen readingsProxy einen Rollladenaktor (basierend auf dem 1Wire DS2413) "erst einmal" drei Befehle beizubringen, hoch stopp runter

Hierfür habe folgendes im readingsProxy definiert:

setList hoch stop runter
webcmd hoch:stop:runter
setFn {
my $window_contact = ReadingsVal("Contact_OG_rechts1","sensed.4","1");
my $window_opener = "Rollladen_Gaestezimmer_rechts";
my $window_shutter = "Rollladen_Bad_klein";
my $duration_shutter = 100;
my $duration_opener = 15;
my $duration_pause = 0.2;

if ($CMD eq "stop") {
fhem
"set $window_shutter PIO.A 1;
set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.A 0;
set $window_shutter PIO.B 0";


} elsif ($CMD eq "hoch") {
if ($window_contact == 1)
{
fhem
"set $window_shutter PIO.A 1;
sleep $duration_pause;
set $window_shutter PIO.A 0";

if ($duration_shutter > 0)
{
fhem
"sleep $duration_shutter;
set $window_shutter PIO.A 1;
set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.A 0;
set $window_shutter PIO.B 0";
}
}
} elsif ($CMD eq "runter") {
if ($window_contact == 1)
{
fhem
"set $window_opener PIO.B 1;
sleep $duration_pause;
set $window_opener PIO.B 0";

if ($duration_opener > 0)
{
fhem
"sleep $duration_opener;
set $window_opener PIO.A 1;
set $window_opener PIO.B 1;
sleep $duration_pause;
set $window_opener PIO.A 0;
set $window_opener PIO.B 0";
}
fhem
"set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.B 0";

if ($duration_shutter > 0)
{
fhem
"sleep $duration_shutter;
set $window_shutter PIO.A 1;
set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.A 0;
set $window_shutter PIO.B 0";
}
}
}else {
fhem
"set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.B 0";
if ($duration_shutter > 0)
{
fhem
"sleep $duration_shutter;
set $window_shutter PIO.A 1;
set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.A 0;
set $window_shutter PIO.B 0";
}
}

}


Setze ich über fhemweb nun hoch erscheint die set Meldung des zum readingsproxy gehörenden 1Wire Gerätes, dass set hoch unbekannt sei und nur PIO.A, PIO.B usw. genutzt werden könne.
Setze ich jedoch stop wird die dazugehörige Funktion ausgeführt.

Kann man über setFn nicht mehere Befehle abarbeiten lassen, oder liegt es an meinen if else Konstuktionen, dass der über webcmd übermittelte Wert nicht mehr beim ersten elsif ankommt?

Greetz
Eldrik