Hauptmenü

Beschattungssteuerung

Begonnen von SkodaSascha, 28 April 2013, 13:07:01

Vorheriges Thema - Nächstes Thema

Mumpitz

#90
Hallo zusammen

so, nach etlichen Stunden lesen, suchen, mailen und probieren habe ich meine Beschattungssteuerung fertig. Selbstverständlich möchte ich es nicht unterlassen, diese hier zu posten. Sie stammt zwar von einem absoluten Newbie, aber vielleicht kann doch jemand profitieren...

also, dieses DOIF schaltet einen Dummy Namens 'Beschattung_OG', und dies nur wenn der Dummy 'Auto_Beschattung' eingeschaltet ist. Zudem erst ab der Zeit wo die Sonne auf meine Südseite scheint (ab ca. 10:45). Das DOIF wird geschaltet, wenn es entweder sonnig, heiter, teilweise wolkig oder heiss ist. Die Beschattung wird aufgehoben, sobald es die anderen Konditionen hat (siehe Code)

define di_OG_SoSchu DOIF ([Auto_Beschattung] eq "on" and [Beschattung_OG] eq "off" and \
([Wetter:condition] eq "sonnig" or [Wetter:condition] eq "heiter" or \
[Wetter:condition] eq "teilweise wolkig" or [Wetter:condition] eq "heiss") and \
[10:45 - 17:30]) (set Beschattung_OG on,set Sonos_Wohnzimmer PlayURITemp \\192.168.17.5\SonosSpeak\BeschattungOG_ein.mp3 30,\
set pushmsg msg 'fhem' 'Die automatische Beschattung im Obergeschoss wurde aktiviert') \
DOELSEIF ([Auto_Beschattung] eq "on" and [Beschattung_OG] eq "on" and \
([Wetter:condition] eq "wolkig" or [Wetter:condition] eq "Schauer" or [Wetter:condition] eq "Nebel" or \
[Wetter:condition] eq "Gewitter" or [Wetter:condition] eq "vereinzelt Gewitter" or [Wetter:condition] eq "Hagel" or \
[Wetter:condition] eq "stürmisch")) (set Beschattung_OG off)\
DOELSEIF ([17:31] and [Auto_Beschattung] eq "on" and [Beschattung_OG] eq "on") (set Beschattung_OG off)


Nun zum DOIF, welche das effektive runterfahren auslöst. Speziell daran ist, dass noch geprüft wird ob die maximale Voraussichtliche Temperatur grösser oder kleiner 25 Grad ist. Wenn die Prognose mehr als 25 hat, dann sollen die Jalousien ganz runter und nur 0.5 auf. Wenn die voraussichtliche Temperatur kleiner ist dann auf 20 % und 1 wieder auf.

define di_Beschattung_OG_on DOIF ([Beschattung_OG] eq "on" and [Wetter:fc1_high_c] < 25) \
(set Rollladen_Kind 20,set Rollladen_Eltern_1 0,set Rollladen_Eltern_2 20,\
define tmp_time1 at +00:01:00 set Rollladen_Kind 21,\
define tmp_time2 at +00:01:00 set Rollladen_Eltern_1 1,\
define tmp_time3 at +00:01:00 set Rollladen_Eltern_2 21)\
DOELSEIF ([Beschattung_OG] eq "on" and [Wetter:fc1_high_c] > 25) \
(set Rollladen_Kind 0,set Rollladen_Eltern_1 0,set Rollladen_Eltern_2 0,\
define tmp_time1 at +00:01:00 set Rollladen_Kind 0.5,\
define tmp_time2 at +00:01:00 set Rollladen_Eltern_1 0.5,\
define tmp_time3 at +00:01:00 set Rollladen_Eltern_2 0.5)
define di_Beschattung_OG_off DOIF ([Beschattung_OG] eq "off")  (set Rollladen_Kind auf,set Rollladen_Eltern_1 auf,set Rollladen_Eltern_2 auf)


also, ich hoffe jemand lässt sich inspirieren. Und falls jemand Fragen oder Verbesserungsvorschläge hat, nur zu! :-)

Gruss aus der Schweiz
mumpitz


Mumpitz

hallo zusammen

leider melde ich mich schon wieder. meine ganze Euphorie des obigen Posts ist verflogen. Der Dummy wird zwar wunderschön geschaltet auf off auf on und auch wieder zurück wenn das Wetter schlecht wird oder die bestimmt Zeit erreicht wird. Leider werden jedoch die Jalousien nicht runter gefahren. Sprich bei diesem DOIF stimmt was nicht: nur was?

