Heizungsstatus – Überblick
Manchmal will ich nur kurz wissen, in welchem Zustand befindet sich die Heizungsanlage sowohl im Wohnhaus, als auch im Airbnb. Die Fragestellung ist dann, verbrenne ich gerade Pellets oder reicht die Solarthermie aus ? Oder die Gäste kommen von einer Wanderung zurück und ich will wissen ob genügend Warmwasser bereitsteht.
Jetzt könnte ich mich durch das Webinterface quälen und mir die Infos zusammensuchen. Besser ist es aber mit der JSON-Schnittstelle der Ökofen Heizungen machbar.
<?php
// Kommuniziert mit dem JSON Interface der Oekofen
$apiURL = "http://192.168.200.189";
$apiPORT = ":4321";
$apiPASS = "/pass/all";
Auf dem eigenen NAS und nicht in der cloud erstelle ich eine ganz einfache Website in die ich die Ergebnisse der JSON-Abfrage ausgebe. Die grösste Herausforderung ist dabei die fehlerhafte Übermittlung der deutschen Umlaute zu korrigieren.
// Get the variables in which we're interested
$hk_name = $meter["hk1"]["name"]; // Heizkreisbezeichnung
$hk_act = $meter["hk1"]["L_flowtemp_act"]; // Temperatur
$hk_state = $meter["hk1"]["L_statetext"]; // Status
$hk_state = str_replace ("u?e","uße",$hk_state,$count);
$hk_state = str_replace ("?ber","über",$hk_state,$count);
echo "<br>---------<br>".$hk_name."<br> Vorlauftemp : ".($hk_act/10)."°C Status: ".$hk_state;
Das Ergebnis sieht dann so aus:
Zur Info hier der gesamte PHP-Code:
<html>
<head>
<title>Zustand Heizung Airbnb</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="refresh" content="15">
<style type="text/css">
@page { size: 5cm 10cm; margin-left: 1cm; margin-right: 1cm; margin-top: 1cm; margin-bottom: 1cm }
p { margin-bottom: 0.25cm; line-height: 115%; background: transparent }
h1 { margin-bottom: 0.21cm; font-family: "monospace"; font-size: 24pt; font-weight: bold; background: transparent; page-break-after: avoid }
a:link { color: #d18614; so-language: zxx; text-decoration: underline }
a:visited { color: #d18614; so-language: zxx; text-decoration: underline }
body {
text-align: left;
font-family: "monospace";
font-size: 20pt;
}
#g1 {
width:400px; height:320px;
display: inline-block;
margin: 1em;
}
#g2, #g3, #g4 {
width:100px; height:80px;
display: inline-block;
margin: 1em;
}
</style>
</head>
<body>
<?php
// Kommuniziert mit dem JSON Interface der Oekofen
$apiURL = "http://192.168.200.189";
$apiPORT = ":4321";
$apiPASS = "/xxxxx/all";
//echo $apiURL.$apiPORT.$apiPASS."<br>";
// Get the raw JSON
$jsonData = file_get_contents($apiURL.$apiPORT.$apiPASS);
// Decode into an object
$meter = json_decode($jsonData, true);
echo "<br><h1>"."JSON-Decoder </h1><br>Oekofen Pellematic Smart <br>Version: 4 für Airbnb<br>";
$ambient = $meter["system"]["L_ambient"]; // Aussentemperatur
echo "Aussentemperatur: ".($ambient/10)."°C";
// Get the variables in which we're interested
$hk_name = $meter["hk1"]["name"]; // Heizkreisbezeichnung
$hk_act = $meter["hk1"]["L_flowtemp_act"]; // Temperatur
$hk_state = $meter["hk1"]["L_statetext"]; // Status
$hk_state = str_replace ("u?e","uße",$hk_state,$count);
$hk_state = str_replace ("?ber","über",$hk_state,$count);
echo "<br>---------<br>".$hk_name."<br> Vorlauftemp : ".($hk_act/10)."°C Status: ".$hk_state;
$hk_name = $meter["hk2"]["name"]; // Heizkreisbezeichnung
$hk_act = $meter["hk2"]["L_flowtemp_act"]; // Temperatur
$hk_state = $meter["hk2"]["L_statetext"]; // Status
$hk_state = str_replace ("u?e","uße",$hk_state,$count);
$hk_state = str_replace ("?ber","über",$hk_state,$count);
echo "<br>---------<br>".$hk_name."<br> Vorlauftemp : ".($hk_act/10)."°C Status: ".$hk_state;
$state = $meter["pu1"]["L_statetext"]; // Status
echo "<br>---------<br Puffer: ".$state;
$wstate = $meter["ww1"]["L_statetext"]; // Status
$wstate = str_replace ("u?e","uße",$wstate,$count);
$wstate = str_replace ("?ber","über",$wstate,$count);
echo "<br> Warmwasser: ".$wstate;
$sstate = $meter["sk1"]["L_statetext"]; // Status
$power = $meter["se1"]["L_pwr"]; // Status
$sstate = str_replace ("u?e","uße",$sstate,$count);
$sstate = str_replace ("?ber","über",$sstate,$count);
echo "<br> Solar: ".$sstate." ".($power/10)."kW";
$state = $meter["pe1"]["L_statetext"]; // Status
echo "<br> Brenner: ".$state;
$tpo = $meter["pu1"]["L_tpo_act"]; // Puffer oben
$tpm = $meter["pu1"]["L_tpm_act"]; // Puffer mitte
$tpu = $meter["sk1"]["L_spu"]; // Puffer unten
echo "<br> -------- <br>Puffertemperaturen:";
echo "<br> Oben : ".$tpo/10;
echo "<br> Mitte: ".$tpm/10;
echo "<br> Unten: ".$tpu/10;
?>
</body>
</html>
Schreibe einen Kommentar