DOIF Problem mit 3 Zuständen

Begonnen von MarcoE, 12 Mai 2016, 11:42:04

Vorheriges Thema - Nächstes Thema

MarcoE

Hallo,
ich versuche gerade folgendes Problem mit DOIF zu lösen und bin leider nur teilweise erfolgreich:
Die elektrischen Rolläden (Modul ROLLO) sollen in Abhängigkeit von azimuth, elevation, temperatur, Wetter und homestatus betätigt werden. Der erste Teil mit Sonnenstand, Temperatur und Wetter funktioniert problemlos nur der homestatus macht mir noch Kopfzerbrechen.
Hier das aktuelle Coding:
define SW_Rollo_Sommer_Beschattung DOIF ([TC_Twilight:azimuth] > 110 and [TC_Twilight:azimuth] < 270 and [TC_Twilight:elevation] > 35 and [MeinWetter:condition] =~ /sonnig|heiter|klar|heiß|teilweise wolkig|wolkig/ and [MeinWetter:fc1_high_c] >= 23) (IF ([HomeStatus] eq "1") (set SuedWestRollo schlitz) ELSE (set SuedWestRollo geschlossen)) DOELSE (set SuedWestRollo offen)

Die Idee war die Rolläden bei entsprechender Wetterlage und bei nicht-Anwesenheit komplett zu schliessen, aber sobald ich nach Hause komme (sprich HomeStatus wechselt auf 1) leicht zu öffnen (schlitz). Genau dieses leicht öffnen geht aber leider nicht.
Wie könnte ich das Problem lösen?

Vielen Dank und viele Grüsse,
Marco

automatisierer

Hallo,

eine Kombination von DOIF und IF habe ich noch nciht gesehen und bin mir auch nichtr sicher ob das ganze so funktioniert.

Fakt ist auf jeden Fall: Dein DOIF triggert ja nur auf die Wetterbedingungen und nicht auf deinen Anwesenheitsstatus. Also wenn sich die Wetterdaten ändern wird getriggert, Falls CMD1 wahr ist, läuft dann noch das IF durch und wenn nicht tritt der DOELSE Fall ein. Wenn sich aber nur dein Anwesenheitsstatus ändert passiert garnix, erst wenn sich der geändert hat und die Wetterdaten das DOIF erneut triggern wird ds Rollo dann evtl. auf schlitz fahren.

ich würde es so machen:
define ... DOIF (Anwesenheit eq "anwesend" and Wetterdaten eq "wahr") (set Rollo schlitz)
DOELSEIF (Anwesenheit eq "abwesend" and Wetterdaten eq "wahr") (set Rollo zu)
DOESLE (set Rollo auf)

wobei es da zu bedenken gibt, dass das Rollo immer dann auf geht wenn die Wetterdaten "unwahr" sind. also quasi auch Nachts...

Gruß
Ingo

MarcoE

Hi,
ok verstanden. Ich habe es jetzt ein wenig erweitert:
-es gibt nun einen Dummy der auf Tag oder Nacht gesetzt wird vom DOIF welches Nachts schließt und für den Tag öffnet:

define SW_Rollo_Dummy dummy
define SW_Rollos
DOIF (
[16:00-23:00] and
[TC_Twilight:twilight]<61
) (set SuedWestRollo geschlossen, set SW_Rollo_Dummy Nacht)
DOELSEIF (
(
[06:00-10:00|8] or
[8:30-11:00|7]
) and
[TC_Twilight:twilight] > 46
) (set SuedWestRollo offen, set SW_Rollo_Dummy Tag)


Die Abfrage, sowie die Abfrage bzgl. des Homestatus habe ich nun noch in die Beschattung gebaut:

define SW_Rollo_Sommer_Beschattung
DOIF (
[TC_Twilight:azimuth] > 110 and
[TC_Twilight:azimuth] < 270 and
[TC_Twilight:elevation] > 25 and
[MeinWetter:condition] =~ /sonnig|heiter|klar|heiß|teilweise wolkig|wolkig/ and
[MeinWetter:fc1_high_c] >= 23 and
[SW_Rollo_Dummy] eq "Tag" and
[HomeStatus] eq "1"
) (set SuedWestRollo schlitz)
DOELSEIF (
[TC_Twilight:azimuth] > 110 and
[TC_Twilight:azimuth] < 270 and
[TC_Twilight:elevation] > 25 and
[MeinWetter:condition] =~ /sonnig|heiter|klar|heiß|teilweise wolkig|wolkig/ and
[MeinWetter:fc1_high_c] >= 23 and
[SW_Rollo_Dummy] eq "Tag" and
[HomeStatus] ne "1"
) (set SuedWestRollo geschlossen, set fhem_marco_bot message Sonnenschutz hinten geschlossen)
DOELSE (set SuedWestRollo offen)


