Hilfe beim Denke DOIF Rollladen

Begonnen von noanda, 07 September 2015, 12:42:02

Vorheriges Thema - Nächstes Thema

noanda

Liebe Gemeinde,
brauche mal ein wenig Hilfe beim Denken. Bevor ich Eulen nach Aten trage :-).
Um Was geht es? Bei uns im Haus hat jedes Fenster einen ,,open" / ,,close" Melder.
Die Abwesenheiten gehen über alle Stati des Modul Roomate (übrigens richtig toll).
Es gibt ein Außenthermometer bzw. mehre.
Die Zeiten für Licht an und Aus, sowie für Rollladen Rauf Runter hole ich aus Twghlight

Was soll passieren?

1)   Bei den stati ,,gotosleep", ,,asleep" = Rolladen zu
2)   Bei den Stati ,,absent" und ,,gone" = zu wenn Fenster ,,open" (Fenster Vergessen)
3)   Bei den Stati ,,absent" und ,,gone" = zu wenn Fenster ,,close"  Regulierung mit Temperatur (Beschattung)
4)   Bei den stati ,,awoken" und ,,home" = Regulierung mit Temperatur (Beschattung)

Soweit der Plan.

Idee war als erstes die Temperaturdaten mit einem DOIF an einen Dummy zu übergeben, mit den Prozenten auf die die Rollläden fahren sollen wenn es draußen zu heiß wird.

define RollTempVorD dummy

define SensorTEMLOGRollDOIF DOIF ([SensorTEMLOG:temperature] > 20) (set RollTempVorD 75)
DOELSEIF ([SensorTEMLOG:temperature] > 25) (set RollTempVorD 50)
DOELSEIF ([SensorTEMLOG:temperature] > 30) (set RollTempVorD 30)
DOELSE (set RollTempVorD 100)


Dann brauche ich einen Dummy für TW

define RTwilightD dummy

define RTwilightDOIF DOIF ([myTwilight:twilight_weather] < 30) (set RTwilightD off) DOELSE (set RTwilightD on)


Alles andere liefert Roomate + Das Fenster

Sieht dann in der Summe so aus:

define RollFENKZJDOIF DOIF ([Familie] eq "home" and [RTwilightD] eq "on" and [MelderFENKZJ] ne "aa") (set RollKZJ [RollTempVorD])
DOELSEIF ([Familie] eq "awoken" and [RTwilightD] eq "on" and [MelderFENKZJ] ne "aa") (set RollKZJ [RollTempVorD])
DOELSEIF ([Familie] eq "absent" and [RTwilightD] eq "on" and [MelderFENKZJ] eq "close")(set RollKZJ [RollTempVorD])
DOELSEIF ([Familie] eq "gone" and [RTwilightD] eq "on" and [MelderFENKZJ] eq "close") (set RollKZJ [RollTempVorD])
DOELSE (set RollKZJ off)


Jetzt hat die ganze Sache einen Pferdefuß. Die Daten von Dummy ,,RollTempVorD" werden natürlich nur einmal übernommen wenn das DOIF ,,RollFENKZJDOIF" ein Ereignis triggert. ERGO verändert sich die Stellung im Dummy ,,RollTempVorD" passiert nichts, denn das DOIF ,,RollFENKZJDOIF" triggert diese Veränderung nicht.

Gibt jetzt 3 Möglichkeiten die mir einfallen:
1)   Das ganze DOIF umstellen so das der trigger ,,RollTempVorD" wird
2)   Im DOIF ,,RollFENKZJDOIF" SensorTEMLOG als 4 Bedingung Triggern ,,and [SensorTEMLOG:temperature] ?"
3)   Im DOIF ,,SensorTEMLOGRollDOIF" neben (set RollTempVorD 75) das DOIF ,,RollFENKZJDOIF" neu initialisieren mit (set RollTempVorD 75, set RollFENKZJDOIF initialize)
Oder hat jemand noch einen andere Idee die irgendwie einfacher ist ?

Raspberry Pi - FHEM 5.5
HMLAN, RFXtrx433 , CUL 868
HM-CC-RT-DN, HM-SEC-MDIR , HM-SEC-SC-2
HM-LC-SW2-FM, ROTO_ZEL-STG-RM-FZS
ELRO440AB, Flamingo