[gelöst] - DOIF bleibt bei CMD1 stehen.

Begonnen von Frank_Huber, 23 Mai 2017, 15:07:07

Vorheriges Thema - Nächstes Thema

Frank_Huber

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?

pc1246

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
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

Frank_Huber

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?

nils_

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")
viele Wege in FHEM es gibt!

Frank_Huber

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.

nils_

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)
viele Wege in FHEM es gibt!

Frank_Huber

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.

pc1246

#7
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!
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

nils_

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.
viele Wege in FHEM es gibt!

pc1246

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
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

Frank_Huber

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.

Frank_Huber

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)


pc1246

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
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

nils_

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 :)
viele Wege in FHEM es gibt!

Frank_Huber

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. ;)