Homematic-Rollladensteuerung mit "sunset", wo ist der Fehler .

Begonnen von Newbie, 11 August 2013, 20:30:52

Vorheriges Thema - Nächstes Thema

Newbie

Ich hab mir hier aus dem Forum einige Codes zusammengetragen und bis vor ein paar Tagen lief auch alles super. Durch ein Unwetter hat sich die Fritzbox und die externe Festplatte verabschiedet. Also keine Sicherung der fhem.cfg und 99_myUtile.pm mehr.

Bis auf die Rolladensteuerung in der Küche geht soweit alles wieder, aber der folgende Code funtioniert nicht.
Ziel war eigentlich das der Rollladen Rollo2ku um 14:30 auf 45% runterfährt und 50min vor Sonnenuntergang wieder hoch.

Gestern ging der Rollladen frühmorgens um 05:12 runter und heute um 02:haste nicht gesehen, Zeiten also knapp verpaßt und blieb bis nach 23:00Uhr unten. Für ein paar Tipps wo die Fehler sind, wär ich mehr als dankbar.

fhem.cfg

define RolladensteuerungK notify Wetter:condition.* {\
Sonnenschutz($month,$hour,$min,$sec);;\
}


99_myUtils.pm

sub
Sonnenschutz($$$$){
# Parameter: $month, $hour, $min, $sec
 my $month = shift;
 my $hour = shift;
 my $min = shift;
 my $sec = shift;
 my $hm = sprintf("%%02d:%%02d:%%02d",$hour,$min,$sec);
 my $Temp = ReadingsVal("Wetter","temperature","999");
 my $Sonne = ReadingsVal("Wetter","condition","kein Wert");
 Log 3, "Readingswerte:$month,$hour,$min,$sec,$Temp,$Sonne";
 
 if (($Temp==999) || ($Sonne eq "kein Wert")){
        Log 3, "Yahoo-Wetter nicht erreichbar oder kein Wert geliefert";
   return;
}
      
if (($month >= 5) && ($month <= 9)){
        Log 3, "Beschattungssteuerung Küche aktiv";

    if (($hm ge "14:30:00") || ($hm le (sunset_rel(-2400)))){
   
        if (($Temp >= 10) && (Value("Rollo2ku") ne "45")){

          if (($Sonne eq "teilweise wolkig") || ($Sonne eq "überwiegend wolkig") || ($Sonne eq "wolkig") || ($Sonne eq "teilweise sonnig") || ($Sonne eq "überwiegend sonnig") || ($Sonne eq "sonnig")){
               Log 3, "Beschattungsposition wird angefahren ...";
          fhem("set Rollo2ku 45");
              if (defined($defs{Schoenwetterk}))    {fhem("delete Schoenwetterk")};
                   Log 3, "Rolladen öffnet 50min vor Sonnenuntergang";
                   fhem("define Schoenwetterk at +{sunset_rel(-3000)} set Rollo2ku on");
               
         }elsif(Value("Rollo2ku") ne "on"){
             #if (defined($defs{Schoenwetterk}))     {fhem("delete Schoenwetterk")};
              Log 3, "nur Beschattungsposition wird aufgehoben ...";
              fhem("set Rollo2ku on");
    }
   }
  }
 }
}


mfg Jens
fhem-6.1 (configDB+DbLog)  auf ODROID-XU4

bugster_de

Hi,

und was steht im Logfile als Resultat aus dieser Zeile Log 3, "Readingswerte:$month,$hour,$min,$sec,$Temp,$Sonne";

Wenn der Rolladen zu allen möglichen, lustigen Zeiten hoch und runter fährt würde ich mir mal anschauen, was denn für Zeiten übergeben werden. Wenn ich das richtig sehe, dann wird der notify ja aufgerufen, sobald sich an der Wetter Condition etwas ändert und dann die jeweils aktuelle Uhrzeit übergeben. Sprich wenn sich halt um 05:12 bei Yahoo die Wettervorhersage ändert dann wird dein notify angesteuert und der Rolladen auf 45 gesetzt.
Geschickter wäre es aus meiner Sicht, die Wettervorhersage mit einem Timer zu überprüfen. Oder wenn du es partout so machen willst wie unten mit dem notify, dann innerhalb von Perl einen Timer für den Rolladen definieren.

ich mach das bei mir zu Hause so:
grundprinzip: alle Rolläden fahren Timer gesteuert abends runter und morgens rauf (Status Nacht oder Status Tag). Der Sonnenschutz überschreibt den Tag Status für diesen einen Tag entsprechend der Wettervorhersage und stellt abends dann den alten Zustand wieder her.
ich haben einen festen Timer um 08:15h, der sich die aktuellen Temperaturen und die Wettervorhersage für den Tag anschaut.
Auf dieser Basis definiere ich mir dann für die Rolläden einen Timer, der sie zu gegebener Uhrzeit schliesst (entlang dem Sonnenstand, denn morgens um 9:00h muss der Rolladen nach Westen ja nicht zu sein).
Da die Rolläden fix um 08:30h aufgehen sollen, lösche ich diesen Öffnungstimer (sprich er geht nicht auf sondern fährt z.B. gleich in die Sonnenschutzposition)
Abschliessend gibt es dann noch einen neuen Timer um 17:00h, der die festen Öffnungszeiten (08:30h) für den nächsten Tag wieder herstellt.

Newbie

Hallo bugster_de,

Zitat2013.08.13 21:29:55.778 3: Readingswerte:8,21,29,55,14,teilweise wolkig


die Beschattungssteuerung soll ja lt. Code nur zw. 14:30:00 und Sonnenuntergang funktionieren.
Sinn und Zweck ist die Beschattung der Orchideen auf der Fensterbank.
Im Wohnzimmer funktioniert der Code hervorragend (feste Zeiten zw. 13:00 und 18:00), Fenster ist Südseite.
In der Küche ist das Fenster zur Westseite ausgerichtet, deshalb der Gedanke mit der Sunset-Funktion.
Wie schon geschrieben hat das ja vor dem Crach funtioniert.


fhem-6.1 (configDB+DbLog)  auf ODROID-XU4