anzumerken ist noch:
sobald ich eine Änderung am DOIF mache, zum Beispiel die Temperatur die unterschieden wird ob ganz geschlossen oder auf Stellung 80 von 24 auf 23 stelle, dann funktioniert das DOIF! wenn ich das dann so lasse dann funktioniert es am nächsten Tag jedoch schon wieder nicht. Der Dummy "Beschattung OG" schaltet zwar, das DOIF macht jedoch nicht. Im Log sind keine Einträge ersichtlich..

([Beschattung_OG] eq "on" and [Wetter:fc1_high_c] < 25)
(set Rollladen_Lean 20,set Rollladen_Eltern_1 0,set Rollladen_Eltern_2 20,
define tmp_time1 at +00:01:00 set Rollladen_Lean 21,
define tmp_time2 at +00:01:00 set Rollladen_Eltern_1 1,
define tmp_time3 at +00:01:00 set Rollladen_Eltern_2 21)
DOELSEIF ([Beschattung_OG] eq "on" and [Wetter:fc1_high_c] > 24)
(set Rollladen_Lean 0,set Rollladen_Eltern_1 0,set Rollladen_Eltern_2 0,
define tmp_time1 at +00:01:00 set Rollladen_Lean 0.5,
define tmp_time2 at +00:01:00 set Rollladen_Eltern_1 0.5,
define tmp_time3 at +00:01:00 set Rollladen_Eltern_2 0.5)


weiss jemand wieso???
mumpitz

Gigafix

Hallo Mumpitz

Hast Du auch das attr XXX do always gesetzt?

Viele Grüße sendet
Gigafix
VM Synology DS918 | CubieTruck |2x HMLAN | HMUSB | 3x HMWLAN | CCU2 | MAX-Cube | nanoCUL | ZWDongle |

Mumpitz

Nein, habe ich nicht!

Habe mich Vorgänger in der Commandref schlau gemacht. Da finde ich den Hinweis:

Bei der Angabe von zyklisch sendenden Sensoren (Temperatur, Feuchtigkeit, Helligkeit usw.) wie z. B.:

define di_heating DOIF ([sens:temperature] < 20) (set heating on)

ist die Nutzung des Attributes do always nicht sinnvoll, da das entsprechende Kommando hier: "set heating on" jedes mal ausgeführt wird, wenn der Temperatursensor in regelmäßigen Abständen eine Temperatur unter 20 Grad sendet. Ohne do always wird hier dagegen erst wieder "set heating on" ausgeführt, wenn der Zustand des Moduls gewechselt hat, also die Temperatur zwischendurch größer oder gleich 20 Grad war.

Aus meiner Sicht ist das bei mir der Fall das ich es nicht setzen darf, oder???


Gesendet von iPad mit Tapatalk

Gigafix

Hallo Mumpitz

Ich bin zugegebenermaßen auch nicht der große DOIF Spezialist....

Deshalb schau mal hier: http://forum.fhem.de/index.php/topic,35431.msg277759.html#msg277759
Da es bei Dir ja noch Bedingungen dazwischen gibt, und Du bei "wahr" werden der Bedingung schalten möchtest würde ich es zumindest mal testen.

In der Codebeschreibung ist auch folgendes Beispiel mit "do always", bei dem allerdings nur alle 60min geprüft wird:

ZitatAnwendungsbeispiel: Meldung über Frostgefahr alle 60 Minuten

define di_frost DOIF ([outdoor:temperature] < 0) (set pushmsg "danger of frost")
attr di_frost cmdpause 3600
attr di_frost do always

Ich persönlich prüfe zu einer bestimmten Zeit einmalig die Wetterbedingungen per normalem if und wenn das "wahr" wird, dann wird in die Beschattugsposition gefahren. Für meine Zwecke reicht das.

Viele Grüße sendet
Gigafix

VM Synology DS918 | CubieTruck |2x HMLAN | HMUSB | 3x HMWLAN | CCU2 | MAX-Cube | nanoCUL | ZWDongle |

Christian72D

Zitat von: locodriver am 18 Mai 2013, 15:54:58
Hallo Miteinander, ich habe eine Sonnenschutzvariante laufen, die meine Zwecke erfüllt und nicht so aufgebläht ist. Ich greife auch auf Yahoo zurück. Da das Yahoowetter nicht immer so angegeben ist wie die realen Bedingungen sind, erschien es mir völlig ausreichend, nicht jede mögliche Bedingung in die Auswertung einzubeziehen - d.h. man sollte nicht versuchen, eine Genauigkeit zu erzielen welche durch die Eingangsparameter nicht möglich sein kann:

