Hello again,
Habe win DOIF dass nach Temperatur Sonnenstand und Wetter Rollos schließt.
CMD1 die Südseite
CMD2 die Westseite.
CMD1 läuft und fährt die Rollos runter, CMD2 wird aber nie gestartet obwohl alle Trigger-Werte passen.
define:
defmod DOIF_ROLLO_DOWN_BESCHATTUNG DOIF ([Aussen_Temp:temperature] > 20 and [Sonnenstand:azimuth] > 130 and [WetterProplanta:weather] =~ "bedeckt|heiter|klar") \
(set PI_EG cmd set Rollo1_Gast geschlossen,set PI_OG cmd set Rollos_OG_Sued geschlossen,set PI_DG cmd set Rollos_DG_Sued geschlossen) \
DOELSEIF ([Aussen_Temp:temperature] > 20 and [Sonnenstand:azimuth] > 220 and [WetterProplanta:weather] =~ "bedeckt|heiter|klar") \
(set PI_EG cmd set Rollos_EG_West geschlossen,set PI_OG cmd set Rollos_OG_West geschlossen)\
DOELSEIF ([18:30]) (set PI_EG cmd set Rollos_EG offen,set PI_OG cmd set Rollos_OG offen,set PI_DG cmd set Rollos_DG offen)
attr DOIF_ROLLO_DOWN_BESCHATTUNG checkall event
list:
Internals:
CFGFN
DEF ([Aussen_Temp:temperature] > 20 and [Sonnenstand:azimuth] > 130 and [WetterProplanta:weather] =~ "bedeckt|heiter|klar")
(set PI_EG cmd set Rollo1_Gast geschlossen,set PI_OG cmd set Rollos_OG_Sued geschlossen,set PI_DG cmd set Rollos_DG_Sued geschlossen)
DOELSEIF ([Aussen_Temp:temperature] > 20 and [Sonnenstand:azimuth] > 220 and [WetterProplanta:weather] =~ "bedeckt|heiter|klar")
(set PI_EG cmd set Rollos_EG_West geschlossen,set PI_OG cmd set Rollos_OG_West geschlossen)
DOELSEIF ([18:30]) (set PI_EG cmd set Rollos_EG offen,set PI_OG cmd set Rollos_OG offen,set PI_DG cmd set Rollos_DG offen)
NAME DOIF_ROLLO_DOWN_BESCHATTUNG
NR 102677
NTFY_ORDER 50-DOIF_ROLLO_DOWN_BESCHATTUNG
STATE cmd_1
TYPE DOIF
Helper:
Dblog:
Cmd:
Logdb:
TIME 1495544632.16974
VALUE 1
Cmd_event:
Logdb:
TIME 1495544632.16974
VALUE Aussen_Temp
Cmd_nr:
Logdb:
TIME 1495544632.16974
VALUE 1
Last_cmd:
Logdb:
TIME 1495524110.49943
VALUE initialized
Mode:
Logdb:
TIME 1495524110.49943
VALUE disabled
State:
Logdb:
TIME 1495544632.16974
VALUE cmd_1
Readings:
2017-05-23 15:04:21 Device Sonnenstand
2017-05-23 15:03:52 cmd 1
2017-05-23 15:03:52 cmd_event Aussen_Temp
2017-05-23 15:03:52 cmd_nr 1
2017-05-23 15:03:52 e_Aussen_Temp_temperature 26.5625
2017-05-23 15:04:21 e_Sonnenstand_azimuth 224.86
2017-05-23 15:03:52 state cmd_1
2017-05-23 15:02:55 timer_01_c03 23.05.2017 18:30:00
Condition:
0 ReadingValDoIf($hash,'Aussen_Temp','temperature') > 20 and ReadingValDoIf($hash,'Sonnenstand','azimuth') > 130 and ReadingValDoIf($hash,'WetterProplanta','weather') =~ "bedeckt|heiter|klar"
1 ReadingValDoIf($hash,'Aussen_Temp','temperature') > 20 and ReadingValDoIf($hash,'Sonnenstand','azimuth') > 220 and ReadingValDoIf($hash,'WetterProplanta','weather') =~ "bedeckt|heiter|klar"
2 DOIF_time_once($hash,0,$wday)
Days:
Devices:
0 Aussen_Temp Sonnenstand WetterProplanta
1 Aussen_Temp Sonnenstand WetterProplanta
all Aussen_Temp Sonnenstand WetterProplanta
Do:
0:
0 set PI_EG cmd set Rollo1_Gast geschlossen,set PI_OG cmd set Rollos_OG_Sued geschlossen,set PI_DG cmd set Rollos_DG_Sued geschlossen
1:
0 set PI_EG cmd set Rollos_EG_West geschlossen,set PI_OG cmd set Rollos_OG_West geschlossen
2:
0 set PI_EG cmd set Rollos_EG offen,set PI_OG cmd set Rollos_OG offen,set PI_DG cmd set Rollos_DG offen
3:
Helper:
event azimuth: 224.86,elevation: 55.85,twilight: 100,twilight_weather: 100,compasspoint: south-southwest
globalinit 1
last_timer 1
sleeptimer -1
timerdev Sonnenstand
timerevent azimuth: 224.86,elevation: 55.85,twilight: 100,twilight_weather: 100,compasspoint: south-southwest
triggerDev Sonnenstand
timerevents:
azimuth: 224.86
elevation: 55.85
twilight: 100
twilight_weather: 100
compasspoint: south-southwest
timereventsState:
azimuth: 224.86
elevation: 55.85
twilight: 100
twilight_weather: 100
compasspoint: south-southwest
triggerEvents:
azimuth: 224.86
elevation: 55.85
twilight: 100
twilight_weather: 100
compasspoint: south-southwest
triggerEventsState:
azimuth: 224.86
elevation: 55.85
twilight: 100
twilight_weather: 100
compasspoint: south-southwest
Internals:
Itimer:
Localtime:
0 1495557000
Readings:
0 Aussen_Temp:temperature Sonnenstand:azimuth WetterProplanta:weather
1 Aussen_Temp:temperature Sonnenstand:azimuth WetterProplanta:weather
all Aussen_Temp:temperature Sonnenstand:azimuth WetterProplanta:weather
Realtime:
0 18:30:00
Regexp:
0:
All:
State:
State:
Time:
0 18:30:00
Timecond:
0 2
Timer:
0 0
Timers:
2 0
Trigger:
Triggertime:
1495557000:
localtime 1495557000
Hash:
Attributes:
checkall event
room zentrale Funktionen
jemand ne Idee?
Ja ich!
Das cmd1 ist ja immer noch gueltig, auch wenn dann spaeter cmd2 auch gueltig ist! Aber wer zuerst kommt mahlt zuerst!
Gruss Christoph
das heist ich muss die Reihenfolge umdrehen?
erst Uhrzeit 18:30
dann West
dann Sued?
das checkall attribut hab ich erst später reingenommen zum testen.
das muss dann drinbleiben?
siehst du auch wunderbar hier, da es so schön untereinander steht :)
Condition:
0 ReadingValDoIf($hash,'Aussen_Temp','temperature') > 20 and ReadingValDoIf($hash,'Sonnenstand','azimuth') > 130 and ReadingValDoIf($hash,'WetterProplanta','weather') =~ "bedeckt|heiter|klar"
1 ReadingValDoIf($hash,'Aussen_Temp','temperature') > 20 and ReadingValDoIf($hash,'Sonnenstand','azimuth') > 220 and ReadingValDoIf($hash,'WetterProplanta','weather') =~ "bedeckt|heiter|klar"
änder mal deine erste bedingung in:
DOIF ([Aussen_Temp:temperature] > 20 and [Sonnenstand:azimuth] > 130 and [Sonnenstand:azimuth] < 220 and [WetterProplanta:weather] =~ "bedeckt|heiter|klar")
Zitat von: nils_ am 23 Mai 2017, 15:32:49
änder mal deine erste bedingung in:
DOIF ([Aussen_Temp:temperature] > 20 and [Sonnenstand:azimuth] > 130 and [Sonnenstand:azimuth] < 220 and [WetterProplanta:weather] =~ "bedeckt|heiter|klar")
ne, das wollte ich gerade nicht. Wenn es da dann erst am Nachmittag warm wird und er beschatten soll würde die Südseite oben bleiben.
Hab jetzt mal die Reihenfolge umgedreht. Er ist dann auch auf das richtige CMD gesprungen.
werd morgen sehen ob es so dann sauber läuft.
er macht entweder südseite oder westseite runter, nie beide. und beide ist vermutlich eher was du möchtest, oder?
das klappt dann mit der logik so nicht.
und nur so als weitere idee, pack doch deine rollos in eine structure.
(löst dein logik problem nicht, aber deine set-befehl-aufreihung wird übersichtlicher)
die structure sind auf den jeweiligen FHEM Instanzen.
der DOIF läuft im Keller und setzt dann in die Etagen ab.
na mit checkall sollte er bei jedem Event durchlaufen. damit sollte er dann Süd und West runterfahren, wenn auch erst mit dem nächsten Event.
Oder hab ich da nen Denkfehler?
das ckeckall/event lässt ihn doch bei jedem Event alle prüfen.
Moin
Ich wuerde das vereinzeln! Sprich zwei DOIFs daraus machen! Du faengst sonst irgendwann das Basteln an! Letztendlich haben die beiden Sachen ja nichts miteinander zu tun, es ist lediglich die gleiche Ausschaltbedingung! Und das funktioniert jetzt auch nicht, wenn es naemlich spaeter als "220" Sonnenstand schoen oder warm wird bleibt der Sueden oben!
Gruss Christoph
Edith: checkall sagt mir so nichts! Checkall prueft alle events, mit Deiner Einstellung. Das bedeutet aber nicht dass er durch alle states durchlaeuft! Siehe commandref!
Zitat von: Frank_Huber am 23 Mai 2017, 15:45:01
die structure sind auf den jeweiligen FHEM Instanzen.
ah ok, hab es gerade erst gesehen das du an verschiedene fhem's die commandos schickst.
(hab ehrlich gesagt nicht so genau auf die set befehle geachtet, sondern nur gesehen das sie recht 'lang' sind ;) )
2 DOIF's geht natürlich auch.
Die Anzahl der PI's ist hier voellig egal! Bei einem trigger werden die Bedingungen geprueft, das erste, das erfuellt ist wird ausgefuehrt. Beim naechsten trigger dann wieder das Gleiche! Also hilft nur mehrere DOIFs!
Gruss Christoph
Ja wenn er sonst anderstrum wieder stehen bleibt wirds sonst blöd. kann ja entweder durch die Tempertur oder dasWetter kommen.
2 DOIFs erscheint mir jetzt auch die einfachere Lösung.
ansonsten müsste ich bei der Westbeschattung auch die Südseite fahren lassen. das wäre dann im EG und OG ein zusätzliches structure oder mehr Befehle im set.
Ich antworte mal selbst dass es hier komplett bleibt.
Hab jetzt doch für Süd und West zwei getrennte DOIF gemacht. erscheint mir nach der Diskussion hier einfacher.
Ich musste allerdings das DOELSEIF zum wieder hochfahren noch ändern.
Er hat mir um 18:30 wie konfiguriert die Rollos wieder hochgefahren, aber kurz darauf anhand vom Sonnenwinkel und Temperatur wieder runter.
Das ist jetzt der Code im DEF:
([Aussen_Temp:temperature] > 20 and [Sonnenstand:azimuth] > 130 and [Sonnenstand:azimuth] < 275 and [WetterProplanta:weather] =~ "bedeckt|heiter|klar")
(set PI_EG cmd set Rollo1_Gast geschlossen,set PI_OG cmd set Rollos_OG_Sued geschlossen,set PI_DG cmd set Rollos_DG_Sued geschlossen)
DOELSEIF ([Sonnenstand:azimuth] > 275) (set PI_EG cmd set Rollo1_Gast offen,set PI_OG cmd set Rollos_OG_Sued offen,set PI_DG cmd set Rollos_DG_Sued offen)
Moin
Ich denke Du wirst das noch einige Male aendern! Jetzt hast du ja die Uhrzeit komplett entfernt. Ich habe bei mir auch noch ein wieder hochfahren eingebaut wenn sich die Wetterlage aendert, da es ja sonst finster im Wohnzimmer ist, und das gibt Haue!
Ein Rollo faehrt z.B. auch in Abhaengigkeit des Fernsehers runter, da man sonst mehr Sonne als Programm sieht!
Gruss Christoph
also problem gelöst?
wenn das für dich mit dem winkel passt ist es ok.
ansonsten hättest du ja zusätzlich noch die uhrzeit in den ersten doif-teil bauen können.
DOIF ([06:00-18:00] and Temp and Sonnenstand .... ) (rollos runter....)
DOELSEIF ([18:01]) (Rollos hoch)
//edit:
da war wieder einer schneller :)
Ne denke das mit dem Winkel passt erstmal.
Ich warte den Lauf heute mal ab, denke aberdass das Thema erledigt ist und dann heute Nachmittag auf [gelöst] geht.
Wir haben das EG mit dem Wohnbereich als großen offenen Bereich. selbst wenn Sued und West zu sind ist genug Helligkeit da.
Der Fernseher ist so platziert dass er kein Sonenlicht bekommt das stören könnte. ;)
so, das ganze läuft jetzt erstmal wunschgemß. Wird aber sicherlich noch verbessert im Laufe der Zeit.
Süd:
defmod DOIF_ROLLO_BESCHATTUNG_SUED DOIF ([Aussen_Temp:temperature] > 20 and [Sonnenstand:azimuth] > 130 and [Sonnenstand:azimuth] < 275 and [WetterProplanta:weather] =~ "bedeckt|heiter|klar|sonnig") \
(set PI_EG cmd set Rollo1_Gast geschlossen,set PI_OG cmd set Rollos_OG_Sued geschlossen,set PI_DG cmd set Rollos_DG_Sued geschlossen)\
DOELSEIF ([DOIF_ROLLO_BESCHATTUNG_SUED:cmd] == 1 and [Sonnenstand:azimuth] > 130 and [Sonnenstand:azimuth] < 275 and [WetterProplanta:weather] =~ "wolkig|stark.bewoelkt") \
(set PI_EG cmd set Rollo1_Gast offen,set PI_OG cmd set Rollos_OG_Sued offen,set PI_DG cmd set Rollos_DG_Sued offen)\
DOELSEIF ([DOIF_ROLLO_BESCHATTUNG_SUED:cmd] == 1 and [Sonnenstand:azimuth] > 275) (set PI_EG cmd set Rollo1_Gast offen,set PI_OG cmd set Rollos_OG_Sued offen,set PI_DG cmd set Rollos_DG_Sued offen)
attr DOIF_ROLLO_BESCHATTUNG_SUED cmdpause 900
attr DOIF_ROLLO_BESCHATTUNG_SUED do always
attr DOIF_ROLLO_BESCHATTUNG_SUED repeatsame 1:1:1
West ist identisch bis auf den auslösenden Sonnenwinkel.
Danke für eure Hilfe!
Hi zusammen,
ich habe ähnliches Problem mit meiner RolladenSteuerung. Nur komm ich zu schnell in cmd_2 rein...
([automatic_schatten] eq "on" and [09:00-19:00|0123456] and [myTL:azimuth] >= 140 and [?TWO_readings:TSA] > 60) ((set Rolladen.EG.West.* 25),(set Rolladen.OG.West.* 14),(set Telegram message Rolladen Auto roll az140 runter))
Funktioniert soweit ok, nur wenn der Wert TWO_reading (Solar_Kollektor) unter 60° geht, wird auf cmd_2 getriggert -> das doif also wieder "scharf" geschaltet. Nach Erhöhung über 60° geht dann der Rolladen wieder runter.
Hat mir jemand einen Tipp, dass das DoIf nur einmal (täglich), falls alle Bedingungen erfüllt sind, ausgeführt wird?
Ich verzweifle :-) und komme trotz Suche und CmdRef nicht weiter... Selbst das "?" hat nicht den gewünschten Erfolg gebracht.
Grüße
Florian
Du könntest Dein DOIF um DOELSEIF ([00:00])
ergänzen.