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);
}
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…
ich hatte das Problem, das sich trotz deaktivierter Programme im FHT die Temperatur um 0.00Uhr vom FHT auf den Tagwert gesetzt wird .
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.
Let’s puzzle…
Keule
PS: Hast du schon mal auf die Hits auf deinen Beitrag geachtet? 1,042 Hits ist schon rekordverdächtig.
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.
Hallo ich habe seit gestern Probleme mit dem von Dir zur Verfügung gstellten Script (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.
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.
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);
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.
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?