Zu 2... Jup genau so

Zu 3... Das würde ich nicht zyklisch sondern beim eintreffen eines Telegramms machen. Wie Szenenlogik auch



Hätte ich für mich auch nicht anders gelöst. 



# Plugin Schlafen/Aufstehen
# V1.0 2014-01-11
### Definitionen
my $taster_ga = "0/1/203";
#Alle Raffstoren in einem Array
my $raffstore_nord = "3/3/0";
my $raffstore_sued = "3/4/0";
my $raffstore_west = "3/5/0";
my $raffstore_schlafzimmer = "3/6/0";
my $raffstore_ankleide = "3/7/0";
#Alles aus
my $zentral_aus = "1/0/248";
#Lueftung
my $lueftung_soll_ga = "6/0/4";
# Plugin an Gruppenadresse "anmelden"
$plugin_subscribe{$taster_ga}{$plugname} = 1;
# Plugin anmelden
if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $taster_ga) {
plugin_log($plugname,"Taster gedrückt: Wert: " . $msg{'value'});
if ($msg{'value'} eq 1) {
#sende 25% für Stufe 2
knx_write($lueftung_soll_ga,25,5);
#sende 1 für ab
knx_write($raffstore_nord,1,1);
knx_write($raffstore_sued,1,1);
knx_write($raffstore_west,1,1);
knx_write($raffstore_schlafzimmer,1,1);
knx_write($raffstore_ankleide,1,1);
#sende 0 fuer alles aus
knx_write($zentral_aus,0,1);
}
if ($msg{'value'} eq 0) {
#sende 50% für Stude 5
knx_write($lueftung_soll_ga,50,5);
#sende 0 für auf
knx_write($raffstore_nord,0,1);
knx_write($raffstore_sued,0,1);
knx_write($raffstore_west,0,1);
knx_write($raffstore_schlafzimmer,0,1);
knx_write($raffstore_ankleide,0,1);
}
}
#return 0;
# COMPILE_PLUGIN
my @Ausgang_ga;
my $Schlafen_ga="5/0/2";
my $PM_sperren_ga="5/0/1";
my $VDR_aus_ga="0/3/30";
push @Ausgang_ga, { name => "Flur Altbau aus", ga => "5/0/240"};
push @Ausgang_ga, { name => "Wohnzimmer aus", ga => "0/0/200"};
push @Ausgang_ga, { name => "Küche aus", ga => "2/0/0"};
push @Ausgang_ga, { name => "Flur Neubau aus", ga => "4/0/200"};
push @Ausgang_ga, { name => "Büro aus", ga => "1/0/200"};
push @Ausgang_ga, { name => "Wohnzimmer Stern", ga => "0/0/34"};
push @Ausgang_ga, { name => "Wohnzimmer Vase", ga => "0/0/35"};
push @Ausgang_ga, { name => "Büro Vase", ga => "1/0/43"};
push @Ausgang_ga, { name => "Terrasse aus", ga => "5/0/210"};
push @Ausgang_ga, { name => "Kinderbad Steckdose", ga => "4/0/111"};
push @Ausgang_ga, { name => "Durchgang Steckdose", ga => "4/0/191"};
push @Ausgang_ga, { name => "Küche Steckdose", ga => "2/0/31"};
push @Ausgang_ga, { name => "Hausplatz Steckdose", ga => "5/0/81"};
push @Ausgang_ga, { name => "Flur Altbau aus", ga => "5/0/240"};
push @Ausgang_ga, { name => "Außenbeleuchtung Neubau Hand aus", ga => "15/3/13"};
push @Ausgang_ga, { name => "Außenbeleuchtung Neubau aus", ga => "15/3/11"};
$plugin_info{$plugname . '_cycle'} = 0; # Aufrufzyklus - never
my $sec; #Sekunde
my $min; # Minute
my $hour; #Stunde
my $mday; #Monatstag
my $mon; #Monatsnummer
my $year; #Jahr
my $wday; #Wochentag 0-6
my $yday; #Tag ab 01.01.xxxx
my $isdst;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900;
$mon += 1;
if ($msg{'apci'} eq "A_GroupValue_Write") { # Telegramm eingetroffen
if ($msg{'dst'} eq $Schlafen_ga) {
return if $msg{'value'} == 1;
# Fernseher ausschalten
knx_write($VDR_aus_ga,1,1);
foreach my $element (@Ausgang_ga) {
# Alle ausschalten
plugin_log($plugname,$element->{name});
knx_write($element->{ga},0,1);
usleep(200);
}
}
# Bei Nacht PM im Flur sperren
if ($hour <5 or $hour>20) {
plugin_log($plugname,"PM gesperrt");
knx_write ($PM_sperren_ga,1,1);
}
} else { # zyklischer Aufruf/initialisierung
#subscribe GAs
$plugin_subscribe{$Schlafen_ga}{$plugname} = 1;
}
return;
# COMPILE_PLUGIN
my @Oder_ga;
my $Ausgang_ga="15/0/201";
push @Oder_ga, { name => "Wohnzimmer", ga => "0/0/201"};
push @Oder_ga, { name => "Küche", ga => "2/0/201"};
push @Oder_ga, { name => "Büro", ga => "1/0/201"};
push @Oder_ga, { name => "Moritz", ga => "3/0/201"};
push @Oder_ga, { name => "Felix", ga => "4/0/1"};
push @Oder_ga, { name => "Flur Neubau", ga => "4/0/201"};
push @Oder_ga, { name => "Flur Altbau", ga => "5/0/241"};
push @Oder_ga, { name => "Schlafzimmer", ga => "6/0/201"};
$plugin_info{$plugname.'_cycle'} = 0;
if ($msg{apci} eq 'A_GroupValue_Response'){
return ;
}
my $Oderwert;
my $Oderwert1;
foreach my $element (@Oder_ga) {
$plugin_subscribe{$element->{ga}}{$plugname} = 1;
$Oderwert1=knx_read($element->{ga},0,1);
# plugin_log($plugname,$element->{name}.' '.$Oderwert1);
$Oderwert=$Oderwert || $Oderwert1;
}
if (knx_read($Ausgang_ga,0,1)!=$Oderwert){
knx_write($Ausgang_ga,$Oderwert,1);
}
return ;
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.


Einen Kommentar schreiben: