+ Antworten
Seite 1 von 5 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 50
  1. #1
    Registriert seit
    Sep 2009
    Beiträge
    193

    Standard FHT Heizungs-Steuerung über Google Calendar

    Idee: Warum richtet sich meine Heizung nicht nach meinem Terminkalender?
    Inspiration: Google Kalender Termine im WebFront anzeigen und Heizungssteuerung mit Parameterdatei
    (Teile des Codes stammen aus diesen Skripten)

    Über Google Calendar:
    Im Gcal lassen sich verschiedene Kalender erstellen, die einfach ein- und ausgeblendet werden können (man will ja nicht jeden Heizungstermin zwischen seinen anderen Terminen haben). Für jeden Raum kann so auch ein eigener Kalender erstellt werden.
    Termine lassen sich einfach durch Mausziehen verschieben oder verändern.
    Es können auch Wiederholungen von Terminen (täglich, an bestimmten Tagen, wöchentlich, etc) eingerichtet werden.
    Außerdem lässt sich der Kalender einfach in das WebFront einbetten (siehe Bild).
    Ideal für eine Heizungssteuerung!

    Herausgekommen ist dabei folgendes:

    Das Skript bietet die Möglichkeit zwischen Tag- und Nacht-Betrieb,
    Anwesen- und Abwesenheit sowie Urlaub zu unterscheiden.
    Über Variablen können Komfort- und Nacht-Temperaturen für jeden Raum festgelegt werden, diese können im Betrieb über das WebFront verändert werden.
    Durch mehrere Google Kalender können verschiedene Temperaturprofile für
    verschiedene FHT-Instanzen realisiert werden.
    FHT freundlich: Temperaturen werden nur gesendet, wenn es auch notwendig ist.
    Wird die Temperatur am Stellrad verändert, bleibt diese im Automatikbetrieb bis zum nächsten Kalender-Eintrag erhalten.

    Betriebsmodi:

    I. Anwesend:

    Timer aus dem Kalender werden ignoriert, stattdessen wird die Komforttemperatur (aus Variable) gesetzt.
    Die Komforttemperatur lässt sich einfach über das WebFront ändern.
    Wird die Temperatur am Rad der FHT verstellt, so wird diese Temperatur beibehalten.
    Modus ist aktiv, wenn:
    * $Anwesenheit = true und $TagNacht = true (Tag)

    II. Automatikbetrieb:

    Temperaturen werden nach Kalendereinträgen gesetzt. Gibt es keinen Eintrag, wird die NachtTemp gesetzt.
    Veränderungen am Rad der FHT bleiben solange erhalten, bis ein neuer Schaltzeitpunkt aus dem Kalender sie überschreibt.
    Modus ist aktiv, wenn:
    * $Anwesenheit = true und $TagNacht = false (Nacht)
    oder
    * $Anwesenheit = false

    III. Urlaubsbetrieb:

    Im Urlaubsbetrieb werden die regulären Schaltzeitpunkte aus dem Kalender ignoriert.
    Vorhandene Schaltzeiten müssen also nicht gelöscht werden.
    Der Betrieb wird aktiviert, indem man im Standard-Kalender einen Termin mit dem Text "Urlaub" im Feld "Wo" einträgt (siehe Bild).
    Die Urlaubs-Temperatur im Termin-Feld "Was" eintragen.
    Alle FHTs werden dann, solange der Urlaubs-Termin aktuell ist, auf diese Temperatur gesetzt.

    Installation

    Das Skript legt alle Variablen, -Profile und Timer automatisch an. Es müssen lediglich folgenden Anpassungen am Anfang vorgenommen werden:

    1. Zunächt müssen im Google calendar entsprechend der Anzahlt gewünschter Temperaturprofile neue Kalender angelegt werden.
    Aus dem persönlichen XML-Link die Kalender-ID und den MagicCookie herauskopieren und im Skript eintragen.

    2. FHT-IDs eintragen.

    3. Den einzelnen FHTs ein Temperatur-Profil zuweisen.

    4. Festlegung eines Standard-Profils, in dem auch der Urlaub eingetragen wird.

    5. Anwesenheits- und TagNacht-Variablen-IDs eintragen. Werden die Anwesenheits- und TagNacht-Variablen nicht benötigt, können die Werte auch einfach per true oder false
    im Skript festgelegt werden, so dass einer der gewünschten Betriebsmodi (s.o.) ausgewählt wird.

    6. Nach der ersten Ausführung des Skripts, die Temperaturen in den Variablen NachtTemp und KomfortTemp (unter jeder FHT-Instanz) anpassen.


    Das Skript läuft bei mir seit gut einem Monat ohne Probleme.

    Wenn jemand Lust hat das Skript mal auszuprobieren um Fehler aufzudecken: SKRIPT befindet sich zwei Posts weiter unten.

    to
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	gcal.PNG 
Hits:	1110 
Größe:	53.4 KB 
ID:	6978   Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	gcal_urlaub.PNG 
Hits:	904 
Größe:	19.5 KB 
ID:	6979   Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	wf_komforttemp.PNG 
Hits:	1073 
Größe:	20.7 KB 
ID:	6980   Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	wf_gacl.PNG 
Hits:	904 
Größe:	54.8 KB 
ID:	6993  
    Geändert von hirschbrat (10.02.10 um 19:38 Uhr) Grund: Installation beschrieben

  2. #2
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,673

    Den Rest sollte das Skript erledigen
    perfekt

    bitte melden
    ach so - warum nicht als Anhang?

    MST

  3. #3
    Registriert seit
    Sep 2009
    Beiträge
    193

    Zitat Zitat von steiner Beitrag anzeigen
    ach so - warum nicht als Anhang?

    MST
    Ich wollte nicht den Anschein erwecken, dass dieses Projekt schon vollständig durchgetestet und abgeschlossen ist....

    Hier ist der Code. Habe das Skript bisher nur auf meinem Server laufen lassen
    Wer es ausprobiert und Fehler findet bitte posten.

    Das Skript ist ziemlich lang, interessant ist jedoch nur der Settings Abschnitt am Anfang.

    PHP-Code:
    <?
    /*
    *************************************************************
    *     FHT-Steuerung auf Google Calendar Basis               *
    *************************************************************
    Das Skript bietet die Möglichkeit zwischen Tag- und Nacht-Betrieb,
    Anwesen-  und Abwesenheit sowie Urlaub zu unterscheiden.
    Über Variablen können Komfort- und Nacht-Temperaturen für jeden Raum festgelegt werden, diese können im Betrieb über das WebFront verändert werden.
    Durch mehrere Google Kalender können verschiedene Temperaturprofile für
    verschiedene FHT-Instanzen realisiert werden.
    FHT freundlich: Temperaturen werden nur gesendet, wenn es auch notwendig ist.
    Wird die Temperatur am Stellrad verändert, bleibt diese im Automatikbetrieb bis zum nächsten Kalender-Eintrag erhalten.


    *****************
    * Betriebsmodi: *
    *****************
    I. Anwesend:

    Timer aus dem Kalender werden ignoriert, stattdessen wird die Komforttemperatur (aus Variable) gesetzt.
    Die Komforttemperatur lässt sich einfach über das WebFront ändern.
    Wird die Temperatur am Rad der FHT verstellt, so wird diese Temperatur beibehalten.
    Modus ist aktiv, wenn:
        * $Anwesenheit = true und $TagNacht = true (Tag)

    II. Automatikbetrieb:

    Temperaturen werden nach Kalendereinträgen gesetzt. Gibt es keinen Eintrag, wird die NachtTemp gesetzt.
    Veränderungen am Rad der FHT bleiben solange erhalten, bis ein neuer Schaltzeitpunkt aus dem Kalender sie überschreibt.
    Modus ist aktiv, wenn:
    * $Anwesenheit = true und  $TagNacht = false (Nacht)
    oder
    * $Anwesenheit = false

    III. Urlaubsbetrieb:

    Im Urlaubsbetrieb werden die regulären Schaltzeitpunkte aus dem Kalender ignoriert.
    Vorhandene Schaltzeiten müssen also nicht gelöscht werden.
    Der Betrieb wird aktiviert, indem man im Standard-Kalender (s. Installation) einen Termin mit dem Text "Urlaub" im Feld "Wo" einträgt.
    Die Urlaubs-Temperatur im Termin-Feld "Was" eintragen.
    Alle FHTs werden dann, solange der Urlaubs-Termin aktuell ist, auf diese Temperatur gesetzt.

    ****************
    * Installation *
    ****************

    1. Zunächt müssen im Google calendar entsprechend der Anzahlt gewünschter Temperaturprofile neue Kalender angelegt werden.
    Aus dem persönlichen XML-Link die Kalender-ID und den MagicCookie herauskopieren und im Skript eintragen.

    2. FHT-IDs eintragen.

    3. Den einzelnen FHTs ein Temperatur-Profil zuweisen.

    4. Festlegung eines Standard-Profils, in dem auch der Urlaub eingetragen wird.

    5. Anwesenheits- und TagNacht-Variablen-IDs eintragen. Werden die Anwesenheits- und TagNacht-Variablen nicht benötigt, können die Werte auch einfach per true oder false
    im Skript festgelegt werden, so dass einer der gewünschten Betriebsmodi (s.o.) ausgewählt wird.

    6. Nach der ersten Ausführung des Skripts, die Temperaturen in den Variablen NachtTemp und KomfortTemp (unter jeder FHT-Instanz) anpassen.

    **************************
    * Timer-Programmmierung: *
    **************************
    Im Kalender muss ein neuer Eintrag mit der Temperatur (in der Form: 21.0) im Termin-Feld "Was" angelegt werden.
    Für Zeiträume, in denen kein Eintrag vorliegt, wird automatisch die NachtTemperatur gesetzt.
    Bei Überschneidung von Terminen gilt die Temperatur des ersten Termins, solange dieser aktuell ist.


    ************************
    * Skript-Informationen *
    ************************

    Das Skript legt im IP-Symcon-Verzeichnis Textdateien, die die Schaltzeitpunkte enthalten, an.
    Dateien: * Heizung_parameter.txt          (Hier stehen Urlaubsdaten drin)
                * Heizung_"Profilname".txt     (Je Profil eine Datei mit Schaltzeiten)

    Das Skript legt automatisch unter jeder FHT-Instanz folgende Variablen an:
        * KomfortTemp,        typ: float, profile: ~Temperature.FHT,  Aktionsskript: "WebFrontKomfortTemp"
        * NachtTemp,         typ: float, profile: ~Temperature.FHT
        * lastTemp,            typ: float
        und ein Skript, um die KomfortTemp im WebFront zu setzten:
        * WebFrontKomfortTemp

    Unter dem Skript selbst wird folgende Variable angelegt:
        * Urlaub,  typ: booelan
    und ein Timer:
        * Heizung Timer, Trigger: zyklisch, 30 minütig, Beginn 00:00:30

    */

    /*
    ************** BEGIN Settings *******************************************

     1. Google calendar settings
     Kalender-Namen in den Variablen $calendar müssen NICHT mit den Google calendar Namen übereinstimmen!

     BEISPIEL für Private XML-Adresse eines zusätzlichen Kalenders:
     http://www.google.com/calendar/feeds/sssssddddddddd7777ffffff@group.calendar.google.com/private-aaaaaaaabbbbbbcccc000000111111/basic
                                          |------------- user id --------------------------|         |-------- magicCookie -------|
    */

    $calendar[1] = "standard";
    $userid[1] = 'sssssddddddddd7777ffffff@group.calendar.google.com';
    $magicCookie[1] = 'aaaaaaaabbbbbbcccc000000111111';

    $calendar[2] = "badezimmer";
    $userid[2] = '111111122222233333eeeeeeefff@group.calendar.google.com';
    $magicCookie[2] = 'aaaaaaaaaaabbbbbbbbbbbb4444444444hhhhh';

    // 2. FHT-IDs
    $FHT_id[1]=32385 /*[TEST\FHT80b]*/;
    $FHT_id[2]=36853 /*[Control\Heizung\FHT80b Badezimmer]*/;
    //$FHT_id[3]=36265 /*[Objekt #36265 existiert nicht]*/;

    //3. Den FHTs Temperaturprofile zuordnen (Namen der Profile wie in den $calendar Variablen)
    // zu $FHT_id[1] gehört $profile[1]   usw.

    $profile[1]="standard";
    $profile[2]="badezimmer";
    //$profile[3]="standard";

    // 4. Standard-Kalender festlegen
    $standard_calendar $calendar[1];

    // 5. Anwesenheits- und TagNacht-Variablen-IDs eintragen
    $Anwesenheit =false//GetValueBoolean(40478 /*[Betriebsmodi\Anwesenheit]*/);
    $TagNacht true//GetValueBoolean(30850 /*[Betriebsmodi\TagNacht]*/);
    //********************* END Settings ****************************************************


    //*********************** BEGIN Script **************************************************
    $debug false;             // write debug messages
    $FHT_debug false;        // true: no temperatures are send to FHT
    $TimerNAME "Heizung Timer";                      // timer-name
    CreateTimerByName($IPS_SELF ,$TimerNAME10);      // create timer: 10 minutes
    $UrlaubID CreateVariableByName($IPS_SELF"Urlaub"0"","""");
    $Betriebsmodus CreateVariableByName($IPS_SELF"Betriebsmodus"1"FHT.Betriebsmodus","""");

    if (
    $debug) {echo "debug:\n";}
    //************* read Google Calendar ****************************************************

    $time=date("H:i");
    $parameter "";        //String variable for Heizung_parameter.txt

    for($i 1$i <= count($calendar); $i++)
    {
        
    $feedURL "http://www.google.com/calendar/feeds/$userid[$i]/private-$magicCookie[$i]/full";
        
    $feedParams "?singleevents=true&max-results=10&orderby=starttime&start-min=".urlencode(date("c"))."&sortorder=a";
        
    $sxml simplexml_load_file($feedURL.$feedParams);
        
    $date "";          //String variable for Heizung_[$profile].txt

        
    foreach ($sxml->entry as $entry) {
            
    $title stripslashes(utf8_decode($entry->title));
            
    $gd $entry->children('http://schemas.google.com/g/2005');

            
    $startTime ''// read StartTime
            
    if ( $gd->when ) {
                
    $startTime $gd->when->attributes()->startTime;
            } elseif ( 
    $gd->recurrence ) {
                
    $startTime $gd->recurrence->when->attributes()->startTime;
            }
            
    $startTime strtotime$startTime );

            
    $endTime '';      // read EndTime
            
    if ( $gd->when ) {
                
    $endTime $gd->when->attributes()->endTime;
            } elseif ( 
    $gd->recurrence ) {
                
    $endTime $gd->recurrence->when->attributes()->endTime;
            }
            
    $endTime strtotime$endTime );

            
    $where utf8_decode($gd->where->attributes()->valueString);     // read Location => parameter, e.g. Urlaub

             
    if ($where!="Urlaub") {

               
    $date .= date("d.m.y"$startTime).";".date("H:i",$startTime).";".$title."\r\n".date("d.m.y"$endTime).";".date("H:i",$endTime).";NachtTemp;\r\n";
                } elseif (
    $calendar[$i] == $standard_calendar) {
                    
    $parameter .= date("d.m.y"$startTime).";".date("H:i",$startTime).";".$title.";".$where."_start\r\n".date("d.m.y"$endTime).";".date("H:i",$endTime).";NachtTemp;".$where."_end\r\n";
                  }
    /*    if($IPS_SENDER == "Execute")
        {
            echo $date;
            echo "\n";
        }*/

    //    ******** write profile-timetable ****************************
        
    $fh fopen(IPS_GetKernelDir()."Heizung_".$calendar[$i].".txt"'w') or die("can't open file");
        
    fwrite($fh$date);
        
    fclose($fh);


        }
            
    // ******** write parameter-file ****************************
        
    if ($parameter != "") {
            
    $fh fopen(IPS_GetKernelDir()."Heizung_parameter.txt"'w') or die("can't open file");
            
    fwrite($fh$parameter);
            
    fclose($fh);
       }
       
    $fh fopen(IPS_GetKernelDir()."Heizung_".$calendar[$i].".txt"'a+') or die("can't open file");
        
    fclose($fh);
    }
    $fh fopen(IPS_GetKernelDir()."Heizung_parameter.txt"'a+') or die("can't open file");
    fclose($fh);


    //********* read parameter-file *********************************************

    $filename IPS_GetKernelDir()."Heizung_parameter.txt";
        
    //echo $filename;
        
    $handlefopen($filename,"r");
        
    SetValue($UrlaubIDfalse);
      
    // $handle = fopen($filename,"r");
         
    while ($line fgets($handle1000)) {
         
    $value explode(";"$line);    //[0]-Tag, [1]-(Ab)Zeit, [2]-Temperatur
         
    $day=$value[0];
         
    $switchtime=$value[1];
         
    $temp=$value[2];
         
    $parameter=$value[3];
        if (
    date("d.m.y") == $day && $time $switchtime) {
          switch (
    $parameter){
              case 
    "Urlaub_start\r\n":
                  
    SetValue($UrlaubIDtrue);           // set $Urlaub = true
                  
    $urlaubtemp=$temp;
                break;
                case 
    "Urlaub_end\r\n":
                    
    SetValue($UrlaubIDfalse);          // set $Urlaub == false
                
    break;
          }
        }
       }
       
    fclose($handle);
    //**********END read parameter-file ****************************************



    //********* create variables and set temperature  for each FHT ******************

    for($i 1$i <= count($FHT_id); $i++)
    {
        if (
    $debug) {echo $profile[$i].": ";}
        
    CreateScriptByName("WebFrontKomfortTemp"$FHT_id[$i], "<?php \r\n\$parentID = IPS_GetObject(\$IPS_SELF);\r\n\$parentID = \$parentID['ParentID'];\r\nSetValueFloat(\$IPS_VARIABLE, \$IPS_VALUE);\r\n?>");
        
    $TargetTemperature = @IPS_GetVariableIDByName("Target Temperature"$FHT_id[$i]);                     // get variable ID
        
    $TargetTemperaturePending = @IPS_GetVariableIDByName("Target Temperature (Pending)"$FHT_id[$i]);    // get variable ID
        
    $KomfortTemp GetValueFloat(CreateVariableByName($FHT_id[$i], "KomfortTemp"2"~Temperature.FHT", @IPS_GetScriptIDByName("WebFrontKomfortTemp"$FHT_id[$i]), 1));
        
    $NachtTemp GetValueFloat(CreateVariableByName($FHT_id[$i], "NachtTemp"2"~Temperature.FHT"""""));
        
    $lastTemp GetValueFloat(CreateVariableByName($FHT_id[$i], "lastTemp"2""""""));
         
    $parameter_Urlaub =GetValueBoolean($UrlaubID);
        
    $force false;
    //    $manual = false;

    //******manual ***********************************
    /*    if (GetValueFloat($TargetTemperature) != GetValueFloat($TargetTemperaturePending)) {
            if ($debug) {echo "manual ";}
            $manual == true;
        }
    */
    //**** DEFAULT value: NachtTemp ****************************************************
       
    $newtemp $NachtTemp;                                  // set to NachtTemp by default

    //***URLAUB, set temperature from parameter-file**********************************
        
    if ($parameter_Urlaub == true && $Anwesenheit == false) {
            
    $newtemp $urlaubtemp;
            
    $force true;          //force SetTemperature
            
    if ($debug) {echo "URLAUB ";}
            
    SetValueInteger($Betriebsmodus0);
            
    SetTemperature($profile[$i],$TargetTemperature$newtemp$lastTemp$FHT_id[$i], $force);;
            }

    //*** AT HOME, set KomfortTemp ********************************************************
        
    if ($Anwesenheit == true /*&& $manual == false*/) { if ($debug) {echo "Anwesend ";}
            if (
    $TagNacht == true) {
                
    $newtemp $KomfortTemp;
                if (
    $debug) {echo "Tag  ";}
                
    SetValueInteger($Betriebsmodus2);
                
    SetTemperature($profile[$i],$TargetTemperature$newtemp$lastTemp$FHT_id[$i], $force);}     // set KomfortTemp when at Home
                //if ($TagNacht == false) {$newtemp = $NachtTemp; if ($debug) {echo "Nacht  ";}}                  // set NachtTemp at night

            
    }

    //**** AUTOMATIC, set temperature from Google calendar ********************************************
        
    if ($parameter_Urlaub == false && ($Anwesenheit == false || ($Anwesenheit == true && $TagNacht == false))) {               // set temperature from profile-file
          
    if ($debug) {echo "Automatic ";}
            
    $filename IPS_GetKernelDir()."Heizung_".$profile[$i].".txt";
            
    $handle fopen($filename,"r");
             while (
    $line fgets($handle1000))
           {
             
    $value explode(";"$line);    //[0]-date, [1]-time, [2]-temperature, [3]-parameter
             
    $day=$value[0];
             
    $switchtime=$value[1];
              if (
    $value[2] == "NachtTemp") {
               
    $temp $NachtTemp; }
               else {
    $temp=$value[2];}


            if (
    date("d.m.y") == $day)
             {
                 if(
    $time $switchtime)
                    
    $newtemp $temp;
             }
           }
           
    fclose($handle);
           
    SetValueInteger($Betriebsmodus1);
           
    SetTemperature($profile[$i],$TargetTemperature$newtemp$lastTemp$FHT_id[$i], $force);
        }
        if (
    $debug){echo "\n";}
    }

    //*******************************************************************
    //****** FUNCTION: Set Temperature **********************************
    function SetTemperature($profile$TargetTemperature$newtemp$lastTemp$FHT_id$force)
     {
          global 
    $debug;
          global 
    $FHT_debug;
          if ((
    $lastTemp!= (float)$newtemp) || ($force == true)) {
             
    $force false;
              if (
    $debug) {echo ",last != new, ";}
              if (
    GetValueFloat($TargetTemperature) != (float)$newtemp ) {
                 if (
    $debug) {echo "Sollwert Temperatur ".$profile." [°C]: ".$newtemp;}
                 
    SetValueFloat(CreateVariableByName($FHT_id"lastTemp"2""""""), (float)$newtemp);
                 if (
    $FHT_debug == false) {FHT_SetTemperature($FHT_id, (float)$newtemp);}
             }
            }
     }
    //******FUNCTION: CreateVariableByName *******************************
    function CreateVariableByName($id$name$type$profile$ScriptID$position)
    {
        global 
    $IPS_SELF;
        
    $vid = @IPS_GetVariableIDByName($name$id);
        if(
    $vid === false)
        {
            
    $vid IPS_CreateVariable($type);
            
    IPS_SetParent($vid$id);
            
    IPS_SetName($vid$name);
            
    IPS_SetInfo($vid"this variable was created by script #$IPS_SELF");
            if(
    $profile == "FHT.Betriebsmodus" && IPS_VariableProfileExists("FHT.Betriebsmodus")== false) {
                
    IPS_CreateVariableProfile($profile1);
                
    IPS_SetVariableProfileAssociation($profile0"Urlaub""Information");
                
    IPS_SetVariableProfileAssociation($profile1"Automatik""Information");
                
    IPS_SetVariableProfileAssociation($profile2"Komfort""Information");
                
    IPS_SetVariableCustomProfile($vid$profile);
            }
            if(
    $profile != "")  {IPS_SetVariableCustomProfile($vid$profile); }
            if(
    $ScriptID !== "") {IPS_SetVariableCustomAction($vid$ScriptID);}
            if(
    $ScriptID !== "") {IPS_SetPosition($vid$position);}
        }
        return 
    $vid;
    }
    //******FUNCTION: CreateScriptByName *******************************

    function CreateScriptByName($ScriptNAME$ParentID$ScriptTEXT)
    {
       global 
    $IPS_SELF;
        
    $ScriptID = @IPS_GetScriptIDByName($ScriptNAME$ParentID);
        if (
    $ScriptID == 0){

           
    $ScriptID IPS_CreateScript(0);
           
    IPS_SetName($ScriptID$ScriptNAME);
           
    IPS_SetParent($ScriptID$ParentID);
           
    IPS_SetInfo($ScriptID"This script was created by: #$IPS_SELF#");
            
    $fh fopen(IPS_GetKernelDir()."scripts\\".$ScriptID.".ips.php"'w') or die("can't open file");
            
    fwrite($fh$ScriptTEXT);
            
    fclose($fh);
            
    $ScriptPath $ScriptID.".ips.php";     //Skriptdatei
            
    IPS_SetScriptFile($ScriptID$ScriptPath);
            
    IPS_SetHidden($ScriptIDtrue);
           
    // echo "Die Skript-ID lautet: ". $ScriptID;
        
    }
    }
    //******FUNCTION: CreateTimerByName *******************************
    function CreateTimerByName($ParentID,$TimerNAME$Minutes)
    {
       global 
    $IPS_SELF;
        
    $EreignisID = @IPS_GetEventIDByName($TimerNAME$ParentID);
        if (
    $EreignisID == 0){
            
    $eid IPS_CreateEvent(1);                    //zyklisches Ereignis
            
    IPS_SetEventCyclic($eid21002$Minutes);   //Jeden Tag alle $Minutes
            
    IPS_SetParent($eid$ParentID);   //Eregnis zuordnen
            
    IPS_SetEventActive($eidtrue);
            
    IPS_SetEventCyclicTimeBounds($eidmktime(0030),0);   // Start: 00:00:30
            
    IPS_SetName($eid$TimerNAME);
            
    IPS_SetInfo($eid"This script was created by: #$IPS_SELF#");
        }
        else {
      
    //echo "Die Ereignis-ID lautet: ". $EreignisID;
      
    }
    }

    ?>
    Geändert von hirschbrat (10.02.10 um 20:00 Uhr) Grund: Skript aktualisiert

  4. #4
    Registriert seit
    Feb 2010
    Beiträge
    33

    hast du die Heizungsautomation selbst irgendwie zusammengestellt, oder verwendest du ein bestimmtes System?

    Ich hab ein System von Moeller aber eben nicht nur für Heizungen, sondern auch für Jalousien und Licht. Das mit dem Google-Kalendar kenne ich gar nicht, ich kann bei meiner Automation aber die ganauen Zeiten einstellen, aber vielleicht würde das auch mit so einem Kalendar gehen, da habe ich gar nicht gefragt.

  5. #5
    Registriert seit
    Sep 2009
    Beiträge
    193

    Hallo,

    ich benutze das FHT System von ELV. Hier gibt es auch die Möglichkeit, Wochenprogramme direkt an den einzelnen Raumcontrollern einzustellen - man muss es nur bei jedem einzeln einstellen.
    Darum habe ich die Steuerung über den Kalender realisiert, da IP-Symcon von Haus aus keine Möglichkeit mitbringt, die Wochenprogramme in den FHTs zu programmieren.

  6. #6
    Registriert seit
    Dec 2009
    Beiträge
    42

    Wer kann mir helfen - ich scheitere mit folgender Fehlermeldung:

    PHP-Code:
    WarningUnexpected character in input'\' (ASCII=92) state=1 in C:\IP-Symcon\scripts\59071.ips.php on line 191

    Warning: Unexpected character in input: '
    \' (ASCII=92) state=1 in C:\IP-Symcon\scripts\59071.ips.php on line 191

    Parse error: parse error, unexpected T_STRING in C:\IP-Symcon\scripts\59071.ips.php on line 191 
    Ich vermute, dass es daran liegt - ich weiss nicht, was ich an dieser Stelle tun muss...ich dachte das Script legt alles automatisch an?

    5. Anwesenheits- und TagNacht-Variablen-IDs eintragen. Werden die Anwesenheits- und TagNacht-Variablen nicht benötigt, können die Werte auch einfach per true oder false
    im Skript festgelegt werden, so dass einer der gewünschten Betriebsmodi (s.o.) ausgewählt wird.

    Bitte um Hilfe, bin noch Anfänger
    HP Media Smart EX470 Windows Home Server, IPS 2.3
    FHZ1300 (USB) , 5 FHTs, ein paar Schalter

  7. #7
    Registriert seit
    Dec 2009
    Beiträge
    42

    Nach nochmaligem probieren lautet die Fehlermeldung nun:

    HTML-Code:
    Warning: Übergeordnete Instanz #34734 exisitert nicht in C:\IP-Symcon\scripts\38211.ips.php on line 336
    
    Warning: Übergeordnete Instanz #34734 exisitert nicht in C:\IP-Symcon\scripts\38211.ips.php on line 317
    
    Warning: Übergeordnete Instanz #34734 exisitert nicht in C:\IP-Symcon\scripts\38211.ips.php on line 317
    
    Warning: Übergeordnete Instanz #34734 exisitert nicht in C:\IP-Symcon\scripts\38211.ips.php on line 317
    
    Warning: fopen(C:\IP-Symcon\Heizung_standard.txt) [function.fopen]: failed to open stream: No such file or directory in C:\IP-Symcon\scripts\38211.ips.php on line 272
    
    Warning: fgets() expects parameter 1 to be resource, boolean given in C:\IP-Symcon\scripts\38211.ips.php on line 273
    
    Warning: fclose() expects parameter 1 to be resource, boolean given in C:\IP-Symcon\scripts\38211.ips.php on line 289
    
    Warning: fopen(C:\IP-Symcon\Heizung_badezimmer.txt) [function.fopen]: failed to open stream: No such file or directory in C:\IP-Symcon\scripts\38211.ips.php on line 272
    
    Warning: fgets() expects parameter 1 to be resource, boolean given in C:\IP-Symcon\scripts\38211.ips.php on line 273
    
    Warning: fclose() expects parameter 1 to be resource, boolean given in C:\IP-Symcon\scripts\38211.ips.php on line 289
    HP Media Smart EX470 Windows Home Server, IPS 2.3
    FHZ1300 (USB) , 5 FHTs, ein paar Schalter

  8. #8
    Registriert seit
    Sep 2008
    Ort
    nr KS
    Beiträge
    1,924

    du müsstest die instanzen in dem script deiner umgebung anpassen, also deine fht-id im script einsetzen
    IP-Symcon Version: 5.3 unlim auf WIN7pro
    Shuttle XS35V4,HPSlate21,IPS-868,HM,HMip,FS20,piVCCU3,Silex4000,IPcams, FB 7850, TM-D710GE(GPS), Raspi3, Libratone
    Software für VDE 100/105/113/702/703 Doku

  9. #9
    Registriert seit
    Dec 2009
    Beiträge
    42

    Uups, sorry, da war doch tatsächlich ein Zahlenproblem ist korrigiert, jetzt kommt folgende Fehlermeldung:

    HTML-Code:
    Warning: fopen(C:\IP-Symcon\Heizung_standard.txt) [function.fopen]: failed to open stream: No such file or directory in C:\IP-Symcon\scripts\38211.ips.php on line 272
    
    Warning: fgets() expects parameter 1 to be resource, boolean given in C:\IP-Symcon\scripts\38211.ips.php on line 273
    
    Warning: fclose() expects parameter 1 to be resource, boolean given in C:\IP-Symcon\scripts\38211.ips.php on line 289
    
    Warning: fopen(C:\IP-Symcon\Heizung_badezimmer.txt) [function.fopen]: failed to open stream: No such file or directory in C:\IP-Symcon\scripts\38211.ips.php on line 272
    
    Warning: fgets() expects parameter 1 to be resource, boolean given in C:\IP-Symcon\scripts\38211.ips.php on line 273
    
    Warning: fclose() expects parameter 1 to be resource, boolean given in C:\IP-Symcon\scripts\38211.ips.php on line 289
    Noch'ne Idee?
    HP Media Smart EX470 Windows Home Server, IPS 2.3
    FHZ1300 (USB) , 5 FHTs, ein paar Schalter

  10. #10
    Registriert seit
    May 2006
    Ort
    Hannover
    Beiträge
    3,082

    Zitat Zitat von silberfuchs Beitrag anzeigen
    No such file or directory in C:\IP-Symcon\scripts\38211.ips.php
    Die Meldungen sind doch ziemlich eindeutig .

    Entweder ist dein Pfad "C:\IP-Symcon\" falsch oder die jeweilige Textdatei, z.B. "Heizung_standard.txt" existiert nicht. Und das ganze in deinem Script 38211.
    MfG Ralf

Ähnliche Themen

  1. Abfrage & Steuerung von Viessmann Heizungen
    Von Coyote im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 413
    Letzter Beitrag: 19.05.19, 10:40
  2. FHT Uhrzeit für IPS V2
    Von HausAuto im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 1
    Letzter Beitrag: 24.01.10, 23:59
  3. Heizungs steuerung
    Von Polleke im Forum 1-Wire, M-BUS
    Antworten: 4
    Letzter Beitrag: 30.10.08, 15:57
  4. Beispiel zur effektiven FHT Steuerung
    Von guyabano im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 8
    Letzter Beitrag: 18.10.06, 19:57
  5. Einige Fragen zur FHT 8b
    Von Helmut im Forum Allgemeine Diskussion
    Antworten: 17
    Letzter Beitrag: 28.09.05, 09:28

Stichworte