Hallo,
ich bin neu hier im Forum und habe bei der Rolladenautomatisierung folgendes Problem das die 99_utilstest_azimuth nicht zwischen 12 und 7 Uhr morgens die Beschattung abschaltet, hier die Datei:
package main;
use strict;
use warnings;
use POSIX;
sub
utilstest_azimuth_Initialize($$)
{
my ($hash) = @_;
}
sub
Wetterregelung_Sonne_Ost($){
my ($Aktorname) = @_;
my $now = time();
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($now);
my $hm = sprintf("%%02d:%%02d", $hour, $min);
if ( $hm gt "07:00" && $hm lt "12:00") {
if (Value("Beschattung_Sonne") eq "aktiv"){
my $azimuth= ReadingsVal("YahooWetter","azimuth","999");
my $Sonne= ReadingsVal("YahooWetter","condition","kein Wert");
if (($azimuth > 150)){
fhem ("set $Aktorname 100");
Log 1,"Rolladen wird geöffnet Beschattung nicht mehr nötig.";
} elsif (($azimuth >= 70) && (($Sonne eq "sonnig") || ($Sonne eq "teilweise wolkig") || ($Sonne eq "überwiegend wolkig")) && (Value("$Aktorname")!=1)){
fhem("set $Aktorname 20");
Log 1, "Beschattungsposition wird angefahren.";
} elsif (($azimuth==999) || ($Sonne eq "kein Wert")) {
Log 1, "Yahoo-Wetter nicht erreichbar oder kein Wert geliefert, $azimuth, $Sonne,";
}
}
}
}
1;
aufgerufen wird sie mit der azimuth.cfg:
# hier Sonne
define Beschattung_Sonne dummy
attr Beschattung_Sonne room Buero
attr Beschattung_Sonne setList state:aktiv,passiv
define Beschattung_Buero_Sonne notify YahooWetter {Wetterregelung_Sonne_Ost("CUL_HM_blindActuator_1963DA")}
attr Beschattung_Buero_Sonne room Buero
define Beschattung_xxx_Sonne notify YahooWetter {Wetterregelung_Sonne_Ost("CUL_HM_blindActuator_1B7128")}
attr Beschattung_Jan_Sonne room Zimmer_Jan
und diese ist in der fhem.cfg mit include eingebunden. Heute abend bekam ich wieder die Meldung; Rolladen wird geöffnet Beschattung nicht mehr nötig.
Der Rolladen ging daraufhin hoch.
Bin für jeden Hinweis dankbar.
Danke.
Warum nutzt du nicht das http://fhem.de/commandref_DE.html#Twilight Modul?
eine zeile :
define kueche_azi_rollo notify myTwilight:azimuth.* IF ([myTwilight:azimuth] gt "170" and [myTwilight:azimuth] lt "273") (set testrollo on) ELSE (set testrollo off)
Zitat von: juppzupp am 28 August 2014, 15:04:34
eine zeile :
define kueche_azi_rollo notify myTwilight:azimuth.* IF ([myTwilight:azimuth] gt "170" and [myTwilight:azimuth] lt "273") (set testrollo on) ELSE (set testrollo off)
Hier wird allerdings alle paar Minuten (bei jedem Senden des Twilight-Moduls) unnötig der Rollladen geschaltet. Dann schon besser als Einzeiler so:
define kueche_azi_rollo DOIF ([myTwilight:azimuth] > 170 and [myTwilight:azimuth] < 273) (set testrollo on) DOELSE (set testrollo off)
So wird jeweils nur einmal on bzw. off geschaltet.
Edit: Man kann das Ganze auch leicht mit Zeitvorgaben verknüpften z. B.:
define kueche_azi_rollo DOIF ([myTwilight:azimuth] > 170 and [myTwilight:azimuth] < 273 and [07:00-12:00]) (set testrollo on) DOELSE (set testrollo off)
Gruß
Damian
Jein ;-)
HM jalousie Aktoren als Voraussetzung:
Bei on/off (bzw. 0/100) würde jedes mal gesendet werden.
Bei werten dazwischen nicht.
Filterstate im device müsste auch on/off filtern.
Aber jetzt, wo DOIF eingecheckt ist, muss man (ich) sich(mich) wohl damit auseinandersetzen.
Tolle Erweiterung, ein test damit läuft schon!(entprellen eines Regensensor)