Problem beim Schreiben von Variablen in Datei

Hallo,

ich möchte die Werte bestimmter Variablen in einer Datei ausgeben. Die Daten stammen von Temperatur- und Luftfeuchtesensoren (integer bzw. float) und z.B. von Türsensoren (boolean). Von meinem Testskript werden die integer- und float-Variablen ordnungsgemäß in das Skript geschrieben, nur die bool-Variable ("$daten5") erscheint nicht.

In der „test_datei.txt“ erscheint (zur Erläuterung Zeilennummern in Klammern ergänzt) :

0 (Zeile 1)
69 (Zeile 2)
24.7 (Zeile 3)
27 (Zeile 4)
:confused: (Zeile 5)
0 (Zeile 6)

Die Zeile 5 bleibt leer, hier erwarte ich eigentlich den Wert der Bool-Variablen. Hier das Skript:

<?
//$daten = "Dieser Text steht nachher in der Datei!";
$daten = GetValueFloat(13725 /*[Klima\Wetter\Temperatur & Luftfeuchte außen\Temperatur]*/);
$daten2 = GetValueInteger(38760 /*[Klima\Wetter\Temperatur & Luftfeuchte außen\Luftfeuchtigkeit]*/);
$daten3 = GetValueFloat(50034 /*[Klima\Wetter\Temperatur & Luftfeuchte Haus innen\Temperatur]*/);
$daten4 = GetValueInteger(26899 /*[Klima\Wetter\Temperatur & Luftfeuchte Haus innen\Luftfeuchtigkeit]*/);
$daten5 = GetValueBoolean(26702 /*[Geräte\Homematic Geräte\HMW-SEN-SC-12-DR_1\Türsensor Haustür\Zustand]*/);
$daten6 = GetValueInteger(13725 /*[Klima\Wetter\Temperatur & Luftfeuchte außen\Temperatur]*/);

$datei_name = "c:/Daten Neptun/test_datei.txt";

$fp = fopen($datei_name, "w");

fwrite($fp, $daten."
");
fwrite($fp, $daten2."
");
fwrite($fp, $daten3."
");
fwrite($fp, $daten4."
");
fwrite($fp, $daten5."
");
fwrite($fp, $daten6."
");

fclose($fp);
?>

Wie schaffe ich es, den Wert der Bool-Variablen darzustellen?

Danke & Gruß

Ecoli

Die Bol Vari gibt nur True bzw. 1 aus kein false oder 0

Du könntest sie zu int casten.
(Int)$daten5
Michael

Danke für die Antworten, mir war nicht klar, dass die Funktion GetValueBoolean keinen Wert für FALSE liefert, die IPS-Doku suggeriert das.

Ich habe das jetzt so gelöst:

Intval($daten5);
if ($daten5 != 1)
{
$daten5 = 0;
}

Sicher geht das eleganter?

Gruß Ecoli

:confused::confused: Wo das denn ?

Und was hat das mit den Eigenschaften von boolean in PHP zu tun ?
PHP: Strings - Manual

A boolean TRUE value is converted to the string „1“. Boolean FALSE is converted to „“ (the empty string).

echo true.PHP_EOL;
echo false.PHP_EOL;
echo (int)true.PHP_EOL;
echo (int)false.PHP_EOL;

Also kannst du einfach

$daten5 = (int)GetValueBoolean(26702 /*[Geräte\Homematic Geräte\HMW-SEN-SC-12-DR_1\Türsensor Haustür\Zustand]*/); 

oder

fwrite($fp, (int)$daten5."
"); 

schreiben

Michael

Danke für den Hinweis und die vereinfachte Lösung, die werde ich jetzt einsetzten.

Mein Verständnisproblem hat sich jetzt aufgeklärt, vielen Dank & Gruß

Ecoli