Jetzt sollte es funktionieren, oder? (bin gerade selbst noch am testen).
Kleine Frage am Rand: muss tatsächlich in der fhem.cfg der DOIF komplett in einer Zeile ohne Zeilenumbruch stehen? Oder gibt es eine Möglichkeit das zumindest optisch etwas übersichtlicher zu machen (wie in meinem code part oben)?

Danke und viele Grüsse,
Marco

Wernieman

Mach es über den in FHEM integrierten Webeditor. Sieht besser aus und ist besser eingebbar
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

moonsorrox

ZitatSuedWestRollo schlitz

ist das ein weiteres DOIF,Dummy oder was ist das, denn in einem Homematic Aktor gibt es diese Position nicht.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

automatisierer

für meinen Geschmack hättest du die Zeiten auch noch mit in das DOIF packen können, entweder direkt oder die Zeiten in den Dummy und dann indirekt in das DOIF eingefügt.

Aber hauptsache ist, es funktioniert! und Geschmäcker sind ja nunmal unterschiedlich.

##########
Zitat
    SuedWestRollo schlitz


ist das ein weiteres DOIF,Dummy oder was ist das, denn in einem Homematic Aktor gibt es diese Position nicht.

das ist ein Befehl für das Modul 44_ROLLO.pm

##########

Das bearbeiten am besten im webif, da kannst du einfach Zeilenumbrüche machen und nen Syntax-Check haste da auch noch...

Gruß
Ingo

MarcoE

Zitat von: moonsorrox am 12 Mai 2016, 17:00:51
ist das ein weiteres DOIF,Dummy oder was ist das, denn in einem Homematic Aktor gibt es diese Position nicht.
Das ist kein homematic Aktor, sondern aus dem Modul ROLLO- das kennt die Öffnung "schlitz".

Bei meiner letzten Lösung war doch noch ein Fehler- die Nacht wurde trotz des dummy nicht richtig abgefangen. Daher habe ich es jetzt nochmal umgebaut- ohne dummy. Dafür wird das DOIF für die Beschattung bei Nacht disabled und bei Tag enabled:


define DOIF SW_Rollos
(
   [16:00-23:00] and
   [TC_Twilight:twilight]<61
) (set SuedWestRollo geschlossen, set set SW_Rollo_Sommer_Beschattung disable 1)
DOELSEIF (
   (
      [06:00-10:00|8] or
      [8:30-11:00|7]
   ) and
   [TC_Twilight:twilight] > 46
) (set SuedWestRollo offen, set SW_Rollo_Sommer_Beschattung disable 0)


und im Beschattungs-DOIF ist der Teil dann hinfällig:

define SW_Rollo_Sommer_Beschattung DOIF
(
   [TC_Twilight:azimuth] > 110 and
   [TC_Twilight:azimuth] < 270 and
   [TC_Twilight:elevation] > 25 and
   [MeinWetter:condition] =~ /sonnig|heiter|klar|heiß|teilweise wolkig|wolkig/ and
   [MeinWetter:fc1_high_c] >= 23 and
   [HomeStatus] eq "1"
) (set SuedWestRollo schlitz)
DOELSEIF (
   [TC_Twilight:azimuth] > 110 and
   [TC_Twilight:azimuth] < 270 and
   [TC_Twilight:elevation] > 25 and
   [MeinWetter:condition] =~ /sonnig|heiter|klar|heiß|teilweise wolkig|wolkig/ and
   [MeinWetter:fc1_high_c] >= 23 and
   [HomeStatus] ne "1"
) (set SuedWestRollo geschlossen)
DOELSE (set SuedWestRollo offen)


Das könnte jetzt passen, oder?

Viele Grüsse,
Marco

moonsorrox

ZitatDas ist kein homematic Aktor, sondern aus dem Modul ROLLO- das kennt die Öffnung "schlitz".

alles klar, war mir nicht bekannt, dann ist das ja geklärt  ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

automatisierer


da ist noch ein Tippfehler...

Zitat von: MarcoE am 12 Mai 2016, 18:09:04
Das ist kein homematic Aktor, sondern aus dem Modul ROLLO- das kennt die Öffnung "schlitz".

Bei meiner letzten Lösung war doch noch ein Fehler- die Nacht wurde trotz des dummy nicht richtig abgefangen. Daher habe ich es jetzt nochmal umgebaut- ohne dummy. Dafür wird das DOIF für die Beschattung bei Nacht disabled und bei Tag enabled:

define DOIF SW_Rollos
(
   [16:00-23:00] and
   [TC_Twilight:twilight]<61
) (set SuedWestRollo geschlossen, set set SW_Rollo_Sommer_Beschattung disable 1)
DOELSEIF (
   (
...


Das könnte jetzt passen, oder?

Viele Grüsse,
Marco



MarcoE

ups richtig da war noch ein Tipfehler- ich dachte der Webeditor macht einen Syntaxcheck? Hätte der da nicht meckern müssen?

Viele Grüsse,
Marco