Hi Leute,
das hier ist sicherlich keine Raketenwissenschaft, aber vielleicht interessant für den einen oder anderen.
Anwendungsfall
abhängig von der Wettervorhersage für den Tag soll entschieden werden, ob die Rolläden zum Sonnenschutz geschlossen werden sollen. Wenn die Wettervorhersage gut ist, dann sollen die Rolläden zeitgesteuert entlang dem Sonneneinfall in das jeweilige Zimmer geschlossen und später wieder geöffnet werden.
Umsetzung
- mittels Yahoo Wetter werden die aktuellen Daten sowie die Vorhersage für den Tag aus dem Netz geholt
- die internen Werte (Readings) werden einmal pro Stunde auf FHEM Variablen kopiert
- auf Basis dieser Werte wird dann mit einem Timer (at) morgens um 8:15h entschieden, ob der Sonnenschutz für dan Tag aktiv sein soll. Wenn er aktiv ist, werden Timer (at) für die jeweiligen Rolläden gesetzt, um sie zu einer bestimmten Uhrzeit zu zu machen und dann abends wieder aufzumachen
- Zusätzlich sind zwei Variablen angelegt, mit der man den Wetterupdate manuell triggern kann sowie die Ausgabe in die Logdatei Ein- bzw. Ausschalten kann
Diese Umsetzung ist sicherlich verbesserungswürdig. Man könnte z.B. auf Basis von echten Sensoren für Temperatur und Sonneneinfall die Entscheidung treffen. Da diese Sensoren bei mir noch nicht vorhanden sind respektive sich nicht in FHEM einbinden lassen, musste ich mir erstmal per Yahoo Wetter behelfen.
Auch das Kopieren auf FHEM Variablen ist vielleicht etwas Overkill, aber auf dieser Basis kann man auch die Werte sehr schön einzeln im Floorplan anzeigen und Icons für die Wettervorhersage einbinden.
Im Anhang finden sich die Funktionen, die in die 99_myUtils.pm sowie die fhem.cfg rein müssen.
Viel Spß an diejenigen, die das gebrauchen können.
Da ich noch Anfänger bin funktioniert das leider nicht bei mir, da ich etwas bestimmt falsch mache.
Die Stadt(Name) "Ulm" habe ich in meine umbenannt aber es funktioniert nicht.
Also die Fragen:
- wie kann man die Stadt ändern bei
Readings steht
city
Ulm, Germany 2013-07-04 22:05:57
INTERVAL 10
LANG en
LOCATION 20159248
NAME Leipzig_Wetter
NR 77
STATE T: 19 H: 68 W: 8
TYPE Weather
UNITS c
- kann statt en ----- German einstellen
- und wo stelle ich mein Jalousien ein oder wo gebe ich sie an????
Kann mir jemand helfen...
Hallo,
das Problem liegt an dem Eintrag in der cfg. Dort wurde zwar der Namen Ulm eingetragen, jedoch nicht der zugehörige Yahoo-Code geändert.
#Yahoo Wetter fuer Ulm
define Ulm_Wetter Weather 20159248 10
Hier muss der Code von Ulm eingetragen werden.
http://de.wetter.yahoo.com/deutschland/baden-w%C3%BCrttemberg/ulm-12837553/
Somit sollte statt der 20159248 die 12837553 eingetragen werden.
Gruß,
TinoB
Vielen vielen Dank schon mal das mit der richtigen Stadt funktioniert schon mal.
Zwar noch kein German bei"Lang"
DEF 20175388
INTERVAL 3600
LANG en
LOCATION 20175388 aber Ok.
Wo oder wie kann ich jetzt meine Jalousie angeben, wenn das meine Jalousie ist, die geschalten werden soll-->
attr JalousieMitte model fs20rsu
Hallo,
ach so, das hab ich ganz übersehen. Du musst hinter das Abfrageintervall noch ein de einfügen.
#Yahoo Wetter fuer Ulm
define Ulm_Wetter Weather 20159248 10 de
Das mit dem Einbinden weiß ich jetzt nicht. Möchtest Du es mit dem Modul von oben einbinden? Das habe ich mir nocht nicht angesehen. Muss ich später machen ich bin gerade unterwegs.
Gruß,
TinoB
Danke das mit den de funktioniert jetzt auch .
Ja, ich würde es mit dem Modul von oben einbinden.
Ich denke mal in der 99_myUtils.pm aber ich komme damit nicht klar.
Danke schon mal vorweg, es hat auch noch etwas zeit...
Hallo,
also, Du musst folgendes tun. Du kopiertst das von bugster bereitgestellte Modul in das FHEM Verzeichnis und lädst dieses mit "reload 99_myUtils.pm" Solltest Du im vorhanden bereits Einträge nutzen, dann mach Dir zuvor eine Kopie, damit diese dann nicht überspielt werden.
Als nächstes nimmst Du die fhem.cfg und nennst diese um in zum Beispiel Beschattung.cfg und kopierst diese ebenfalls in das FHEM Verzeichnis.
Trägst in Deine aktuelle fhem.cfg ein
include ./FHEM/Beschattung.cfg ein (Pfad zu FHEM muss Du gegebenenfalls noch anpassen)
und führst in der Kommandozeile ein rereadcfg aus. Dann ist alles geladen und Du siehst weitere Räume mit Gruppen (wenn es nicht schon solche Räume gibt).
Raum Haus
Raum _Zeit
Raum _Server
Es sollten dann ein paar Dummy Schalter/Button mit Zuständen zu sehen sein.
Damit kannst Du dann spielen, schaust Dir die Beschattung.cfg näher an und passt dies dann an Dein System an.
Weiterhin schaust Du Dir die 99_myUtils.pm näher an. Auch diese musst du an Dein System anpassen. Dort gibt es zum Beispiel Einträge wie:
my $buf = ReadingsVal( "Ulm_Wetter", "temp_c", 20 );
Dort musst Du die Bezeichnung Ulm_Wetter durch Deine Wetter Bezeichnung anpassen.
Gruß,
TinoB
Hallo,
auch wenn es keine "Raketentechnik" ist, kurze Nachfrage...
was steckt hinter dieser Zeile?
......fp_Erdgeschoss 50,100,1,
VG
Pit
Hi,
die Anzeige der Elements mit dem Attribut und die Platzierung sowie den Anzeigemodus des Devices im Floorplan insofern aktiviert.
Gruß Andreas
Hallo,
da ich immer noch Anfänger bin bekomme ich das nicht hin.
Kann mir jemand helfen mein System so anzupassen das das hier mit der Beschattung funktioniert?
Also wie ich die 99_myUtils.pm und die fhem.cfg an mein System anpasse?
Bitte bitte
Kleiner Tipp ohne 99_Utils auch auf Yahoobasis und nicht ganz so detailreich - aber es funzt:
Link (http://forum.fhem.de/index.php?topic=12548.msg78160#msg78160)
Uwe
Hallo,
Kannst du mir bitte mal etwas genauer erklären wofür die 4 Zahlen in der 99_myUtils genau stehen.
# **********************************************************************
# Entscheidung treffen, ob Sonnenschutz aktiv sein soll
# **********************************************************************
sub Decide_Sonnenschutz( ) {
my $maxtemp = ReadingsVal( "Tageshoechsttemperatur", "State", 25 );
my $curtemp = ReadingsVal( "Temperatur", "State", 25 );
if( ( $maxtemp ge "22" ) || ( $curtemp ge "22" ) ) {
if( $myUtils_debug == true ) {
Log 1, "Decide_Sonnenschutz: Max: $maxtemp C, Cur: $curtemp C";
VG
Ronny
Hi,
wieso 4 Zahlen? Ich sehe nur zwei ?
Tageshoechsttemperatur ist die aktuelle Wettervorhersage, wie sie aus Yahoo kommt. Sie gibt den Tageshöchstwert an
Temperatur ist die aktuelle Temperatur, die von einem Sensor gemessen und an FHEM gemeldet wird.
Wenn nun also um 8:30h morgens entweder die aktuelle Temperatur oder die Vorhersage größer als der Schwellwert sind, dann gehen die Rolläden nicht ganz auf sondern gehen in die Sonnenschutzposition.
Passt das?
Wer mehr Sensoren hat (z.B. Lichtsensor) kann das natürlich noch feiner Abstimmen
Ich habe die zwei 25iger gemeint und die zwei 22iger Zahlen. Kann es sein das sich die Zahlen in der 99_Utils nicht ändern?
Meine frage war eher wo sage ich ab welcher Temperatur in sonnenschutzposition angefahren wird und wo sage ich bei welcher Temperatur soll es abends wieder ganz auf gehen. Ich habe jedoch kein Temperatursensor zur Verfügung .
Hi,
die beiden Schwellwerte sind im Code fest progarmmiert (die 22). Wenn die Variable sein sollen, dann müsste das erst noch in den Code rein.
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.
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 :-).
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...
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
ok, also habe ich nicht umsonst ein neues Modul angefangen.... bin gerade mit meinem Text2Speech Modul fertig und kann mich jetzt diesem wittmen...
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
schau dir mal STRUCTURE an
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
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