Sonnenschutz mit Rolladen aus Wetterdaten

Begonnen von bugster_de, 30 Juni 2013, 10:34:35

Vorheriges Thema - Nächstes Thema

Loredo

#15
Das Modul Twilight stellt ein Reading für den aktuellen Sonnenstand bereit. Daraus kann man natürlich den Sonneneinfall entsprechend ableiten und ich schalte im Sommer meine Rollläden danach ;-)


Finde ich besser als das nach fixen Timern zu machen.
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

strauch

Ich plane zur Zeit ein ganz ähnliches Modul. Mit einem FS20 SD habe ich einen Helligkeitssensor, wobei ich den irgendwann gegen ein Arduino tauschen werde, da mir ein Arduino einen Helligkeitswert liefern kann und nicht einfach schaltet.

Ich möchte das ganze aber auch noch Abhängig von der Außen und der Innentemperatur machen. So möchte ich im Winter erst, das der Rolladen runter geht wenn die Rauminnentemperatur über 21°C steigt, ist dies nicht der Fall soll der Rolladen offen bleiben. Da ich ja die Sonnenenergie nutzen möchte. Vielleicht ist die Idee für den ein oder anderen auch noch Interessant.

Noch fehlen mir die Rolladenaktoren, sind bei mir mal mindestens 130€ und es gibt noch so viele andere Interessante Dinge :-).
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

Tobias

Hi Strauch,
gut das ich diesen Thread hier gefunden habe, denn die nächsten Tage wollte ich so ein Modul anfangen. Soetwas gibt es ja noch nicht wirklich...
Auch meine Idee war die Tageshächsttemperatur über das Weather-Modul, die Sonneneinfallswinkel über Twilight, ISt Temperaturen über Außen- und Innensensor sowie die aktuelle Stärke der Sonneinstrahlung über einen Anderen Sonsor (Ich habe einen Sensor der mir die Solare Einstrahlung misst).
Rolladenaktoren sind bei mir von Homatic.

Wenn sich das Modul für den Tag einmal entschieden hat zu beschatten, dann sollen die Rolläden entsprechend dem Sonneneinfallswinkel immer soweit herunterfahren das gerade so die Sonne nicht hereinscheint, aber trotzdem maximalen Lichteinfall zulässt.
Ich bin gespannt auf deinen ersten Entwurf...
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

strauch

Hi, ich hab da ein verschreiber drin. Ein Modul wollte ich nicht programmieren und kann ich zur Zeit leider auch nicht. Weiss nicht was mich da geritten hat, sorry.
Da ich eh nicht alle Rolläden elektrisch habe und ein paar Fenster auch im Schatten sind geht es vor allem um 3 Fenster alle Richtung Süden und so reicht mir wenn der fs20 SD meldet Sonne da und der Innenraum sagt uh über 20°C, das geht mit einem notify und ein paar if schleifen. Ob das draussen nun 27° oder 5° sind ändert nichts an der Entscheidung der Rolläden herunter zu fahren. Ausser ich bin nicht da dann soll die Wärme gespeichert werden und der Rolläden bleibt oben. Das geht auch mit nem notify. Ein Modul wäre eleganter meine Fähigkeiten beschränken sich auf etwas perl im notify und in und elsif schleifen.

Gesendet von meinem Nexus 4 mit Tapatalk

FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

Tobias

ok, also habe ich nicht umsonst ein neues Modul angefangen.... bin gerade mit meinem Text2Speech Modul fertig und kann mich jetzt diesem wittmen...
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Thoffi1978

Hallo Ihr,
ich habe nun schon viel gelesen und probiert. Gibt es die Möglichkeit ganze Gruppen wie "Alle_Jalousien_Seite" zu steuern anstatt einzelne "Jalousie_Wohnzimmer"?

Vielen Dank
Torsten

Tobias

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Thoffi1978

Vielen Dank für die schnelle Antwort,

man muss aber immer die Jalousien einzeln mit angeben? Wenn ich in fhem die Jalousie einer Gruppe zuordne funktioniert dies nicht so.
Wie müßte ich dies ändern damit die Gruppe geschalten wird?
Jalousien_Seite ist die Gruppe wo 3 Jalousien eingefügt sind. Die sollen sich "bewegen"
Müßte ich structure group Jalousien_Seite benutzen?
# here we need to set the respective timers
# Beispielzimmer Rolladen auf 40% setzen
fhem( "define Jalousien_Seite_sun_auto at 11:50:03 set Jalousien_Seite 65" );
fhem( "attr Jalousien_Seite_sun_auto room _Zeit" );
fhem( "attr Jalousien_Seite_sun_auto group Jalousien_Seite,Sonnenschutz" );
# Beispielzimmer Rolladen wieder �ffnen
fhem( "define Jalousien_Seite_sun_auto at 17:30:03 set Jalousien_Seite on" );
fhem( "attr Jalousien_Seite_sun_auto room _Zeit" );
fhem( "attr Jalousien_Seite_sun_auto group Jalousien_Seite,Aufmachen" );


