Kleine DOIF-Unterstützung

Begonnen von chq, 03 September 2018, 08:09:33

Vorheriges Thema - Nächstes Thema

chq

Hallo,

ich bräuchte mal eine kleine DOIF-Unterstützung.

Bisheriger Code:

([06:20|AT]) (set HM_rolloWohnzimmer pct 77, IF ([HM_rolloEsszimmer:state] eq "closed") (set HM_rolloEsszimmer pct 100))

Ergebnis aktuell:

Um 6:20 Uhr fährt der Wohnzimmerrollo unter der Woche auf 77% und der Esszimmerrollo nur dann auf 100%, wenn dieser vorher geschlossen war.

Angestrebtes Ergebnis:

Um 6:20 Uhr soll der Wohnzimmerrollo unter der Woche nur dann auf 100% fahren, wenn [wettervorhersage:fc1_high_c] <= 22, ansonsten soll dieser nur auf 27% fahren. Zusätzlich soll der Esszimmerrollo wie bisher auch schon nur dann auf 100% fahren, wenn dieser vorher geschlossen war.

Geht das noch in ein DOIF und falls ja, wie? Speziell das Fettgedruckte bekomme ich nicht hin.

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

Frank_Huber

Esszimmer soll auch fahren wenn [wettervorhersage:fc1_high_c] > 22 ist?

ungetesteter Versuch:

([06:20|AT]) ([wettervorhersage:fc1_high_c] <= 22 set HM_rolloWohnzimmer pct 77) (IF [HM_rolloEsszimmer:state] eq "closed" set HM_rolloEsszimmer pct 100)

amenomade

 ([wettervorhersage:fc1_high_c] <= 22 set HM_rolloWohnzimmer pct 77)

Da fehlt etwas...
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

chq

Ich möchte das, was ich gerne erreichen würde nochmals verdeutlichen.

Folgendes soll erreicht werden:

a) Um 6:20 Uhr soll der Wohnzimmerrollo unter der Woche nur dann auf 100% fahren, wenn [wettervorhersage:fc1_high_c] <= "22", ansonsten soll dieser auf 27% fahren.

und

b) Der Esszimmerrollo soll (unabhängig von a) nur dann auf 100% fahren, wenn dieser vorher geschlossen war.

Im Zweifelsfall löse ich das Ganze halt mit zwei DOIFs.

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

Otto123

#4
Hi,

([06:20|AT] and [?wettervorhersage:fc1_high_c] <= 22)(set HM_rolloEsszimmer:FILTER=STATE=closed pct 100) DOELSE (set HM_rolloEsszimmer pct 27)

Oder ich habe diesen Wirrwar nicht verstanden  :o

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rabehd

ZitatWirrwar nicht verstanden
Geht mir auch so.

Bei b) fehlt mir eine Bedingung. Ich vermute da gilt ebenso 06:20|AT.

Hier käme ich nicht auf die Idee ein DOIF zu nehmen. Da reicht doch ein AT und 2 mal Wenn-Dann.
Auch funktionierende Lösungen kann man hinterfragen.

chq

#6
Richtig.

Gruß Chris

Zitat von: Otto123 am 03 September 2018, 15:45:07([06:20|AT] and [?wettervorhersage:fc1_high_c] <= 22)(set HM_rolloEsszimmer:FILTER=STATE=closed pct 100) DOELSE (set HM_rolloEsszimmer pct 27)

Da würde aber das falsche Rollo fahren. Es handelt sich aber um zwei unterschiedliche Rollos, die innerhalb eines DOIFs gesteuert werden sollen.
So einfach wie möglich, so kompliziert wie nötig

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

chq

So, nun sind es halt zwei DOIFs (im Vergleich zur ursprünglichen Fragestellung noch minimalst verfeinert). Ich find's gar nicht mal so schlecht, da nun jeder Rollo einzeln gesteuert wird.

Esszimmerrollo:

([06:20|AT] and [HM_rolloEsszimmer:state] eq "closed") (set HM_rolloEsszimmer pct 100)

DOELSEIF ([07:20|WE] and [HM_rolloEsszimmer:state] eq "closed") (set HM_rolloEsszimmer pct 100)

DOELSEIF ([{sunset("HORIZON=0",0,"17:00","22:00")}] and ([HM_markise:state] eq "closed" and [HM_rolloEsszimmer:control] > "68")) (set HM_rolloEsszimmer pct 59)

DOELSEIF ([22:00]) (set HM_rolloEsszimmer pct 0)


Wohnzimmerrollo:

([06:20|AT] and [wettervorhersage:fc1_high_c] <= "22") (set HM_rolloWohnzimmer pct 100)

DOELSEIF ([06:20|AT] and [wettervorhersage:fc1_high_c] > "22") (set HM_rolloWohnzimmer pct 27)

DOELSEIF ([07:20|WE] and [wettervorhersage:fc1_high_c] <= "22") (set HM_rolloWohnzimmer pct 77)

DOELSEIF ([07:20|WE] and [wettervorhersage:fc1_high_c] > "22") (set HM_rolloWohnzimmer pct 27)

DOELSEIF ([{sunset("HORIZON=0",0,"17:00","22:00")}] and [HM_rolloWohnzimmer:control] > "77") (set HM_rolloWohnzimmer pct 77)

DOELSEIF ([22:00]) (set HM_rolloWohnzimmer pct 0)


Ob sich noch ein Bug versteckt wird sich zeigen.  :)

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig