pl: PC Thermometer mit offener Schnittstelle

Beitrag lesen

Hi,

z.Z. hab ich ein kleines Programm was beim Hochfahren meines PC gestartet wird: Bis 45 min nach dem Start läuft die Heizung volle Pulle (2kW), dann wird die Leistung per PWM auf 0.3 runtergefahren und läuft dann dauerhaft auf dieser Leistungsstufe.

Hat sich in diesem Winter bestens bewährt 😉

Wenn's Thermometer kommt, wird es ein geschlossener Regelkreis. Bis dahin überlege ich mir, wo der Knopf für die Sollwertvorgabe hinkommt -- entweder als Desktop- oder als Webanwendung oder Beides.

my $P = 0.3;


use strict;
use warnings;
use Shell qw(on off);

# Adresse lernen, Dose war evntl. stromlos
off();
sleep(5);
on();

$| = 1;

my $m = bless{ 
    fuse   => 1, 
    nr     => 0,
    power  => $P,
    period => 10,
    state  => '',
    sleep  => 60
}, 'main';

while(){
    my $state = $m->pwm;

    if( $state ne $m->{state} ){    
        if($state eq 'On'){ 
            on() if $m->{fuse};
            print "Set State to On\n";
        }
        else{ 
            off() if $m->{fuse};
            print "Set State to Off\n";
        }
    }
    
    $m->{state} = $state;
    
    print "$state\n";
    sleep($m->{sleep});
}


# Puls Weiten Modulation
sub pwm{
    my $self   = shift;
    my $power  = $self->{power};
    my $period = $self->{period};
    my $nr     = $self->{nr};
    
    # Anheizen
    return 'On' if $nr < 60 * 45;
    
    $self->{nr}++;

    return 'On'  if $power == 1;
    return 'Off' if $power == 0;
    
    return ($nr % $period +1)/$period <= $power ? 'On' : 'Off';
}

MfG