Rolladensteuerung mit Azimuth und Zeit

Begonnen von holfmink, 18 August 2014, 21:16:27

Vorheriges Thema - Nächstes Thema

holfmink

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.

Loredo

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

juppzupp

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)

Damian

#3
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



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

juppzupp

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)