Werte Forenmitglieder,
ich habe zu meinem Thema im Forum zwei Beiträge gefunden, die mir aber leider nicht weiterhelfen und bitte um Hilfe.
Ich lese seit zwei Jahren meine Außentemperatur über meine Heizingsanlage korrekt aus. Dies geschieht mittels Script über die Java bereitgestellten Daten der Heizungsanlage. Seit dem Update auf die Version 5 werden ausschließlich Negative Temperaturen in IpSymcon falsch angezeigt. Muss ich bestimmte Einstellungen ändern?
<?php
//includes
$IpWwc = "192.168.2.155"; // IP der Wärmepumpe
$WwcJavaPort = "8889"; // Port der Wärmepumpe
include"25100.ips.php";
//Dummy Modul anlegen als Heimat der Messdaten im Selben Pfad wie das Script
$parentobject = IPS_GetObject($_IPS['SELF']);
$parentID = $parentobject['ParentID'];
//Variablen
$sBuff = 0;
$time1 = time();
$filename = "test.tst";
$JavaWerte = 0;
$refreshtime = 5; //sekunden
echo '<meta http-equiv="refresh" content="5" >';
// connecten
$socket = socket_create(AF_INET, SOCK_STREAM,0);
$connect = socket_connect($socket, $IpWwc, $WwcJavaPort) || exit("socket_connect fehlgeschlagen");
if ($connect = 1)
echo "PASS: Verbunden mit WWC Java Console $IpWwc Port: $WwcJavaPort <br>";
else
echo "ERROR: Nicht verbunden mit WWC Java Console <br>";
$timestamp= time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i:s",$timestamp);
printf('============================================================== <br>');
printf('Ausleszeit: %s - %s Uhr <br>',$datum,$uhrzeit);
printf('Refresh alle 5s !<br>');
printf('! TEST !<br>');
printf('============================================================== <br>');
//---------------------------------------------------------------------------
// Daten holen
$msg = pack('N*',3004);
//printf('msg:%s <br>',$msg);
$send=socket_write($socket, $msg, 4); //3004 senden
//printf('Bytes send:%d <br>',$send);
$msg = pack('N*',0);
//printf('msg:%s <br>',ord($msg));
$send=socket_write($socket, $msg, 4); //0 senden
//printf('Bytes send:%d <br>',$send);
socket_recv($socket,$Test,4,MSG_WAITALL); // Lesen, sollte 3004 zurückkommen
$Test = unpack('N*',$Test);
//printf('read:%s <br>',implode($Test));
socket_recv($socket,$Test,4,MSG_WAITALL); // Status
$Test = unpack('N*',$Test);
printf('Status:%s <br>',implode($Test));
socket_recv($socket,$Test,4,MSG_WAITALL); // Länge der nachfolgenden Werte
$Test = unpack('N*',$Test);
printf('Länge der nachfolgenden Werte:%s <br>',implode($Test));
$JavaWerte = implode($Test);
printf('============================================================== <br>');
for ($i = 0; $i < $JavaWerte; ++$i)//vorwärts
{
socket_recv($socket,$InBuff[$i],4,MSG_WAITALL); // Lesen, sollte 3004 zurückkommen
$daten_raw[$i] = implode(unpack('N*',$InBuff[$i]));
//printf('InBuff(%d): %d <br>',$i,$daten_raw[$i]);
}
//socket wieder schliessen
socket_close($socket);
// Werte anzeigen
for ($i = 0; $i < $JavaWerte; ++$i)//vorwärts
{
if ($i >= 10 & $i <= 28) // Temperaturen
{($daten_raw[$i] = $daten_raw[$i]*0.1);
//printf('(%d)%s : %.1f °C<br>',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 2, 'WP_'.$java_dataset[$i], "Temperatur_200_C", $i);//float
setValueFloat($varid,$daten_raw[$i]);
}
if ($i == 56) // Zähler
{($daten_raw[$i] = $daten_raw[$i]/3600);
//printf('(%d)%s : %.2f h<br>',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 2, 'WP_'.$java_dataset[$i], "", $i);//float
setValueFloat($varid,$daten_raw[$i]);
}
if ($i == 57) // Zähler
{($daten_raw[$i] = $daten_raw[$i]);
//printf('(%d)%s : %d<br>',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 2, 'WP_'.$java_dataset[$i], "", $i);//float
setValue($varid,$daten_raw[$i]);
}
if ($i == 58) // Zähler
{($daten_raw[$i] = $daten_raw[$i]/3600);
//printf('(%d)%s : %.2f h<br>',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 2, 'WP_'.$java_dataset[$i], "", $i);//float
setValueFloat($varid,$daten_raw[$i]);
}
if ($i == 59) // Zähler
{($daten_raw[$i] = $daten_raw[$i]);
//printf('(%d)%s : %d<br>',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 2, 'WP_'.$java_dataset[$i], "", $i);//float
setValue($varid,$daten_raw[$i]);
}
if ($i >= 60 & $i <= 66) // Zähler
{($daten_raw[$i] = $daten_raw[$i]/3600);
//printf('(%d)%s : %d h<br>',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 2, 'WP_'.$java_dataset[$i], "", $i);//float
setValueFloat($varid,$daten_raw[$i]);
}
if ($i >= 95 & $i <= 99) // Errors
{
//printf('(%d)%s : %d<br>',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 3, 'WP_'.$java_dataset[$i], "", $i);//integer
$FehlerDatum = date("m.d.y",$daten_raw[$i]);
setValueString($varid,$FehlerDatum);
}
if ($i >= 100 & $i <= 105) // Errors
{
//printf('(%d)%s : %d<br>',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 3, 'WP_'.$java_dataset[$i], "", $i);//integer
setValueString($varid,$daten_raw[$i]);
}
}
function CreateVariableByName($id, $name, $type, $ident, $profile, $position)
{
$vid = @IPS_GetObjectIDByIdent ($ident, $id);
if($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetIdent($vid, $ident);
IPS_SetInfo($vid, "");
IPS_SetPosition($vid, $position);
if($profile !== "")
{
IPS_SetVariableCustomProfile($vid, $profile);
}
}
return $vid;
}
?>