Zitat von: münster am 26 Mai 2015, 17:53:59
Keiner eine Idee? ;)
Zitat von: münster am 27 Mai 2015, 16:34:21
Jo vielen Dank erst mal für die Hilfe.
Sollte ich es lieber mit "DOIF":
Anwendungsbeispiel: Beschattungssteuerung abhängig von der Temperatur. Der Rollladen soll runter von 11:00 Uhr bis Sonnenuntergang, wenn die Temperatur über 26 Grad ist. Temperaturschwankungen um 26 Grad werden mit Hilfe des wait-Attributes durch eine 15 minutige Verzögerung ausgeglichen.
define di_shutters DOIF ([sensor:temperature] > 26 and [11:00-{sunset_abs()}] (set shutters down) DOELSE (set shutters up)
attr di_shutters wait 900:900
oder mit "THRESHOLD"
Beispiele für Beschattungssteuerung:
Beispiel für einfache Beschattung im Sommer:
Zwischen 12:00 und 20:00 Uhr (potenzielle Sonnengefahr auf der Südseite) wird der Rolladen auf 30 % heruntergefahren,
wenn die Raumtemperatur über 23 Grad ist und die Sonne scheint. Im Winter, wenn die Zimmertemperatur niedriger ist (< 23),
will man von der Sonnenenergie profitieren und den Rollladen oben lassen.
define TH_shutter_room THRESHOLD T_room AND sun:state:on shutter_room|set @ 30||2
define di_shutter DOIF ([12:00-20:00]) (set TH_shutter desired 23) DOELSE (set TH_shutter desired 30)
realisieren ? Woher weiß FHEM beim THRESHOLD Beispiel das "sun:state:on" ist also die sonne scheint?
Gruß Volker
Zitat von: münster am 27 Mai 2015, 18:58:40
Das wäre meine erste Überlegung:
define Westseite_Haus_Beschattung DOIF ([sensor:temperature] > 26 and [09:00-12:00] (set Westseite_Haus 35) DOELSE (set Westseite_Haus on)
attr Westseite_Haus_Beschattung wait 900:900
muss ich hier noch etwas ändern?: "[sensor:temperature]" mein Thermometer heisst: "Thermometer_au"
Gruß Volker
ZitatDas aber nur wenn das Wetter das nötig macht. Die Wetterdaten beziehe ich von Yahoo mit dem Wettermodul.
Zitat von: t_enocean am 28 Mai 2015, 14:54:04
Ich habe zusätzlich auch openweather konfiguriert, bin aber mit den Vorhersagen nicht immer glücklich.
Sinnvoll finde ich aber auch das Twilight Modul. Ich steuere damit mit azimuth und elevation bei Sonne den Rolladen. Z.B. für den Rollladen im Westen sobald azimuth > 220 ist. Wenn im Winter die Sonne tief steht (elevation) geht der Rolladen nicht runter, da will man die Sonne ja im Zimmer haben.
define Sonne Twilight 47.xxxx 9.yyyy
attr Sonne stateFormat SA: sr <br/>SU: ss <br/>Winkel:azimuth °<br/> Höhe: elevation °
define DI_OG_R_Sz_Sonne_zu DOIF ([15:00-21:00] and [Sonne:azimuth] > 225 and [Sonne:elevation] < 50) (...)
Zitat von: Damian am 26 Mai 2015, 20:08:43Hallo Damian,
http://fhem.de/commandref_DE.html#DOIF
Dort nach Beschattungssteuerung suchen.
Gruß
Damian
Zitatdefine di_shutters DOIF ([sensor:temperature] > 26 and [11:00-{sunset_abs()}] (set shutters down) DOELSE (set shutters up)Also so:
Zitatdefine di_shutters DOIF ([sensor:temperature] > 26 and [11:00-{sunset_abs()}]) (set shutters down) DOELSE (set shutters up)
Zitat von: Otto123 am 01 Juli 2015, 12:27:57
Hallo Damian,
sag mal, fehlt in Deinem Beispiel in der Commandref nicht eine Klammer zu?Also so:
Bin ich zufällig drauf gestossen ...
Gruß Otto
Zitat von: Otto123 am 01 Juli 2015, 13:25:57
Grüße aus der Sonne
Otto
Zitat von: Damian am 01 Juli 2015, 15:35:18Hallo Damian,
Bei diesem Wetter ist Beschattung offenbar ein aktuelles Thema :)
define di_Beschattung1 DOIF ([8:15 - 12:00]) ((set RolloGZR,RolloB.*,RolloAK 35)) DOELSE ((set RolloGZR,RolloB.*,RolloAK auf))
define di_Beschattung2 DOIF ([10:00 - 14:00]) (set RolloKUL 40) DOELSE (set RolloKUL auf)
define di_Beschattung3 DOIF ([12:00 - 18:00]) ((set RolloKUR,RolloWZL,RolloAZLL 40)) DOELSE ((set RolloKUR,RolloWZL,RolloAZLL auf))
define di_Beschattung4 DOIF ([14:00 - 18:00]) (set RolloWZR 40) DOELSE (set RolloWZR auf)
([SensorAussen:temperature] > 20 and [8:15 - 12:00])
([SensorAussen:temperature] > 21 and [10:00 - 14:00])
([SensorAussen:temperature] > 23 and [12:00 - 18:00])
([SensorAussen:temperature] > 24 and [14:00 - 18:00])
(([myT:azimuth] > 120 and [myT:azimuth] < 234) <- Fenster Südseite
and [RolloSeite:state] eq "on" <- Zustandsabfrage des Rollos, "on" = oben
and [myT:elevation] > 40 <- Abfrage der Sonnenhöhe, im Winter ist der Wert max 20, verhindert auch das die Rollos sich nachts bewegen...
and [TempDiff:state:d] > 4 <- Wert wird in einem anderen DOIF ermittelt
and [Dach:temperature] > 25 <- Abfrage des Aussensenors
and [BeschattungEinAus:state] eq "on") <- Dummy mit dem ich entscheiden kann ob ich beschatten will oder nicht
(set RolloSeite off-for-timer
DOELSEIF ([myT:azimuth] > 234
and [RolloSeite:state] eq "off-for-timer 8"
and [BeschattungEinAus:state] eq "on")
(set RolloSeite on)
DOELSEIF ([RolloSeite:state] eq "off-for-timer 8"
and [TempDiff:state:d] < 4
and [BeschattungEinAus:state] eq "on")
(set RolloSeite on)
Zitat von: Bartimaus am 02 Juli 2015, 07:02:21Geht auch :) - Ich fand mal die Lösung mit dem HM-WDS30-OT2-SM (einen Fühler mit Alu/weiß umwickelt den andern schwarz) sehr pfiffig. Ist unterm Strich auch ein zusätzlicher Sensor, aber als Bausatz preiswerter. Und man muss nicht rechnen 8)
Ob bei uns zuhause die Sonne scheint, ermmitle ich durch den Differenzwert von zwei Aussensensoren. Einer ist im Schatten platziert, der andere "in der Sonne".
Ist der Wert > 4 Grad, gehe ich davon aus, das die Sonne scheint.
ZitatLast but not least sollte die Aussentemperatur über der Innentemperatur liegen. Nicht das ich im Winter die wärmende Sonne aussperre.Wobei das früh beim mir nicht zu realisieren ist. Um acht ist es draußen noch kälter aber ich will trotzdem vorbereitend beschatten. Ich nehme das ganze einfach nur im Sommer in Betrieb.
Zitat von: Bartimaus am 02 Juli 2015, 11:18:59Ich schließe die Rollos nur soweit (40 %) dass keine Sonne mehr reinscheint. Die Pflanzen haben dadurch genug Licht. Außerdem habe ich fast im gesamten Haus auch freie Sicht nach Norden.
Solange die Sonne bei uns nicht aufs Fenster scheint, brauch ich nicht zu beschatten. Da ist mir das einfallende Licht wichtiger.
Zitatand [BeschattungEinAus:state] eq "on") <- Dummy mit dem ich entscheiden kann ob ich beschatten will oder nichtDen muss ich noch einbauen :)
([Aussentemperatur:state] > 23 and [Tageshoechsttemperatur:state] > 28 and [Helligkeit:state] > 2000 and ([13:05 - 17:00])) (set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ 40) DOELSE (set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ on)
set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ 40
set Jalo_SchlafZi: no value specified Jalo_Bad: Unknown command Jalo_Bad, try help. Jalo_WZ 40: Unknown command Jalo_WZ, try help.
Events (Filter:.*): 2015-07-03 13:05:00 DOIF di_Beschattung_seite cmd_nr: 1 2015-07-03 13:05:00 DOIF di_Beschattung_seite cmd_event: timer_1 2015-07-03 13:05:00 DOIF di_Beschattung_seite error: set Jalo_SchlafZi: no value specified Jalo_Bad: Unknown command Jalo_Bad, try help. Jalo_WZ 40: Unknown command Jalo_WZ, try help. 2015-07-03 13:05:00 DOIF di_Beschattung_seite cmd_1 |
(set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ 40) DOELSE (set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ on)
((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ 40)) DOELSE ((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ on))
([Aussentemperatur:state] > 23 and [Tageshoechsttemperatur:state] > 28 and [Helligkeit:state] > 2000 and [13:45 - 17:00]) ((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ 40)) DOELSE ((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ on))
Zitat([Aussentemperatur:state] > 23 and [Tageshoechsttemperatur:state] > 28 and [Helligkeit:state] > 2000 and [?13:45 - 17:00]) ((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ 40)) DOELSE ((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ on))
Zitat von: Thoffi1978 am 03 Juli 2015, 23:11:02Durch Änderung der Definition wird das Modul initialisiert (der letzte Zustand wird gelöscht). Damit führt das nächste Event zu einer Ausführung eines Zweiges, der zutrifft, da ein Zustandswechsel stattfindet (da der letzte Zustand gelöscht wurde) - das ist normal und funktioniert wie programmiert.
Ich hab noch eine Frage.
Wenn ich die DEF ändere schaltet die Jalousie sobald ein State eingelesen wird.
Unabhängig von der Uhrzeit.
Ist in meiner DEF etwas falsch?Code Auswählen([Aussentemperatur:state] > 23 and [Tageshoechsttemperatur:state] > 28 and [Helligkeit:state] > 2000 and [13:45 - 17:00]) ((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ 40)) DOELSE ((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ on))
Hoffi
Zitat von: dieda am 03 Juli 2015, 23:52:00
@Damian: Brauche ich dann das Fragezeichen vor der Zeitangabe? Ich hatte es so verstanden, dass das Fragezeichen immer dann gebraucht wird, wenn ein Wert innerhalb der Zeitangabe wahr werden kann, aber nicht grundsätzlich zum Anfang oder Ende.
Beipspiel: Ich gebe an, wenn zwischen 10-12 der Sonnenstand genau zwischen 90-135 Grad ist, dann ist die Bedingung wahr, dass ändert sich jeden Tag und so kann es am einen Tag 10:02 sein am nächsten schon einen Tick später.
ZitatZeitsteuerung mit Zeitintervallen
Zeitintervalle werden im Format angegeben: [<begin>-<end>], für <begin> bzw. <end> wird das gleiche Zeitformat verwendet, wie bei einzelnen Zeitangaben. Getriggert wird das Modul zum Zeitpunkt <begin> und zum Zeitpunkt <end>. Soll ein Zeitintervall ohne Zeittrigger lediglich zur Abfrage dienen, so muss hinter der eckigen Klammer ein Fragezeichen angegeben werden (siehe Beispiele weiter unten). Das Zeitintervall ist als logischer Ausdruck ab dem Zeitpunkt <begin> wahr und ab dem Zeitpunkt <end> nicht mehr wahr.
Zitat von: MrMaxy am 03 Juli 2015, 21:33:33Suche im Forum nach den (selbstbau) Außensensoren von Dirk. Die eignen sich prima, um die Sonneneinstrahlung zu messen (in Lux) und sind HM-kompatibel. Zusammen mit der Außentemperatur, Berechnung der Sonnen-Azimuth und -Elevation (Twilight-Modul), Kenntniss der Lage des Hauses und Fenstergrößen und paar weiteren Parametern funktioniert die Beschattung wunderbar und für alle Fenster individuell.
Meiner Meinung nach kann man eine solche Beschattung nur mit einem Sonnensensor realisieren.
Leider gibt es keinen solchen Sensor der mit FHEM kompatibel ist.
Und auf Nachfrage bei eq-3 scheint es auch so, dass keiner daran interessiert ist.
define Rol.OG.AZ.Ost.DOIF
(([{time_random_offset(sunrise("HORIZON=-3°", 0,"06:15"),300)}|8]
or [{time_random_offset(sunrise("HORIZON=-3°",0,"08:30"),300)}|7])) (set Rol.OG.AZ.Ost off) DOELSEIF
(([{time_random_offset(sunrise("HORIZON=12°", 0,"06:20"),300)}-{time_random_offset("13:00",300)}|8]
or [{time_random_offset(sunrise("HORIZON=12°",0,"08:35"),300)}-{time_random_offset("13:00",300)}|7])
and [Wetter:code] != 34) (set Rol.OG.AZ.Ost off) DOELSEIF
(([{time_random_offset(sunrise("HORIZON=12°", 0,"06:20"),300)}-{time_random_offset("13:00",300)}|8]
or [{time_random_offset(sunrise("HORIZON=12°",0,"08:35"),300)}-{time_random_offset("13:00",300)}|7])
and [Wetter:code] == 34) (set Rol.OG.AZ.Ost on) DOELSEIF
([{time_random_offset("13:05",300)}]) (set Rol.OG.AZ.Ost off) DOELSEIF
([{time_random_offset(sunset("HORIZON=-5°"),300)}]) (set Rol.OG.AZ.Ost on)
attr Rol.OG.AZ.Ost.DOIF do always
sub
time_random_offset
{
# Eingangs-Zeitstempel in Variable holen
my ($timestamp) = shift;
# Maximalen Zeitoffset (in Sekunden) in Variable speichern
my ($maxoffset) = shift;
# Zeitstempel in das interne Format konvertieren: 17:30:09 ==> 17.5025
# Stunden werden als ganze Zahlen gespeichert, minuten als 1/60 und sekunden als 1/3600
my ($t) = hms2h($timestamp);
$t += rand() * $maxoffset / 3600;
# Zurück in HH:MM:SS konvertieren.
return h2hms_fmt($t);
};
Zitat von: MrMaxy am 03 Juli 2015, 21:33:33Du willst wissen wieviel Sonne scheint? Man kann auch übertreiben :)
Meiner Meinung nach kann man eine solche Beschattung nur mit einem Sonnensensor realisieren.
Leider gibt es keinen solchen Sensor der mit FHEM kompatibel ist.
Und auf Nachfrage bei eq-3 scheint es auch so, dass keiner daran interessiert ist.
ZitatIch fand mal die Lösung mit dem HM-WDS30-OT2-SM (einen Fühler mit Alu/weiß umwickelt den andern schwarz) sehr pfiffig.Gruß Otto
Zitat von: Otto123 am 04 Juli 2015, 15:15:54
Du willst wissen wieviel Sonne scheint? Man kann auch übertreiben :)
Ansonsten so wie schon geschrieben:Gruß Otto
Zitat von: MrMaxy am 07 Juli 2015, 08:53:24
[...] nach einer Weile (ca. 15 Minuten), fährt der Rollladen etwas hoch, um zu messen, wie hoch die aktuelle Intensität ist. Ist sie niedriger als der Schwellwert, fährt der Rollladen hoch, ist die Intensität gleich, oder höher, fährt er wieder ein Stück herunter.
Zitat von: hexenmeister am 07 Juli 2015, 09:13:07Aber der Sonnensensor, welcher in Form eine Saugnapfes, an der Fensterscheibe befestigt wird, ist doch nichts anderes als ein Lichtsensor!
Das würde mich wahnsinnig machen :o
Besser mit Außenlichtsensoren.
Zitat von: MrMaxy am 07 Juli 2015, 09:27:21Mit "Außensensor" meine ich einen Sensor, dar "Außen" ist ;) Da muss man die Rolladen nicht hoch fahren.
Aber der Sonnensensor, welcher in Form eine Saugnapfes, an der Fensterscheibe befestigt wird, ist doch nichts anderes als ein Lichtsensor!
Und das mit den ca. 15 Minuten "Nachschauen", ist halb so wild. Dauert keine 3 Sekunden.
Zitat von: hexenmeister am 07 Juli 2015, 09:47:00Kannst du mir dann bitte mal sagen, welche Lichtsensoren (innen und außen) du verwendest?
Ich habe in jedem Raum (unter anderem) einen Lichtsensor und auch zwei Stück draußen.
- wenn Zeit nach 22:00 oder vor 10:00 -> nichts unternehmen (Nachtruhe)
- wenn in letzten 15 Minuten eine automatische Beschattung aktiviert oder deaktiviert wurde -> nicht tun (keine 'hektische' Aktionen)
- wenn in letzten 15 Minuten Bewegung im Raum erkannt wurde -> nichts tun (das System soll sich unauffälllig verhalten -> höherer WAF)
- ... noch paar kleinere Prüfufen, wie manuelle Übersteuerung etc.
- wenn
-- die Position der Sonne (azimuth) und die Lage der jeweiligen Fenster so sind,
dass Sonne ins Fenster scheint und Sonnenhöhe (elevation) so ist, dass sie länger als ein bestimmter Wert 'hereinragt'
-- wenn draußen: Licht > 15000 Lux und Temperatur > 23°C
=> dann fahre Rollos in Schatten-Position, es sei denn, die Rollos sind bereits tiefer geschlossen
- wenn die Parameter aus dem letzten Schritt (min einer davon) um einen bestimmten Wert unterschritten sind => Rollos wieder öffnen
([Aussentemperatur:temperature] => 23 and [Temp_Schlafzi:temperature] => 24 and [Helligkeit:state] > 1700 and [?13:45 - 18:30]) ((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ_Seite 40)) DOELSE ((set Jalo_SchlafZi:FILTER=pct=40,Jalo_Bad:FILTER=pct=40,Jalo_WZ_Seite:FILTER=pct=40 on))
Internals:
DEF ([Aussentemperatur:temperature] => 23 and [Temp_Schlafzi:temperature] => 24 and [Helligkeit:state] > 1700 and [?13:45 - 18:30]) ((set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ_Seite 40)) DOELSE ((set Jalo_SchlafZi:FILTER=pct=40,Jalo_Bad:FILTER=pct=40,Jalo_WZ_Seite:FILTER=pct=40 on))
NAME di_Beschattung_seite
NR 179
NTFY_ORDER 50-di_Beschattung_seite
STATE cmd_1
TYPE DOIF
Readings:
2017-06-23 15:24:42 Device Helligkeit
2017-06-23 13:55:39 cmd 1
2017-06-23 13:55:39 cmd_event Aussentemperatur
2017-06-23 13:55:39 cmd_nr 1
2017-06-23 15:24:05 e_Aussentemperatur_temperature 20.0
2017-06-23 15:24:42 e_Helligkeit_state 2269.0
2017-06-23 15:21:57 e_Temp_Schlafzi_temperature 22.6
2017-06-23 13:55:39 state cmd_1
2017-06-22 18:30:00 timer_01_c01 23.06.2017 13:45:00
2017-06-22 18:30:00 timer_02_c01 23.06.2017 18:30:00
2017-06-23 13:55:39 wait_timer no timer
Condition:
0 ReadingValDoIf($hash,'Aussentemperatur','temperature') => 23 and ReadingValDoIf($hash,'Temp_Schlafzi','temperature') => 24 and ReadingValDoIf($hash,'Helligkeit','state') > 1700 and DOIF_time($hash,0,1,$wday,$hms)
Days:
Devices:
0 Aussentemperatur Temp_Schlafzi Helligkeit
all Aussentemperatur Temp_Schlafzi Helligkeit
Do:
0:
0 (set Jalo_SchlafZi,Jalo_Bad,Jalo_WZ_Seite 40)
1:
0 (set Jalo_SchlafZi:FILTER=pct=40,Jalo_Bad:FILTER=pct=40,Jalo_WZ_Seite:FILTER=pct=40 on)
Helper:
event 2269.0
globalinit 1
last_timer 2
sleepdevice Aussentemperatur
sleepsubtimer -1
sleeptimer -1
timerdev Helligkeit
timerevent 2269.0
triggerDev Helligkeit
timerevents:
2269.0
timereventsState:
state: 2269.0
triggerEvents:
2269.0
triggerEventsState:
state: 2269.0
Internals:
Interval:
0 -1
1 0
Itimer:
Localtime:
0 1498218300
1 1498235400
Readings:
0 Aussentemperatur:temperature Temp_Schlafzi:temperature Helligkeit:state
all Aussentemperatur:temperature Temp_Schlafzi:temperature Helligkeit:state
Realtime:
0 13:45:00
1 18:30:00
Regexp:
0:
All:
State:
State:
Time:
0 13:45:00
1 18:30:00
Timecond:
0 0
1 0
Timer:
0 0
1 0
Timers:
Trigger:
Triggertime:
1498235400:
localtime 1498235400
Hash:
Attributes:
group Jalousien_seite
room Jalousien Di´s
wait 600:1200