HILFE !! Script fehler meldung braue mal start hilfe

HI Leute Habe mir im Forum ein fertiges Script zur Heizungssteuerung heraus gesucht
Leider habe ich anscheinend etwas fergessen oder falsch gemacht und brauche mal eure hilfe
Die FHT Heizungssteuerung besteht aus 4 Scripten die ich nacheinander mal rein stellen werde
Also erstmal habe ich ein GLOBAL_ARRAY Script

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : GLOBAL_ARRAY.ips.php
Trigger  : 
Interval : 
*/
$Room_id       = array(

                       'WOHN'
                     );
?>

Das scheint auch Richtig zu sein gut ich habe ja auch erst einen Raum :wink:
Dann kommt der LOOP
Dort habe ich anscheinend etwas fergessen oder falsch gemacht

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : LOOP.ips.php
Trigger  : 
Interval : 
*/
 // Load common arrays
include_once ('GLOBAL_ARRAY.ips.php');

// -----------------------------------------------------------------------------

// Loop
$fht_loop = GetValueInteger('FHT_LOOP_COUNTER');

if ($fht_loop < 12) $fht_loop = $fht_loop + 1;
else ($fht_loop = 2);

include_once($Room_id[$fht_loop].'GLOBDEF.ips.php');
include(IPS_GetScriptFile('FHT'));

// -----------------------------------------------------------------------------

// Write Loop Value back to Variable
SetValueInteger('FHT_LOOP_COUNTER', $fht_loop);



?>

Ich erhalte beim ausführen folgende meldung


Notice: Undefined offset: 8 in C:\Programme\IP-Symcon\scripts.currentscript on line 21



Warning: fopen(C:/Programme/IP-Symcon/DATA/WOHNWOHN_FHT.par) [function.fopen]: failed to open stream: No such file or directory in C:\Programme\IP-Symcon\scripts\FHT.ips.php on line 27



Warning: fgets(): supplied argument is not a valid stream resource in C:\Programme\IP-Symcon\scripts\FHT.ips.php on line 33



Warning: fclose(): supplied argument is not a valid stream resource in C:\Programme\IP-Symcon\scripts\FHT.ips.php on line 43



Notice: Undefined variable: newtemp in C:\Programme\IP-Symcon\scripts\FHT.ips.php on line 46



Notice: Undefined variable: memo_temp in C:\Programme\IP-Symcon\scripts\FHT.ips.php on line 46



Notice: Undefined variable: memo_temp in C:\Programme\IP-Symcon\scripts\FHT.ips.php on line 55

Dann habe ich den GLOBAL_DEF

// Global defines for WOHN

// Global
$room               = "WOHN";
$room_status        = GetValueBoolean("WOHN_ROOM_STATUS");
$day_status         = GetValueBoolean("WOHN_DAY_STATUS");

// FHT
$FHT_id             = 59020;
$FHT_actual_temp    = GetValueFloat("WOHN_FHT_ACTUAL_TEMP");
$FHT_actual_vpos    = GetValueFloat("WOHN_FHT_ACTUAL_VPOS");
$FHT_actual_window  = GetValueBoolean("WOHN_FHT_ACTUAL_WINDOW");
$FHT_target_mode    = GetValueInteger("WOHN_FHT_TARGET_MODE");
$FHT_target_temp    = GetValueFloat("WOHN_FHT_TARGET_TEMP");
$FHT_target_ips_t   = GetValueFloat("WOHN_FHT_IPS_TEMP");
$FHT_target_ips_m   = GetValueInteger("WOHN_FHT_IPS_MODE");
$FHT_low_batt       = GetValueBoolean("WOHN_FHT_LOW_BAT");
?>

Der ist anscheinend auch OK
Und zu Letzt noch den FHT
Wo wieder der Wurm drinnen is

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : FHT.ips.php
Trigger  : 
Interval : 
*/
 // --- Execute Automatic only when Window closed and Mode = Automatic ----------