define WZ_Rolare_SoSchu at *10:01  {Log 1, "Max ist ".ReadingsVal("Wetter_Borsdorf","fc1_high_c",0)}{if ((Value("Rolaautomatik") eq "Ein") && ($month> 4) && ($month< 10) &&( ReadingsVal("Wetter_Borsdorf","fc1_high_c",0)>23) && (Value("WZ_Balkon") =~ m"geschlossen")) {fhem "set WZ_Rolare SoSchu";;}}
attr WZ_Rolare_SoSchu room 001Wohnzimmer


Ich prüfe von Mai bis September um 10:01 Uhr, ob der prognostizierte Höchstwert größer als 23 Grad ist und wenn die Rolaautomatik (ein Dummy) "Ein" und die Balkontür "geschlossen" ist wird der Rolare in Sonnenschutzposition gefahren (bei mir 45%). Das Zimmer ist nicht völlig dunkel (Zimmerpflanzen), wird aber nicht aufgeheizt. Um 16 Uhr lasse ich dann den Rola ohne weitere Bedingungen wieder hochfahren. Diese Steuerung hat sich bei mir im letzten Sommer schon bewährt und läuft in einer Includedatei.
Und noch mal Danke an Mr.Eltako an die Unterstützung, die Klammern richtig zu sortieren.

Schöne Pfingsten Uwe
Hi Uwe, ich weiß, schon was her mit dieser eigentlich einen Zeile. Aber ich vermisse den Rest.
Da fehlt doch der Teil wo die Rollade wirklich gefahren wird, das sie wieder hochgefahren wird usw.

Mir persönlich reicht auch so eine einfache Variante.

locodriver

@Christian: hast recht - das ist eines von mehreren ats gewesen. Mittlerweile habe ich alles in einem DOIF und noch etwas weiter entwickelt:

([08:00] and [UweDa] eq "Aus" and [Rolaautomatik] eq "Ein" and [WZ_Rolare] ne "Auf")(set WZ_Rolare Auf)
DOELSEIF
([09:00] and [UweDa] eq "Ein" and [Rolaautomatik] eq "Ein" and [WZ_Rolare] ne "Auf")(set WZ_Rolare Auf)
DOELSEIF
([{sunset(60,"17:00","22:00")}] and [Rolaautomatik] eq "Ein" and ($month<5 or $month>9) and [WZ_Rolare] eq "Auf" and (ReadingsVal("Wetter_Borsdorf","fc1_low_c",0)<5) and [WZ_Balkon] eq "geschlossen")(set WZ_Rolare Zu)
DOELSEIF
([10:01] and [Rolaautomatik] eq "Ein" and ($month> 4) and ($month< 10) and (ReadingsVal("Wetter_Borsdorf","fc1_high_c",0)>23) and [WZ_Balkon] eq "geschlossen")(set WZ_Rolare SoSchu)
DOELSEIF
(([16:00] or [WZ_Balkon] eq "offen") and [WZ_Rolare] ne "Auf")(set WZ_Rolare Auf)


Der letzte DOELSE-Zweig funzt aber noch nicht richtig, das liegt wohl am Zusammenspiel von HM und DOIF, die ersten beiden könnte man noch zusammenfassen oder mit den neuesten DOIF-Erweiterungen anpassen (8 bzw. 9 Uhr). Hatte aber noch keine Zeit/Lust - es funzt ja auch so...

Uwe
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

en-trust

Mumpitz, Du schreibst dass Du einen Dummy Beschattung_OG schaltest wenn Auto_Beschattung an ist etc. Aber Beschattung_OG wird ja auch nur auf den Status abgefragt aber nicht geschalten ?

Was hat dieser Dummy Beschattung_OG für eine Aufgabe ?

Mumpitz

Zitat von: en-trust am 10 April 2018, 12:42:48
Mumpitz, Du schreibst dass Du einen Dummy Beschattung_OG schaltest wenn Auto_Beschattung an ist etc. Aber Beschattung_OG wird ja auch nur auf den Status abgefragt aber nicht geschalten ?

Was hat dieser Dummy Beschattung_OG für eine Aufgabe ?
Der dummy hatte die Aufgabe, dass ich von Hand eingreifen konnte, falls zum Beispiel ein Gewitter aufzog...

Mittlerweile habe ich diese gepostete Lösung abgelöst durch eine die seit einem Jahr perfekt funktioniert!

Prof. Dr. Peter Henning


Mumpitz


defdanny

Zitat von: Mumpitz am 18 April 2018, 08:03:46
Sobald ich wieder zu Hause bin!

