Da ich zur Zeit meine linknx aufräume hab ich heute mein Garagentor (hörmann ohne UAP1, d.h 2 kontakte über schaltaktor kurz geschlossen und das Tor fährt auf -> stop -> zu ->auf usw, zustände werden über Reed-Kontakte gemeldet) versucht in Perl umzusetzen.
Hab es schon mehrmal probiert und es läuft.
Ich denke dass ich alle eventualitäten mit fehlender Rückmeldung etc. mit eingeplant hab. Falls einem Experten was auffällt was falsch ist bzw. was man schöner lösen könnte, bitte ich um eine kurze Rückmeldung.
Gruß
Hab es schon mehrmal probiert und es läuft.
Ich denke dass ich alle eventualitäten mit fehlender Rückmeldung etc. mit eingeplant hab. Falls einem Experten was auffällt was falsch ist bzw. was man schöner lösen könnte, bitte ich um eine kurze Rückmeldung.
Gruß
Code:
##########################################################
#################################################################
# do not change anything below, all config stays above
#################################################################
## GA´s
my $Garage_zu ='14/0/1';
my $Garage_zu_rueck = '14/0/4';
my $Garage_auf = '14/0/0';
my $Garage_auf_rueck = '14/0/3';
my $Garage_schalten = '14/0/6';
# subscribe plugin and call it only when necessary, script will be activated if telegrams to the deffined GA are send.
$plugin_subscribe{$Garage_zu}{$plugname} = 1;
$plugin_subscribe{$Garage_auf}{$plugname} = 1;
$plugin_subscribe{$Garage_zu_rueck}{$plugname} = 1;
$plugin_subscribe{$Garage_auf_rueck}{$plugname} = 1;
$plugin_info{$plugname.'_cycle'} = 0;
## tor zu
if (($msg{'dst'} eq ($Garage_zu)) && ($msg{'apci'} eq 'A_GroupValue_Write'))
{
## Status der GA´s holen
my $status = knx_read($Garage_zu_rueck,0,1);
if (($msg{'value'} == 01) && ($status == 00)) {
knx_write($Garage_schalten,1,1);
return "zu";
}
if (($msg{'value'} == 01) && ($status == 01)) {
knx_write($Garage_zu,0,1);
return "zu";
}
else {
return;
}}
# zu reset
if (($msg{'dst'} eq ($Garage_zu_rueck)) && ($msg{'apci'} eq 'A_GroupValue_Write'))
{
my $garage_soll = knx_read($Garage_zu,0,1);
if (($msg{'value'} == 01) && ($garage_soll == 01)) {
knx_write($Garage_zu ,0,1);
}
if (($msg{'value'} == 01) && ($garage_soll == 00)) {
knx_write($Garage_schalten ,1,1);
}
if (($msg{'value'} == 01) && ($garage_soll == 01)) {
knx_write($Garage_auf,0,1);
}
}
## auf reset
if (($msg{'dst'} eq ($Garage_auf_rueck)) && ($msg{'apci'} eq 'A_GroupValue_Write'))
{
my $garage_soll = knx_read($Garage_auf,0,1);
if (($msg{'value'} == 01) && ($garage_soll == 01)) {
knx_write($Garage_auf ,0,1);
}
if (($msg{'value'} == 01) && ($garage_soll == 00)) {
knx_write($Garage_schalten ,1,1);
}}
## tor auf
if (($msg{'dst'} eq ($Garage_auf)) && ($msg{'apci'} eq 'A_GroupValue_Write'))
{
## Status der GA´s holen
my $status = knx_read($Garage_auf_rueck,0,1);
if (($msg{'value'} == 01) && ($status == 00)) {
knx_write($Garage_schalten,1,1);
return "zu";
}
else {
return;
}
}





Kommentar