Automatische Beschattung Rollos nach Uhrzeit

Begonnen von münster, 09 Mai 2015, 12:39:20

Vorheriges Thema - Nächstes Thema

MrMaxy

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.
Raspberry Pi
CC1101-USB-Lite 868MHz (CUL)
Tür-/Fensterkontakte, optisch; Fenster-Drehgriffkontakt; Heizkörperthermostate; Wandthermostate; Schaltaktor 1-fach, Zwischenstecker; Schaltaktor 4-fach, Hutschienenmontage
(Alle HomeMatic)

Bartimaus

Das ist Dein gutes Recht auf Deine Meinung.
Aber meine Steuerung funzt tadellos, und IMO besser als nur mit Sensor, da ich mehrere Parameter zur Steuerung heranziehen kann :)
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

dieda

Selbst mit dem Beschattungssensor ziehe ich mehrere Kriterien zu rate.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

Thoffi1978

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?
([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

dieda

Probier mal:
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))
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

Damian

Zitat von: Thoffi1978 am 03 Juli 2015, 23:11:02
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?
([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
Durch Ä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.

Gruß

Damian

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

Thoffi1978

vielen Dank für die Antworten.

@dieda: das mit dem ? bewirkt keine Änderung

@Damian: es ist doch aber eine Uhrzeit angegeben, wieso wird diese beim Init "übersehen"?
                 Kann man das ändern so das in der Uhrzeit nur geschaltet wird?

dieda

@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.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

Damian

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.

In der Commandref steht:

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.

Also ist ein Zeitintervall immer von bis wahr, ohne Fragezeichen wird das Modul zum Anfang und zum Ende des Zeitraum zusätzlich getriggert. Das ist alles. Alles was dann passiert, ist logische Folgerung dessen.

Wenn sich ein Zeitintervall "verschieben soll", dann muss man statt fester Zeiten Zeitfunktionen angeben, die die jeweilige Zeit berechnen.

Wenn man dagegen punktuell nur zu einem bestimmten Zeitpunkt das Modul triggern will, dann muss man nur einen Zeitpunkt angeben wie bei at und kein Zeitintervall.

Gruß

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

hexenmeister

Zitat von: MrMaxy am 03 Juli 2015, 21:33:33
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.
Suche 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.

HPSU_Mic

#40
Hallo All,

ich habe mich auch ein paar Tage damit beschäftigt, meine Lösung benutzt das Weather Modul, welches im nachfolgenden Code Wetter heißt und stündlich abgefragt wird:
Nachfolgender Code ist die Definition eines einzigen DOIFs für ein direkt nach Osten ausgerichtetes Fenster und besteht aus 5 Teilen.
Teil 1: Wochentags, wenn die Sonne bei -3° vor Sonnenaufgang steht, frühestens um 6:15, jeweils zufällig + max. 5 Minuten oder am
           Wochenende, wenn die Sonne bei -3° vor Sonnenaufgang steht, frühestens um 8:30, jeweils zufällig + max. 5 Minuten,
           Rolladen hoch.
Teil 2: Wochentags, wenn die Sonne bei 12° nach Sonnenaufgang steht und Wetter:heiter (Code gleich 34), frühestens um 6:20 bis 13:00, jeweils zufällig + max. 5 Minuten
           Wochenende, wenn die Sonne bei 12° nach Sonnenaufgang steht und Wetter:heiter (Code gleich 34), frühestens um 8:35 bis 13:00, jeweils zufällig + max. 5 Minuten,
           Rolladen auf Beschattungsposition (fehlt hier noch mangels richtigem Aktor)
Teil 3: Wochentags, wenn die Sonne bei 12° nach Sonnenaufgang steht und Wetter:Nicht heiter (Code ungleich 34), frühestens um 6:20 bis 13:00, jeweils zufällig + max. 5 Minuten
           Wochenende, wenn die Sonne bei 12° nach Sonnenaufgang steht und Wetter:Nicht heiter (Code ungleich 34), frühestens um 8:35 bis 13:00, jeweils zufällig + max. 5 Minuten,
           Rolladen hoch
Teil 4: Um 13:05, jeweils zufällig + max. 5 Minuten
           Rolladen hoch.
Teil 5: Wenn die Sonne bei -5° nach Sonnenuntergang steht, jeweils zufällig + max. 5 Minuten
           Rolladen runter.

Ganz wichtig: Attribut Do Always, sonst funktionieren Teil 2 und 3 nicht, bei Änderung von Wetter:code.



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);
};




Die sub time_random_offset in 99_myUtils.pm speichern (Hab ich irgendwo gefunden...).


Damit bin ich eigentlich bislang gut zufrieden...

Viele Grüße

Michael

Otto123

Zitat von: MrMaxy am 03 Juli 2015, 21:33:33
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.
Du willst wissen wieviel Sonne scheint? Man kann auch übertreiben :)
Ansonsten so wie schon geschrieben:
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Prof. Dr. Peter Henning

@HPSU_Mic: Vollkommener Unsinn, so etwas als FHEM-Skript zu schreiben. Das sollte man als ordentliches Perl-Unterprogramm in 99_myUtils haben.

LG

pah

MrMaxy

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

In der Tat!
Anhand der Intensität der Einstrahlung können die Rollladen ganz exakt heruntergefahren werden. Dabei werden sie natürlich nie ganz geschlossen. Immer nur so weit, dass der eingestellte Schwellwert unterschritten ist - der Sensor also "beschattet" wird. 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.
So einfach ist das - finde ich.
Ich kann mich nicht so ganz mit der Idee anfreunden, die Rollläden nur nach dem Stand der Sonne oder einer Temperatur zu steuern. Zumal hier auch noch mehrere Sensoren benötigt werden.
Zur Zeit habe ich eine Rollladensteuerung (mit Sonnensensor) von Berker installiert. Das funktioniert hervorragend.
Allerdings würde ich es viele lieber mit Homematic, o.Ä. realisieren, da ich die gesamte Rollladensteuerung dann einbinden könnte.
Dafür fehlt mir leider der besagte Sonnensensor, der alles so viel leichter machen würde.

Vielleicht könnt ihr mich aber hier auch von einer anderen Lösung überzeugen.

Grüße!  :)
Raspberry Pi
CC1101-USB-Lite 868MHz (CUL)
Tür-/Fensterkontakte, optisch; Fenster-Drehgriffkontakt; Heizkörperthermostate; Wandthermostate; Schaltaktor 1-fach, Zwischenstecker; Schaltaktor 4-fach, Hutschienenmontage
(Alle HomeMatic)

hexenmeister

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.

Das würde mich wahnsinnig machen  :o
Besser mit Außenlichtsensoren.