Heizungssteuerung mit Parameterdatei

Hallo Retiarius,

ich habe das Script so modifiziert, das die am Regler eingestellten Werte nur wirken, wenn der Regler auf manuell gestellt wird. Das verhindert, das Werte die versehentlich eingestellt werden (z.B. beim Staubwischen:D) wieder vom IPS übersteuert werden. Auch die Zeitprogramme im FHT werden so übersteuert.


$hour=date("H");
$minute=date("i");
$time = $hour.":".$minute;
$heute = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","");
$tag = date("w");
//Wohnzimmer
$Temp_Mode=GetValueInteger("temp_Wohnzimmer.Mode_FHT"); //FHT Target Mode
if($Temp_Mode==0) //Regler im Automatikbetrieb 
{
//Alten Zustand einlesen - nur für erste Zeit am Tag wichtig
$newtemp=GetValueFloat("temp_Wohnzimmer.Soll_IPS");
$handle = fopen("C:/Program Files/IP-SYMCON/web/Parameter/LS1/Heizung_Wohnzimmer.par","r");
while ($line = fgets($handle, 1000))
{
$parameter = explode(";", $line); //[0]-Tag, [1]-(Ab)Zeit, [2]-Temperatur
$day=$parameter[0];
$switchtime=$parameter[1];
$temp=$parameter[2];
if($day == $heute[$tag]) //Tag erkannt
{
if($time > $switchtime)
$newtemp = $temp-(GetValueFloat("Heizung_Absenkung")); //Offset für Temperaturabsenkung
}
}
fclose($handle);
//bei Wertänderung in der Datei -> neuen Wert senden
if (GetValueFloat("temp_Wohnzimmer.Soll_IPS") != $newtemp)
{
FHT_SetTemperature(38016, (float)$newtemp);
SetValueFloat("temp_Wohnzimmer.Soll_IPS", (float)$newtemp);
echo "LS1: Automatik, Wochentag $tag, Sollwert Temperatur Wohnzimmer [°C]: ".$newtemp;
}
//wenn ist und Sollwert nicht übereinstimmen senden
else if ((GetValueFloat("temp_Wohnzimmer.Soll_FHT")) != (GetValueFloat("temp_Wohnzimmer.Soll_IPS")))
{
echo "LS1: Wert am Regler Wohnzimmer manuell verändert";
FHT_SetTemperature(38016, (float)$newtemp);
}

Grüße, Keule

ja…das geht natürlich auch - aber genau sowas macht natürlich die „Einfachheit“ wieder schwerer - mein Ziel war es, die Sache simpel zu gestalten. Ein drehen am Regler reicht aus um das System in den Manuellmodus zu setzen und nach der Zeit X wieder in den Automatikbetrieb zu setzen.
Das bringt natürlich auch Nachteile mit sich. Aber durch den Automatikbetrieb (mit Parameter) benötigt man die internen Programm nicht.
Aber wie so oft haben alle Lösungen Vor- und Nachteile - welche die „beste“ Lösung ist muss wohl jeder für sich selber entscheiden.
Das ist ja das Schöne an IPS - man kann irgendwie alle Möglichkeiten umsetzen…

Hallo,

ich hatte das Problem, das sich trotz deaktivierter Programme im FHT die Temperatur um 0.00Uhr vom FHT auf den Tagwert gesetzt wird :frowning: .

Mein Fazit ist, das du ein super Grundgerüst geliefert hast das jeder nach seinen Bedürfnissen anpassen kann und auch soll. Mein „Schipsel“ ist nur ein weiteres Puzzle-Teil zur Heizungssteuerung.:wink:

Let’s puzzle…
Keule

PS: Hast du schon mal auf die Hits auf deinen Beitrag geachtet? 1,042 Hits ist schon rekordverdächtig.:slight_smile:

ja…das problem ist mir auch bekannt… ich dachte es wäre durch die zeile im script: $newtemp=GetValueFloat(„temp_Wohnzimmer.Soll_IPS“);
abgefangen…da muss ich wohl dann noch mal gucken.
ohne die zeile hatte ich morgens oft „0°“ als solltemp im Reglerdisplay stehen zitter

Zitat:
Zitat von Keule
Hallo,
ich hatte das Problem, das sich trotz deaktivierter Programme im FHT die Temperatur um 0.00Uhr vom FHT auf den Tagwert gesetzt wird .

ja…das problem ist mir auch bekannt… ich dachte es wäre durch die zeile im script: $newtemp=GetValueFloat(„temp_Wohnzimmer.Soll_IPS“) ;
abgefangen…da muss ich wohl dann noch mal gucken.
ohne die zeile hatte ich morgens oft „0°“ als solltemp im Reglerdisplay stehen zitter

Hallo,

das Problem hatte ich auch. Ich vermute das es am Tageswechsel liegt. Ich habe es ganz einfach über die Txt-Datei gelöst indem ich den Nachtabsenkungswert um 00:05 Uhr nocheinmal eingegeben habe. Ist der geringste Aufwand und funktioniert ohne Probleme.

Gruß
Frank

da hast du vollkommen recht - nicht die eleganteste Lösung, aber sicher die Einfachste und eine die funktioniert! …

Vielen Dank für den Tip!

Gruß René

@Retiarius

Hallo ich habe seit gestern Probleme mit dem von Dir zur Verfügung gstellten Script :frowning: (das letzte)

Bisher lief alles ohne Probleme, aber seit dem Update von gestern abend stellt das Script die Soll Temp. immer auf 0°C und den Mode auf Manu. Ich kann mir ja auch nicht wirklich vorstellen das es am Update liegt aber der Fehler taucht erst seit dem auf.

Hast Du eine Idee woran es liegen könnte, ich befürchte nämlich das ich heute abend in eine kalte Wohnung komme :eek:

hmm…ich habe das Update von gestern noch nicht drauf - werde dass aber auf jeden Fall nachher Zuhause prüfen. Wenn der Effekt bei mir auch auftraucht kann ich die Sache sicherlich genauer analysieren und den Fehler (wenn er denn durch mein Script kommt) beheben.

Zieh dir was waremes an und hab Geduld :stuck_out_tongue:

Gruß René

Danke,

warte dann auf eine Nachricht von Dir.

Nee, habe übelegt mich dann mal nicht vor den PC zu setzen, sondern mal wieder mit meiner Frau zu kuscheln, soll ja auch wärmen :wink:

Hallo Horst…

also ich hab nun das aktuelle Update drauf und mal einen Testlauf gemacht.

ich muss dir leider mitteilen - was mich auch sehr erschreckt - das ich nun das gleiche Problem habe wie du!..

ich teste mal weiter und werde dann berichten zu welchem Schluss ich gekommen bin

Ich will jetzt nicht schreiben das ich mich freue, aber es beruhigt mich doch ein wenig :o

Hältst du mich bitte auf dem laufenden, weil ich sonst ziemlich aufgeschmissen bin, wie du weisst sind meine PHP Kentnisse gleich null :smiley:

Ich werde jetzt erstmal nichts an meinen Scrpten machen bis Du dich meldest.

Vielen Dank im voraus.

Ich habs mal als Bug gemeldet !.. ich denke da findest du den Rest der Diskussion dann.

Ich spiele jetzt mal mein Backup zurück - damit ich nicht frieren muss ! :wink:

Hi Fredtje,
das script sieht äusserst interessant aus

benutzt du dieses script schon in der Praxis? würdest du deine global defines zur verfügung stellen?

gruss
Torsten

Lauft … aber die aussonderungen geben mir wirklich probleme
Möchte da lieber noch was mit ‚spielen‘ bevor ins forum.
Ist eigentlich vorsehen das dieser thema veroffentlich wird, wenn die heizungssteuerung uber das web-interface parametrisiert wird.

Have a nice day

Hat jemand ein easy Script für mich damit ich meine FHT´s am WE von der alt Software transferieren kann ?

nimm das hier…das ist recht simpel und du kannst es nachher noch erweitern. Aber für den Anfang kommst du damit super aus:

http://www.ipsymcon.de/forum/showpost.php?p=234&postcount=1

Gruß René

Hallo Retarius,

ich habe jetzt meinen ersten FHT mit der Parametersteuerung in Betrieb genommen. Funktioniert soweit. Mir ist allerdings die Funktion des zweiten Scripts (Temp_Change) nicht klar. Könntest Du zu den ersten 6 Zeilen noch eine kurze Erklärung geben. Insbesondere die Variablen „Variable“ und „Global_Variable“ verstehe ich noch nicht. Wann ist denn die erste if-Bedingung erfüllt? Die Variable „Variable“ ist doch nirgends definiert?

Noch eine Frage zu dem ersten Script:
Wozu ist steht hier (float)?
SetValueFloat(„Bad_Temp_Param“, (float)$newtemp);

Vielen Dank für das gute Script,
TK

Hi,

vielleicht helfe ich mal eben mit einer Antwort aus:
das (float) sorgt für eine Typumwandlung der nachfolgenden Variable, wandelt also z.B. $Bad_Temp_Soll in eine Floatvariable um, damit der FHT-Befehl keinen falschen Datentypen anmeckert.

Die Variable „Variable“ ist automatisch in allen Skripts verfügbar. Mit dem o.g. Skript wird nur nochmal überprüft, ob das Skript wirklich über einen Variablentrigger aufgrufen wurde, weiter unten im Skript wird dann ausgelesen, welche das war.

Gruß

cAtMaX

Dieser Teil dient der Funktion, wenn eine manuelle Änderung der Temperatur vorgenommen wird (z.B. du stellst eine Wunschtemperatur am Stellrad des FHT’s ein) - Dann wird der Automatikmodus (Parameterdateibetrieb) für dieses FHT unterbrochen und für 2 h (kann man im Script einstellen) in Manuellbetrieb gesetzt (FHT zeigt dann auch Manuell an).
Der Grund hierfür im Beispiel: jede 30min. wird der Temperaturwert aus der Parameterdatei gesetzt - z.b. 18:30 soll nach Datei 18°C sein. Um 18:25 stellst du am Rad aber 23°C ein, weil du es mal etwas wärmer haben willst, diese „manuelle“ EInstellung von dir wird dann durch die Parameterdatei um 18:30 gleich „platt“ gemacht. Daher der „Trick“ mit dem Zusatz-Script - das erkennt halt ob manuell eine andere Temp wie in der Datei gewählt wurde und hält die dann für 2 Stunden. Dann geht alles wieder ganz automatisch in den Automatikbetrieb (Steuerung durch die Parameterdatei).

Dies ist wie auch schon beantwortet eine Variablenumwandlung in float.
damit wird $newtemp sicher als float übergeben.
Dann gibts keinen Ärger beim SetValueFloat.
Beispiel: die Temp aus der Datei ist 20°C … $newtemp wird damit besetzt - für PHP ist das dann eine Ganzzahl - also Integer. Darum wandel ich die für die Übergabe als Float. würde 20.5 in der Datei stehen könnte man auf das (float) verzichten. Ode rman müsste die variable vorher als float definieren (wie es z.b. in der Programmiersprache C üblich ist)

Vielen Dank für die ausführlichen Erklärungen. Jetzt sehe ich schon klarer. Allerdings geht mein FHT nicht in den Manu-Mode obwohl das Script (Temp_Change) ausgeführt wird (Sehe ich im Debug Fenster). Auch die Variable bleibt auf Mode=0. Könnte man nicht einfach die 3 Zeilen mit switch, case, break weglassen?

Danke, TK