"Logik"-Frage bei Rolläden mit Fensterkontakt

Begonnen von SahraDeath, 08 Februar 2015, 15:48:44

Vorheriges Thema - Nächstes Thema

SahraDeath

Hallo, ich steuere zur Zeit eine Rollade mit diesem Szenario:

Rollade fährt mittels diesen Code rauf und runter:
define eg.rollade.garten.rechts.hoch at *07:00 set eg.rollade.garten.rechts on
define eg.rollade.garten.rechts.zu at *{sunset(0,"17:00","22:00")} set eg.rollade.garten.rechts off


Ich möchte jetzt gerne einen Fensterkontakt (HM-Sec-SCo oder HM-Sec-SC-2) einsetzten um die Rollade in folgender Form zu beeinflussen:

1. wenn die Tür geöffnet wird soll die Rollade hoch fahren
2. wenn die Tür geschlossen wird soll sie ggf anhand Sunset offen bleiben oder runter fahren
3. wenn die Tür offen ist nicht herunterfahren wenn Sunset diese schließen will

Kann ich das mit DOIF ausdrücken, oder in meinen jetztzigen Code noch einfügen? Wie gehe ich da an das Problem dran? Problem für mich ist ja, dass ich ein Event (Rollade runter) unterdrücken muß und wenn ich die Türe schließe dieses ausgeführt werden soll. Ich habe Schwierigkeiten solche verschachtelten Bedingungen auszudrücken und einen brauchbaren Logikansatz zu finden. Den Code bastele ich mir dann gerne selber, aber ich brauche Knochen die mir zugeworfen werden :-)

Ein ähnliches Problem wird mich auch noch an der Südseite ereilen, wenn ich die Rolläden zum Hitzeschutz anhand von Wetterdaten, Bestrahlungsstärken, Zimmertemperatur und Sunset differenziert fahren will, sprich bei Sunset 100% runter und bei Sonnenschutz nur 80% runter (man will ja nicht auch noch Licht in der Bude anmachen müssen, wenn draußen 35°C und die Sonne scheint)

Sollte ich den Rolladen-Soll Status (also als 100% zu, 80% zu) als Dummys definieren? Aber dazu habe ich ja noch Zeit, bis wieder Sommer ist  8)

Danke schon mal :-)

Gruß Bernd Seidler
FHEM auf Intel NUC i5 mit ubuntu 14.04, CUL, JeeLink, HMLAN, 10x TX29DTH-IT, 8x MH-WDS30-OT2-SM, 9x HM-LC-BL1-FM, 8x IT Zwischenstecker, 1x IT 12V Dimmer, 5x HM-CC-RT-DN, 1x HM-WDS10-TH-O, 3x HM-WDS30-T-O, 1x HM-SEC-MDIR-2, 1x HM-SEC-SC-2, 1xHM-SEC-RHS, 1x HM-Sec-SCo, 2x HM-LC-SW4-WM

Wuppi68

am Hoch brauchst Du eigentlich nichts zu tun :-)

Am runter ist es doch auch kein Problem ...

bei dem Timer machst Du ein if mit dazu
also in Knochensprache define Roulade.zu *sunset {wenn Fensterkontakt ist gleich zu dann schließe sonst mache nichts oder gehe in hab acht Position}

dann noch einen Trigger auf Fenster.auf und Fenster.zu

Viel Vergnügen

Ralf

PS.: Es macht Sinne sich den Sollzustand des Rollos zu merken :-)

Wenn Du hier im Forum suchst, dann findest Du genau was Du suchst schon fertig als Code
FHEM unter Proxmox als VM

mfeske

Hallo Bernd,

