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:

Darstellung PHP Ergebnis
Die Übersichtsseite zur Ökofen Pelletheizung
weitere Darstellung
Übersicht für frühmorgens

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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.