Homestatus Rolladen steuern

Begonnen von dennis_n, 14 September 2015, 16:21:23

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: dennis_n am 13 Oktober 2015, 08:38:49
Hallo Damian,

ich danke Dir vielmals.

Manchmal sieht man halt den Wald vor lauter Bäumen nicht. Ich beschäftige mich noch nicht so lange mit fhem.
Vor allem die Syntax bereitet mir oft Probleme.

Mit meinem ersten Vorschlag hatte ich ja die Lösung, wie Du geschrieben hast, aber dies dann weiter "einzukürzen" stellt für mich zunächst mal ein Problem dar.
Ich fand es auch gut, dass Du mir nicht gleich die Lösung gesagt hast. Habe gestern Abend 1 Stunde vor dem Texteditor verbracht und mein DOIF ständig umgestellt und daran geknobelt. Aber wie gesagt, habe halt auf dem Schlauch gestanden.

Sorry dafür.

Gruss
Dennis

Kein Problem.

Und warum dein erster Vorschlag korrekt war, lässt sich auch relativ einfach erklären, denn:

Dein Vorschlag:

Status and Zeit1 or Status and Zeit2

entspricht mit and gleich * und or gleich +

Status * Zeit1 + Status * Zeit2

mit Distributiv-Gesetzt (haben wir mal in der Schule gelernt) ist es äquivalent zu

Status * (Zeit1 + Zeit2)

und das ist nichts anderes als:

Status and (Zeit1 or Zeit2)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

dennis_n

Daumen hoch!

Dass Du Dir für Anfänger wie mich solche Mühe gibst.  ;)

Gruss
Dennis

Damian

Zitat von: dennis_n am 13 Oktober 2015, 09:24:36
Daumen hoch!

Dass Du Dir für Anfänger wie mich solche Mühe gibst.  ;)

Gruss
Dennis

Naja, vielleicht lesen hier noch andere "Anfänger", die damit etwas anfangen können.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

dennis_n

#48
Kann ich DOIF eigentlich statt der festen Zeiten mit Twilight sr_civil und ss_civil arbeiten?

Gruss
Dennis

EDIT: Sorry habs gefunden.

dennis_n

#49
Hallo nochmal,

ich habe mir jetzt mal ein DOIF mit Twilight (Sonnenstand) zusammen gebaut.
Kann das so funktionieren? Ich kann doch innerhalb der runden Klammern rechnen oder?
Am Wochenende sollen die Rolläden quasi 2 Stunden später nach oben gehen.

([homestatus] eq "home" and ([[Sonnenstand:sr_civil|8]-[Sonnenstand:ss_civil|8]] or [([Sonnenstand:sr_civil|7]+ [02:00])]-[Sonnenstand:ss_civil|7])) (set RL_EG_OG_alle Hoch)...

Danke

Gruss
Dennis

dennis_n

Hallo Damian, oder auch gerne die Anderen hier,

ich bekomme trotz mehrfacher Versuche etwas noch nicht hin und bin leider noch einmal auf eure Hilfe angewiesen.

Aktuell sieht mein DOIF ja so aus:
([homestatus] eq "home" and ([07:15:00-19:05:00|8] or [09:00:00-19:05:00|7])) (set RL_EG_OG_alle Hoch) DOELSEIF ([homestatus] eq "home" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter) DOELSEIF ([homestatus] eq "nachtdienst" and ([07:14:59-19:05:00|8] or [08:59:59-19:05:00|7])) (set RL_Nachtdienst Runter)

Dann ist es aber so, dass wenn der Status auf nachtdienst steht und es Wochentags nach 19:05 ist, nichts passiert. Allerdings soll es so sein, dass auch beim Status nachtdienst um 19:05 Uhr alle Rolläden runter gehen.

Also habe ich zunächst mal folgendes DOIF eingebaut:
DOELSEIF ([homestatus] eq "nachtdienst" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)

Es gibt aber bestimmt eine Möglichkeit in meinem ersten DOELSEIF nach dem Status home oder nachtdienst zu fragen, oder?
Ich hatte es so versucht:
DOELSEIF ([homestatus] eq "home" or  [homestatus] eq "nachtdienst" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)
Das hat aber nicht funktioniert. Es passierte nichts nach 19:05

Kann mir hier bitte nochmal jemand mit der Syntax weiterhelfen?
Vielen Dank.

Gruss
Dennis

moonsorrox

#51
ich würde es so machen:

DOELSEIF ([homestatus] eq "home" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)
DOELSEIF ([homestatus] eq "nachtdienst" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)


oder einfacher:
DOELSEIF ([homestatus] =~ "home|nachtdienst" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)
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

dennis_n

Hi,

Danke für deine Antwort.
Aber so hatte ich es ja schon. Ich dachte nur es gibt eine Möglichkeit den Status home und nachtdienst in einem DOIF abzufragen, da die Zeiten und die entsprechende Aktion (Rolläden runter) ja sonst identisch sind.
Also nach dem Motto:
wenn Status "home" oder "nachtdienst" und ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)

Mir ist nur die Syntax nicht klar, bzw. ob das überhaupt so geht.
Folgendes hat bei jedenfalls nicht funktioniert:
DOELSEIF ([homestatus] eq "home" or  [homestatus] eq "nachtdienst" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)

Gruss
Dennis

P.S. ok, da haben wir uns wohl überschnitten. Ja, so habe ich das gemeint. Vielen Dank.