etwas ähnliches habe ich auch vor. Was ich jetzt bereits habe, ist das wenn ich die Tür auf mache der Rolladen hoch geht und das Licht an und umgegehrt, habe ich je in ein Notify getan:
Kontakt_Garten:closed { if($hour < 8 || $hour >= 18) { fhem ("set Rolladen02 on")}}; { if($hour < 8 || $hour >= 18) { fhem ("set LED_aussen off")}}
Kontakt_Garten:opened { if($hour < 8 || $hour >= 18) { fhem ("set Rolladen02 off")}}; { if($hour < 8 || $hour >= 18) { fhem ("set LED_aussen on")}}


Die Rolladensteuerung sieht noch so aus (Verknüpfung zwecks Aussperrschutz ist mir noch nicht gelungen, auch überlege ich die Steuerung noch an das Tageslichgt zu koppeln:
define Tageslicht dummy
attr Tageslicht room Wetter
define Tageslicht_hell at *{sunset(-3600)} set Tageslicht hell
attr Tageslicht_hell room Wetter
define Tageslicht_dunkel at *{sunrise(+1800)} set Tageslicht dunkel
attr Tageslicht_dunkel room Wetter
define Rolladen01_zeit_down at *{sunset(-60)} { fhem ("set Rolladen01 on")
attr Rolladen01_zeit_down room Wohnzimmer
define Rolladen01_zeit_up at *{sunrise(+60)} { fhem ("set Rolladen01 off")
attr Rolladen01_zeit_up room Wohnzimmer


Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

Mitch

Mit DOIF ist das in einer einzige Codezeile erledigt.
Einfach mal im commandref dazu lesen, da steht das Modul sehr gut erklärt.
FHEM im Proxmox Container

mfeske

Mein runterfahren von Rolladen01 um 18:08 hat leider auch nicht funktioniert :-(
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

mfeske

Zitat von: Mitch am 23 Februar 2015, 17:00:22
Mit DOIF ist das in einer einzige Codezeile erledigt.

Wenn man die Syntax beherrscht :-(
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

Mitch

#6
Also ich verstehe hier den Einen und Anderen echt nicht.
Ich bin quasi auch noch Anfänger, aber ich "bilde mich weiter", vor allem mit lesen im commandref, Forum und Wiki und testen.
Nur so kann ich dazu lernen.

Ich hatte ja extra geschrieben, schau dir das commandref an, dort ist extrem ausführlich und einfach erklärt, wie DOIF funktioniert. Sogar auf Deutsch!!

Wenn man eine Hausautomation wie fhem aufbauen möchte, muss man schon ein bisschen "mehr" tun. Es ist halt keine Lösung von der Stange mit Bunt klicki klick.

Gerade zum Thema Rolladensteuerung gibt es hier im Forum und im Wiki Tonnen an Beispielen.
Einmal kurz gesucht und man findet alles, was man brauch  ::)

Auch das Einsteiger PDF ist immer eine gute Quelle, um "richtige" Codes für ein notify mit if else zu finden.
FHEM im Proxmox Container

mfeske

Einsteiger pdf habe ich schon gelesen und probiere gerade mit der commandref und dem DOIF.
Was schon funktioniert ist
([18:00|8]) (set Rolladen01 on) DOELSEIF ([06:00|8]) (set Rolladen01 off)

Konnte ich mit angepassten Zeiten auch schon testen.
Doch wie baue ich jetzt ein sunset(-120) ein, damit zwei Stunden vor Sonnenuntergang an Werktagen und sunset(-60) eine Stunde vor Sonnenuntergang Rolladen01 runterfährt ?
An Werktagen um 06:00 und am Wochenende um 08:00 hoch fährt. Ich habe in de commandref dazu für mich erkrennbar leider nichts gefunden.

Wenn das klappt macht es vermutlich erst Sinn an Rolladen02 und dummy Gartentuer mit der Aussperrsicherung zu gehen.
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

Mitch

 ??? Auch das steht "quasi" im commandref:

ZitatSchalten bei Sonnenaufgang und Sonnenuntergang:

define di_light DOIF ([{sunrise_abs()}-{sunset(1800,"17:00","21:00")}])(set outdoorlight off) DOELSE (set outdoorlight on)
FHEM im Proxmox Container

mfeske

Die Stelle hatte ich auch gefunden, aber nicht verstanden. Ich wollte Sie nicht blind übernehmen, aber beschrieben ist da leider nicht viel :-(
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

Puschel74

Und ausprobieren geht nicht und der Spieltrieb wird gnadenlos unterdrückt.
Ja, so geht es auch - es gibt ja zum Glück das Forum.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Mitch

Zitat von: mfeske am 23 Februar 2015, 20:05:48
...aber beschrieben ist da leider nicht viel :-(

??? da steht doch quasi schon der Code drinnen. Ein bisschen Eigeninitiative sollte schon sein und die Suchfunktion ist dein Freund  :-X
FHEM im Proxmox Container

ujaudio

Auch ich bilde mir ein, dass ich meine Rollladensteuerung "kompliziert" haben will. Mein Lösungsansatz sieht so aus:

Aus allen möglichen Randbedingungen, die auch noch je mehr als 2 Zustände einnehmen können, errechne ich mir einen Index. Mit diesem gehe ich dann in einen Array, wo die gewünschte Rollladenposition hinterlegt ist.

Nach einem Wochenende habe ich soviel Perl gelernt (und ausprobiert), dass das wohl auch funktioniert. Nur ein Punkt ist noch offen: wo hinterlege ich global den Array? Ich möchte den ja nur einmal beim Start von FHEM schreiben und dann von verschiedenen FHEM-Stellen lesend darauf zugreifen.

Für einen Tipp bin ich dankbar.

Einen lieben Gruß
Jürgen
Einen lieben Gruß
Jürgen

mfeske

Hallo Mitch,

ich habe mich mal vorsichtig ran getastet:
define Rolladen01_timer DOIF ([{sunset(-600)}|8]) (set Rolladen01 on) DOELSEIF ([{sunset(-0)}|7]) (set Rolladen01 on) DOELSEIF ([{sunrise(+30)}|8]) (set Rolladen01 off) DOELSEIF ([{sunrise(+600)}|7]) (set Rolladen01 off)
Ich erhalte folgende Readings:
state initialized 2015-02-24 15:02:03
timer_1_c1 24.02.2015 17:59:32|8 2015-02-24 15:02:03
timer_2_c2 24.02.2015 18:09:32|7 2015-02-24 15:02:03
timer_3_c3 25.02.2015 06:30:17|8 2015-02-24 15:02:03
timer_4_c4 25.02.2015 06:39:47|7 2015-02-24 15:02:03


Ist das jetzt schon ein Hinweis das ich es korrekt gemacht habe? Testen ohne Sonnenaufgang oder -untergang ist ja eher schlecht ;-)

Als nächstes würde ich probieren den Aussperrschutz in das DOIF zu verbasteln, oder sollte ich das lieber irgendwie extra machen?

Wenn Kontakt_Garten opened dann Rolladen02 nicht on; wenn Kontakt_Garten geschlossen wird und closed ist dann  Rolladen02 on.
Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

Mitch

Das sieht doch schon mal sehr gut aus.

Und mit Deiner Überlegung
ZitatWenn Kontakt_Garten opened dann Rolladen02 nicht on; wenn Kontakt_Garten geschlossen wird und closed ist dann  Rolladen02 on.
bist du auf dem richtigen Weg.

Ich schreibe mir solche Bedingungen auch einfach immer erst "wörtlich" auf.
Quasi, was will ich:
- wenn Sonnenaufgang und Wochende und Kontakt_Garten geschlossen -> dann Rollo hoch
- wenn Sonnenuntergang und Wochende und Kontakt_Garten geschlossen -> dann Rollo runter

Dann setzt ich das in den "echten" Code um:
define Rolloautomatik DOIF ([{sunset(-600)}|8] and [Kontakt_Garten] eq "off) (set Rolladen01 on) ...usw
FHEM im Proxmox Container