Auszug aus 99myutils

Shadow3561

Hallo,

Der Sonnenschutz funktioniert bei mir tadellos.
Habe versucht einen Schalter zu integrieren damit ich den Sonnenschutz manuell ein und aus schalten kann. Dies klappt jedoch nicht.

Evtl kann mir ja jemand helfen. Anbei meine Dateien


Beschattung:

#Yahoo Wetter fuer Ulm
define Ulm_Wetter Weather 636991 3600 de
attr Ulm_Wetter alias Wetter für Automatik
attr Ulm_Wetter group Wetter
attr Ulm_Wetter room Rollo autom. Einst.


define Beschattung_auto dummy
attr Beschattung_auto room Rollo autom. Einst.
attr Beschattung_auto setList state:aktiv,passiv
attr Beschattung_auto webCmd state



# ****************************************************************************
#   Variablen f�r Wetter in FHEM
# ****************************************************************************
define Aussentemperatur dummy
attr Aussentemperatur eventMap /on:Activ/off:Inactiv/
attr Aussentemperatur group FHEM_Wetter,Info_Temp
attr Aussentemperatur room Rollo autom. Einst.

define Luftfeuchtigkeit dummy
attr Luftfeuchtigkeit eventMap /on:Activ/off:Inactiv/
attr Luftfeuchtigkeit group FHEM_Wetter
attr Luftfeuchtigkeit room Rollo autom. Einst.

define Windgeschwindigkeit dummy
attr Windgeschwindigkeit eventMap /on:Activ/off:Inactiv/
attr Windgeschwindigkeit group FHEM_Wetter
attr Windgeschwindigkeit room Rollo autom. Einst.

define Windrichtung dummy
attr Windrichtung eventMap /on:Activ/off:Inactiv/
attr Windrichtung group FHEM_Wetter
attr Windrichtung room Rollo autom. Einst.

define Sicht dummy
attr Sicht eventMap /on:Activ/off:Inactiv/
attr Sicht group FHEM_Wetter
attr Sicht room Rollo autom. Einst.

define Windchill dummy
attr Windchill eventMap /on:Activ/off:Inactiv/
attr Windchill group FHEM_Wetter
attr Windchill room Rollo autom. Einst.

define Luftdruck dummy
attr Luftdruck eventMap /on:Activ/off:Inactiv/
attr Luftdruck group FHEM_Wetter
attr Luftdruck room Rollo autom. Einst.

define Tageshoechsttemperatur dummy
attr Tageshoechsttemperatur eventMap /on:Activ/off:Inactiv/
attr Tageshoechsttemperatur group FHEM_Wetter
attr Tageshoechsttemperatur room Rollo autom. Einst.

define Tagestiefsttemperatur dummy
attr Tagestiefsttemperatur eventMap /on:Activ/off:Inactiv/
attr Tagestiefsttemperatur group FHEM_Wetter
attr Tagestiefsttemperatur room Rollo autom. Einst.



# ****************************************************************************


# einen Timer um die Daten in FHEM Variablen zu uebertragen
define FHEM_Wetter_Update at +*01:00:00 { Extract_Weather();; }
attr FHEM_Wetter_Update room Rollo autom. Einst.

# ein Dummy Schalter, um die Funktion manuell zu triggern und den Zustand zu sehen
define TestWeather dummy
attr TestWeather eventMap on:off
attr TestWeather room Rollo autom. Einst.
attr TestWeather webCmd on:off
define DummyTestWeather notify TestWeather:.* { Extract_Weather( );; }

# ****************************************************************************
#  Sonnenschutz
# ****************************************************************************
define CheckSonnenschutz at +*01:00:00 { Decide_Sonnenschutz( );; }
attr CheckSonnenschutz group Szenen
attr CheckSonnenschutz room Rollo autom. Einst.

99_myUtils

# #########################################################################
#  Global Variables and Defines
# #########################################################################
use constant { true => 1, false => 0 };
use constant { TRUE => 1, FALSE => 0 };
use constant { on => 1, off => 0 };
use constant { ON => 1, OFF => 0 };

my $myUtils_debug = false;


# #########################################################################
#  Init routine
# #########################################################################
sub myUtils_Initialize($$) {
    my ($hash) = @_;
   
    if( $myUtils_debug eq true ) {
   fhem( "set myUtilsDebug true" );
    } else {
   fhem( "set myUtilsDebug false" );
    }
}


