DOIF - Probleme mit Reihenfolge bei der Abarbeitung

Begonnen von oli_bru, 31 Mai 2018, 15:45:32

Vorheriges Thema - Nächstes Thema

oli_bru

Hallo zusammen,

leider kämpfe ich seit Tagen mit der Logik eines DOIF und finde keine Lösung. Ich hoffe ihr könnt mir auf die Sprünge helfen...

Es geht darum die Rolläden herunter zu fahren, wenn die Sonne stark scheint. Dazu nutze ich unter anderem den Sonnenstand und auch die Werte meiner Wetterstation.
Mein Problem: Das Doif springt bei starker Sonne in den ersten Befehltsteil (korrekt). Jetzt wird es wolkig (Wetterstation:condition] eq "sunny"), aber statt dass das erste DOELSEIF also der 2. Befehlsteil angesprungen wird (was ja erfüllt ist) springt das Doif in den 4. Befehlsteil und verbleibt dort bis zum nächsten Sonnenschein.  >:(

([d_RolladenAutomatik] eq "on" and [d_Wetterdaten_25Sec:indoortemperature.average10min] > 22.5 and [d_Wetterdaten_25Sec:solarradiation.average10min] > 80.0 and [LichtVorhersageInternet:azimuth] > 120.0 and [LichtVorhersageInternet:azimuth] < 268.0 and [Wetterstation:condition] eq "sunny") ({Log 1, "Beschattung aktivieren"}, {RolladenSonnenschutzFahren("ab")})
DOELSEIF ([d_RolladenAutomatik] eq "on" and [?doif_PralleSonne] eq "cmd_1" and [LichtVorhersageInternet:azimuth] < 268.0) ({Log 1, "Beschattung DE-aktivieren: Zu wenig Sonne"}, {RolladenSonnenschutzFahren("auf")})
DOELSEIF ([d_RolladenAutomatik] eq "on" and ([?doif_PralleSonne] eq "cmd_1" or [?doif_PralleSonne] eq "cmd_2") and [LichtVorhersageInternet:azimuth] >= 268.0) ({Log 1, "Beschattung DE-aktivieren: Sonne schon um das Haus rum"}, {RolladenSonnenschutzFahren("auf")})
DOELSE ({Log 1, "cmd_4 ausgeloest."})


Vielen Dank vorab für eure Hilfe
FHEM auf PI 2, Homematic Wired IO Board auf Hutschiene, Div. Homematic Komponenten, Froggit Wetterstation HP1000

Amenophis86

Dann wird wohl eine der Bedingungen nicht erfüllt sein, wenn es nicht in den richtigen cmd sondern in doelse springt.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

oli_bru

#2
Naja - das ist offensichtlich, aber die Werte sagen etwas anderes:

Der zweite Block ist ja:
DOELSEIF ([d_RolladenAutomatik] eq "on" and [?doif_PralleSonne] eq "cmd_1" and [LichtVorhersageInternet:azimuth] < 268.0)

und ich habe die Werte ausgeben lassen, die ich im cmd_4 erhalte:
[d_RolladenAutomatik] -> on
[?doif_PralleSonne] -> cmd_1
[LichtVorhersageInternet:azimuth] -> 226.41

Danach hätte das oben stehende DOELSEIF ziehen müssen und nicht das DOELSE :-(

Ich habe ja eine böse Vermutung, nämlich dass das Ereignis die Wetterstation auslöst (von sunny auf cloudy), aber der Wert der Wetterstation nicht in diesem DOELSEIF abgefragt wird. Kann das sein?

***UPDATE***
Das was ich ob schreibe hat sich bestätigt und ich habe das so auch in einem andere Posting gefunden:
https://forum.fhem.de/index.php/topic,72411.msg640497.html#msg640497

ZitatDie Angaben werden immer von links nach rechts abgearbeitet. Zu beachten ist, dass nur die Bedingungen überprüft werden, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten. Kommt ein Device in mehreren Bedingungen vor, so wird immer nur ein Kommando ausgeführt, und zwar das erste, für das die dazugehörige Bedingung in der abgearbeiteten Reihenfolge wahr ist.

Der Weg wie man das lösen kann:
ich habe nun mit
attr checkall event
das DOIF erweitert und jetzt funktioniert es wie erhofft.  :)
FHEM auf PI 2, Homematic Wired IO Board auf Hutschiene, Div. Homematic Komponenten, Froggit Wetterstation HP1000