include

Hallo,
ich habe in der V1 diesen Befehl benutzt

include(IPS_GetScriptFile(‚FHT_MODUL‘));

in V2 kommt Fehlermeldung, gibt es hier einen neuen Befehl.

cu uwe

Hallo Uwe,

Du weisst aber schon, dass es nur noch Instande IDs gibt? Dein Script sollte also jetzt eine ID haben und so aussehen:


include('40323.ips.php');

Hallo Uwe (Torro),

wenn die Umstellung von V1 nach V2 in der von Paresy beschriebenen Weise vollzogen wurde, dann existiert das Skript nach wie vor unter seinem alten Namen: „FHT_MODUL.ips.php“. Es hat zwar zusätzlich eine ID bekommen, der Dateiname wurde aber nicht geändert. PHP interessiert sich nur für den Dateinamen, es kann mit einer ID nichts anfangen. Nur IPS-Befehle benutzen IDs.

Da „include“ eine PHP-Anweisung ist muss folglich die Einbindung so aussehen:

include("FHT_MODUL.ips.php");

Gruß
HJH

Danke Euch beiden, werde es mal ausprobieren.

cu uwe

So das mit include hat geklappt, habe es nach dem Beispiel von HJH gemacht.
Danke nochmal !
Jetzt wird das FHT_Modul geladen und es gibt neue Fehlermeldungen.

$update_ips_request = IPS_GetUpdateTime($room.’_FHT_IPS_TEMP’);

Der Befehl IPS_GetUpdateTime wird angemeckert, habe schon in der Doku geschaut aber keine Antwort gefunden.

cu uwe

Hi!

IPS_GetUpdateTime gibts nimmer.

Benutze das jetzt so:

$varupdate = IPS_GetVariable(ID);
$varupdate = $varupdate[VariableUpdated];

Hallo nancilla ,

kannst Du das auf mein Beispiel mal genau schreiben.
weiß nicht wie das jetzt lauten soll.

cu uwe

$update_ips_request = IPS_GetVariable(Instance-ID von $room.'_FHT_IPS_TEMP');
$update_ips_request = $update_ips_request[VariableUpdated];

Du musst dazu die Instance-ID´s von den Raum-Temperaturvariablen übergeben.

Ich komme einfach nicht weiter mit dem script, ich stelle mal das script hier rein.
FHT_Modul


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : FHT_MODUL.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_ARRAYS.ips.php");

        $time = date("H:i");
        $day_parameter = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","");
        $actual_day = date("w");

// Select the Parameters for FHT

        if ($room_status == False)
        $handle = fopen("C:/Programme/IP-SYMCON/para/".$room."_FHT.par","r");
        else
        $handle = fopen("C:/Programme/IP-SYMCON/para/".$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);
                 }
            }


        }
?>

und dazu das GLOBAL_ARRAYS


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : GLOBAL_ARRAYS.ips.php
Trigger  : 
Interval : 
*/
 $Room_id       = array(
                       'BAD',
                       'GAST_KLEIN',
                       'GAST_GROSS',
                       'SCHLAFZIMMER',
                       'FLUR',
                       'ARBEIT',
                       'WOHNZIMMER',

                      );


?>

was muss ich in diesen Zeilen ändern ?


 $update_ips_request = IPS_GetUpdateTime($room.'_FHT_IPS_TEMP');
             $update_ips_target  = IPS_GetUpdateTime($room.'_FHT_TARGET_TEMP');

Oder muss ich noch mehr ändern ?

cu uwe

Hat keiner eine Idee, damit ich mit der V2 weiterkomme.
Das Heizungsmodul ist mit das wichtigste, wenn das nicht läuft kann ich auch nicht umsteigen.

cu uwe

Hallo uwe,

da Deine Variablen noch über Namen im Script gehandeld werden und der Befehl:

$update_time = IPS_GetVariable($VarID);
$update_time = $update_time[VariableUpdated];  

ja eine ID voraussetzt, mußt Du vorher mit:

$VarID = IPS_GetVariableID($var_name); 

die jeweilige ID Deiner:


$room.'_FHT_IPS_TEMP'
$room.'_FHT_TARGET_TEMP'

ermitteln.

@uwe

…und dein Script müsste dann so funktionieren:

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : FHT_MODUL.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_ARRAYS.ips.php");

        $time = date("H:i");
        $day_parameter = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","");
        $actual_day = date("w");

// Select the Parameters for FHT

        if ($room_status == False){
        $handle = fopen("C:/Programme/IP-SYMCON/para/".$room."_FHT.par","r");
        }else{
        $handle = fopen("C:/Programme/IP-SYMCON/para/".$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, $newtemp);
            $varid = IPS_GetVariableID($room.'_FHT_MEMO_TEMP');
            SetValueFloat($varid, $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
             $varid = IPS_GetVariableID($room.'_FHT_IPS_TEMP');
             $update_ips_request = IPS_GetVariable($varid);
				 $update_ips_request = $update_ips_request[VariableUpdated];
				 $varid = IPS_GetVariableID($room.'_FHT_TARGET_TEMP');
             $update_ips_target = IPS_GetVariable($varid);
				 $update_ips_target = $update_ips_target[VariableUpdated];
				 if ($update_ips_target > $update_ips_request)
                 {
                 $varid = IPS_GetVariableID('HMI_LOG_NEW_MESSAGE');
                 SetValueString($varid, $Room_id_text[$room].chr(9).': Wrong Target Temp. according to Parameters ('.$FHT_target_temp.' °C)');
                 FHT_SetTemperature($FHT_id, $newtemp);
                 }
            }


        }

?>

Hallo nancilla, Hallo thomas,

vielen Dank für die super Hilfe, habe das script von nancilla verwendet.
Fehlermeldungen sind weg, werde es mal testen.
Habe wieder dazu gelernt. So weiter gehts mit der Umstellung auf V2.

cu uwe

Ps. Dieses Forum ist einfach spitze !!!