Heizungssteuerung per Wochenplan / Ideen + Anregungen

Guten morgen,
hier geht es um eine Idee für die Heizungssteuerung bzw. der Steuerung von Heizlüftern. Und zwar sollen diese nach einem bestimmten Zeitplan heizen / laufen.

Vielleicht kann ich dem ein oder anderem mit meiner Idee weiterhelfen.

Vielen Dank schon einmal im Voraus für die Hilfe die ich zu verschiedenen Fragen schon erhalten habe! :slight_smile:
(Verzeiht bitte den ein oder anderne Thread oder Frage die ich zuviel eröffnet / geschrieben habe in meine anfänglichen IPS Euphorie. :o)

Jetzt zum eigentlichen Thema.
Aktuell sollen zwei Heizlüfter abhängig vom Wochentag und der Uhrzeit (Stichwort: Wochenplan) gesteuert werden.

Soweit so gut, gestern habe ich dann gleich den Wochenplan erstellt.
Dieser sieht wie folgt aus:

Montag - Freitag:
Heizen von 06:30 - 16 Uhr, außerhalb dieser Zeit nur Grundwärme.

Samstag - Sonntag
am Gesamten Wochenende nur Grundwärme.

An einem Wochentag von Montag - Freitag gibt es dann folgende Schaltzeiten:
Um 06:30 Uhr, Aktion starten bzw. Skript zum Heizen starten.

Soweit so gut, das Skript wird einmal aufgerufen und die Heizung fängt an zu heizen, allerdings ist im Skript hinterlegt das bis 18° aufgeheizt werden soll, anschließen soll die Heizung sich wieder abschalten.

Hier ist das Problem:
Das Skript bzw. die Heizung läuft während der gesamten Heizperiode nur einmal, und zwar um 06:30 da es dort augerufen wird. Der Wochenplan zeigt zwar an das auch nach 06:30 geheizt wird bzw. werden soll, aber es wird nicht geheizt, weil das Script nicht mehr aufgerufe bzw. gestartet wird.

