da ich nicht der begnadeste Programmierer bin, suche ich ein fertiges Script welches ich vielleicht nur etwas anpassen brauch, um ein paar Aktionen durchzuführen wenn ich im Urlaub bin.
Ich stelle mir vor, dass ich im Webfront den Zustand auf „URLAUB“ stelle und dann alle Homematic Heizthermostate auf 18°C gesetzt werden. Wenn ich den Zustand wieder auf „NORMAL“ setze, sollen die vorher eingestellten Werte/Temperaturen wieder gesetzt werden.
Habe vor ein paar Wochen soetwas für meine Heizung programmiert mit Urlaubsmodus.
Sobald der Urlaubmodus aktiviert wird, fahren alle Termostate auf 0° herunter (Tempeatur ist einfach auswechselbar.) bzw. die Temperatur wird gehalt.
Ich poste dir das Skript morgen, werde es noch ein bisschen anpassen bzw. kommentieren.
Ist ein bisschen später geworden, aber hier habe ich das Skript.
Ist nicht nur die Ansteuerung für den Urlaub sondenr für ein ganzes Thermostat. (StellaZ)
Vielleicht kannst du ja sogar mehr brauchen als nur den Teil für den Urlaub.
Ich prüfe je nach Abhängikeit von Buttons was passierne soll. Wenn der Button Urlaubsmodus auf „Ja“ gestezt ist oder der Button „Heizmodus“ auf Sommer gesetzt ist, dann fährt die Heizung automatisch auf 0° runter bzw. die Soll-Temperatur wird auf 0° eingestellt und die Heizung ist somit „ausgeschalten“ da die Ventile dann zu gehen.
Schaus dir einfach mal an und wenn du fragen hast, beantworte ich dir diese gerne.
(Oder falls nochwas fehlt.)
Einene Screenshots, worauf du die ganzen Variablen etc. siehst habe ich mit angehängt damit du das ganze besser nachvollziehen kannst.
Skript sieht folgendermaßen aus:
<?
$heizzustand = GetValueInteger(49203 /*[ Umkleide\Heizzustand Integer]*/);
$temperaturumkleidetags = GetValueInteger(44094 /*[ Umkleide\Temperatur-Tags]*/);
$temperaturumkleidenachts = GetValueInteger(34696 /*[ Umkleide\Temperatur-Nachts]*/);
$heizmodus = GetValueBoolean(26218 /*[Ansicht-Webfrontend\Robert-Profil\Heizung\Heizungseinstellungen\Heizmodus]*/);
$urlaubsmodus = GetValueBoolean(51878 /*[Ansicht-Webfrontend\Robert-Profil\Heizung\Heizungseinstellungen\Urlaubsmodus]*/);
if ($heizmodus == 0 || $urlaubsmodus == 1)
{
ZW_ThermostatSetPointSet(55565 /*[: Umkleide\Ventil (4)]*/,1,0);
IPS_SetEventActive(34388 /*[: Umkleide\Heizzustand Integer\]*/, false); // Aktivert Ereignis
SetValue(49203 /*[: Umkleide\Heizzustand Integer]*/, 2);
}
else
{
IPS_SetEventActive(34388 /*[: Umkleide\Heizzustand Integer\]*/, true); // Aktivert Ereignis
$e = IPS_GetEvent(34388 /*[: Umkleide\Heizzustand Integer\]*/);
$actionID = false;
//Durch alle Gruppen gehen
foreach($e['ScheduleGroups'] as $g) {
//Überprüfen ob die Gruppe für heute zuständig ist
if($g['Days'] & date("N") > 0) {
//Aktuellen Schaltpunkt suchen. Wir nutzen die Eigenschaft, dass die Schaltpunkte immer aufsteigend sortiert sind.
foreach($g['Points'] as $p) {
if(date("H") * 3600 + date("i") * 60 + date("s") >= $p['Start']['Hour'] * 3600 + $p['Start']['Minute'] * 60 + $p['Start']['Second']) {
$actionID = $p['ActionID'];
} else {
break; //Sobald wir drüber sind, können wir abbrechen.
}
}
break; //Sobald wir unseren Tag gefunden haben, können wir die Schleife abbrechen. Jeder Tag darf nur in genau einer Gruppe sein.
}
}
// var_dump($actionID);
if ($actionID == 0)
{
SetValue(49203 /*[: Umkleide\Heizzustand Integer]*/, 0);
}
else
{
SetValue(49203 /*[Umkleide\Heizzustand Integer]*/, 1);
}
if ($heizzustand == 1)
{ // Heizen Tags
ZW_ThermostatSetPointSet(55565 /*[Umkleide\Ventil (4)]*/,1,$temperaturumkleidetags); //Umkleide
}
else
{
// Heizen Nachts
ZW_ThermostatSetPointSet(55565 /*[Umkleide\Ventil (4)]*/,1,$temperaturumkleidenachts); //Umkleide
}
}
?>