the ebus connection is done in my case with an ebus-usb-adapter. I soldered the one from here:
https://www.mikrocontroller.net/topic/3 ... age=single
there are also other projects around how to make your own ebusd adapter, cheaper and direct with wifi, with a wemos D1. e.g.
https://ebus.github.io/adapter/index.en.html
on the RPI I have configured ebusd and connected it with the USB adapter. for ebus-configuration, have a look at
https://github.com/dstrigl/ebusd-config ... ellent-300
with this you can completely control the brink unit. You can read how long the filter will last, how much m³ Air is flowing, the different temperatures, etc. I wrote a munin plugin to graph this, it looks like this:
munin.png
the munin script is here:
Code: Select all
#!/usr/bin/php
<?php
if ($argc == 2) {
if ($argv[1] == "config") {
echo("graph_title Brink Renovent Excellent 300".PHP_EOL);
echo("graph_vlabel Brink Parameter".PHP_EOL);
echo("graph_category House".PHP_EOL);
echo("Ventilatorstufe.label Ventilatorstufe".PHP_EOL);
echo("Ablufttemperatur.label Ablufttemperatur".PHP_EOL);
echo("Frischlufttemperatur.label Frischlufttemperatur".PHP_EOL);
echo("Aussenlufttemperatur.label Aussenlufttemperatur".PHP_EOL);
echo("TatsaechlicheZuluftmenge.label TatsaechlicheZuluftmenge".PHP_EOL);
echo("TatsaechlicheAbluftmenge.label TatsaechlicheAbluftmenge".PHP_EOL);
echo("IstwertZuluftdruck.label IstwertZuluftdruck".PHP_EOL);
echo("IstwertAbluftdruck.label IstwertAbluftdruck".PHP_EOL);
echo("FilterStatus.label FilterStatus".PHP_EOL);
echo("TageMitFilter.label TageMitFilter".PHP_EOL);
echo("TageMitFilter.draw LINE1".PHP_EOL);
echo("StatusBypass.label StatusBypass".PHP_EOL);
echo("StatusVorheizregister.label StatusVorheizregister".PHP_EOL);
echo("LeistungVorheizregister.label LeistungVorheizregister".PHP_EOL);
echo("EWTStatus.label EWTStatus".PHP_EOL);
echo("EWTStatus.cdef EWTStatus,1,+,2,%".PHP_EOL);
echo("BypassTemperatur.label BypassTemperatur".PHP_EOL);
echo("BypassHysterese.label BypassHysterese".PHP_EOL);
echo("EWTTug.label EWTTmin".PHP_EOL);
echo("EWTTog.label EWTTmax".PHP_EOL);
echo("LuftmengeStufe1.label LuftmengeStufe1".PHP_EOL);
}
exit;
}
function fetchjsonfromurl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 6);
curl_setopt($ch, CURLOPT_TIMEOUT, 9);
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output, true);
}
$fieldzero = array( "Ventilatorstufe", "Ablufttemperatur", "Frischlufttemperatur", "Aussenlufttemperatur", "TatsaechlicheZuluftmenge", "TatsaechlicheAbluftmenge", "IstwertZuluftdruck", "IstwertAbluftdruck", "FilterStatus", "TageMitFilter", "StatusBypass", "StatusVorheizregister", "LeistungVorheizregister", "EWTStatus" );
$fieldaktuell = array( "BypassTemperatur", "BypassHysterese", "EWTTug", "EWTTog", "LuftmengeStufe1" );
$fieldaktuellelements = array( "aktuell", "minimum", "maximum", "Schrittgroesse", "Werkseinstellung");
$kwlvalues = fetchjsonfromurl("http://localhost:8880/data?numeric&required");
foreach ($fieldzero as $key => $value) echo $fieldzero[$key].'.value '.$kwlvalues["kwl"]["messages"][$value]["fields"]["0"]["value"].PHP_EOL;
foreach ($fieldaktuell as $key => $value) echo $fieldaktuell[$key].'.value '.$kwlvalues["kwl"]["messages"][$value]["fields"]["aktuell"]["value"].PHP_EOL;
?>
changing the air volume is then only a matter of sending the desired value by MQTT to the ebus-daemon. it is then setting the m³/h direct on the unit.
this I have simply attached to a php script which is graphing also temperatures and humidity of some rooms with munin:
Code: Select all
function publishvalue($prefix, $param, $message) {
$topic = $prefix.$param;
$client = new Mosquitto\Client();
//$client->setCredentials('S1','123456');
$client->connect("localhost", 1883, 5);
$client->publish($topic, $message, 1, 0);
$client->disconnect();
unset($client);
}
function evalkwlspeed($humidity) {
$Ventilatorstufe = 1;
$humi_max = 90;
$humi_aim = 50;
$Aussenlufttemperaturmax = 23;
$EWTStatus = '';
$Aussenlufttemperatur = '';
$Luftmengemin = 50;
$Luftmengemax = 160;
$Luftmengestep = 5;
$Luftmengecurrent = 50;
$brinkData = fetchjsonfromurl('http://127.0.0.1:8880/data/kwl/EWTStatus?required');
$EWTStatus = $brinkData['kwl']['messages']['EWTStatus']['fields']['0']['value'];
$brinkData = fetchjsonfromurl('http://127.0.0.1:8880/data/kwl/data?numeric&required');
$Aussenlufttemperatur = $brinkData['kwl']['messages']['Aussenlufttemperatur']['fields']['0']['value'];
$Luftmengemin = explode(';', $brinkData['LuftmengeStufe'.($Ventilatorstufe-1)])[0];
$Luftmengemax = explode(';', $brinkData['LuftmengeStufe'.($Ventilatorstufe+1)])[0];
$Luftmengestep = explode(';', $brinkData['LuftmengeStufe'.($Ventilatorstufe)])[3];
$Luftmengecurrent = explode(';', $brinkData['LuftmengeStufe'.($Ventilatorstufe)])[0];
date_default_timezone_set("Europe/Vienna");
$hour = date("H", time());
if (!($hour > 6 && $hour < 21)) $Luftmengemax = 120;
if ($humidity > $humi_max) $newval = $Luftmengemax;
else if ($humidity <= $humi_max && $humidity > $humi_aim) $newval = $Luftmengestep * round(((($humidity - $humi_aim) * (($Luftmengemax - $Luftmengemin)/($humi_max - $humi_aim))) + $humi_aim)/$Luftmengestep);
else $newval = $Luftmengemin;
if ($EWTStatus == 'Enabled') {
if ($Aussenlufttemperatur >= $Aussenlufttemperaturmax) {
if ($hour > 6 && $hour < 21) $newval = $Luftmengemax;
}
if ($newval < ($Luftmengemax * 0.6)) $newval = ($Luftmengemax * 0.6);
}
publishvalue('brink/kwl/Luftmengestufe1/', 'set', $newval);
//echo("set fanspeed to ".$newval);
}
With this function:
* I set the air volume to maximum, as soon as I start cooling with the brink unit (there is a heat exchanger in air supply, which switches on as soon as the outside air temperature is over 23°C)
* during day between the (on brink unit) configured maximum air volume of stage 1 (I use stage 1 as "automatic" adjusted) is used
* during night I limit it to 120m³/h (it cannot be heared in house if it is running at 120m³ or below)
the sensor in bathroom is a wemos D1 with a DHT-hat. it reports every 5 minutes temperature and humidity.
costs: I use a RPI1 which is "left over", the ebus USB adapter, some cables, ... I would guess everything in sum is below 30€.
but don't calculate the hours working time on it ...
Have fun!
BR
Alois
You do not have the required permissions to view the files attached to this post.