Suche Urlaubs Script

Hallo Zusammen,

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.

Gibt es so etwas schon?
Gruß
Dirk

Servus dirk,
ich glaub ich habe da was für dich. :slight_smile:

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.

Hi Daste,
Das klingt super, freue mich auf das Script.
Danke vorab,
Dirk

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. :slight_smile:
(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
				}
	}
?>


Genial, werde mal versuchen das für meine Homematic Thermostate zu übernehmen und melde mich dann.
1000-Dank
Dirk