This commit is contained in:
Marc Hoppe
2016-03-27 17:24:12 +02:00
parent e88e701a59
commit 8a8a64cd91

View File

@@ -16,7 +16,6 @@ use constant {
STATE_SCHLITZ => 3, STATE_SCHLITZ => 3,
}; };
my @rolls = ( my @rolls = (
{ roll => "wohn.rollTerrR", dir=>"W", typ=>"n", temp=>"tempWohn", tempS=>21, win=>"wohn.fenTerr", state=>STATE_IDLE, }, { roll => "wohn.rollTerrR", dir=>"W", typ=>"n", temp=>"tempWohn", tempS=>21, win=>"wohn.fenTerr", state=>STATE_IDLE, },
{ roll => "wohn.rollTerrL", dir=>"W", typ=>"n", temp=>"tempWohn", tempS=>21, win=>"", state=>STATE_IDLE, }, { roll => "wohn.rollTerrL", dir=>"W", typ=>"n", temp=>"tempWohn", tempS=>21, win=>"", state=>STATE_IDLE, },
@@ -31,13 +30,7 @@ my @rolls = (
{ roll => "schlaf.rollStr", dir=>"O", typ=>"s", temp=>"tempSchlaf", tempS=>18, win=>"wohn.fenTerr", state=>STATE_IDLE, }, { roll => "schlaf.rollStr", dir=>"O", typ=>"s", temp=>"tempSchlaf", tempS=>18, win=>"wohn.fenTerr", state=>STATE_IDLE, },
); );
#my %rollStates = ( # in dieser Reihenfolge fahren
# lastWeatherCode => 0,
# lastWaetherCodeTime => 0,
# timerNum => 0,
# );
my @rollHoch = ( my @rollHoch = (
"bad.roll", "bad.roll",
"arb.rollWeg", "arb.rollWeg",
@@ -50,7 +43,6 @@ my @rollHoch = (
"wohn.rollTerrR" "wohn.rollTerrR"
); );
my @rollRunter = ( my @rollRunter = (
"wohn.rollTerrR", "wohn.rollTerrR",
"wohn.rollTerrL", "wohn.rollTerrL",
@@ -65,6 +57,7 @@ my @rollRunter = (
"schlaf.rollStr" "schlaf.rollStr"
); );
# Bei Weckzeit auf Schlitz
my @rollWeck = ( my @rollWeck = (
"schlaf.rollWeg", "schlaf.rollWeg",
"schlaf.rollStr" "schlaf.rollStr"
@@ -84,15 +77,21 @@ my @rollArb = (
"arb.rollWeg", "arb.rollWeg",
); );
#------------------------------------------
my $tc=0; my $tc=0;
my @blocktime=localtime; my @blocktime=localtime;
my $blocktimerRunning=0; my $blocktimerRunning=0;
sub myfhem($) { #------------------------------------------
sub myfhemcmd($) {
#Log 1, "@_"; #Log 1, "@_";
fhem("@_"); fhem("@_");
} }
#------------------------------------------
sub RollCheckSkip($$) sub RollCheckSkip($$)
{ {
my($cmd, $roll) = @_; my($cmd, $roll) = @_;
@@ -107,14 +106,18 @@ sub RollCheckSkip($$)
return $skip return $skip
} }
#------------------------------------------
sub RollCmd($$$) sub RollCmd($$$)
{ {
my ($cmd, $roll, $delay) = @_; my ($cmd, $roll, $delay) = @_;
if(RollCheckSkip($cmd, $roll)==0) { if(RollCheckSkip($cmd, $roll)==0) {
myfhem ("define r".int(rand(10000))." at +".$delay." set ".$roll." ".$cmd); myfhemcmd ("define r".int(rand(10000))." at +".$delay." set ".$roll." ".$cmd);
} }
} }
#------------------------------------------
sub RollGroup(\@$$) sub RollGroup(\@$$)
{ {
my ($rolls, $cmd, $delay) = @_; my ($rolls, $cmd, $delay) = @_;
@@ -141,21 +144,22 @@ sub RollGroup(\@$$)
} }
} }
if($skip==0) { if($skip==0) {
myfhem ("define r".$i." at +".$t." set ".$r." ".$cmd); myfhemcmd ("define r".$i." at +".$t." set ".$r." ".$cmd);
} }
$i=$i+1; $i=$i+1;
} }
} }
#------------------------------------------
sub RollTest() { sub RollTest() {
&RollGroup(\@rollTest, "closes", 1); &RollGroup(\@rollTest, "closes", 1);
} }
#------------------------------------------
sub RollAll($$) { sub RollAll($$) {
# Log 1, "################";
my ($cmd, $delay) = @_; my ($cmd, $delay) = @_;
# Log 1, "c:$cmd d:$delay";
# &RollGroup(\@rollAlle, $cmd, $delay);
if($cmd eq "closes") { if($cmd eq "closes") {
&RollGroup(\@rollRunter, $cmd,$delay); &RollGroup(\@rollRunter, $cmd,$delay);
} }
@@ -164,20 +168,23 @@ sub RollAll($$) {
} }
} }
#------------------------------------------
sub RollWeck($) { sub RollWeck($) {
my ($delay) = @_; my ($delay) = @_;
&RollGroup(\@rollWeck, "up 5", $delay); &RollGroup(\@rollWeck, "up 5", $delay);
myfhem("define weckwachat at +03:00:00 set wach 1"); myfhemcmd ("define weckwachat at +03:00:00 set wach 1");
# myfhem("set wach 1"); # myfhem("set wach 1");
} }
#------------------------------------------ #------------------------------------------
sub Dbg($) { sub Dbg($) {
Log 1,$_[0]; Log3 "Roll", 1, $_[0];
} }
#------------------------------------------
sub RollRunterSchlitz($;$) { sub RollRunterSchlitz($;$) {
my ($roll, $delay) = @_; my ($roll, $delay) = @_;
$delay ||= 0; $delay ||= 0;
@@ -189,10 +196,12 @@ sub RollRunterSchlitz($;$) {
my $i=$tc++; my $i=$tc++;
Dbg("RollChg: $roll - runter schlitz($delay)\n"); Dbg("RollChg: $roll - runter schlitz($delay)\n");
myfhem("define r".$i." at +".$t." set ".$roll." closes"); myfhemcmd("define r".$i." at +".$t." set ".$roll." closes");
myfhem("define ru".$i." at +".$t2." set ".$roll." up 6"); myfhemcmd("define ru".$i." at +".$t2." set ".$roll." up 6");
} }
#------------------------------------------
sub RollHoch($;$) { sub RollHoch($;$) {
my ($roll, $delay) = @_; my ($roll, $delay) = @_;
$delay ||= 0; $delay ||= 0;
@@ -202,9 +211,11 @@ sub RollHoch($;$) {
my $i=$tc++; my $i=$tc++;
Dbg("RollChg: $roll - hoch($delay)\n"); Dbg("RollChg: $roll - hoch($delay)\n");
myfhem("define r".$i." at +".$t." set ".$roll." opens"); myfhemcmd("define r".$i." at +".$t." set ".$roll." opens");
} }
#------------------------------------------
sub RollRunter($;$) { sub RollRunter($;$) {
my ($roll, $delay) = @_; my ($roll, $delay) = @_;
$delay ||= 0; $delay ||= 0;
@@ -214,9 +225,11 @@ sub RollRunter($;$) {
my $i=$tc++; my $i=$tc++;
Dbg("RollChg: $roll - runter($delay)\n"); Dbg("RollChg: $roll - runter($delay)\n");
myfhem("define r".$i." at +".$t." set ".$roll." closes"); myfhemcmd("define r".$i." at +".$t." set ".$roll." closes");
} }
#------------------------------------------
sub IsSunny($) { sub IsSunny($) {
my ($wett)=@_; my ($wett)=@_;
if($wett==30 || $wett==31 || $wett==32 || $wett==33 || $wett==34 || $wett==35 || $wett==36) { # sonnig, heiter, heiss if($wett==30 || $wett==31 || $wett==32 || $wett==33 || $wett==34 || $wett==35 || $wett==36) { # sonnig, heiter, heiss
@@ -225,6 +238,8 @@ sub IsSunny($) {
return(0); return(0);
} }
#------------------------------------------
sub IsLater($) { sub IsLater($) {
my($t)=@_; my($t)=@_;
#Dbg("Islater:$t"); #Dbg("Islater:$t");
@@ -236,7 +251,7 @@ sub IsLater($) {
return(0); return(0);
} }
#------------------------------------------
# Nach dem Wechsel auf !sonne noch 2Std warten # Nach dem Wechsel auf !sonne noch 2Std warten
sub IsWetterSonneWait($) { sub IsWetterSonneWait($) {
@@ -268,6 +283,8 @@ sub IsWetterSonneWait($) {
return(0); return(0);
} }
#------------------------------------------
sub RollCheck() { sub RollCheck() {
#Dbg("RollCheck\n"); #Dbg("RollCheck\n");
my $temp=20; my $temp=20;
@@ -384,6 +401,7 @@ sub RollCheck() {
} # for } # for
} }
#------------------------------------------
sub Untoggle($) { sub Untoggle($) {
my ($obj) = @_; my ($obj) = @_;