
Da zyklisch sowieso alle 4 Minuten der Status der ibuttons gesendet wird, kommt so auch der An-/Abwesenheitsstatus regelmäßig auf den Bus.
Ansonsten dann noch ein Timeout von 300s / 5 Minuten nach dem letzen abnehmen bis dann der Befehl kommt. Im schlimmsten Fall kann es bis zu 7 Minuten dauern bis alles ausgeht, stört mich jetzt aber nicht wirklich. Dafür bleibt der Fernseher jetzt abends an

Code:
my $ga1 = "0/7/1";
my $ga2 = "0/7/2";
my $ga3 = "0/7/3";
my $ga4 = "0/7/4";
my $ga5 = "0/7/5";
my $praesenz = "0/7/0";
$plugin_info{$plugname.'_cycle'} = 84600;
$plugin_subscribe{$ga1}{$plugname} = 1;
$plugin_subscribe{$ga2}{$plugname} = 1;
$plugin_subscribe{$ga3}{$plugname} = 1;
$plugin_subscribe{$ga4}{$plugname} = 1;
$plugin_subscribe{$ga5}{$plugname} = 1;
my $val1 = knx_read($ga1,300,1);
my $val2 = knx_read($ga2,300,1);
my $val3 = knx_read($ga3,300,1);
my $val4 = knx_read($ga4,300,1);
my $val5 = knx_read($ga5,300,1);
if
(
($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $ga1) or
($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $ga2) or
($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $ga3) or
($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $ga4) or
($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $ga5)
)
{
my ($sec,$min,$hour)=localtime(time);
if (
$val1 == 1 or
$val2 == 1 or
$val3 == 1 or
$val4 == 1 or
$val5 == 1)
{
knx_write($praesenz,1,1);
#my $lastpraesenz = time;
$plugin_info{$plugname.'_lastpraesenz'} = time;
#return $plugin_info{$plugname.'_lastpraesenz'};
}
if (
$val1 == 0 and
$val2 == 0 and
$val3 == 0 and
$val4 == 0 and
$val5 == 0)
{
if(($plugin_info{$plugname.'_lastpraesenz'}+300) >= time)
{}
else
{
knx_write($praesenz,0,1);
}
}
}



Einen Kommentar schreiben: