DOIF Kombination verschiedener Sensoren

Begonnen von mfeske, 18 Oktober 2016, 14:28:32

Vorheriges Thema - Nächstes Thema

mfeske

Hallo zusammen,

ich nutze DOIF zur Steuerung der Heizkörper, was in den einzelnen Fällen auch ganz gut klappt. Nur wenn ich bestimmte Sachen kombiniere bekomme ich es nciht hin, weil mir der Denkanstoss bzw. das Wissen dazu fehlt.

Im Einzelnen verwende ich folgendes:
1. DOIF wenn Dachluke offen dann setze Warnung_Dachluke on was zu Hauptschalter_Heizung_Eltern aus führen soll.

Warnung_Dachluke_doif
define Warnung_Dachluke_doif DOIF ([TFA01:temperature] > [TFA08:temperature] and [Kontakt_Dachluke] eq "opened") (set Warnung_Dachluke on) (set gong_MP3 playTone 012) DOELSE (set Warnung_Dachluke off, set gong_MP3 playTone 013)
attr Warnung_Dachluke_doif repeatsame 3:0
attr Warnung_Dachluke_doif room Bad_klein
attr Warnung_Dachluke_doif wait 0,60:0


Warnung_Dachluke
define Warnung_Dachluke dummy
attr Warnung_Dachluke devStateIcon off:Wecker.Aus on:Wecker.Immer:FS20.off
attr Warnung_Dachluke room Bad_klein


Hauptschalter_Heizung_Eltern_Dachluke_doif
define Hauptschalter_Heizung_Eltern_Dachluke_doif DOIF ([Warnung_Dachluke] eq "on") (set Hauptschalter_Heizung_Eltern aus, setState Hauptschalter_Heizung_Eltern aus) DOELSEIF ([Warnung_Dachluke] eq "off") (set Hauptschalter_Heizung_Eltern an, setState Hauptschalter_Heizung_Eltern an)
attr Hauptschalter_Heizung_Eltern_Dachluke_doif room Heizungskeller


Hauptschalter_Heizung_Eltern
define Hauptschalter_Heizung_Eltern dummy
attr Hauptschalter_Heizung_Eltern group Heizung_Schalter
attr Hauptschalter_Heizung_Eltern icon control_building_modern_s_2og_og2
attr Hauptschalter_Heizung_Eltern room Heizungskeller
attr Hauptschalter_Heizung_Eltern setList state:an,aus
attr Hauptschalter_Heizung_Eltern sortby 1
attr Hauptschalter_Heizung_Eltern webCmd state


Hauptschalter_Heizung_Eltern_doif
define Hauptschalter_Heizung_Eltern_doif DOIF ([Hauptschalter_Heizung_Eltern] eq "aus") ({Eltern_Heizung_absent})  DOELSEIF ([Hauptschalter_Heizung_Eltern] eq "an" and [Eltern] eq "home") ({Eltern_Heizung_present}) DOELSEIF ([Hauptschalter_Heizung_Eltern] eq "an" and [Eltern] eq "absent") ({Eltern_Heizung_absent})
attr Hauptschalter_Heizung_Eltern_doif room Heizungskeller


### Eltern Heizung Beginn
sub
Eltern_Heizung_absent()
{
{ fhem ("set Heizung_Bad_Clima controlManu off")};
{ fhem ("set Heizung_Bad_klein_Clima controlManu off")};
{ fhem ("set Heizung_Arbeitszimmer_Clima controlManu off")};
{ fhem ("set Heizung_Schlafzimmer_Clima controlManu off")};
}
sub
Eltern_Heizung_present()
{
{ fhem ("set Heizung_Bad_Clima controlMode auto")};
{ fhem ("set Heizung_Bad_klein_Clima controlMode auto")};
{ fhem ("set Heizung_Arbeitszimmer_Clima controlMode auto")};
{ fhem ("set Heizung_Schlafzimmer_Clima controlMode auto")}
}
### Eltern Heizung Ende


2. DOIF wenn Gartentür offen schalte alle Heizungen aus
Warnung_Gartentuer_doif
define Warnung_Gartentuer_doif DOIF ([TFA07:temperature] > [TFA08:temperature] and [Kontakt_Garten] eq "opened") (set Warnung_Gartentuer on) (set gong_MP3 playTone 010) DOELSE (set Warnung_Gartentuer off, set gong_MP3 playTone 011)
attr Warnung_Gartentuer_doif repeatsame 3:0
attr Warnung_Gartentuer_doif room Wohnzimmer
attr Warnung_Gartentuer_doif wait 0,60:0


Warnung_Gartentuer
define Warnung_Gartentuer dummy
attr Warnung_Gartentuer devStateIcon off:Wecker.Aus on:Wecker.Immer:FS20.off
attr Warnung_Gartentuer room Wohnzimmer


Hauptschalter_Heizung_Haus_Tuer_doif
define Hauptschalter_Heizung_Haus_Tuer_doif DOIF ([Gartentuer] eq "offen") (set Hauptschalter_Heizung_Haus aus, setState Hauptschalter_Heizung_Haus aus) DOELSEIF ([Gartentuer] eq "zu") (set Hauptschalter_Heizung_Haus an, setState Hauptschalter_Heizung_Haus an)
attr Hauptschalter_Heizung_Haus_Tuer_doif room Heizungskeller
attr Hauptschalter_Heizung_Haus_Tuer_doif wait 30:30


Hauptschalter_Heizung_Haus_doif
define Hauptschalter_Heizung_Haus_doif DOIF ([Hauptschalter_Heizung_Haus] eq "aus") (set Hauptschalter_Heizung_Eltern aus, set Hauptschalter_Heizung_Kinder aus, set Hauptschalter_Heizung_EG aus) DOELSEIF ([Hauptschalter_Heizung_Haus] eq "an") (set Hauptschalter_Heizung_Eltern an, set Hauptschalter_Heizung_Kinder an, set Hauptschalter_Heizung_EG an)
attr Hauptschalter_Heizung_Haus_doif room Heizungskeller


1 und 2 für sich funktionieren aber wenn die Dachluke geöffnet wird und zwischenzeitlich die Gartentür geöffnet und dann geschlossen wird oder geöffnet war als die Dachluke geöffnet war und dann die Gartentür geschlossen wird, wird ja überall die Heizung (also auch in der Elternetage eingeschaltet obwohl die Dachluke noch offen ist.

Mein Gedanke ist, das da eigentlich noch eine Prüfung rein muss, ob die Dachluke offen oder zu ist, aber ich weiss leider nicht genau wo und wie.

Trau mich auch gar nciht zu sagen, das ich das ja mit der Anwesenheitssteuerung gekoppelt habe, die das auch überschreibt; aber vielleicht erstmal den ersten Schriitt.

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

OliWee

Hi!
Du muss lediglich noch den Status der Dachluke beim Schließen der Gartentür berücksichtigen.

define Hauptschalter_Heizung_Haus_Tuer_doif DOIF ([Gartentuer] eq "offen") (set Hauptschalter_Heizung_Haus aus, setState Hauptschalter_Heizung_Haus aus) DOELSEIF ([Gartentuer] eq "zu" and [Kontakt_Dachluke] eq "closed") (set Hauptschalter_Heizung_Haus an, setState Hauptschalter_Heizung_Haus an)

mfeske

Hallo OliWee,

danke für die schnelle Antwort. ABER das würde heissen die Gartentür wird geschlossen und die Heizung im ganzen Haus wird nicht wieder eingeschaltet, weil die Dachluke offen ist. Der Hauptschalter soll ja wieder auf on gehen, allerdings ohne  Hauptschalter_Heizung_Eltern zu betätigen, der sol ja off bleiben, weil die Dachluke offen ist.

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

OliWee

#3
Zitat von: mfeske am 18 Oktober 2016, 14:46:34
Hallo OliWee,

danke für die schnelle Antwort. ABER das würde heissen die Gartentür wird geschlossen und die Heizung im ganzen Haus wird nicht wieder eingeschaltet, weil die Dachluke offen ist. Der Hauptschalter soll ja wieder auf on gehen, allerdings ohne  Hauptschalter_Heizung_Eltern zu betätigen, der sol ja off bleiben, weil die Dachluke offen ist.

Gruß
Micha

Ok, dann hab ich das falsch verstanden...

Es sollte aber gehen, wenn du die beiden Fälle trennst, indem Du einen weiteren DOELSEIF mit reinnimmst, der dann anspringt, wenn das Gartentor zugemacht wird und die Dachluke nicht offen ist...

Edit:
Ich hab jetzt erst kapiert, dass du ja quasi zwei verschachtelte DOIFs miteinander verknüpfst... In dem Fall müsstest Du die Dachluke im zweiten DOIF mit berücksichtigen.
Ich werd mir das Ganze heute abend mal in Ruhe anschauen...
Hast Du mal versucht, Deine Verknüpfungen in einem Schaubild (Flussdiagramm o.ä.) darzustellen? Dann wird oft vieles klarer, wenn man das mal vor sich sieht...  :)

Gruß
Oli

mfeske

Hallo OliWee,

Danke für den Rat, nein das mit dem Schaubild habe ich so nicht gemacht, wüsste auch gar nicht wie ich das umsetzen soll :-(

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)