Hallo zusammen,
nachdem ich für meine Jalousien bereits erfolgreich eine Zeitautomatik für auf-zu morgens/abends angelegt habe, möchte ich mir nun auch eine Automatik zur Beschattung bauen. Verwendet werden Unterputz-Jalousieaktoren von/für Homematic, die Abfragen zur Steuerung sollen aus online-Wetterdaten gezogen werden.
Bisher habe ich folgendes zusammengetippelt (alles noch ungetestet):
# Dummy, um Beschattung an/auszuschalten
#
define du_eg_rollos_beschattung_an_aus dummy
attr du_eg_rollos_beschattung_an_aus alias EG Rollos Beschattung
attr du_eg_rollos_beschattung_an_aus devStateIcon on:general_an:off off:general_aus:on
attr du_eg_rollos_beschattung_an_aus room 999_Automatiken
# DOIF für Beschattungsschaltung
#
define di_eg_rollos_beschattung_an_aus DOIF ([du_eg_rollos_beschattung_an_aus] eq "on") (attr di_eg_rollos_beschattung disable 0,save) DOELSE (attr di_eg_rollos_beschattung disable 1,save)
# DOIF für Beschattung
#
define di_eg_rollos_beschattung DOIF (([?Twilight:azimuth] > 105 && < 255) and [?Twilight:elevation] > 35 and [?Wetter:fc1_icon] =~ m/sunny/ and [Wetter:fc1_high_c] >= 24) ((set wz_105_rollo.*,ez_105_rollo.* 20)) DOELSE ((set wz_105_rollo.*,ez_105_rollo.* auf))
Vielleicht könnte mal jemand über den code schauen (besonders im DOIF für Beschattung), ob das so funktioniert.
Die Rollos sollen runterfahren bei bestimmten Sonnenwinkel und -höhe und bestimmtem Wetter, sonst sollen sie auffahren.
Ich selber blicke noch nicht so ganz durch bei der commandref zum DOIF und dem vorangestellten ? im Device, was ja demnach nur eine Abfrage und kein Trigger sein soll. Hier wäre der einzige Trigger die Tageshöchsttemperatur, der Rest nur Abfragen. Würden die Rollos denn so auch z.B. runter fahren, wenn die 255 beim azimuth überschritten sind, es aber noch mehr als 24 Grad Höchsttemperatur in der Wettervorhersage sind. Oder muss ich die ganzen Fragezeichen wieder rausschmeißen?
Besten Dank schon mal!
Gruß
Andreas
Am besten einfach mal ausprobieren.
Und dann warten wir die Reaktionen der Rollos und anderer Mitbewohner sind. :)
Aber Spass beiseite.
Bau Dir doch einfach ein paar Dummies, welche deine Rolladen simulieren und lasse da dein(e) DOIFs drauf los.
Dann kannst Du doch bei den Dummies schön ablesen, wann da was passiert oder auch nicht.
Ja, das könnte ich natürlich auch machen...
aber vielleicht kann mir trotzdem vorweg jemand sagen, ob da irgendwelche Böcke im code sind...
Gruß
Andreas
Erst mal probieren, LOG-Meldungen kontrollieren und dann bei konkreten Problemen fragen ist m.E. sinnvoller, als den 100. Beitrag zum gleichen Thema neu starten. :-[
Du hast Dir das ja sicher nicht so aus den Fingern gesaugt, sondern auf verschiedene Beiträge und Code-Zeilen hier eine für Dich angepasste Variante aufgebaut !?
Jau hab ich so gemacht...hat ein paar Tage gedauert, bis sich der Dunst legte und diese dabei rauskam...
Eine Frage sei mir aber doch erlaubt, oder?
Funktioniert diese UND-Abfrage so, oder wie müsste die korrekterweise aussehen?
([?Twilight:azimuth] > 105 && < 255)
Dank und Gruß
Andreas
Ich glaube nicht, dass der Vergleich funktioniert.
Ich habe die Azimuth-Werte folgendermaßen verglichen:
DOELSEIF
(
([du_jal_beschattung] eq "ja") and
([twilight:azimuth] > 80) and
([twilight:azimuth] < 270) and
([twilight:twilight_weather]>=40) and
([Wetter:fc1_high_c]>25) and
([Wetter:condition] =~ /sonnig|heiter|klar|heiß|teilweise wolkig/) and
([auto_jal_time_weekend]-[21:00])
)
(
set wz_jal_sued:FILTER=level>25 25,
set wz_jal_tuer:FILTER=level>25 25,
...
Danke für den Hinweis,
hätte halt gedacht, man könnte die Abfrage der Bedingung für den azimuth zusammenfassen...
Interessant ist auch deine Angabe FILTER=levelXYZ. Das bewirkt, dass nur wenn mehr als 25% geöffnet weiter zu gefahren wird, richtig?
Gruß
Andreas
Das ist korrekt und hilft mir fast in jedem DOIF.
Bei einem Structure solltest so folgendermaßen aussehen:
set alle_jalousien [FILTER=level>50] 50
Müsste es bei meiner Variante dann so aussehen (Rollos zusammengefast im Ausführungsteil)?
((set wz_105_rollo.*,ez_105_rollo.*:FILTER=level>20 20))
Gruß
Andreas
Keine Ahnung. Hast du es denn schon einmal einfach ausprobiert? :-)
Hallo zusammen,
möchte kurz meine Erfolgsmeldung kund tun.
Vielen Dank auch nochmal für die Tipps von FunkOdyssey!!!
Also, mit folgendem DOIF funktioniert die Beschattungsautomatik erstmal wie gewünscht:
([Twilight:azimuth] > 105 and [Twilight:azimuth] < 245 and [Twilight:elevation] > 35 and
[Wetter:condition] =~ /sonnig|heiter|klar|heiß|teilweise wolkig/ and [Wetter:fc1_high_c] >= 24)
((set wz_105_rollo.*:FILTER=level>20,ez_105_rollo.*:FILTER=level>20 20))
DOELSE ((set wz_105_rollo.*,ez_105_rollo.* auf))
Folgende Frage habe ich nun dazu noch: Nachdem ein Trigger hieraus ausgelöst hat und ich danach z.B. manuell über den Unterputzschalter ein Rollo wieder hoch oder runter fahre, bleibt dieses auch dauerhaft auf der Position, da das DOIF ja weiterhin auf cmd_1 bzw. cmd_2 bleibt.
Ist ja auch nicht schlecht soweit.
Könnte man aber eigentlich auch eine Art Timer oder so einbauen, dass nach einer gewissen Zeit der Status des DOIFs auf initialized gesetzt wird und die "Automatik" somit wieder greift? Wenn ja, wie? Ich hab schon in der commandref bei DOIF unter attr ... initialize initialized nachgeschaut, weiß aber nicht, wie ich das passend einbauen kann.
Ich hoffe, ihr versteht, was ich meine...
Vielen Dank nochmals!
Gruß
Andreas