Hallo Tommi,
danke für die Antwort. Den Doppelten gebrauch der Veriable habe ich
zwischen durch auch gefunden.
Die Function ist etwas untypisch, da sie keinen Return Parameter hat.
Ich hatte mir das ausgedacht um nicht für jeden Sensor eine Menge
Code erzeugen zu muessen. Die Ergebnisse werden in der Funktion in die
IPS Variablen geschrieben. Was ja nicht ganz und sinn und zweck einer Function ist, aber function ohne Return Parameter sind zulässig in PHP laut meinen Unterlagen.
Es kann eigentlich nur sein, das die Parameter nicht mit Strings vorbesetzt sind, wenn es in die Function geht.
function T_Mittelwert($F_Trend, $Sensor, $Trend_neu, $Trend_Alt, $Trend_Sensor ){
/* $F_Trend Parameter -2,-1,0,1,2 */
/* $F_Trend_Neu erhält wird auf aktuellen Wert gesetzt nach der Trendberechnung*/
/* $F_Trend_Alt erhält den neuen Trendwert */
/* Name des Temeparatur Sensors */
$Schranke = GetValueFloat($F_Trend);
$Mittelwert1 = GetValueFloat($Trend_Neu) / $Anzahl;
$Mittelwert2 = GetValueFloat($Trend_Alt);
$Trend = T_Trend ($Mittelwert1, $Mittelwert2, $Schranke);
SetValueInteger($Trend_Sensor, $Trend);
SetValueFloat($Trend_Alt, $Mittelwert1);
$Mittelwert1 = GetValueFloat($Sensor);
SetValueFloat($Trend_Neu, $Mittelwert1);
Return;
}
Ich habe es mal so geaendert, aber noch ohne erfolg.
Was ich damit ersetzten will ist der folgende Code:
$Mittelwert1 = GetValueFloat("Temp_Sensor_1_Trend_Neu") / $Anzahl;
$Mittelwert2 = GetValueFloat("Temp_Sensor_1_Trend_Alt");
$Trend = T_Trend ($Mittelwert1, $Mittelwert2, $Schranke);
SetValueInteger("Temp_Sensor_1_Trend", $Trend);
SetValueFloat("Temp_Sensor_1_Trend_Alt", $Mittelwert1);
$Mittelwwert1 = GetValueFloat("Temp_Sensor_1");
SetValueFloat("Temp_Sensor_1_Trend_Neu", $Mittelwert1);
$Mittelwert1 = GetValueFloat("Temp_Sensor_2_Trend_Neu") / $Anzahl;
$Mittelwert2 = GetValueFloat("Temp_Sensor_2_Trend_Alt");
$Trend = T_Trend ($Mittelwert1, $Mittelwert2, $Schranke);
SetValueInteger("Temp_Sensor_2_Trend", $Trend);
SetValueFloat("Temp_Sensor_2_Trend_Alt", $Mittelwert1);
$Mittelwwert1 = GetValueFloat("Temp_Sensor_2");
SetValueFloat("Temp_Sensor_2_Trend_Neu", $Mittelwert1);
$Mittelwert1 = GetValueFloat("Temp_Sensor_3_Trend_Neu") / $Anzahl;
$Mittelwert2 = GetValueFloat("Temp_Sensor_3_Trend_Alt");
$Trend = T_Trend ($Mittelwert1, $Mittelwert2, $Schranke);
SetValueInteger("Temp_Sensor_3_Trend", $Trend);
SetValueFloat("Temp_Sensor_3_Trend_Alt", $Mittelwert1);
$Mittelwwert1 = GetValueFloat("Temp_Sensor_1");
SetValueFloat("Temp_Sensor_3_Trend_Neu", $Mittelwert1);
Das sind gerade mal 3 Temp Sensoren, ich vermute mal im Endstation sind es 10 - 20 und da wollte ich mir diese Zeilen sparen und durch diese ersetzen
function T_Mittelwert("F_Trend", "Temp_Sensor_1", "Temp_Sensor_1_Neu", "Temp_Sensor_1_Alt", "Temp_Sensor_1_Trend" );
Für mich ist nur wichtig zu wissen, ob so was funktioniert im IPS PHP Interpreter.
@ Forum
Wie löst ihr solche Probleme ?
LG Manfred