if (($FHT_actual_window == False) AND ($FHT_target_mode == 0))
        {
// Script will only be executed when:
//   1. the window in the room is closed
//   2. the FHT is on Automatic

        // Load common arrays
        include_once("GLOBAL_ARRAY.ips.php");

        $time = date("H:i");
        $day_parameter = array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","");
        $actual_day = date("w");

// Select the Parameters for FHT

        if ($room_status == False)
        $handle = fopen("C:/Programme/IP-Symcon/DATA/".$room."WOHN_FHT.par","r");
        else
        $handle = fopen("C:/Programme/IP-SYMCON/DATA/".$room."WOHN_FHT_HOL.par","r");

// Find the right parameter to adjust the target if necessary

        while ($line = fgets($handle, 1000))
               {
                $parameter = explode(";", $line); //[0]-Day, [1]-Start Time, [2]-Temperature
                $day = $parameter[0];
                $switchtime = $parameter[1];
                $temp = $parameter[2];

                if (($day == $day_parameter[$actual_day]) AND ($time > $switchtime))
                $newtemp = substr($temp, 0, 4); // extract the "
" from the file
               }
        fclose($handle);

// When Value changes -> Send the new Value to the Unit
        if ($memo_temp != $newtemp)
            {
            FHT_SetTemperature($FHT_id, (float)$newtemp);
            SetValueFloat($room."_FHT_MEMO_TEMP", (float)$newtemp);
            }


// If Actual and Target Values don´t match
        else
        if ($FHT_target_temp != $memo_temp)
            {

             // If IPS Request has been updated recently, but IPS Request
             // has not been sent yet to FHT, don't send Value again
             // But if Target has been changed manually, the Value will
             // be sent again
             $update_ips_request = IPS_GetUpdateTime($room.'_FHT_IPS_TEMP');
             $update_ips_target  = IPS_GetUpdateTime($room.'_FHT_TARGET_TEMP');
             if ($update_ips_target > $update_ips_request)
                 {
                  SetValueString('HMI_LOG_NEW_MESSAGE', $Room_id_text[$room].chr(9).': Wrong Target Temp. according to Parameters ('.$FHT_target_temp.' °C)');
                  FHT_SetTemperature($FHT_id, (float)$newtemp);
                 }
            }


        }



?>

Ich erhalte folgende meldung
<br />
<b>Notice</b>: Undefined variable: FHT_actual_window in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>11</b><br />
<br />
<b>Notice</b>: Undefined variable: FHT_target_mode in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>11</b><br />
<br />
<b>Notice</b>: Undefined variable: room_status in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>26</b><br />
<br />
<b>Notice</b>: Undefined variable: room in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>27</b><br />
<br />
<b>Notice</b>: Undefined variable: memo_temp in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>46</b><br />
<br />
<b>Notice</b>: Undefined variable: FHT_id in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>48</b><br />
<br />
<b>Warning</b>: fht_settemperature: Instance ( 0 ) not found! in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>48</b><br />
<br />
<b>Notice</b>: Undefined variable: room in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>49</b><br />
<br />
<b>Warning</b>: Unable to locate IPSVariable: _FHT_MEMO_TEMP in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>49</b><br />
Ich Hoffe ihr könnt mir weiter helfen
MFG KEN :slight_smile:

Ich kann die sFHTs anbefehlen, da gibt’s alle funktionalitäten drin.

Deine scripte debuggen wird viel try-und-error sein.
Wenn ich eine richtung geben kann : zuviel include_once & include; dann viele file-access wo nicht immer deutlich ist ob die gewunschte variablen wirklich gut eingelesen werden…
sFHTs lauft und ist sehr parametrisierbar. Neme dich mal 10 minuten und lese die 2 erste seiten. Da steht alles zu lesen was est tut.

Viel spass dabei :wink:

Habe nun schon ein paar fehler gefunden die meisten waren schreib fehler „wenn wundertz“:rolleyes:
habe nur noch einen fehler

<br />
<b>Parse error</b>: parse error, unexpected T_STRING in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>19</b><br />