# ------------------------------------------------------------------------
#  Function to turn the Debug on or off
#  Usage: ($success) = myUtils_Set_Debug( );
# ------------------------------------------------------------------------
sub myUtils_Set_Debug( ) {
    my $tmp_state = "";

    $tmp_state = $value{myUtilsDebug};

    Log 1, "myUtils_Set_Debug: Debug : .." . $tmp_state . "..";

    if( $tmp_state eq "true" ) {
   $myUtils_debug = true;
   Log 1, "myUtils_Set_Debug: Debugging eingeschaltet.";
    } else {
   $myUtils_debug = false;
   Log 1, "myUtils_Set_Debug: Debugging ausgeschaltet.";
    }

    return( true );
}


# #########################################################################
#  Wetterdatenauswertung
# #########################################################################

# **********************************************************************
#  Details aus Yahoo Wetter extrahieren
# **********************************************************************
sub Extract_Weather( ) {
    my $buf = ReadingsVal( "MeinWetter", "temp_c", 20 );
    fhem( "set Aussentemperatur $buf" );

    $buf = ReadingsVal( "MeinWetter", "humidity", 20 );
    fhem( "set Luftfeuchtigkeit $buf" );

    $buf = ReadingsVal( "MeinWetter", "wind_speed", 20 );
    fhem( "set Windgeschwindigkeit $buf" );

    $buf = ReadingsVal( "MeinWetter", "visibility", 20 );
    fhem( "set Sicht $buf" );

    $buf = ReadingsVal( "MeinWetter", "wind_direction", 20 );
    fhem( "set Windrichtung $buf" );

    $buf = ReadingsVal( "MeinWetter", "wind_chill", 20 );
    fhem( "set Windchill $buf" );

    $buf = ReadingsVal( "MeinWetter", "pressure", 20 );
    fhem( "set Luftdruck $buf" );

    $buf = ReadingsVal( "MeinWetter", "fc1_high_c", 20 );
    fhem( "set Tageshoechsttemperatur $buf" );

    $buf = ReadingsVal( "MeinWetter", "fc1_low_c", 20 );
    fhem( "set Tagestiefsttemperatur $buf" );

    return;
}

# **********************************************************************
#  Entscheidung treffen, ob Sonnenschutz aktiv sein

sub Decide_Sonnenschutz( ) {
    my $maxtemp = ReadingsVal( "Temperatur", "State", 20 );
    my $curtemp = ReadingsVal( "Aussentemperatur", "State", 20 );
    my $beschattung = ReadingsVal( "Beschattung_auto", "State", 20 );

   
    if( ( $maxtemp >=19 ) || ( $curtemp >=22 ) || (Value("Beschattung_auto") eq "aktiv")) {
   if( $myUtils_debug == true ) {
       Log 1, "Decide_Sonnenschutz: Max: $maxtemp C, Cur: $curtemp ";
   }
   # here we need to set the respective timers
   # Beispielzimmer Rolladen auf 40% setzen
   fhem( "define RolladenGarten_sun_auto_zu at 12:55:00 set EIB_Rolladen_Garten value 50" );
   fhem( "attr RolladenGarten_sun_auto_zu room Rollo autom. Einst." );
        fhem( "attr RolladenGarten_sun_auto_zu group nächste Aktion" );
        fhem( "define RolladenSofa_sun_auto_zu at 12:30:03 set EIB_2000 value 50" );
   fhem( "attr RolladenSofa_sun_auto_zu room Rollo autom. Einst." );
        fhem( "attr RolladenSofa_sun_auto_zu group nächste Aktion" );
        fhem( "define RolladenKueche_sun_auto_zu at 08:00:03 set EIB_Rolladen_Kueche value 50" );
   fhem( "attr RolladenKueche_sun_auto_zu room Rollo autom. Einst." );
        fhem( "attr RolladenKueche_sun_auto_zu group nächste Aktion" );
   # Beispielzimmer Rolladen wieder öffnen
   fhem( "define RolladenGarten_sun_auto_auf at 19:57:03 set EIB_Rolladen_Garten value 10" );
   fhem( "attr RolladenGarten_sun_auto_auf room Rollo autom. Einst." );
        fhem( "attr RolladenGarten_sun_auto_auf group nächste Aktion" );
        fhem( "define RolladenSofa_sun_auto_auf at 19:15:03 set EIB_2000 value 10" );
   fhem( "attr RolladenSofa_sun_auto_auf room Rollo autom. Einst." );
        fhem( "attr RolladenSofa_sun_auto_auf group nächste Aktion" );
        fhem( "define RolladenKueche_sun_auto_auf at 10:30:03 set EIB_Rolladen_Garten value 20" );
   fhem( "attr RolladenKueche_sun_auto_auf room Rollo autom. Einst." );
        fhem( "attr RolladenKueche_sun_auto_auf group nächste Aktion" );

   
}

}


Evtl wäre ja auch ein Einbezug von den conditions möglich.
Man braucht ja keine Beschattung wenn es 20° c warm ist und die Sonne nicht scheint.

Mfg