Hallo zusammen,
angesichts der hohen Temperaturen sitze ich seit ein paar Tagen daran mir eine Beschattung zu bauen. Abhängig von der Temperatur, die ein HMS100T sendet sollen die Rollläden gefahren werden. Was mir bisher noch fehlt, ist, dass in einem gewissen Zeitfenster geprüft wird ob die Temperatur hoch genug ist, denn im Moment können die Rollläden nur fahren wenn sich die Temp ändert - das ist noch nicht so optimal.
Die Grundlegende Frage ist aber ob das was ich geschriben habe auch eleganter geht? Was meint ihr Experten dazu?
Aussentemperatur.* {
if (ReadingsVal ('Aussentemperatur', 'temperature', 0) >25.0){
if ((Value ("FS20.Rollladen.Kueche") ne "runter") && ( $hour >= 10 && $hour <= 16 )) {
fhem ("set FS20.Rollladen.Kueche runter; sleep 20; set FS20.Rollladen.Kueche runter;");
}
if ( $hour >= 17 && Value ("FS20.Rollladen.Kueche") ne "rauf") {
fhem ("set FS20.Rollladen.Kueche rauf");
}
}
if (ReadingsVal ('Aussentemperatur', 'temperature', 0) >25.0){
if ((Value ("FS20.Rollladen.Bad.E") ne "runter") && ( $hour >= 13 && $hour <= 18 )) {
fhem ("set FS20.Rollladen.Abstellkammer.E runter; set FS20.RollladenBad.E runter; set FS20.Rollladen.EZ runter; set FS20.RollladenKZ.E runter;");
}
if (($hour >= 19 && $hour <20) && Value ("FS20.Rollladen.Bad.E") ne "rauf") {
fhem ("set FS20.Rollladen.Abstellkammer.E rauf; set FS20.RollladenBad.E rauf; set FS20.Rollladen.EZ rauf; set FS20.RollladenKZ.E rauf;");
}
}
}
Vielen Dank für eure Ratschläge :-)
Gruß
H-Man
Werfe mal die Forumssuche an, da gibt es ganz viele Beispiele. Auch in Abhängigkeit vom Sonnenstand. So das man da zu erst Ost dann Süd und dann West beschattet so das man die anderen dann schon mal wieder öffnen kann zum durch lüften.
Die meisten Vorschläge basieren auf DOIF weil das wohl einfacher zu realisieren ist.
Grüße
Hallo,
das ist richtig, dass es da auch Bespiele mit Sonnenstand etc. gibt. Ich wollte es halt erstmal ganz einfach stricken um mich auch besser mit fhem vertraut zu machen.
Mit doif habe ich mich bisher noch so gut wie garnicht beschäftigt - sollte das aber mal nachholen.
Was ich allerdings überhaupt nicht verstehe ist, dass das was ich da gestrickt habe nicht so ganz funktioniert....
Der 1. Teil mit dem Küchenrollladen funktioniert. Steigt die Temp auf über 25 wird runtergefahren und dann tut sich solange nichts mehr bis es nach 17Uhr wieder eine änderung gibt.
Der zweite Teil, der doch eigentlich gauso aussieht löst jedesmal aus, sobald sich die Temp ändert und sendet jedesmal 2x den "fahr runter" Befehl, was bedeutet, dass die Rollos 10cm fahren dann anhalten, ändert sich die temp fahren sie wieder ein paar cm....?
sehr ihr da einen Fehler?
Nochwas ist mir aufgefallen, seitdem ich das am laufen habe bekomme ich, sobald irgendein FS20 Sender auslöst einen Eintrag mi LOG den ich nicht verstehe. Löst z.B. mein Bewegungsmelder aus, dann erhalte ich:
FS20.BewegungsmelderTreppenhausEG.S1_timer: unknown attribute FS20.Rollladen.Kueche. Type 'attr FS20.BewegungsmelderTreppenhausEG.S1_timer ?' for a detailed list.
Dabei hat der überhauptnichts mit dem Rollladen in der Küche zu tun????!!!
Kann mir da jemand was dazu sagen? Bzw. wo könnte ich den Fehler suchen?
Nochmals Danke!
Gruß
H-man
Hast Du schon die Anweisung in der Fehlermeldung befolgt?
Zitat... Type 'attr FS20.BewegungsmelderTreppenhausEG.S1_timer ?' for a detailed list.
... jetzt schon ;-)
aber das macht die Sache noch undurchsichtiger:
Please define FS20.BewegungsmelderTreppenhausEG.S1_timer first
Ich kann einfach keinen Zusammenhang zwischen den Geräten sehen, da das ja bei allen möglichen sendern so ist.
Irgendwo in der fhem.cfg wird eine Anweisung stehen, die so interpretiert wird, dass "FS20.BewegungsmelderTreppenhausEG.S1_timer" als definiertes Gerät vorausgesetzt wird.
Das kann vielfältige Ursachen haben, wie vergessene Klammern Anführungszeichen usw., eine mehrdeutige Regex, Fehler durch direktes Bearbeiten der fhem.cfg, kopieren von Geräten die alte Referenzen beibehalten uvm.
Du könntest in fhem.cfg, fhem.save nach unplausiblen Einträgen suchen.
hmmm...
schon merkwürdig, dass das bei mehreren Sender der Fall ist - oder vielmehr war.
So plötzlich wie es kam ist es auch wieder verschwunden. Die Meldung ist weg und ich bin so schlau wie zuvor.
Jetzt kann ich mich dem eigentlichen Problem widmen. Beschattung! und rausfinden warum die Rollläden immer wieder angesprochen werden
Hallo,
ich habe das gesamte Thema etwas anders gelöst:
meine Situation:
- eine Beschattung ist bei mir ausschließlich auf der Westseite nötig
- ab 14 Uhr (Sommerzeit) scheint die Sonne in das Haus
- 3 Jalousien auf der Westseite (HM-LC-BL1-FM)
- ein Temperatursensor im Garten (HM-WDS10-TH-O)
- ein Bewegungsmelder (mit Helligkeitssensor) auf der Westseite (HM-Sen-MDIR-O)
Auslösen der Beschattung
ein einfachen at um 13:55 Uhr bei Helligkeit > 190 und Temperatur > 19 Grad: fhem ("set Jalousie_West Beschatten");
Durchführen der Beschattung
Ich habe die 3 betroffenen Jalousien der Westseite per structure zu einer "Jalousie_West" zusammengefasst. Jede der 3 Jalousien sowie die structure bekommen ein WebCmd "Beschatten". Jede der 3 Jalousien bekommt ein eventmap (z.B. set 45%:Beschatten).
Ich möchte beim Beschatten nicht alles komplett verdunkeln. So kann ich über die structure alle Jalousien auf einmal schalten (Beschatten), aber für jede Jalousie über das eventmap festlegen, was denn das Beschatten für jede einzelne Jalousie bedeutet (x %).
Über diese Lösung kann ich auch die Beschattung mit einem Klick per Hand starten.
Mir ist klar, dass man das alles noch verfeinern kann, z.B. mehrfach am Tag prüfen, etc.
Ob diese Lösung eleganter ist, kannst Du jetzt selber entscheiden. Das hängt ja auch immer von der konkreten Situation und Deinen eigenen Anforderungen ab.
Hallo,
danke für die Anregungen - klingt auf jeden Fall interessant. Leider kann ich das so wohl nicht umsetzen, (oder ich weiß noch nicht wie) denn meine FS20 RSU verstehen die prozentangaben nicht. Mal sehen ob ich da was mit on-for-timer machen kann.....
Gruß
H-Man
Hallo Felskrone,
kannst du mir das etwas genauer erläutern (oder zeigen) irgendwie klapt das so bei mir nicht. ich sceitere schon daran, dass mein "rauf" und "runter" verschwindet sobald ich einerm Rollladen daas webcmd Bechstten gebe.....
Vielen Dank und Gruß
H-Man
Ich hab das mit DOIF gelöst und bin aktuell echt zufrieden: Es wird geprüft, ob die Innentemp einen Mindestwert nicht unterschreitet (Ich will ja im Winter die Heizkraft der Sonne ausnutzen), ob ein bestimmter Helligkeitswert erreicht wurde, ob jemand zuhause ist (wenn ich daheim bin, mach ich das gerne selber) und ob die Beschattungsfunktion eingeschaltet ist. Zusätzlich wird noch abgefragt, ob der Rollo ganz oben ist (so funkt mir die Beschattung nicht dazwischen, wenn ich den Rollo manuell runtergefahren habe)
Wenn das alles erfüllt ist, wird der Rollo runtergefahren und ein Reading gesetzt, das zum beenden der Beschattung abgefragt wird.
Vielleicht hilfts... :)
([Bewegungsmelder1:brightness] > [rollosteuerung:beschattung_brightness_grenzwert] and
[Sensor.Wohnzimmer:temperature] > [rollosteuerung:beschattung_temp_grenzwert] and
[str_handy] eq "absent" and
[EG.rollo.terrasse_seite] eq "oben" and
[rollosteuerung:beschattung] eq "an")
(set EG.rollo.terrasse_seite 30, setreading EG.rollo.terrasse_seite_beschattung beschattung aktiv)
DOELSEIF (([Bewegungsmelder1:brightness] < [rollosteuerung:beschattung_brightness_grenzwert] or [Sensor.Wohnzimmer:temperature] < [rollosteuerung:beschattung_temp_grenzwert]) and
[str_handy] eq "absent" and
[EG.rollo.terrasse_seite_beschattung:beschattung] eq "aktiv")
(set EG.rollo.terrasse_seite 100, setreading EG.rollo.terrasse_seite_beschattung beschattung inaktiv)
DOELSEIF ([str_handy] eq "present" and [EG.rollo.terrasse_seite_beschattung:beschattung] eq "aktiv")
(set EG.rollo.terrasse_seite 100, setreading EG.rollo.terrasse_seite_beschattung beschattung inaktiv)
Hallo H_Man,
es gibt nur ein Attribut webCmd. Deine Commands müssen dann mit ":" getrennt werden:
attr Jalousie_West webCmd on:off:Beschatten
oder bei Dir eben
attr structure_xyz webCmd rauf:runter:Beschatten
Gruß, fk
soooo.... nach etwas Pause bin ich wieder zurück und bin eigentlich nicht viel weiter gekommen und hoffe ihr helft mir nochmal :-)
Mein FS20 RSU ist wie folgt konfiguriert:
eventMap off-for-timer 12:Beschattung off:runter on:rauf
webCmd rauf:runter:Beschattung
rauf und runter gingen ja eh schon.
Wenn ich nun set Rollo off-for-timer 12 eintippe bekomme ich im Log kein off-for-timer 12 sondern ein runter-for-timer 12 angezeigt - das kann doch nicht stimmen, oder?
und wenn ich Set Rollo Beschattung eintippe / anklicke bekomme ich Unknown argument 12, choose one of off off-for-timer on on-for-timer reset timer toggle on-till-overnight blink on-till intervals off-till off-till-overnight
Was mache ich nur falsch?
Vielen Dank für die Hilfe!
Gruß
H-Man
Edit: nochmal gelesen... Poste doch bitte mal ein list, oder die gesamte Definition aus der fhem.cfg
meinst du das?
define FS20.Rollladen.Abstellkammer.E FS20 2268 03
attr FS20.Rollladen.Abstellkammer.E userattr room_map structexclude
attr FS20.Rollladen.Abstellkammer.E IODev FS20.Cube
attr FS20.Rollladen.Abstellkammer.E alias Rollladen Abstellkammer
attr FS20.Rollladen.Abstellkammer.E devStateIcon rauf:fts_shutter_down runter:fts_shutter_up
attr FS20.Rollladen.Abstellkammer.E eventMap off-for-timer 12:Beschattung off:runter on:rauf
attr FS20.Rollladen.Abstellkammer.E model fs20rsu
attr FS20.Rollladen.Abstellkammer.E room Küche,Rollladen
attr FS20.Rollladen.Abstellkammer.E webCmd rauf:runter:Beschattung
define FileLog_FS20.Rollladen.Abstellkammer.E FileLog ./log/FS20.Rollladen.Abstellkammer.E-%Y.log FS20.Rollladen.Abstellkammer.E
Das eventMap kann so nicht funktionieren. Das Leerzeichen führt dazu, dass du Bechattung mit 12 mappst, daher das unknown argument. Guck dir mal die Doku zu eventMap an, da gibt's auch ein Beispiel...
immer wieder erstaunlich: kaum macht mann es richtig - funktioniert es.
Vielen Dank! => /off-for-timer 12:Beschattung/ off:runter/ on:rauf/
Dann werd ich mal weiter rumprobieren.
Gruß
H-Man
Hallo,
das mit dem zusätzlichen webcmd Beschattung geht inzwischen - zuindest bei den RSUs. Allerdings habe ich noch ein anderes Problem. Um meine at's und notify's möglichst klein zu halten, habe ich nun alles rausestrichen was geht um die Beschattung zu testen.
Mein Dummy "d_Beschattung " schaltet brav ein und aus und mein at_Beschattung wird alle 15min aufgerufen, aber es passiert nix :-(
Das sind doch gerade mal 3 Zeilen.... im Log steht NIX und im eventmonitor nur, dass das at gestartet wird.
Wieso fährt mein Rollo nicht runter?
+*00:15 {;
if (Value ("d_Beschattung" eq "on") && ($hour>=10 && $hour<17)) && (Value ("FS20.Rollladen.Kueche" eq "on")){;
fhem("set FS20.Rollladen.Kueche off")};
}
Gruß und immer wieder Danke.....!
H-Man
ich würde eine Beschattung gar nicht so schwierig aufbauen, für mich sind 3 Faktoren wichtig
1. Temperatur - über eigenen Sensor
2. Sonnenstand - über Twilight
3. Zeit - ist immer eine Sache des Sonnenstandes
zu 3. wichtig wenn ein Fenster nach Osten geht (Sonnenaufgang) die Zeit vormittag, danach dann eben frei wählbar nach Sonnenstand mit Twilight, kann der Rollladen prozentual schon mal leicht hoch gefahren werden. Ich mache das so bei mir
Da, dann die richtige Einstellung zu haben erreicht man nur über probieren ich bin da auch noch nicht ganz zufrieden.
Aber am besten geht das (finde ich) über eine Dummy/DOIF Kombination.
Das Dummy wählt bei mir vor ob der/die Rollladen eben gesteuert werden sollen, über Fhem/Dämmerung je nachdem wie es heißen soll oder eben Beschattung oder auch komplett Aus. Bei mir gibt es dann noch die Nachtschicht.
Bau dir das mal so ein und schaue mal ob es dir gefällt
define du_RolloSZmodus dummy
attr du_RolloSZmodus alias Schlafzimmer - Modus
attr du_RolloSZmodus devStateIcon FHEM:fts_shutter_automatic@lightgreen Nachtschicht:fts_shutter_up@crimson Beschattung:fts_shutter_updown@blue Aus:fts_shutter_manual@yellow
attr du_RolloSZmodus group Rollläden OG
attr du_RolloSZmodus icon time_manual_mode@#7a0099
attr du_RolloSZmodus room Automation,Schlafzimmer
attr du_RolloSZmodus setList state:FHEM,Nachtschicht,Beschattung,Aus
attr du_RolloSZmodus sortby 01
attr du_RolloSZmodus webCmd state
Je nachdem was eingestellt wird arbeitet dann ein DOIF welches den oder die Rollläden steuert.
Mehr braucht es eigentlich nicht
Mein Beschattungs DOIF (siehe Code) wie gesagt aber für ein Fenster nach Osten ausgerichtet und bei mir steht der Rollladen sehr oft am Tag in eine sogenannten Home Position diese fährt er auch am Abend wieder an. Funktioniert aber noch nicht 100%
DOIF
define di_RollladenSZ_B DOIF ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] > 20 and [myTwilight:azimuth] > 72 and [myTwilight:elevation] < 50 and [06:45-10:00]) (set RollladenSZ pct 25)\
DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] > 23 and [myTwilight:azimuth] > 72 and [myTwilight:elevation] < 60 and [10:01-13:00])(set RollladenSZ pct 25)\
DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and ([Temperatur_Terrasse:temperature] > 22 and [Temperatur_Terrasse:temperature] < 27) and [myTwilight:azimuth] > 150 and [myTwilight:elevation] < 70 and [13:01-16:00])(set RollladenSZ pct 50)\
DOELSEIF ([?du_RolloSZmodus] eq "Beschattung" and [Temperatur_Terrasse:temperature] < 31 and [[du_RolloZeitSZ_hoch_B]-{sunset_abs()}]) (set RollladenSZ pct 75)\
attr di_RollladenSZ_B group Rollläden
attr di_RollladenSZ_B wait 900:900
hi moonsrrox,
also für mic sieht dein "Konstrukt" komplexer aus als meins :-)
aber egal.... Mein Dummy macht ja was er soll, aber mein simples at macht einfach nix - noch nichtmmal einen Fehler ausgeben :-(
ich habe leider keine notify im Einsatz, aber du mußt mal nach Beispielen suchen.
Ich weiß nicht ob dieser Teil des notify so funktioniert:!!
("d_Beschattung" eq "on")
Inzwischen hab ich gesehen dass da wohl die anzahl an Klammern nicht ganz passt.
Muss da nochmal nachzählen....
Zitat von: h-man-kl am 01 September 2016, 14:45:14
Inzwischen hab ich gesehen dass da wohl die anzahl an Klammern nicht ganz passt.
Muss da nochmal nachzählen....
Egal wie man es löst. Es ist immer besser etwas ereignisgesteuert zu realisieren, als durch Polling (ständiges Abfragen).
z. B.
define di_beschattung DOIF ([d_Beschattung] eq "on" and [10:00-17:00] and [FS20.Rollladen.Kueche] eq "on") (set FS20.Rollladen.Kueche off)
Es ist nicht nur kürzer in der Definition, sondern funktioniert auch ereignisgesteuert.
Gruß
Damian
Danke für den Hnweis. Du hast sicher recht, dass es besser ist etwas ereignisgesteuert schalten zu lassen.
Ich werde mich dann mal daran versuchen das so zu lösen wie du vorgeschlagen hast!
Läuft! :-)
Vielen Dank an alle, die mir geholfen haben.
Zur Zeit ist es so gelöst:
ein Dummy (d_Beschattung) wird zur ZEit nur über die Außentemperatur geschaltet:
Aussentemperatur.* {
if ((ReadingsVal ('Aussentemperatur', 'temperature', 0) >25.0)) {fhem ("set d_Beschattung on")}
else {((ReadingsVal ('Aussentemperatur', 'temperature', 0) <25.0)) {fhem ("set d_Beschattung off")}
}
dann habe ich noch zwei DOIFs für die Straßenseite und den Garten die so aufgebaut sind:
([d_Beschattung] eq "on" and [10:00-16:45] and [FS20.Rollladen.Kueche] eq "on") (set FS20.Rollladen.Kueche off; sleep 20; set FS20.Rollladen.Kueche off)
DOELSEIF ([17:00-19:00] and [FS20.Rollladen.Kueche] eq "off") (set FS20.Rollladen.Kueche on)
bzw<.
([d_Beschattung] eq "on" and [13:00-20:00] and [FS20.RollladenBad.E] eq "on") (set FS20.RollladenBad.E off; sleep 25; set FS20.RollladenBad.E off; set FS20.RollladenKZ.E Beschattung; set FS20.Rollladen.EZ Beschattung)
Da meine alten Gurtwickler nicht mit on-for-timer funktionieren musste ich bei denen mit sleep arbeiten....
Geplant ist noch die Helligkeit und oder die Innentemp mit einzubauen. Aber jetzt bin ich erstmal froh dass es läuft!
Gruß
H-Man
Zitat von: h-man-kl am 15 September 2016, 14:53:31
Läuft! :-)
Vielen Dank an alle, die mir geholfen haben.
Zur Zeit ist es so gelöst:
ein Dummy (d_Beschattung) wird zur ZEit nur über die Außentemperatur geschaltet:
Aussentemperatur.* {
if ((ReadingsVal ('Aussentemperatur', 'temperature', 0) >25.0)) {fhem ("set d_Beschattung on")}
else {((ReadingsVal ('Aussentemperatur', 'temperature', 0) <25.0)) {fhem ("set d_Beschattung off")}
}
dann habe ich noch zwei DOIFs für die Straßenseite und den Garten die so aufgebaut sind:
([d_Beschattung] eq "on" and [10:00-16:45] and [FS20.Rollladen.Kueche] eq "on") (set FS20.Rollladen.Kueche off; sleep 20; set FS20.Rollladen.Kueche off)
DOELSEIF ([17:00-19:00] and [FS20.Rollladen.Kueche] eq "off") (set FS20.Rollladen.Kueche on)
bzw<.
([d_Beschattung] eq "on" and [13:00-20:00] and [FS20.RollladenBad.E] eq "on") (set FS20.RollladenBad.E off; sleep 25; set FS20.RollladenBad.E off; set FS20.RollladenKZ.E Beschattung; set FS20.Rollladen.EZ Beschattung)
Da meine alten Gurtwickler nicht mit on-for-timer funktionieren musste ich bei denen mit sleep arbeiten....
Geplant ist noch die Helligkeit und oder die Innentemp mit einzubauen. Aber jetzt bin ich erstmal froh dass es läuft!
Gruß
H-Man
Wenn du schon mit der DOIF-Syntax vertraut bist, dann kannst du ebenfalls deinen Dummy d_Beschattung inklusive notify wegrationalisieren:
d_Beschattung DOIF ([Aussentemperatur:temperature] > 25)
attr d_Beschattung state on|off
Nebenbei wird der Zustand von d_Beschattung im Gegensatz zum notify nur bei Über-/Unterschreitung der Temperatur aktualisiert und nicht bei jedem Event des Temperatursensors ;)
Gruß
Damian
Hi,
ich gestehe ich kenne mich mit doif (noch) nicht so gut aus. Habe das mal "blind" übernommen und muss mal sehen, dss ich meinen Senosor kurz erwärme :-)
Dankeschön!