Kann es sein, dass GetValue einer Boolean StatusVariable eine „Null“ retourniert, wenn die StatusVariable „false“ ist? Ich hatte eine 0 erwartet! Kann mich jemand aufklären?
Ich lege ein Snippet bei zur Veranschaulichung. Das Problem tritt auf, wenn $StatusVariableContent auf eine Variable zurückgreift, welche auf False gesetzt ist.
<?
echo "skript SensorenAuslesen aufgerufen";
if ($IPS_SENDER == "Execute")
{
echo " test-execution";
$id= 29469 /*[EingangsBereich\Bewegungsmelder #1 FBH63AP-rw\Bewegungsstatus]*/;
}
else
{
echo "IPS_VARIABLE: " . $IPS_VARIABLE;
echo nl2br("
");
$id= $IPS_VARIABLE;
// $id_par=IPS_GetParent($IPS_VARIABLE);
}
$id_par=IPS_GetParent($id);
echo "IPS_GetStatusVariableIdents: " . print_r(IPS_GetStatusVariableIdents($id_par));
echo nl2br("
");
(array)$StatusVariablesID = (IPS_GetChildrenIDs($id_par));
$StatusVariablesNr = count($StatusVariablesID);
print_r($StatusVariablesID);
// print_r($StatusVariablesNr);
for ($x=0; $x < ($StatusVariablesNr); $x++) {
echo nl2br( "Index: ". $x." IPS_GetName: " . IPS_GetName($StatusVariablesID[$x])." GetValue:" . GetValue($StatusVariablesID[$x]). "
");
$StatusVariableArray[$x]["VarID"] = $StatusVariablesID[$x];
$StatusVariableArray[$x]["VarName"] = IPS_GetName($StatusVariablesID[$x]);
$StatusVariableArray[$x]["VarContent"] = GetValue($StatusVariablesID[$x]);
}
echo nl2br("
");
print_r($StatusVariableArray); // $StatusVariableArray enthält alle StatusInfos des abrufenden Sensors
$conn=odbc_connect('IpSymconBellaria','','');
$sql="SELECT * FROM tblSensorsLog";
$rs=odbc_exec($conn,$sql);
$SqlInsDef = "INSERT INTO tblSensorsLog (TimeStampIpSymcom, SensorID, StatusVariableID, StatusVariableName, StatusVariableContent)";
for ($x=0; $x < ($StatusVariablesNr); $x++) {
$SensorID = IPS_GetParent($id);
$StatusVariableID = $StatusVariablesID[$x];
$StatusVariableName = IPS_GetName($StatusVariablesID[$x]);
$StatusVariableContent = GetValue($StatusVariablesID[$x]);
$TimeStampIpSymcom = date("Y-m-d H:i:s");
(string) $odbcValuesString = "#" . $TimeStampIpSymcom . "#, " . $SensorID . ", ". $StatusVariableID. ", '".$StatusVariableName . "', ".$StatusVariableContent ;
$SqlStatement = $SqlInsDef . " VALUES (" . $odbcValuesString. ");";
echo nl2br("
SqlStatement: ". $SqlStatement);
$stmt = odbc_prepare($conn, $SqlStatement);
/* check for errors */
if (!odbc_execute( $stmt))
{
/* error */
echo "Whoops odbc error";
}
}
?>