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 ?