0 = Alter egal
Code:
my $on_perc = knx_read($regler_ga,0,DPT);
my $on_perc = knx_read($regler_ga,0,DPT);


$min_cycle = ceil( min( $min_cycle, $this_controller{'CycleMinutes'}*60/100*$this_controller{'ResolutionPercent'} ) );
###PWM-Regler
#v0.1 2012-11-10
#JuMi2006 - > https://knx-user-forum.de
### MAIN ###
# Variablen definieren
my $base_time = 15 ; #in Minuten
my $regler_ga = "0/0/0"; #Stellwert vom Regler -> Achtung in Zeile 19 "DPT" durch den richtigen DPT ersetzen
my $send_ga = "0/0/0"; #GA vom Schaltaktor
### MAIN / VERARBEITUNG
### PWM ###
$plugin_subscribe{$regler_ga}{$plugname} = 1;
$plugin_info{$plugname.'_cycle'} = 60;
my $time = time();
my $on_perc = knx_read($regler_ga,DPT); #hier wird der Stellwert in % gelesen;
my $on_time = (($base_time/100)*$on_perc);
my $off_time = ($base_time - $on_time);
$on_time *= 60; #Minuten in Sekunden umrechnen
$off_time *= 60; #Minuten in Sekunden umrechnen
if ($plugin_info{$plugname.'_state'} eq 'pwm-off') #status = aus
{
if (($plugin_info{$plugname.'_stat-time'} + $off_time) <= $time) #zyklus aus ist vorbei
{
#ANSCHALTEN
knx_write($send_ga,1,1.001);
#STATUS = EIN setzen
$plugin_info{$plugname.'_state'} = 'pwm-on';
#ANZEIT = jetzt
$plugin_info{$plugname.'_stat-time'} = $time;
} else {
#Senden wiederholen#
#knx_write($send_ga,0,1.001);
}
} else {}
if ($plugin_info{$plugname.'_state'} eq 'pwm-on') #status = an
{
if (($plugin_info{$plugname.'_stat-time'} + $on_time) <= $time) #zyklus an ist vorbei
{
#AUSCHALTEN
knx_write($send_ga,0,1.001);
#STATUS = AUS setzen
$plugin_info{$plugname.'_state'} = 'pwm-off';
#AUSZEIT = JETZT
$plugin_info{$plugname.'_stat-time'} = $time;
} else {
#Senden wiederholen#
#knx_write($send_ga,1,1.001);
}
} else {}
if (($plugin_info{$plugname.'_stat-time'} + $on_time + $off_time) <= $time) #initialisierung
{
#ANSCHALTEN
knx_write($send_ga,1,1.001);
#STATUS = EIN setzen
$plugin_info{$plugname.'_state'} = 'pwm-on';
#ANZEIT = jetzt
$plugin_info{$plugname.'_stat-time'} = $time;
plugin_log($plugname, "INITIALISIERUNG nach Abwesenheit");
} else {}



# Demo-Plugin PWM->1Bit
# V0.1 2011-07-02
### Definitionen
### Hier werden die Werte/Gruppenadressen definiert
my $pwm_value = "14/7/63"; # Gruppenadresse für Stellantrieb 8bit/1Byte DPT5.001
my $ventil_ga_1bit = "14/5/65"; # Gruppenadresse für Stellantrieb 1bit
my $taktzeit = 5; # Taktzeit in Minuten für schaltenden Stellantrieb-Regler
my $resolution = 5; # Basis-Aufloesung in %
### Ende Definitionen
# Eigenen Aufruf-Zyklus setzen
$plugin_info{$plugname.'_cycle'} = $taktzeit*60/(100/$resolution); # 5% resolution
if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $pwm_value) {
#sollwert vom bus
if (!defined $msg{'value'}) {
# falls GA/DPT nicht importiert
$msg{'value'} = decode_dpt5($msg{'data'});
}
$plugin_info{$plugname.'_pwm_value'} = $msg{'value'};
} else {
#zyklischer aufruf
$plugin_subscribe{$pwm_value}{$plugname} = 1;
}
my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime(time);
my $calc = $minute % $taktzeit;
#my $wakeup; # wakeup intelligent
if ($calc/$taktzeit*100<$plugin_info{$plugname.'_pwm_value'}) {
knx_write($ventil_ga_1bit,1,1); # Ventilstellung auf den Bus schreiben
return; # "An $calc";
} else {
knx_write($ventil_ga_1bit,0,1); # Ventilstellung auf den Bus schreiben
return; # "Aus $calc";
}


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: