Willkommen auf unserer neuen Forenplattform für das Bus-Profi Forum

Neue Felder für die persönlichen Daten
Man kann jetzt seine öffentlich einsehbare Daten genau bestimmen. Details findet ihr in in diesem Beitrag.

Durch die neue Forensoftware und die Portierung der Daten konnten die Passwörter aus dem alten Forum nicht übernommen werden, bitte lassen Sie sich ein neues Passwort über die Passwort vergessen Funktion zusenden. Sollte es zu Problemen kommen kontaktieren Sie das Bus-Profi Team per E-Mail.

Heizungssteuerung reload

... alles was es nicht bei Issendorff gibt
Antworten
Benutzeravatar

Themenersteller
Thomas
Alleswisser
Alleswisser
Beiträge: 5752
Registriert: Mo 21. Apr 2008, 20:03
Status: Offline

#1 Heizungssteuerung reload

Beitrag von Thomas »

Hallo,

da mir nach Jahren doch meine Heizungssteuerung "verlassen" hat, und ich da einiges per IP-Symcon auf dem Pi gemacht habe, möchte ich das auch hier, weitergeben.
An Hardware ist nur ein 1wire Bus und Relaisblock direkt am RaspberryPi(2) verbaut, der 1wire Bus ist nur für die Temperaturen der Heizung zuständig, der Relaisblock steuert Brenner, Mischer und Pumpen. Das ganze ist noch umsteckbar auf die alte Steuerung, und bleibt als "Notnagel" erst mal vorhanden.
Für IP-Symcon habe ich ein Install Skript erstellt, welches alles anlegt, nur einige enige Dinge müssen von Hand angepasst (eingerichtet) werden.
Kleine Doku ist als PHP enthalten.
Wer Fehler findet, darf die mir gerne zeigen.

Code: Alles auswählen

';
CreateScriptByName('aktion',$HauptCatId,$skript);
//IPS_SetHidden($ScriptID, true);
IPS_SetVariableCustomAction($a1, $ScriptID);
IPS_SetVariableCustomAction($a2, $ScriptID);
IPS_SetVariableCustomAction($a3, $ScriptID);
IPS_SetVariableCustomAction($a4, $ScriptID);

IPS_SetVariableCustomAction($k2, $ScriptID);
IPS_SetVariableCustomAction($k3, $ScriptID);
IPS_SetVariableCustomAction($k4, $ScriptID);
IPS_SetVariableCustomAction($k5, $ScriptID);
IPS_SetVariableCustomAction($k6, $ScriptID);
IPS_SetVariableCustomAction($k7, $ScriptID);
IPS_SetVariableCustomAction($k8, $ScriptID);
IPS_SetVariableCustomAction($k9, $ScriptID);

IPS_SetVariableCustomAction($m1, $ScriptID);
IPS_SetVariableCustomAction($m2, $ScriptID);
//IPS_SetVariableCustomAction($m3, $ScriptID);
IPS_SetVariableCustomAction($m4, $ScriptID);
IPS_SetVariableCustomAction($m5, $ScriptID);
IPS_SetVariableCustomAction($m6, $ScriptID);
IPS_SetVariableCustomAction($m7, $ScriptID);
IPS_SetVariableCustomAction($m8, $ScriptID);
IPS_SetVariableCustomAction($m9, $ScriptID);
IPS_SetVariableCustomAction($m10, $ScriptID);

IPS_SetVariableCustomAction($s1, $ScriptID);
IPS_SetVariableCustomAction($s2, $ScriptID);
IPS_SetVariableCustomAction($s3, $ScriptID);
IPS_SetVariableCustomAction($s4, $ScriptID);

//------------------------------------------------------------------------------

$skript =' /sys/class/gpio/gpio23/value\');// Mischer Pumpe aus
		exec (\'echo "1" > /sys/class/gpio/gpio22/value\');// Brenner aus
		exec (\'echo "1" > /sys/class/gpio/gpio24/value\');// Speicher Pumpe aus
		exec (\'echo "1" > /sys/class/gpio/gpio17/value\');// Mischer aus
//		exec (\'echo "1" > /sys/class/gpio/gpio27/value\');// Mischer auf/zu
	}
}
?>';
CreateScriptByName('aktion Hand',$CatID_aussen,$skript);
IPS_SetVariableCustomAction($a1, $ScriptID);
//------------------------------------------------------------------------------
$skript =' /sys/class/gpio/export
  echo "in" >/sys/class/gpio/gpio${Port}/direction
  chmod 660 /sys/class/gpio/gpio${Port}/direction
  chmod 660 /sys/class/gpio/gpio${Port}/value
done

# Output-Ports (LED)
for Port in 17 27 22 23 24
  do
  echo "$Port" > /sys/class/gpio/export
  echo "out" >/sys/class/gpio/gpio${Port}/direction
  echo "0" >/sys/class/gpio/gpio${Port}/value
  chmod 660 /sys/class/gpio/gpio${Port}/direction
  chmod 660 /sys/class/gpio/gpio${Port}/value
done

##############################################################
/etc/rc.local erweitern :

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/opt/gpio/gpio_init.sh
exit 0


#############################################################

/boot/config.txt :
gpu_mem=16
dtoverlay=sdhost
#dtoverlay=w1-gpio
dtoverlay=w1-gpio,gpiopin=4,pullup=on

*/

?>';
CreateScriptByName('doku',$HauptCatId,$skript);
//------------------------------------------------------------------------------
$skript =' $zaehler) {
	        break;
      }
      $ds_id[$i]= trim($ds_id[$i]);
		$temp = exec(\'cat /sys/bus/w1/devices/\'.$ds_id[$i].\'/w1_slave |grep t=\');
		$crc = exec(\'cat /sys/bus/w1/devices/\'.$ds_id[$i].\'/w1_slave | grep crc | sed "s/^.*\(...\)$/\1/"\');
		$temp = explode(\'t=\',$temp);
      //The power-on reset value of the temperature register is +85°C
		if($crc =="YES" and $temp[1] !== "-62" and $temp[1]  !== "85000") //Fehler raus, -1.2 °C ,85°C und CRC
		{
			$temp = $temp[1] / 1000;
			$temp = round($temp,2);
	  	   $id = CreateVariableByName($id3, $ds_id[$i], 2);
		   SetValue($id, $temp);
	   }
	}
//------------------------------------------------------------------------------
 if($_IPS[\'SENDER\'] == "Variable")
 {
  if($_IPS[\'VALUE\'])
  {
   IPS_SetScriptTimer($_IPS[\'SELF\'], 10);         // Sekunden-Takt
  } else {
   IPS_SetScriptTimer($_IPS[\'SELF\'], 0);
  }
 }
//------------------------------------------------------------------------------
//##############################################################################
function CreateVariableByName($id, $name, $type)
{
   $vid = @IPS_GetVariableIDByName($name, $id);
   if($vid===false) {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
   }
   return $vid;
}
//##############################################################################
function CreateEventIDByName($id, $name, $type)
{
   $eid = @IPS_GetEventIDByName($name, $id);
   if($eid===false) {
      $eid = IPS_CreateEvent($type);
      IPS_SetParent($eid, $id);
      IPS_SetName($eid, $name);
   }
   return $eid;
}
?>';
CreateScriptByName('Temperaturen_lesen',$CatID_gpio,$skript);

//------------------------------------------------------------------------------
$skript =' /sys/class/gpio/gpio22/value\');
	    }

	If ($y > $Kessel_faktor )
	    {
	   	exec (\'echo "0" > /sys/class/gpio/gpio22/value\');
	    }
}
$x = intval(exec (\'cat /sys/class/gpio/gpio22/value\'));
if ($x == 1){ $x=0;} else { $x=1; }
SetValueBoolean($bernnerID,$x);
?>';
CreateScriptByName('Regler Kessel',$CatID_kessel,$skript);
IPS_SetScriptTimer($ScriptID, 0);

$skript =' /sys/class/gpio/gpio22/value\');}// Brenner aus
	if($_IPS["VALUE"] ==1) {exec (\'echo "0" > /sys/class/gpio/gpio22/value\');}// Brenner ein
}
?>';
CreateScriptByName('aktion gpio',$CatID_kessel,$skript);
IPS_SetHidden($ScriptID, true);
$aktion_skript=$ScriptID;

$skript ='';
CreateScriptByName('graph1',$CatID_kessel,$skript);
IPS_SetHidden($ScriptID, true);

$skript ='';
CreateScriptByName('graph2',$CatID_kessel,$skript);
IPS_SetHidden($ScriptID, true);

//------------------------------------------------------------------------------
$skript =' /sys/class/gpio/gpio23/value\'); // Pumpe ein
//		$Vorlauftemperatur_Mischer=min(max(round((0.55*$Steilheit*(pow($Raumsollwert,($Aussentemp/(320-$Aussentemp*4))))*((-$Aussentemp+20)*2)+$Raumsollwert+$Korrektur_Mischer)*1)/1,$min_Mischer),$max_Mischer);
		$Vorlauftemperatur_Mischer=min(max(  ((0.55*$Steilheit*(pow($Raumsollwert,($Aussentemp/(320-$Aussentemp*4))))*((-$Aussentemp+20)*2)+$Raumsollwert+$Korrektur_Mischer)*1)/1,$min_Mischer),$max_Mischer);

		SetValueFloat($Soll_Temperatur_MischerID, $Vorlauftemperatur_Mischer);
     } else{
// Ausentemp grösserr Raumsollwert
     exec (\'echo "1" > /sys/class/gpio/gpio23/value\');// Pumpe aus
     SetValueFloat($Soll_Temperatur_MischerID,$min_Mischer);//Wert anpassen !!!!!
     }
}

$e = (GetValueFloat($Soll_Temperatur_MischerID)- GetValueFloat($IstTemperaturID));
// Die Berechnung des neuen Regelwertes
//$y = ($Kp * $e + $Ki * $Ta * $esum + $Kd * ($e - $ealt) / $Ta);
$y = $Kp * $e;
$Einschaltzeit=$y;

if ($Hand == 1)  { //Hand ist an
	$action = \'Hand\';
}

SetValueFloat($VorherigeRegelabweichungID, $y);
   $Einschaltzeit=abs($y);
    IF ($Einschaltzeit = 14) {
	 	$Einschaltzeit = 14;
	 }

	IPS_SetEventCyclic($EinschaltzeitID, 0, 0, 0, 0, 1 ,$Einschaltzeit);

if (IPS_GetName($_IPS[\'EVENT\'])==\'Einschaltzeit\') {
		//Netzrelais aus
   	if ($Hand == 0)  { //Automatik ist an
			exec (\'echo "1" > /sys/class/gpio/gpio17/value\');
	      SetValueInteger($MischerID, 1); //Stop
		}
      IPS_SetEventActive($EinschaltzeitID,false);
      IPS_SetEventActive($WartezeitID,true);
  }

if (IPS_GetName($_IPS[\'EVENT\'])==\'Wartezeit\') {
    $Soll_VL = GetValue($Soll_Temperatur_MischerID);
    $Ist_VL = GetValue($IstTemperaturID);
	 if ($Hand == 0)  { //Automatik ist an
		    $action = \'Idle\';
		    if ($Ist_VL  ($Soll_VL + $Hysterese) ) $action = \'Zu\';

//if (GetValue(32015 /*[Objekt #32015 existiert nicht]*/) == False)    $action = \'Idle\';

		    Switch ($action){

		        Case \'Idle\':
		        break;

		        Case \'Zu\':
					//Richtungsrelais aus
					exec (\'echo "1" > /sys/class/gpio/gpio27/value\');
		         //Netzrelais ein
					exec (\'echo "0" > /sys/class/gpio/gpio17/value\');
					SetValueInteger($MischerID, 3); //Zu
		        break;

		        Case \'Auf\':
					//Richtungsrelais ein
					exec (\'echo "0" > /sys/class/gpio/gpio27/value\');
					//Netzrelais ein
					exec (\'echo "0" > /sys/class/gpio/gpio17/value\');
					SetValueInteger($MischerID, 0); //Auf
		        break;
 		     }
    }
    SetValueString($actionID,$action);
    IPS_SetEventActive($EinschaltzeitID,true);
    IPS_SetEventActive($WartezeitID,false);
}

$x = intval(exec (\'cat /sys/class/gpio/gpio23/value\'));
if ($x == 1){ $x=0;} else { $x=1; }
SetValueBoolean($PumpeID,$x);

//}
?>';
CreateScriptByName('Regler Mischer',$CatID_Mischer,$skript);
CreateEventIDByName($ScriptID, 'Einschaltzeit', 1);
CreateEventIDByName($ScriptID, 'Wartezeit', 1);

$skript =' /sys/class/gpio/gpio27/value\');
		//Netzrelais ein
		exec (\'echo "0" > /sys/class/gpio/gpio17/value\');
	}
	if($_IPS["VALUE"] ==2) { // Mischer zu
		//Richtungsrelais aus
		exec (\'echo "1" > /sys/class/gpio/gpio27/value\');
	   //Netzrelais ein
		exec (\'echo "0" > /sys/class/gpio/gpio17/value\');
	}
	if($_IPS["VALUE"] ==1) { // Mischer Stop
	   //Netzrelais ein
		exec (\'echo "1" > /sys/class/gpio/gpio17/value\');
	}
}
?>';
CreateScriptByName('aktion gpio Mischer',$CatID_Mischer,$skript);
IPS_SetHidden($ScriptID, true);
$aktion_skript=$ScriptID;


$skript =' /sys/class/gpio/gpio23/value\');}// Pumpe aus
	if($_IPS["VALUE"] ==1) {exec (\'echo "0" > /sys/class/gpio/gpio23/value\');}// Pumpe ein
}
?>';
CreateScriptByName('aktion gpio Pumpe',$CatID_Mischer,$skript);
IPS_SetHidden($ScriptID, true);
$aktion_skript=$ScriptID;

$skript ='';
CreateScriptByName('graph',$CatID_Mischer,$skript);
IPS_SetHidden($ScriptID, true);

//------------------------------------------------------------------------------

$skript ='= $Hysterese )
		{
	      SetValue($SpeicheranforderungID, 1);
 	      SetValue($ZustandID, " Speicheranforderung ein");
			If ( ($IstTemperaturKessel+3) > $IstTemperaturUnten )
			{
				exec (\'echo "0" > /sys/class/gpio/gpio24/value\');
	         SetValue($ZustandID, " Speicheranforderung ein - Pumpe ein");
			}
   		else
			{
		   	exec (\'echo "1" > /sys/class/gpio/gpio24/value\');
            SetValue($ZustandID, "Kessel zu kalt - Pumpe aus");
		   }
		}
		If ($y  /sys/class/gpio/gpio24/value\');
		         SetValue($SpeicheranforderungID, 0);
	            SetValue($ZustandID, " Speicheranforderung aus - Nachlauf");
		}
	} //Uhr
	if ($Uhr == 0)
	{
			//Kessel auf sollwert setzen
	      SetValue($SpeicheranforderungID, 0);
	      SetValue($ZustandID, " Nachtabsenkung");
	}
}
$x = intval(exec (\'cat /sys/class/gpio/gpio24/value\'));
if ($x == 1){ $x=0;} else { $x=1; }
SetValueBoolean($PumpeID,$x);
?>';
CreateScriptByName('Regler Speicher',$CatID_Speicher,$skript);
CreateEventIDByName($ScriptID, 'Speichertimer', 1);



//------------------------------------------------------------------------------

$skript ='= $Nachlauf_soll){
		exec (\'echo "1" > /sys/class/gpio/gpio24/value\');
		IPS_SetEventCyclic($NachlaufzeitID, 0, 0, 0, 0, 1 ,0);
		SetValue($NachlaufIstAltID, $Nachlauf_ist);
		SetValue($NachlaufIstID, 0);
      SetValue($ZustandID, " Nachlauf Zeit abgelaufen");

	}
//	if ($Kessel_ist  /sys/class/gpio/gpio24/value\');
		IPS_SetEventCyclic($NachlaufzeitID, 0, 0, 0, 0, 1 ,0);
		SetValue($NachlaufIstAltID, $Nachlauf_ist);
		SetValue($NachlaufIstID, 0);
      SetValue($ZustandID, " Nachlauf stop, Temperatur");
	}
}
$x = intval(exec (\'cat /sys/class/gpio/gpio24/value\'));
if ($x == 1){ $x=0;} else { $x=1; }
SetValueBoolean($PumpeID,$x);

?>';
CreateScriptByName('Nachlauf Pumpe',$CatID_Speicher,$skript);
CreateEventIDByName($ScriptID, 'Nachlaufzeit', 1);


//------------------------------------------------------------------------------
$skript =' /sys/class/gpio/gpio24/value\');}// Pumpe aus
	if($_IPS["VALUE"] ==1) {exec (\'echo "0" > /sys/class/gpio/gpio24/value\');}// Pumpe ein
}
?>
';
CreateScriptByName('aktion_gpio',$CatID_Speicher,$skript);
//------------------------------------------------------------------------------


} // KatID vorhanden
else
{
    echo "Die Kategorien-ID lautet: ". $KategorieID;
    echo " Bitte erst löschen: ". $KategorieID;
}
//##############################################################################
function CreateVariableByName($id, $name, $type)
{
   $vid = @IPS_GetVariableIDByName($name, $id);
   if($vid===false) {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
   }
   return $vid;
}
//##############################################################################
function CreateEventIDByName($id, $name, $type)
{
   $eid = @IPS_GetEventIDByName($name, $id);
   if($eid===false) {
      $eid = IPS_CreateEvent($type);
      IPS_SetParent($eid, $id);
      IPS_SetName($eid, $name);
   }
   return $eid;
}
//##############################################################################

function CreateScriptByName($ScriptNAME, $ParentID, $ScriptTEXT)
{
   global $_IPS,$ScriptID;
    $ScriptID = @IPS_GetScriptIDByName($ScriptNAME, $ParentID);
    if ($ScriptID == 0){
       $ScriptID = IPS_CreateScript(0);
       IPS_SetName($ScriptID, $ScriptNAME);
       IPS_SetParent($ScriptID, $ParentID);
       IPS_SetInfo($ScriptID, "This script was created by: ".$_IPS['SELF']);
       $ScriptPath = $ScriptID.".ips.php";     //Skriptdatei
       IPS_SetScriptFile($ScriptID, $ScriptPath);
       IPS_SetHidden($ScriptID, false);
       IPS_SetScriptContent($ScriptID, $ScriptTEXT);
    }
}

?>
lg Thomas - hat so nichts mit LCN zu tun, aber eine Anbindung habe ich da auch.;)
lg Thomas
Benutzeravatar

Themenersteller
Thomas
Alleswisser
Alleswisser
Beiträge: 5752
Registriert: Mo 21. Apr 2008, 20:03
Status: Offline

#2 RE: Heizungssteuerung reload

Beitrag von Thomas »

Mittlerweile habe ich noch eine Heizkennlinie mit drin, da kann ich dann auf einen Blick sehen, was eingestellt ist.
rot = Kessel
gelb= Mischer Tag
blau = Mischer Nacht
Senkrecht blau = aktuelle Aussentemperatur.
[img]1[/img]
Jetzt brauche ich noch Temperaturen von 2-3 Wohnzimmern aus den Wohnungen.
Da bin ich aber nicht mit LCN drin, und bekomme nicht einfach eine Datenader da rein, daher werde ich zwave versuchen.
Habe da da Razberry Modul von zwave.me und den "http://www.zwave-shopping.com/de/sensoren/fibaro/121-fibfgbs-001-fibaro-fibaro-universal-binr-sensor-sensoren.html" Sensor mit 4x DS18S20 jetzt auch noch eingebunden.
Reichweite werde ich wohl Probleme bekommen, und einige zwave Zwischenstecker setzen müssen (Mesh-Netzwerk aufbauen), ich werde es mal versuchen.

lg Thomas
Dateianhänge
681741mischer.png
681741mischer.png (54.02 KiB) 17340 mal betrachtet
lg Thomas
Benutzeravatar

Themenersteller
Thomas
Alleswisser
Alleswisser
Beiträge: 5752
Registriert: Mo 21. Apr 2008, 20:03
Status: Offline

#3 Re: Heizungssteuerung reload

Beitrag von Thomas »

Das Skript oben ist nicht mehr aktuell, lasse es aber stehen.
Mittlerweile werkelt auch ein Pi2 in Bayern, an einem kleinen Ölkessel ohne Mischer.
Das scheint auch gut zu laufen, aber es braucht noch Anpassungen.
Ich bin jetzt überzeugt, es bleibt bei mir drin, und eine neue Steuerung "schenke" ich mir.
Klar ist, ich habe bestimmt noch Fehler drin, die bei mir nicht auffallen, und würde mir wünschen, der ein oder andere macht mit, es zu verbessern.
Bis jetzt ist die Steuerung nur von der Außentemperatur abhängig, da meine Hütte 4 Wohnungen hat, und ich nur an die Daten meiner Wohnung komme..
Aber da arbeite ich dran, und versuche es mal mit zwave (Funk wollte ich eigentlich nicht, aber geht ohne Baumaßnahmen)

Später mehr...
lg Thomas
Benutzeravatar

Themenersteller
Thomas
Alleswisser
Alleswisser
Beiträge: 5752
Registriert: Mo 21. Apr 2008, 20:03
Status: Offline

#4 Re: Heizungssteuerung reload

Beitrag von Thomas »

Hi Leute,

da ich am WE mal etwas Zeit hatte, habe ich mal die Aussentemperatur "verzögert", wie auch Speichertemperaturen an die Kesseltemperatur "gebunden", um die Wärme im Kessel nicht im "Sommer" verpuffen zu lassen. Waren jetzt die ersten Tage, wo ich das genau beobachten konnte. Also wieder einiges neues eingebaut, und beobachten, aber es sieht gut aus, vom Ölverbrauch gestern und heute.
lg Thomas
Benutzeravatar

Themenersteller
Thomas
Alleswisser
Alleswisser
Beiträge: 5752
Registriert: Mo 21. Apr 2008, 20:03
Status: Offline

#5 Re: Heizungssteuerung reload

Beitrag von Thomas »

Tag der Auswertung von 9 Monaten :lol:
Mit der Pi Steuerung meines 50kw Kessels habe ich ~ 1/4 weniger Heizkosten (Ölverbrauch), als mit der orginal Steuerung.
Jetzt kommt die nächste Stufe, im Herbst (hoffe da etwas mehr Zeit zu haben...)
Im Moment ist Robi dran, der muss auch "umgebaut" werden. :lol:
lg Thomas
lg Thomas
Benutzeravatar

Themenersteller
Thomas
Alleswisser
Alleswisser
Beiträge: 5752
Registriert: Mo 21. Apr 2008, 20:03
Status: Offline

#6 Re: Heizungssteuerung reload

Beitrag von Thomas »

Kurzer Zwischenstand.

DS18(S und B)20 am Pi werkeln absolut störungsfrei, so habe ich es am I-Port mit LCN-TS und Eigenbau nie über so einen Zeitraum hin bekommen. :scared:
Auch meine Skripte bei der Heizungssteuerung haben Probleme verursacht, die ich aber finden konnte, da ich die eigenen Software Fehler untersuchen konnte. Dieses ist leider bei fast allen anderen Systemen nicht möglich.
Daher wir die LCN Datenader oder z-wave oder ... nur noch ein Datenaustausch Weg sein. (Was sehr gut geht.)

Die LCN Datenader ist "geil", aber der Rest ?
Wie war das damals, "LCN dumm machen" und der Rest andere Syteme regeln lassen ? Jetzt bin ich dabei. :scared:
Und im Notfall, macht auch ein uraltes LCN Modul "alles", da die Logik ganz wo anders liegt (und ich schnell ändern kann. :scared: )

lg Thomas - ich mache mit IP-Symcon(kom­mer­zi­ell) weiter, aber es gibt auch noch andere Systeme (free und kom­mer­zi­ell, die LCN verarbeiten können)

ps. bei mir im Haus wird immer mehr z-wave verbaut, da ich keine Leitungen mehr verlegen kann. :scared: ( Ist aber auch trickreich :-/ )
lg Thomas
Benutzeravatar

Themenersteller
Thomas
Alleswisser
Alleswisser
Beiträge: 5752
Registriert: Mo 21. Apr 2008, 20:03
Status: Offline

#7 Re: Heizungssteuerung reload

Beitrag von Thomas »

Steuerung arbeitet weiterhin perfekt. :scared:
Aber ich habe ein Problem, Flexcon hatte Druck verloren. Habe ich erst mal gelöst, mit "Pressluft" und "Ventil Dichtung".
Ich weiss, nicht gut, da Stickstoff rein müsste, aber die Membran ist noch OK.....

Ventil war undicht, dadurch Druckabfall im Heizkreislauf. Dieses habe ich nicht überwacht.
Welchen Sensor könnte ich da verbauen im Wasserkreislauf ? (Nicht am LCN, der muss direkt an den PI...)
Zweiter Fehler kommt noch hinzu, ein Wasserhahn tropft jetzt, nach Nachfüllung und Ausgleich. (Wird die Tage ausgetauscht, dazu muss ich aber die Anlage am Rohr "frosten" oder entleeren.
Ich suche jetzt einen Sensor, der Heizungswasser von 0-5 BAR ab kann, den ich da gleich mit verbauen könnte.
Hat da jemand nen Tipp ?
lg Thomas
Antworten