';
// 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
";
//else
// echo "ERROR: Nicht verbunden mit WWC Java Console
";
//$timestamp= time();
//$datum = date("d.m.Y",$timestamp);
//$uhrzeit = date("H:i:s",$timestamp);
//printf('==============================================================
');
//printf('Ausleszeit: %s - %s Uhr
',$datum,$uhrzeit);
//printf('Refresh alle 5s !
');
//printf('! TEST !
');
//printf('==============================================================
');
//---------------------------------------------------------------------------
// Daten holen
$msg = pack('N*',3004);
//printf('msg:%s
',$msg);
$send=socket_write($socket, $msg, 4); //3004 senden
//printf('Bytes send:%d
',$send);
$msg = pack('N*',0);
//printf('msg:%s
',ord($msg));
$send=socket_write($socket, $msg, 4); //0 senden
//printf('Bytes send:%d
',$send);
socket_recv($socket,$Test,4,MSG_WAITALL); // Lesen, sollte 3004 zurückkommen
$Test = unpack('N*',$Test);
//printf('read:%s
',implode($Test));
socket_recv($socket,$Test,4,MSG_WAITALL); // Status
$Test = unpack('N*',$Test);
//printf('Status:%s
',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
',implode($Test));
$JavaWerte = implode($Test);
//printf('==============================================================
');
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
',$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
{
//echo printf($i.":".$daten_raw[$i]." ");
$minusTest = $daten_raw[$i]*0.1;
if($minusTest > 429496000){
$daten_raw[$i] = $daten_raw[$i]-=4294967296;
$daten_raw[$i] = $daten_raw[$i]*0.1;
}else{
$daten_raw[$i] = $daten_raw[$i]*0.1;
}
//printf('(%d)%s : %.1f °C
',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 2, 'WP_'.$java_dataset[$i], "Temperatur_200_C", $i);//float
setValue($varid,$daten_raw[$i]);
}
if ($i == 56) // Zähler
{($daten_raw[$i] = $daten_raw[$i]/3600);
//printf('(%d)%s : %.2f h
',$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 == 57) // Zähler
{($daten_raw[$i] = $daten_raw[$i]);
//printf('(%d)%s : %d
',$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
',$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 == 59) // Zähler
{($daten_raw[$i] = $daten_raw[$i]);
//printf('(%d)%s : %d
',$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
',$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 == 67) // WP läuft seit
{($daten_raw[$i] = $daten_raw[$i]);
//printf('(%d)%s : %d
',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 3, 'WP_'.$java_dataset[$i], "", $i);//integer
$time = $daten_raw[$i]; // time duration in seconds
$days = floor($time / (60 * 60 * 24));
$time -= $days * (60 * 60 * 24);
$hours = floor($time / (60 * 60));
$time -= $hours * (60 * 60);
$minutes = floor($time / 60);
$time -= $minutes * 60;
$seconds = floor($time);
$time -= $seconds;
$WPseit = "{$days}d {$hours}h {$minutes}m";
SetValue($varid,$WPseit);
}
if ($i == 73) // WP steht seit
{($daten_raw[$i] = $daten_raw[$i]);
//printf('(%d)%s : %d
',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 3, 'WP_'.$java_dataset[$i], "", $i);//integer
$time = $daten_raw[$i]; // time duration in seconds
$days = floor($time / (60 * 60 * 24));
$time -= $days * (60 * 60 * 24);
$hours = floor($time / (60 * 60));
$time -= $hours * (60 * 60);
$minutes = floor($time / 60);
$time -= $minutes * 60;
$seconds = floor($time);
$time -= $seconds;
$WPseit = "{$days}d {$hours}h {$minutes}m";
SetValue($varid,$WPseit);
}
if ($i >= 95 & $i <= 99) // Errors
{
//printf('(%d)%s : %d
',$i,$java_dataset[$i],$daten_raw[$i]);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 3, 'WP_'.$java_dataset[$i], "", $i);//integer
$FehlerDatum = date("d.m.y",$daten_raw[$i]);
setValueString($varid,$FehlerDatum);
}
if ($i >= 100 & $i <= 105) // Errors
{
//printf('(%d)%s : %d
',$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]);
}
if ($i == 173) // Durchfluss
{($daten_raw[$i] = $daten_raw[$i]);
//printf('(%d)%s : %d
',$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 == 257) // Leistung
{($daten_raw[$i] = $daten_raw[$i]/1000);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 2, 'WP_'.$java_dataset[$i], "", $i);//float
$daten_raw[$i] = sprintf("%5.2f", $daten_raw[$i]);
setValue($varid,$daten_raw[$i]);
}
if ($i == 80) // Betriebszustand
{
// printf('(%d)%s : %d',$i,$java_dataset[$i],$daten_raw[$i]);
switch ($daten_raw[$i]) {
case 0:
$status = "Heizen";
break;
case 1:
$status = "Warmwasser";
break;
case 2:
$status = "Schwimmbad / Photovoltaik";
break;
case 3:
$status = "EVU-Sperre";
break;
case 4:
$status = "Abtauen";
break;
case 5:
$status = "Keine Anforderung";
break;
case 6:
$status = "Heizen ext. Energiequelle";
break;
case 7:
$status = "Kühlbetrieb";
break;
}
//printf ($status);
$varid = CreateVariableByName($parentID, $java_dataset[$i], 3, 'WP_'.$java_dataset[$i], "", $i);//integer
setValueString($varid,$status);
}
}
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;
}
?>