Errechnete Variable

Hallo Community,

habe jetzt über eine Stunde im Forum gesucht und keine funktionierende Lösung gefunden.

Und zwar hole ich mir per WWW-Reader und Textparser aus einer in der Nähe befindlichen Wetterstation die Wetterdaten was auch hervorragend funktioniert. Um mit den Daten arbeiten zu können wandle ich diese per Skript um (Komme durch Punkt ersetzen):


$Temp_Aussen = GetValueString("WWW_Temperatur2");
   $Temp_Aussen = str_replace(',', '.', $Temp_Aussen);

Klappt ebenso so gut wie alles bis jetzt.

Nun kommt aber mein Problem.

Ich möchte diese Variablen in WIIPS 0.80 RC 4 im Wettermodul darstellen was ja eben diese (Int)-Variabelen benötigt. Anscheinend sind aber die errechneten Variablen nur im Skript verfügbar aber nicht übergreifend in den lokalen Variablen.

Habe auch den Lösungsansatz mit IPS_CreateVariable getestet nur leider liefert mit dieser Befehl folgenden Fehler im Skript:


<br />
<b>Notice</b>:  Use of undefined constant Temp_Aussen - assumed 'Temp_Aussen' in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>18</b><br />
<br />
<b>Notice</b>:  Use of undefined constant Int - assumed 'Int' in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>18</b><br />

Hat jemand irgendwelche Tipps wie ich die errechneten Variablen aus meinem Skript dem WIIPS übergeben kann?

Gruß

Werner

P.S. Meine Umgebung: aktuelle Beta IPS / aktuelle Beta WIPPS

Hi,

du muss die Variable noch in eine IPS-Variable packen, dann steht sie auch im Webinterface zur Verfügung.

Wechsel im IPS einfach auf Variablen und leg dir dort eine in deiner Wunschlocation an (rechte Maustaste „Add Variable“) - Datentyp beachten

Jetzt schreibst du dir noch ein Skript (oder hängst es an dein Skript an), in dem deine IPS-Variable gefüttert wird:

SetValueFloat(„variablenname“, <skriptvariable>);

also bei dir

SetValueFloat(„neue Variable in Anführungszeichen“, $Temp_Aussen );

That’s it

Gruß

Jörg

Hallo catmax,

na dann werde ich das doch gleich mal testen und berichten.

Gruß

Werner

Hallo,

fast wie befürchtet.

Hängst wahrscheinlich mit den Typen zusammen.

Habe bei den Variablen „WWW_Temp“ als FLOAT angelegt.


/* Temperaturanpassung mit . statt , */

$Temp_Aussen = GetValueString("WWW_Temperatur2");
   $Temp_Aussen = str_replace(',', '.', $Temp_Aussen);

echo "Derzeitige Aussentemperatur ".$Temp_Aussen." Grad.
";


if ($Temp_Aussen > 21.0) {
   echo "Es sind gerade Temperaturen größer 21.0 Grad.

";
} else {
   echo "Wir haben unter 21.0 Grade in Aich.

";
}

SetValueFloat("WWW_Temp", $Temp_Aussen);


liefert mir


<br />
<b>Warning</b>:  Wrong parameter type for setvaluefloat() in <b>C:\Programme\IP-SYMCON\scripts\.currentscript</b> on line <b>25</b><br />

Wo habe ich hier ein Typenproblem?

Gruß

Werner

Hallo Werner,

Deine Variable machst Du als erstes als String Variable. Und die dann in eine Float Variable zu speichern, das geht natuerlich nicht. Du musst die also vorher noch in eine Float Variable wandeln.

Gruss Torro

Hallo Torro,

das ist ja mein Problem. WIE ???

Werde auch auf http://www.php.net nicht schlauer, muss aber auch sagen bin absoluter PHP-Neuling.

Dank schon mal.

Werner

Hallo Werner,

so:

SetValueFloat("WWW_Temp",(double)($Temp_Aussen));

Gruss Torro

Servus Torro und catmax,

vielen Dank für Eure Unterstützung. Schein so zu klappen wie ich es brauche.

Gruß

Werner

$variable_float = (float)$variable_string;

mfG Franz

Hallo guyabano,

werde ich mir für kommende Skripts in meine Sammlung mit übernehmen.

Dank Euch allen.

Werner