The problem with the 'toevoer' temperature has been found, I made a little mistake in the script which has been corrected.
Next thing to do is make a script for the counters and other information of the remeha...
For those who are interested in a php script to readout the calenta (don't forget to change the ip-adres and port number):
Code: Select all
<?php
//Uncomment line below for DEBUG
//error_reporting(E_ALL);
function hex_dump($data, $newline="<br>")
{
static $from = '';
static $to = '';
static $width = 16; # number of bytes per line
static $pad = '.'; # padding for non-visible characters
if ($from==='')
{
for ($i=0; $i<=0xFF; $i++)
{
$from .= chr($i);
$to .= ($i >= 0x20 && $i <= 0x7E) ? chr($i) : $pad;
}
}
$hex = str_split(bin2hex($data), $width*2);
$decode = str_split(bin2hex($data), 2);
$chars = str_split(strtr($data, $from, $to), $width);
//$offset = 0;
//foreach ($hex as $i => $line)
//{
// echo sprintf(implode(' ', str_split($line,2)) . ' ' . $newline);
// $offset += $width;
//}
//echo "<br /><br />";
echo "Put result in array before starting decoding..<br />";
//Uncomment line below for DEBUG
//print_r($decode);
//echo "<br /><br />";
echo "Starting decoding...<br />";
//Devine variables and append right bytes
$toevoertemp ="";
$toevoertemp .= $decode["8"];
$toevoertemp .= $decode["7"];
$retourtemp = "";
$retourtemp .= $decode["10"];
$retourtemp .= $decode["9"];
$ruimtetemp = "";
$ruimtetemp .= $decode["22"];
$ruimtetemp .= $decode["21"];
$ruimteset = "";
$ruimteset .= $decode["28"];
$ruimteset .= $decode["27"];
$cvsetpoint = "";
$cvsetpoint .= $decode ["24"];
$cvsetpoint .= $decode ["23"];
$wwsetpoint = "";
$wwsetpoint .= $decode ["26"];
$wwsetpoint .= $decode ["25"];
$venttoeren = "";
$venttoeren .= $decode ["32"];
$venttoeren .= $decode ["31"];
$ionisatiecur = "";
$ionisatiecur .= $decode ["33"];
$pomppower = "";
$pomppower .= $decode ["37"];
$pressure = "";
$pressure .= $decode ["56"];
$tapflow = "";
$tapflow .= $decode ["60"];
$curpower = "";
$curpower .= $decode ["40"];
$modrequest = "";
$modrequest .= $decode ["43"];
$ionisatie = "";
$ionisatie .= $decode ["44"];
$kleppen = "";
$kleppen .= $decode ["45"];
$pomp = "";
$pomp .= $decode ["46"];
$status = "";
$status .= $decode ["47"];
//Decode values
$retourtemp = hexdec($retourtemp) / 100;
$toevoertemp = hexdec($toevoertemp) / 100;
$ruimtetemp = hexdec($ruimtetemp) / 100;
$ruimteset = hexdec($ruimteset) /100;
$cvsetpoint = hexdec($cvsetpoint) /100;
$wwsetpoint = hexdec($wwsetpoint) /100;
$venttoeren = hexdec($venttoeren);
$ionisatiecur = hexdec($ionisatiecur)/10;
$pomppower = hexdec($pomppower);
$pressure = hexdec($pressure)/10;
$tapflow = hexdec($tapflow)/10;
$curpower = hexdec($curpower);
$modrequest = hexdec($modrequest);
if ($modrequest == 17) {$Modwarmte = "Nee"; $WWwarmte ="Nee"; $WWeco = "Nee";}
elseif ($modrequest == 145) {$Modwarmte = "Nee"; $WWwarmte = "Ja"; $WWeco = "Nee";}
elseif ($modrequest == 19) {$Modwarmte = "Ja"; $WWwarmte = "Nee"; $WWeco = "Nee";}
else {$Modwarmte = "Onbekend"; $WWwarmte = "Onbekend"; $WWeco = "Onbekend";}
$ionisatie = hexdec($ionisatie);
if ($ionisatie == 194) {$ionisatie = "Nee";}
elseif ($ionisatie == 198) {$ionisatie = "Ja";}
else {$ionisatie = "Onbekend";}
$kleppen = hexdec($kleppen);
if ($kleppen == 64 ) {$drieweg = "CV"; $gas = "Open"; $ontsteking ="Uit";}
elseif ($kleppen == 11 ) {$drieweg = "WW"; $gas = "Dicht"; $ontsteking ="Uit";}
elseif ($kleppen == 3 ) {$drieweg = "CV"; $gas = "Open"; $ontsteking ="Uit";}
elseif ($kleppen == 88 ) {$drieweg = "WW"; $gas = "Open"; $ontsteking ="Uit";}
else {$drieweg = "Onbekend"; $gas = "Onbekend"; $ontsteking ="Onbekend";}
$pomp = hexdec($pomp);
if ($pomp == 21) {$pomp = "Aan";}
elseif ($pomp == 16) {$pomp = "Uit";}
elseif ($pomp == 17) {$pomp = "Nadraaien";}
else { $pomp = "Onbekend";}
$status = hexdec($status);
if ($status == 0) {$status = "Rust";}
elseif ($status == 1) {$status = "Warmtevraag";}
elseif ($status == 2) {$status = "Brander_start";}
elseif ($status == 3) {$status = "Branden_CV";}
elseif ($status == 4) {$status = "Branden_WW";}
elseif ($status == 5) {$status = "Brander_stop";}
elseif ($status == 6) {$status = "Einde_warmtevraag";}
elseif ($status == 7) {$status = "-";}
elseif ($status == 8) {$status = "Regelstop";}
elseif ($status == 9) {$status = "Blokkering";}
elseif ($status == 10) {$status = "Vergrendeling";}
elseif ($status == 11) {$status = "Schoorsteenveger_L";}
elseif ($status == 12) {$status = "Schoorsteenveger_h";}
elseif ($status == 13) {$status = "Schoorsteenveger_H";}
elseif ($status == 14) {$status = "-";}
elseif ($status == 15) {$status = "Handmatige_warmtevraag";}
elseif ($status == 16) {$status = "Ketel_vorstbeveiling";}
elseif ($status == 17) {$status = "Ontluchting";}
else { $status = "Onbekend"; }
//Uncomment lines below for DEBUG
//Display values
echo "<b>Received values:</b><br />";
echo "ruimtetemp: $ruimtetemp °C<br />";
echo "ruimteset: $ruimteset °C<br />";
echo "cvsetpoint: $cvsetpoint °C<br />";
echo "wwsetpoint: $wwsetpoint °C<br />";
echo "toevoertemp: $toevoertemp °C<br />";
echo "retourtemp: $retourtemp °C<br />";
echo "venttoeren: $venttoeren Rpm<br />";
echo "ionisatiestroom: $ionisatiecur mA<br />";
echo "pompvermogen: $pomppower<br />";
echo "waterdruk: $pressure Bar<br />";
echo "tapdebiet: $tapflow l/min<br />";
echo "vermogen: $curpower<br />";
echo "(modrequest: $modrequest)<br />";
echo "Mod.warmtevraag: $Modwarmte<br />";
echo "WW warmtevraag: $WWwarmte<br />";
echo "WW Eco: $WWeco<br />";
echo "ionisatie: $ionisatie<br />";
echo "(kleppen: $kleppen)<br />";
echo "driewegklep: $drieweg<br />";
echo "gasklep: $gas<br />";
echo "ontsteking: $ontsteking<br />";
echo "pomp: $pomp<br />";
echo "status: $status<br />";
echo "Decoding complete! Sending JSON to database..";
}
$fp = fsockopen("192.168.1.0", 5000, $errno, $errstr, 30);
if (!$fp) {
echo "ERROR opening port<br />\n";
} else {
echo "Connected to port<br />";
echo "Sending request...<br />";
$byte=chr(0x02);
fwrite($fp,$byte);
$byte=chr(0xFE);
fwrite($fp,$byte);
$byte=chr(0x01);
fwrite($fp,$byte);
$byte=chr(0x05);
fwrite($fp,$byte);
$byte=chr(0x08);
fwrite($fp,$byte);
$byte=chr(0x02);
fwrite($fp,$byte);
$byte=chr(0x01);
fwrite($fp,$byte);
$byte=chr(0x69);
fwrite($fp,$byte);
$byte=chr(0xAB);
fwrite($fp,$byte);
$byte=chr(0x03);
fwrite($fp,$byte);
echo "Request sent, reading answer...<br />";
$data = "";
$data .= fgets($fp, 16);
$data .= fgets($fp, 16);
$data .= fgets($fp, 16);
$data .= fgets($fp, 16);
$data .= fgets($fp, 16);
$data .= fgets($fp, 4);
echo "Answer read, closing connection<br />";
echo "<br />";
echo "Received data:<br /> ";
$output = hex_dump($data);
echo "<br />";
fclose($fp);
echo "Connection closed<br /><br />";
}
?>