Aus dieser zeile


        if ($room_status == False)
        $handle = fopen("C:\Programme\IP-Symcon\DATA\".$room."_FHT.par","r");
        else
        $handle = fopen("C:\Programme\IP-Symcon\DATA\".$room."_FHT_HOL.par","r");

finde nur leider nicht wo es dran liegt BITTI HILFE

Hallo Ken,

der Backslash „“ ist in PHP kein gewöhnliches Zeichen sondern ein Flucht-Symbol (escape character). Es dient dazu die Bedeutung bestimmter Zeichen zu ändern. Siehe hier.

Der Pfad muss also entweder so angegeben werden:

$handle = fopen("C:\\Programme\\IP-Symcon\\DATA\\". $room. "_FHT.par", "r");

oder so:

$handle = fopen("C:/Programme/IP-Symcon/DATA/". $room. "_FHT.par", "r");

Gruß
HJH

<b>Notice</b>: Undefined variable: FHT_actual_window in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>11</b><br />

Die Variable ist zu diesem Zeitpunkt nicht definiert. Du musst die im Script FHT noch die global defines mit include bekannt machen. Damit dürfte ein großer Teil erledigt sein.

Danke Jungs ich werde mir das heute nachmittag alles nochmal ansehen :smiley:

NUN ich habe mir das angesehen aber leider bin ich noch nicht ganz schlau geworden ich fermute das ich die LOOP irgendwo falsch angebunden habe und deswegen FHT nicht seine varialeln zugewiesen bekommt aber wo der feler is habe ich noch nicht finden können

Hallo,

die Skripte die du da benutzt stammen von mir. Ein Array startet immer mit dem Wert ‚0‘. Wenn du also nur ein Zimmer hast, dann kannst du den Loop ja immer auf ‚0‘ lassen. Diese Skripte sind hauptsächlich gendacht dazu, wenn man viele FHT’s hat, dann kann man bequem alle Zimmer in einem Array zusammenfassen, und der Loop Zähler muss einfach auf die Anzahl von Zimmern gesetzt werden, die man im Array angegeben hat (-1 natürlich, da Array ja bei ‚0‘ anfängt.)

mfG Franz

Danke das hatte ich ganz über sehen leider habe ich hoch irgendwo andere fehler und da ich erst seit 2 wochen IP-Sym habe is es etwas schwer fieleicht kannst du mir ja denn gefallen tun und mir das nochmal geändert posten wäre echt supper

Hallo,

ich habe das Skript ein wenig angepasst.

In der obersten Zeile gibst du in der Variable $amount_fht einfach nur die Anzahl von FHT’s, die du hast, an !

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : FHT_ROOT.ips.php
Trigger  : 
Interval : 
*/
$amount_fht = 1;
// Load common arrays
include_once ('GLOBAL_ARRAYS.ips.php');

// -----------------------------------------------------------------------------

// Loop
$fht_loop = GetValueInteger('FHT_LOOP_COUNTER');

if ($fht_loop < $amount_fht-1) $fht_loop = $fht_loop + 1;
else ($fht_loop = 0);

include_once($Room_id[$fht_loop].'_GLOBDEF.ips.php');
include(IPS_GetScriptFile('FHT_MODUL'));

// -----------------------------------------------------------------------------

// Write Loop Value back to Variable
SetValueInteger('FHT_LOOP_COUNTER', $fht_loop);
?>

mfG Franz

errmm… das Skript ‚FHT.ips.php‘ brauchst du an sich nicht zu triggern per Execute. Das wird nur Chaos geben und zu Fehlermeldungen führen. Dieses Skript wird vom Loop-Skript gestartet mit den notwendigen Parametern.
Deshalb muss das Loop-Skript ja auch per Timer ~45 Sekunden getriggert werden. Die Zeit hängt natürlich davon ab, wie viele FHT’s du hast und wie schnell du die FHT’s zyklisch abarbeiten willst !

mfG Franz

Danke für deine hilfe ich bekomme wenn ich die datei ausführer folgende fehlermeldung
<br />
<b>Parse error</b>: parse error, unexpected ‚<‘ in <b>C:\Programme\IP-Symcon\scripts.currentscript</b> on line <b>10</b><br />

php ist mit dem ‚<‘ Zeichen nicht einverstanden. Kann an einer vergessenen Klammer liegen oder an einem anderen falschen Zeichen. Wenn Du es nicht findest, poste mal das Script mit dem Fehler.

Ja, wie prof schon sagt, das ist nur irgendwo eine Klammer zuviel. Das muss wohl während dem COPY/PASTE geschehen sein

mfG Franz

danke ich suche mal in ruhe morgen ansonsten das script steht weiter oben da habe ich fast nichtz geändert

SO Liebe freunde der Automatiesierungstechnick ich gehe nun zur ruhe
Ich poste euch mal alle skripte vieleicht überseht ihr ja nicht meine fehler bis morgen : Gn8

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : GLOBAL_ARRAY.ips.php
Trigger  : 
Interval : 
*/
$Room_id       = array(

                       'WOHN'
                     );
?>

<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File     : FHT_ROOT.ips.php
Trigger  :
Interval :
*/
$amount_fht = 1;
// Load common arrays
include_once ('GLOBAL_ARRAY.ips.php');

// -----------------------------------------------------------------------------

// Loop
$fht_loop = GetValueInteger('FHT_LOOP_COUNTER');

if ($fht_loop < $amount_fht-1) $fht_loop = $fht_loop + 1;
else ($fht_loop = 0);

include_once($Room_id[$fht_loop].'_GLOBDEF.ips.php');
include(IPS_GetScriptFile('FHT'));

// -----------------------------------------------------------------------------

// Write Loop Value back to Variable
SetValueInteger('FHT_LOOP_COUNTER', $fht_loop);
?>


?>

<?
// Global defines for WOHN

// Global
$room               = "WOHN";
$room_status        = GetValueBoolean("WOHN_ROOM_STATUS");
$day_status         = GetValueBoolean("WOHN_DAY_STATUS");

// FHT
$FHT_id             = 59020;
$FHT_actual_temp    = GetValueFloat("WOHN_FHT_ACTUAL_TEMP");
$FHT_actual_vpos    = GetValueFloat("WOHN_FHT_ACTUAL_VPOS");
$FHT_actual_window  = GetValueBoolean("WOHN_FHT_ACTUAL_WINDOW");
$FHT_target_mode    = GetValueInteger("WOHN_FHT_TARGET_MODE");
$FHT_target_temp    = GetValueFloat("WOHN_FHT_TARGET_TEMP");
$FHT_target_ips_t   = GetValueFloat("WOHN_FHT_IPS_TEMP");
$FHT_target_ips_m   = GetValueInteger("WOHN_FHT_IPS_MODE");
$FHT_low_batt       = GetValueBoolean("WOHN_FHT_LOW_BAT");
$FHT_new_temp       = GetValueFloat("WOHN_FHT_NEW_TEMP");
$FHT_memo_temp      = GetValueFloat("WOHN_FHT_MEMO_TEMP");
?>

<?
 // --- Execute Automatic only when Window closed and Mode = Automatic ----------
if (($FHT_actual_window == False) AND ($FHT_target_mode == 0))
        {
// Script will only be executed when:
//   1. the window in the room is closed
//   2. the FHT is on Automatic

        // Load common arrays
        include_once("GLOBAL_ARRAY.ips.php");

        $time = date("H:i");
        $day_parameter = array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","");
        $actual_day = date("w");

// Select the Parameters for FHT

        if ($room_status == False)
        $handle = fopen("C:/Programme/IP-Symcon/DATA/".$room."_FHT.par","r");
        else
        $handle = fopen("C:/Programme/IP-Symcon/DATA/".$room."_FHT_HOL.par","r");

// Find the right parameter to adjust the target if necessary

        while ($line = fgets($handle, 1000))
               {
                $parameter = explode(";", $line); //[0]-Day, [1]-Start Time, [2]-Temperature
                $day = $parameter[0];
                $switchtime = $parameter[1];
                $temp = $parameter[2];

                if (($day == $day_parameter[$actual_day]) AND ($time > $switchtime))
                $newtemp = substr($temp, 0, 4); // extract the "
" from the file
               }
        fclose($handle);

// When Value changes -> Send the new Value to the Unit
        if ($memo_temp != $newtemp)
            {
            FHT_SetTemperature($FHT_id, (float)$newtemp);
            SetValueFloat($room."_FHT_MEMO_TEMP", (float)$newtemp);
            }


// If Actual and Target Values don´t match
        else
        if ($FHT_target_temp != $memo_temp)
            {

             // If IPS Request has been updated recently, but IPS Request
             // has not been sent yet to FHT, don't send Value again
             // But if Target has been changed manually, the Value will
             // be sent again
             $update_ips_request = IPS_GetUpdateTime($room.'_FHT_IPS_TEMP');
             $update_ips_target  = IPS_GetUpdateTime($room.'_FHT_TARGET_TEMP');
             if ($update_ips_target > $update_ips_request)
                 {
                  SetValueString('HMI_LOG_NEW_MESSAGE', $Room_id_text[$room].chr(9).': Wrong Target Temp. according to Parameters ('.$FHT_target_temp.' °C)');
                  FHT_SetTemperature($FHT_id, (float)$newtemp);
                 }
            }


        }



?>

Danke schon mal im vorraus fürs durchsehen

eine Sache, die mir noch aufgefallen ist:

// Write Loop Value back to Variable 
SetValueInteger('FHT_LOOP_COUNTER', $fht_loop); 
?> 


?> 

zu finden im FHT_ROOT, es sollte nur ein Abschluss

?>

stehen:p

Sagte ich ja schon, man muss sich schon ein wenig Mühe machen. Es war nur ein kleiner COPY/PASTE Fehler !

mfG Franz

JA ich weis du hast naturlich recht nur coppy/past is echt sch… leider sehe ich so sachen nicht immer da fehlt mir die übung ich habe jetzt so ziemlich alle coppy past fehler raus „denke ich“ leider kommt immer noch der fehler Undefined variable anscheinend läd er das nicht leider weis ich aber nicht wo es drann leigt
habt noch etwas gedult mit mir ich werde in 2 bis 3 wochen bestimmt nicht mehr so doofe sachen fragen :rolleyes:

habe ebe durch ausprobieren festgestellt das er in der FHT die par datei nicht leist erstellt nicht denn room zusatz vor der datei
warum weis ich aber nicht

So nun hatte ich endlich mal ruhe mir alles anzusehen eine fehlermeldung bekomme ich nicht mehr ob es funzt weis ich allerdings noch nicht
hir nun meine enderung

<?
include_once("GLOBAL_ARRAY.ips.php");
        include_once("WOHN_GLOBDEF.ips.php");
 // --- Execute Automatic only when Window closed and Mode = Automatic ----------
if (($FHT_actual_window == False) AND ($FHT_target_mode == 0))
        {
// Script will only be executed when:
//   1. the window in the room is closed
//   2. the FHT is on Automatic

        // Load common arrays


        $time = date("H:i");
        $day_parameter = array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","");
        $actual_day = date("w");

// Select the Parameters for FHT

        if ($room_status == False)
        $handle = fopen("C:/DATA/".$room."_FHT.par","r");
        else
        $handle = fopen("C:/DATA/".$room."_FHT_HOL.par","r");

// Find the right parameter to adjust the target if necessary

        while ($line = fgets($handle, 1000))
               {
                $parameter = explode(";", $line); //[0]-Day, [1]-Start Time, [2]-Temperature
                $day = $parameter[0];
                $switchtime = $parameter[1];
                $temp = $parameter[2];

                if (($day == $day_parameter[$actual_day]) AND ($time > $switchtime))
                $newtemp = substr($temp, 0, 4); // extract the "
" from the file
               }
        fclose($handle);

// When Value changes -> Send the new Value to the Unit
        if ($FHT_memo_temp != $newtemp)
            {
            FHT_SetTemperature($FHT_id, (float)$newtemp);
            SetValueFloat($room."_FHT_MEMO_TEMP", (float)$newtemp);
            }


// If Actual and Target Values don´t match
        else
        if ($FHT_target_temp != $FHT_memo_temp)
            {

             // If IPS Request has been updated recently, but IPS Request
             // has not been sent yet to FHT, don't send Value again
             // But if Target has been changed manually, the Value will
             // be sent again
             $update_ips_request = IPS_GetUpdateTime($room.'_FHT_IPS_TEMP');
             $update_ips_target  = IPS_GetUpdateTime($room.'_FHT_TARGET_TEMP');
             if ($update_ips_target > $update_ips_request)
                 {
                  SetValueString('HMI_LOG_NEW_MESSAGE', $Room_id_text[$room].chr(9).': Wrong Target Temp. according to Parameters ('.$FHT_target_temp.' °C)');
                  FHT_SetTemperature($FHT_id, (float)$newtemp);
                 }
            }


        }



?>

ich bräute nur noch mal hilfe um die aufschlüsselung über die room_id im array zu machen für die WOHN_GLOBDEF