+ Antworten
Ergebnis 1 bis 5 von 5
  1. #1
    Registriert seit
    Apr 2005
    Ort
    Hessen - nähe Gießen
    Beiträge
    330

    Standard Heizungssteuerung mit Parameterdatei - IPS v2.x

    Weil doch immer wieder nachgefragt wird hier eine kleine Anleitung wie man meine ursprüngliche Heizungsstuerung mit Parameterdatei auf die IPS v2.x portiert, bzw. hier neu anlegt.

    Die Stuerung besteht aus mehreren Scripten (sicher geht das alles einfacher, es ist aber damals so "gewwachsen" und ich habe mit nicht mehr die Mühe gemacht es kompakter zu gestalten - es geht ja ;-))
    Das Beispiel zeige ich für 2 FHT's (eine Ergänzung um weitere ist dann selbsterklärend).

    Allgemeine Scripte (für alle FHT's nur ein mal nötig):
    - Heizungssteueruzng automatik
    - Heuzungssteuerung manuell

    FHT-spezifische Scripte (jeweils pro FHT notwendig):
    Heizungssteuerung reset (fürs Bad)
    Heizungssteuerung reset (fürs Wohnzimmer)
    ich habe das bei der Version 2.x so gemacht, dass es eine Kategorie für den Raum gibt (Bad, Wohnzimmer) und eine Kategorie Heizung. Die allgemeinen Scripte sind bei "Heizung" die spezifischen bei dem jeweiligen Raum.

    Als Variable für jedes FHT wird noch "Parameter Temperature" als FLOAT benötigt.
    Weiterhin sollte man für jedes angelegte FHT noch eine weitere Variable "Mode" als Boolean anlegen. Warum? Ich habe gemerkt, dass sich die FHZ etwas schwer tut, den MODE an die FHT's zu senden. Damit nicht immer was im Buffer hängen bleibt benutze ich eine eigene Variable für den Mode.
    Dieser wird ja verwendet, wenn man manuell eine Temperatur (abweichend der Parameterdatei) angibt.

    Vorab die Parameterdateien (man benötigt für jedes FHT eine eigene Datei - es sei denn die Zeiten und Temperaturen sind identisch):
    eine Textdatei mit der Endung .par (kann man aber auch anders nennen, man muss nachher nur die richtige öffen.
    Die Dateien habe ich für meine Steuerung in folgendem Pfad abgelegt (Beispiel Wohnzimmer-Parameterdatei)
    Code:
    C:/IP-SYMCON/parameter/Heizung_Wohn.par
    Folgender Inhalt der Parameterdateien:
    Code:
    Montag;05:10;22.5
    Montag;06:30;16.0
    Montag;21:10;22.5
    Montag;21:40;16.0
    Dienstag;05:10;22.5
    Dienstag;06:30;16.0
    Dienstag;21:10;22.5
    Dienstag;21:40;16.0
    Mittwoch;05:10;22.5
    Mittwoch;06:30;16.0
    Mittwoch;21:10;22.5
    Mittwoch;21:40;16.0
    Donnerstag;05:20;22.5
    Donnerstag;06:30;16.0
    Donnerstag;21:10;22.5
    Donnerstag;21:40;16.0
    Freitag;05:10;22.5
    Freitag;06:10;16.0
    Freitag;21:10;22.5
    Freitag;21:40;16.0
    Samstag;07:30;22.5
    Samstag;08:30;16.0
    Samstag;21:10;22.5
    Samstag;21:40;16.0
    Sonntag;07:45;22.5
    Sonntag;08:30;16.0
    Sonntag;21:10;22.5
    Sonntag;21:40;16.0
    die beiden allgemeinen Scripte.
    Alle IPS-ID's habe ich durch "deineID" ersetzt. der Kommentartext zeigt welche ID von deinem IPS benötigt wird.
    Heizungssteuerung automatik:
    Code:
    <?
    $hour=date("H");
    $minute=date("i");
    $time = $hour.":".$minute;
    $heute = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
    $tag = date("w");
    
    
    //Badezimmer OG
    $temp_mode=GetValueBoolean(deineID /*[Badezimmer Oben\FHT80b\Mode]*/);
    if($temp_mode==false)   //Heizung im Automatikbetrieb
    {
       $newtemp=GetValueFloat(deineID /*[Badezimmer Oben\FHT80b\Target Temperature]*/); //Alten Zustand einlesen - nur für erste Zeit am Tag wichtig
    
       $handle = fopen("C:/Programme/IP-SYMCON/web/Parameter/Heizung_Bad.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;
         }
       }
       if($newtemp != GetValueFloat(deineID /*[Badezimmer Oben\FHT80b\Target Temperature]*/))
       {
          echo "Sollwert Temperatur Bad [°C]: ".$newtemp;
          SetValueFloat(deineID /*[Badezimmer Oben\FHT80b\Parameter Temperature]*/, (float)$newtemp);
          FHT_SetTemperature(deineID /*[Badezimmer Oben\FHT80b]*/, (float)$newtemp);
       }
       fclose($handle);
    }
    
    //Wohnzimmer
    $temp_mode=GetValueBoolean(deineID /*[Wohnzimmer\FHT80b\Mode]*/);
    if($temp_mode==false)  //Heizung im Automatikbetrieb
    {
       $newtemp=GetValueFloat(deineID /*[Wohnzimmer\FHT80b\Target Temperature]*/); //Alten Zustand einlesen - nur für erste Zeit am Tag wichtig
       $handle = fopen("C:/IP-SYMCON/parameter/Heizung_Wohn.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;
       	}
       }
       if($newtemp != GetValueFloat(deineID /*[Wohnzimmer\FHT80b\Target Temperature]*/))
       {
          echo "Sollwert Temperatur Wohnzimmer [°C]: ".$newtemp;
          SetValueFloat(deineID /*[Wohnzimmer\FHT80b\Parameter Temperature]*/, (float)$newtemp);
          FHT_SetTemperature(deineID /*[Wohnzimmer\FHT80b]*/, (float)$newtemp);
       }
       fclose($handle);
    }
    ?>
    WICHTIG - diese Zeile im Script anpassen, wenn die Datei anders von dir benannt wurde, oder in einem anderen Verzeichnis liegt.
    Code:
    $handle = fopen("C:/IP-SYMCON/parameter/Heizung_Wohn.par","r");

    Heizungssteuerung manuell:
    Code:
    <?
    if($IPS_SENDER=="Variable")
    {
       switch($IPS_VARIABLE)
       {
          case deineID:   //ID von [Wohnzimmer\FHT80b\Target Temperature]
          if(GetValueFloat(40874 /*[Wohnzimmer\FHT80b\Target Temperature]*/)!=GetValueFloat(deineID /*[Wohnzimmer\FHT80b\Parameter Temperature]*/))
          {
    			SetValueBoolean(deineID /*[Wohnzimmer\FHT80b\Mode]*/,true); //in Manuell Mode
             IPS_SetScriptTimer(deineID /*[Wohnzimmer\FHT80b\Heizungssteuerung reset]*/,7000);  //ca. 2h halten
          }
          else
          {
    			SetValueBoolean(deineID /*[Wohnzimmer\FHT80b\Mode]*/, false); //in Automatik Mode
             IPS_SetScriptTimer(deineID /*[Wohnzimmer\FHT80b\Heizungssteuerung reset]*/,0);  //Timer stoppen
          }
          break;
    
         case deineID:   //ID von [Badezimmer Oben\FHT80b\Target Temperature]
          if(GetValueFloat(deineID /*[Badezimmer Oben\FHT80b\Target Temperature]*/)!=GetValueFloat(deineID /*[Badezimmer Oben\FHT80b\Parameter Temperature]*/))
          {
    			SetValueBoolean(deineID /*[Badezimmer Oben\FHT80b\Mode]*/,true);
             IPS_SetScriptTimer(deineID /*[Badezimmer Oben\FHT80b\Heizungssteuerung reset]*/,7000);  //ca. 2h halten
          }
          else
          {
             SetValueBoolean(deineID /*[Badezimmer Oben\FHT80b\Mode]*/,false);
             IPS_SetScriptTimer(deineID /*[Badezimmer Oben\FHT80b\Heizungssteuerung reset]*/,0);  //Timer stoppen
          }
          break;
       }
    }
    ?>

    Das spezifische Script nur fürs Bad (das andere ist dementsprechend):
    Code:
    <?
    SetValueBoolean(deineID /*[Badezimmer Oben\FHT80b\Mode]*/, false); //in Automatik Mode
    IPS_SetScriptTimer(deineID /*[Badezimmer Oben\FHT80b\Heizungssteuerung reset]*/,0);   //Timer aus
    IPS_RunScript(deineID /*[Energie\Heizung\Heizungssteuerung automatik]*/);
    ?>
    jetzt noch die wichtigesten Einstellungen - die Trigger für die Scripte:
    Heizungssteuerung automatik:
    - Täglich - alle 30 min. aufrufen

    Heizungssteuerung manuell:
    bei Variablenänderung - Badezimmer Oben\FHT80b\Target Temperature
    bei Variablenänderung - Wohnzimmer\FHT80b\Target Temperature

    FHT-spezifisch - Heizungssteuerung reset:
    Täglich - alle 7000 Sekunden
    (dieser Timer wird dann von den anderen Scripten gestartet und gestoppt)


    das sollte es eigentlich gewesen sein.
    Ich hoffe noch auf ein Feedback von Horst ob's denn so klappt.
    Wenn noch Fragen sind könnt Ihr euch auch gerne melden.
    Geändert von Retiarius (31.10.09 um 08:59 Uhr)

  2. #2
    Registriert seit
    Jul 2005
    Ort
    Schwanewede/Niedersachsen
    Beiträge
    1,845

    Hallo Renè,

    ich habe das Script mal ausprobiert. Wenn die Solltemp. über Parameterdatei (Automatik) geändert wird, geht die Heizung in den manuell-Modus. Ist das Richtig oder habe ich da irgendwo einen Fehler gemacht?
    Gruss
    Horst

    IP-Symcon 5.0 IPS-868, FS20, HM, HUE, Plugwise

  3. #3
    Registriert seit
    Apr 2005
    Ort
    Hessen - nähe Gießen
    Beiträge
    330

    sollte eigentlich nicht passieren, denn

    Code:
     if(GetValueFloat(40874 /*[Wohnzimmer\FHT80b\Target Temperature]*/)!=GetValueFloat(deineID /*[Wohnzimmer\FHT80b\Parameter Temperature]*/))
    diese Zeile im Script Heizungssteuerung manuell schließt das aus. Es wird nur in Manuell-Mode geschaltet, wenn Parameter-Temperatur und Target-Temperatur UNGLEICH sind. Es wird sogar bei GLEICHEIT der beiden Werte wirder in den Automatikbetrieb gewechselt.
    Dies hat den Vorteil, wenn man z.B. das Fenster öffnet wird die Parametertemperatur verlassen und auf z.B. 12° abgesenkt. Dies heißt im ersten Moment Wechsel für 2h in den Manuell-Mode. Das FHT welchselt beim Fenster schließen wieder auf die ursrüngliche Temperatur. Das Script bekommt dann mit, dass Parameter-Temp und Target-Temp GLEICH sind und wechselt direkt in den Automatik-Betrieb.

    Also laut Code dürfte der Fall, dass bei einer Temperautvorgabe der Parameterdatei das Script in Manuell Modus wechselt nicht passieren. Ich prüfe das aber auch bei mir nochmal.
    Geändert von Retiarius (30.10.09 um 16:44 Uhr)

  4. #4
    Registriert seit
    Jul 2005
    Ort
    Schwanewede/Niedersachsen
    Beiträge
    1,845

    Naja, wenn Du sagst das sollte so nicht sein habe ich evtl. ja doch irgendwo einen Fehler gemacht. Ich werde mir das auch nochmal ansehen.

    Habe, glaube ich, den Fehler gefunden. Ich hatte noch ein Teil der alten Scripte aktiv. Werde es mal weiter beobachten.
    Geändert von hbraun (30.10.09 um 20:41 Uhr)
    Gruss
    Horst

    IP-Symcon 5.0 IPS-868, FS20, HM, HUE, Plugwise

  5. #5
    Registriert seit
    Jul 2005
    Ort
    Schwanewede/Niedersachsen
    Beiträge
    1,845

    Hallo,

    so habe das Script jetzt 4 Tage getestet und muss sagen "Läuft bisher absolut einwandfrei".

    Nochmals vielen Dank an Renè
    Gruss
    Horst

    IP-Symcon 5.0 IPS-868, FS20, HM, HUE, Plugwise

Ähnliche Themen

  1. Newbie hat eine Frage! Mail per IPS?
    Von Xanon im Forum Allgemeine Diskussion
    Antworten: 7
    Letzter Beitrag: 14.10.10, 18:40
  2. Heizungssteuerung mit Parameterdatei
    Von Retiarius im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 71
    Letzter Beitrag: 29.10.09, 19:01
  3. IPS hängt sich auf nach SSL aktivieren
    Von pleibling im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 26.10.08, 20:18
  4. Heizungssteuerung mit IPS?
    Von Roger im Forum Haustechnik
    Antworten: 2
    Letzter Beitrag: 07.02.07, 06:40