Meine Idee zur Lösung des Problems:
Das Anlegen einer Statusvariable (Boolean) mit True = Aktiv | False = Inaktiv die mit dem Wochenplan verknüpft wird.
(wie von steiner hier beschrieben: http://www.ip-symcon.de/forum/threads/25353-Wochenplan-Ereignis-Status-einer-Variablen-setzen?p=232074#post232074)

Nach Anlage und Überprüfung der Variable sieht das ganze wie folgt aus bzw. stelle ich mir so vor:
Um 6:30 Uhr schaltet sich die Boolean-Variable auf den Satus True bzw. Aktiv

Um die Heizlüfter zu starten gibt es ein Skript, das jedes mal ausgeführt wird, wenn die Temperatur vom Temperatursensor an den Controller gesendet wird. Wenn die Temperatur unter 18 Grad ist, dann werden die Heizlüfter gestartet:

if ($temperatur < 18)

In diesem Zustand, ohne Einbindung des Wochenplans, würde das Skript rund um die Uhr auf 18° heizen, auch außerhalb der Heizzeit.

Jetzt ändern wir das genannte Skript wie folgt ab, und binden somit den Wochenplan mitein:

if ($temperatur < 18 && $zustand_boolean == "Aktiv")

Somit überprüft das Heizkript jetzt ob es die Temperatur unterschreitet und ob der Heizplan aktiv ist, um so festzustellen ob geheizt werden soll.

Was sagt ihr zu meiner Idee / Vorschlag?
Kann man das so machen bzw. macht man das so oder sagt ihr das ist zu umständlich oder ähnliches?

Über ein Feedback von eurer Seite würde ich mich freuen.

P.S.: Gerne stelle ich auch noch Bilder mitrein, die ich aber gerade nicht zur Hand habe da ich unterwegs bin.

Hallo Daste,

ich glaube schon, dass man es so machen kann.

Mein Ansatz ist allerdings ein anderer:
Die Steuerung der Heizlüfter erfolgt grundsätzlich über drei Temperaturwerte (min, ist, soll). Die Solltemperatur wird durch Timer gesetzt. Die Timer wiederum können fest sein (z.B. Heizung soll immer um 20:00 Uhr ausgeschaltet werden) oder werden durch andere Ereignisse bzw. eines Nachtjobs gesetzt. Im Nachtjob wird z.B. die Startzeit abhängig von Wochentagen, Arbeitstagen und Feiertagen gesetzt.
Diese Vorgehensweise ist sicherlich weitaus komplexer als deine Lösung, hat aber den Vorteil, dass sie auch auf Besonderheiten wie Urlaub, zeitweise Abwesenheit, Feiertage usw. reagiert.

Falls du die Schaltung der Heizlüfter über unsichere Funkschalter (insbesondere FS20) machst, solltest du immer mit einer begrenzten Einschaltdauer arbeiten. Durch die Triggerung mit der Ist-Temperatur wird die Einschaltzeit neu gesetzt, wenn die Soll-Temperatur noch nicht erreicht ist.

Gruß, Peter

Ich würde statt dem Flag (true/false) einfach über den Wochenplan die Soll-Temperatur (z.B. 18°C) setzen und deine Lüfter einfach über ein 2-Punkt-Regler Skript ansteuern, welches durchgehend arbeitet und auf die Soll/Ist-Temperatur getriggert wird.

paresy

Das klingt gut, ich bin jetzt soweit gekommen komme aber nicht mehr weiter, ich kann nicht nachvollziehen wie das genau gemeint ist .:frowning:

Aktuell sieht es so bei mir aus.

Erstellen des Wochenplans für die Heizung:


<?

//Wochenplan Ereignis erstellen
$wochenplan = IPS_CreateEvent(2);

// Ereignis ID, Gruppen ID, Tage
//Anlegen von Gruppen
IPS_SetEventScheduleGroup($wochenplan, 0, 31); //Mo - Fr (1 + 2 + 4 + 8 + 16)
IPS_SetEventScheduleGroup($wochenplan, 1, 96); //Sa + So (32 + 64)


//Ereignis ID, Aktions ID, Name, Farbe, Skriptinhalt
//Anlegen von Aktionen
IPS_SetEventScheduleAction($wochenplan, 0, "Grundwärme", 0x0000FF, SetValueInteger(52238, 10));
IPS_SetEventScheduleAction($wochenplan, 1, "Heizen", 0xFF0000, SetValueInteger(52238, 18));


//Ereignis ID, Gruppen ID, Schaltpunkt ID, Stunde, Minute, Sekunde, AktionsID
//Anlegen von Schaltpunkten für Gruppe mit ID = 0 (=Mo-Fr)
IPS_SetEventScheduleGroupPoint($wochenplan, 0, 0, 0, 0, 0, 0);	 // Heizung ab 00:00 (=Grundwärme)
IPS_SetEventScheduleGroupPoint($wochenplan, 0, 1, 6, 30, 0, 1); // Heizung ab 06:30 (=Heizen)
IPS_SetEventScheduleGroupPoint($wochenplan, 0, 2, 16, 0, 0, 0); // Heizung ab 16:00 (=Grundwärme)


//Anlegen von Schaltpunkten für Gruppe mit ID = 1 (=Sa-So)
IPS_SetEventScheduleGroupPoint($wochenplan, 1, 0, 0, 0, 0, 0);

?>

Wenn ich dich parsey, richtig verstanden habe aus deinem letzten Post, setzt ich hier gleich die Temperatur für die „Soll-Variable“ fest, je nachdem ob „Heizen“ oder „Grundwärme“.

Weiter gehts mir deinem Post aus dies Thread:
http://www.ip-symcon.de/forum/threads/25628-Fehlermeldung-bei-Wochenplanerstellung-(mithilfe-der-IPS-Doku)?p=234560#post234560

Dort steht zwar das der String leer bleiben soll bzw. der Befehlsteil des Wochenplans, aber durch das setzten der Soll-Temperatur je nach Zustand steht jetzt ein Wert drin. Unterhalb meines Scripts hab ich es auch gepackt.

Du schreibst „Das Ereignis muss dann unterhalb von einem Skript sein…“ mit dem Ereignis ist der Wochenplan gemeint, soweit habe ich den unten drunter angeordnet.(Screenshot2)

In diesem Script soll dann der Inhalt von Steiner stehen, habe ich auch gemacht, nur weiß ich hier nicht genau was dort drinnen stehen soll bzw. was ich bei „Case“ anstatt von 1, 2 oder 3 angeben soll?


$id = $_IPS['ACTION'];
SetValue(36779 /*[Wochplan Ereignis\ID]*/, $id);
switch ($id) {
    case 1:
    // Befehle
    break;
   case 2:
    // Befehle
    break;
   case 3:
   // usw. ja nach Anzahl
    break;
}  

Ursprünglich hatte ich das nachfolgende Skript mit einem Trigger in Verwendung: Heizungssteuerung
(Das wäre Quasi mein 2-Punkt Regler-Script)

Inhalt von Heizungssteuerung:


 <?

// Holt den Temperaturwert von Sensor am Schraubenregal
$temperatur_schraubenregal = GetValueFloat(55720 /*[Multisensor Schraubenregal\Value\Temperature]*/);


// Holt den Temperaturwert der Soll-Variable die über den Wochenplan gesetzt wird.
$temperatur_soll_variable = GetValueFloat(52238);


// Holt den Zustand des Schalters "Wintermodus" ab
$zustand_wintermodus = GetValueBoolean(15156 /*[Heizung Allgemein\Wintermodus]*/); 


//Heizlüfter Bankraum

echo $zustand_wintermodus;

if ($temperatur_schraubenregal < $temperatur_soll_variable && $zustand_wintermodus == "Aktiv")
{
    ZW_SwitchMode(13121 /*[Heizungsschalter vorne]*/, true); //Gerät einschalten
}
else
{
    ZW_SwitchMode(13121 /*[Heizungsschalter vorne]*/, false); //Gerät ausschalten
}

?>

Soweit sollte jetzt eigentlich alles passen, bis auf das ich nicht weiß, was genau im Script von steiner stehen muss.

Ich habe das Script von steinert verstanden und weiß auch was ich unter „case“ eintragen muss. :slight_smile:

Ich werde das ganze jetzt zu Ende programmieren / einrichten und euch dann hier vorstellen.

@paresy:
Ich werde die Temperatur erstmal nicht über den Wochenplan direkt setzen, da ich sonst das Problem habe das ich immer automatisch entweder auf 10° oder 18° habe. Stattdessen werde ich ein Menü bzw. eine Auswahl zur Verfügung stellen sodass der Benutzer eventuell die Soll-Temperatur über das Web-Frontend anpassen kann.

Ich würde das eh trennen. Den Endnutzer soll meiner Meinung nach die Gradzahl nicht interessieren. Es sollte im Wochenplan eher sowas wie Komforttemperatur, Absenktemperatur, Frotzschutz stehen und du kannst dann drei Variablen haben, die im Wartungsbereich geändert werden können, welche Temperatur der jeweiligen Aktion zugeordnet ist.

paresy

Mit dem Wartungsbereich meinst du dann quasi einen extra Tab im Webfrontend, wo dann die Temperaturen hinterlegt sind bzw. geändert werden können, oder?

Hi Paresy,

da sind wir ja absolut einer Meinung. Ich hatte meinen Wunsch hierzu schon mal „bebildert“. Es wäre halt nur schön wenn man die Variablen per Standardaktion einer übergeordneten Variablen (Solltemperatur) zuordnen könnte - ohne jedesmal ein Script zu nutzen. Meines Erachtens wäre dies schlicht die Standardanwendung für den Wochenplan

herbertf