Hallo Mumpitz, bist du wieder zu Hause? 8)
Mich würde deine aktuelle Lösung zur Beschattungssteuerung mit DOIF (?) ebenfalls interessieren.

Viele Grüße
Daniel
Raspberry Pi Modell B mit CUL V3 433 Mhz
MAX!Cube als CUN mit alternativer FW

Mumpitz

Hallo zusammen

Bitte entschuldigt die lange Wartzeit. Aber ich habe meinen Post während den damaligen Ferien voll vergessen!
Also, ich habe vorletztes Jahr verschiedene Varianten einer Beschattungssteuerung probiert und wurde nie richtig glücklich damit. Ich hatte dabei jeweils für jede Himmelsrichtung eigene DOIFS, welche aufgrund der Helligkeit oder der Wetterangabe von Yahoo die Rolläden fuhren oder auch nicht. Aber wie gesagt, richtig glücklich wurde ich nie. Letzten Sommer habe ich mir dann die jetzige Lösung überlegt und bin vollständig glücklich damit. Es funktioniert sehr gut!

Meine Ausgangslage:
Ein Neubau, welcher genau in gerade in Richtung Norden oder Süden steht. Da wir es Hell wollten, haben wir jede Menge Fenster. Wunderbar, aber im Sommer dafür auch unerträglich heiss.
Dazu habe ich auf der Ostseite einen Lichtsensor (Multisensor_Ost), welcher per WLAN funktioniert (Eigenbau da sehr schlechter HM Empfang dort). Der Senosr hat einen Maximalwert von 54'000 Lux.
Weiter habe ich auf der Süd und Ostseite je einen HM_Lichtsensor, welcher einen Maximalwert von knapp 90'000 lux hat.

Also, nun habe ich mir zuerst ein DOIF gebastelt, welches bestimmt, ob überhaupt Beschattet werden soll. Das gibt dann einen State on oder off, je nach dem. Er hat zudem eine Verzögerung beim aktivieren von 15min und beim deaktivieren von 40min. So fahren die Rollladen nicht gleich bei den ersten Wolken hoch und nicht bei den ersten Sonnenstrahlen wieder runter...

([HM_Lichtsensor_Sued:brightness] > 75000 or [HM_Lichtsensor_West:brightness] > 50000 or [Multisensor_Ost:lux] > 20000) ()
DOELSE ()

alias Beschattung_Notwendig
cmdState on|off
wait 900:2600


Nun, folgendes DOIF schaltet einen Dummy Beschattung_Ost auf der Ostseite, sobald di_beschattung_notwendig auf on switcht:

([Auto_Beschattung_EG] eq "on" and [Beschattungsmodus] eq "Sensoren" and [Beschattung_Ost] eq "off" and [?05:00-15:00] and [di_beschattung_notwendig] eq "on" and [?WetterProplanta:fc0_tempMax] > 15 and [Helligkeit_Twilight:compasspoint] =~ "east") (set Beschattung_Ost on)
DOELSEIF ([Auto_Beschattung_EG] eq "on" and [Beschattungsmodus] eq "Sensoren" and [Beschattung_Ost] eq "on" and [di_beschattung_notwendig] eq "off" and [?Helligkeit_Twilight:elevation] > 36.00) (set Beschattung_Ost off)
DOELSEIF ([Auto_Beschattung_EG] eq "on" and [Beschattungsmodus] eq "Sensoren" and [Beschattung_Ost] eq "on" and [Helligkeit_Twilight:compasspoint] eq "south") (set Beschattung_Ost off)


Kurze Erklärung:
Ich habe noch eingebaut, dass auf der Ostseite nur beschattet wird, wenn es wärmer als 15 Grad ist draussen. Sobald die Sonne auf South steht, hat bei mir die Ostseite keine Sonne mehr und fährt rauf.
Beim mittleren Zweig frage ich noch ab, ob die Elevation über 36 Grad ist wenn der Rolladen hochfährt. Ich habe da eben das Problem, dass mein NAchbar auf der Ostseite recht nahe ist und dadurch der Lichtsensor im Herbst dann keine Sonne mehr hat. Ich möchte aber die Beschattung unten lassen, da sonst ein ständiges rauf und runter der Rolläden...

Wenn dann die Beschattung_Ost auf on geschaltet wird, fahren die Rolladen mit diesem DOIF:
([Beschattung_Ost] eq "on" and [?Wetter:fc1_high_c] < 30) (set Rollladen_Kueche 0,set Rollladen_Esszimmer_1 0)(set Rollladen_Kueche 1)(set Rollladen_Kueche down 0.5,set Rollladen_Esszimmer_1 1)
DOELSEIF ([Beschattung_Ost] eq "on" and [?Wetter:fc1_high_c] > 29) (set Rollladen_Kueche 0,set Rollladen_Esszimmer_1 0)(set Rollladen_Kueche 0.5,set Rollladen_Esszimmer_1 0.5)

do always
wait 0,60,10:0,80



Dann das DOIF für die Südseite:
([Auto_Beschattung_OG] eq "on" and [Beschattungsmodus] eq "Sensoren" and [Beschattung_OG] eq "off" and [Helligkeit_Twilight:azimuth] > 109 and [Helligkeit_Twilight:azimuth] < 270 and [?WetterProplanta:fc0_tempMax] > 12 and [?09:00 - 18:44] and [di_beschattung_notwendig] eq "on") (set Beschattung_OG on)
DOELSEIF ([Auto_Beschattung_OG] eq "on" and [Beschattungsmodus] eq "Sensoren" and [Beschattung_OG] eq "on" and [di_beschattung_notwendig] eq "off" and [Helligkeit_Twilight:azimuth] > 139) (set Beschattung_OG off)
DOELSEIF ([Auto_Beschattung_OG] eq "on" and [Beschattungsmodus] eq "Sensoren" and [Beschattung_OG] eq "on" and ([Helligkeit_Twilight:azimuth] > 277 or [Helligkeit_Twilight:compasspoint] eq "west" or [18:45])) (set Beschattung_OG off)


mit dem Azimuth bestimme ich, bei welchem Sonnenstand (Winkel) die Rolläden fahren sollen. Spätestens wenn Sonnenstand West ist oder 18:45 Uhr wird die Beschattung wieder aufgehoben. Auch hier wird ein dummy geschaltet, nämmlich Beschattung_OG

das ist dann dieses DOIF:
([Beschattung_OG] eq "on" and [?Wetter:fc1_high_c] < 25)
(set Rollladen_Lean 20,set Rollladen_Eltern_1 0,set Rollladen_Eltern_2 20,
define tmp_time1 at +00:01:00 set Rollladen_Lean 21,
define tmp_time2 at +00:01:00 set Rollladen_Eltern_1 1,
define tmp_time3 at +00:01:00 set Rollladen_Eltern_2 21)
DOELSEIF ([Beschattung_OG] eq "on" and [?Wetter:fc1_high_c] > 24)
(set Rollladen_Lean 0,set Rollladen_Eltern_1 0,set Rollladen_Eltern_2 0,
define tmp_time1 at +00:01:00 set Rollladen_Lean 0.5,
define tmp_time2 at +00:01:00 set Rollladen_Eltern_1 0.5,
define tmp_time3 at +00:01:00 set Rollladen_Eltern_2 0.5)


do always
grad gesehen das ich hier noch mit den at arbeite. müsste ich mal noch auf die Wait attribute umstellen...

So, ich hoffe es ist alles klar? Wenn fragen sind helfe ich natürlich gerne!

Gruess aus der warmen Schweiz
mumpitz


Timeless68er

Hallo Mumpitz,

ich bin durch meine Suche nach einer lösung für meine Beschattung auf deinen Code aufmerksam geworden und will den jetzt dann auch für mich anwenden  8) . mich würde mal interessieren wo du deinen eigenbau Senor her hast und ob deine Beschattungssteuerung immer noch so gut funktioniert?
Viele Grüße Heiko
Du liegst nicht falsch solange dich keiner vom Gegenteil überzeugt.
Raspberry 3 B+, NanoCul433&868 (Eigenbau), Razberry2, Ebus-Adapter, Shelly´s, Nodemcu´s(Teichsteuerung & Überwachung usw)

Mumpitz

Zitat von: Timeless68er am 09 Juni 2019, 17:48:06
Hallo Mumpitz,

ich bin durch meine Suche nach einer lösung für meine Beschattung auf deinen Code aufmerksam geworden und will den jetzt dann auch für mich anwenden  8) . mich würde mal interessieren wo du deinen eigenbau Senor her hast und ob deine Beschattungssteuerung immer noch so gut funktioniert?
Viele Grüße Heiko

Wie der Name schon sagt: Eigenbau. Ganz einfach ein Esp8266 mit espeasy und ein Lichtsensor. Beides vom arbeitsamen Mann aus China.

Und ja. Sie funktioniert immerfort zu 100% zuverlässig. Einzig ein Luxsensor von HM ging kurz nach Ablauf der Gewährleistung kaputt....

Mittlerweilen gibt es aber auch ganz gute Möglichkeiten mit den Rollo Modulen...


Gesendet von iPad mit Tapatalk