Junkers Can-Bus und ELV unter einen Hut?

Hallo auch,

ich habe einen Junker Brennwertkessel, der drei Wohnungen beheizt. Jede Wohnung ist durch einen Raumtemperatur geführten Regler +/- autark regelbar (mittel TA 50/HSM etc.) Die Stockwerkregler reden mit dem Kessel in Can-bus und teilen dem ganz genau mit, wieviel Energie der in die Rohre blasen soll - soweit so gut.

Ich habe jetzt angefangen einzelne Zimmer mit ELV-Regler auszurüsten und muss feststellen, dass wenn zwei unabhängige Regelsysteme nebeneinander herregeln das Ergebnis zwar nicht schlecht, aber auch nicht optimal ist. Irgendwie sollten die Stockwerkregler von den Raumreglern wissen…

Jetzt habe ist feste nach Can-bus gegoogelt, auch gefunden, aber nichts zum Junkers-Canbus. Also muss ich wohl selbst mal in den Bus reinhorchen. Interfaces hierfür gibt es ja einige. Vielleicht kann mir hier ja einer mal einen Tipp geben, wie meine ersten Schritte aussehen könnten.

Grüße

HG

ich würde dir davon abraten…
weil mit dem eingriff in den Bus verlierst Du die Gewähleistung…

Ich habe es bei mir so gelöst: Junkers TA270
Da gibt es einen kontakt um die Sparen-Funktion zu aktivieren, wenn alle Raumregler zu sind, geht die Heizung in den Absenkbetrieb.

ich hole den alten Beitrag aus der Tiefe :slight_smile:

In unserem neuen Heim ist ein Junkers Brennwert Gerät mit Can Bus und TR 220.

Also zur Optimierung und nice to have :loveips: war das Ziel, das mitlesen der Can Bus Nachrichten.

In der Bucht habe ich diesen Can Ip Gateway gefunden.

Client Soket anlegen

Dcom Port alle Nachrichten auswerten
Bildschirmfoto 2015-01-26 um 20.45.37.png
Variablen anlegen



zum Auswerten dieser code







<?

//Daten als dez-String auslesen
$instr=GetValueString(43857 /*[Heizung\daten roh]*/  );
$datenstr="";
$laenge = strlen ($instr );

for($i=0; $i<strlen($instr); $i++)
   {
 $datenstr.=strtoupper(ord($instr{$i}))." ";
  }
$Byte="";
$Byte = explode(" ",$datenstr);

//echo "$Byte[4]
";
//echo "$Byte[5]
";
//echo "$Byte[6]
";
//echo "$Byte[7]
";
//echo "$Byte[8]
";

//200H  1 Byte   max.Vorlauftemperatur in Halbgradschritten Dez.120 = 60°C
if (($Byte[4] == 2) and ($Byte[5] == 0))
{
     SetValue(29734 /*[Heizung\200H  1 Byte   max.Vorlauftemperatur]*/  ,  $Byte[7] /2 );
     IPS_SetScriptTimer(15815 /*[Client Socket Heizung\Neustart]*/ , 0);
}

//201H  1 Byte   aktuelle Vorlauftemperatur in Halbgradschritten Dez.120 = 60°C

if (($Byte[4] == 2) and ($Byte[5] == 1))
{
     SetValue(43078 /*[Heizung\201H  1 Byte   aktuelle Vorlauftemperatur]*/ , $Byte[7] / 2 );
}

//202H  1 Byte   a???

if (($Byte[4] == 2) and ($Byte[5] == 2))
{
     SetValue(25880 /*[Heizung\202H  1 Byte  ?????????]*/ , $Byte[7] / 2 );
}

//203H  1 Byte   a???

if (($Byte[4] == 2) and ($Byte[5] == 3))
{
     SetValue(53414 /*[Heizung\203H  1 Byte   ?????????]*/ , $Byte[7] / 2 );
}


//204H  1 Byte   max.Warmwassertemperatur in Halbgradschritten Dez.120 = 60°C


if (($Byte[4] == 2) and ($Byte[5] == 4))
{
     SetValue(49251 /*[Heizung\204H  1 Byte   max.Warmwassertemperatur]*/ , $Byte[7] / 2 );
}

//205H  1 Byte   aktuelle Speichertemperatur Warmwasser in Halbgradschritten

if (($Byte[4] == 2) and ($Byte[5] == 5))
{
     SetValue(57786 /*[Heizung\205H  1 Byte   aktuelle Speichertemperatur]*/ , $Byte[7] / 2 );
}

//206H  1 Byte  Störungsmeldungen Hex Wert siehe ( Bedienungsanleitung )  00=Heizung ok


if (($Byte[4] == 2) and ($Byte[5] == 6))
{
     SetValue(13630 /*[Heizung\206H  1 Byte  Störungsmeldungen ]*/ , $Byte[7] );
}

//207H  2 Byte   Außentemperatur in °C Hexadezimal Wert / 100 = 1/100 stel
if (($Byte[4] == 2) and ($Byte[5] == 7))
	{
	if ($Byte[7] == 255)
		{
     SetValue(54086 /*[Heizung\207H  2 Byte   Außentemperatur in °C]*/ ,( "-" . $Byte[8]) /100);
		}
	else
      {
      //echo "$Byte[7]
";
      //echo "$Byte[8]
";

     SetValue(54086 /*[Heizung\207H  2 Byte   Außentemperatur in °C]*/ , ((($Byte[7]). + ($Byte[8])))/1000);
		}
}
	
//208H  1 Byte  ?????????
if (($Byte[4] == 2) and ($Byte[5] == 8))
{
     SetValue(33751 /*[Heizung\208H  1 Byte  ?????????]*/ , $Byte[7] );
}


//209H  1 Byte   Flamme EIN / AUS Wert 00 = Flamme AUS, Wert 01 = Flamme EIN
if (($Byte[4] == 2) and ($Byte[5] == 9))
{
     SetValue(12178 /*[Heizung\209H  1 Byte   Flamme EIN / AUS]*/ , $Byte[7] );
}


//20AH  1 Byte   Heizungspumpe  EIN / AUS
if (($Byte[4] == 2) and ($Byte[5] == 10))
{
     SetValue(25173 /*[Heizung\20AH  1 Byte   Heizungspumpe  EIN / AUS]*/ , $Byte[7] );
}

//20BH  1 Byte   Speicherladung  EIN / AUS
if (($Byte[4] == 2) and ($Byte[5] == 11))
{
     SetValue(31081 /*[Heizung\20BH  1 Byte   Speicherladung  EIN / AUS]*/ , $Byte[7] );
}


//20CH  1 Byte   Sommer / Winterbetrieb Wert=00 Sommer Wert 01=Winter
if (($Byte[4] == 2) and ($Byte[5] == 12))
{
     SetValue(30129 /*[Heizung\20CH  1 Byte   Sommer / Winterbetrieb]*/ , $Byte[7] );
}


//20DH  1Byte  ?????????
if (($Byte[4] == 2) and ($Byte[5] == 12))
{
     SetValue(25151 /*[Heizung\20DH  1Byte  ?????????]*/ , $Byte[7] );
}


// 250H  1 Byte  ??????
if (($Byte[4] == 2) and ($Byte[5] == 80))
{
     SetValue(25327 /*[Heizung\250H  1 Byte  ??????]*/ , $Byte[7] );
}

//251H  1 Byte  ??????
if (($Byte[4] == 2) and ($Byte[5] == 81))
{
     SetValue(25327 /*[Heizung\250H  1 Byte  ??????]*/ , $Byte[7] );
}


//252H  1 Byte  Sollwert von TA270 Heizungssollwert in Halbgradschritten
if (($Byte[4] == 2) and ($Byte[5] == 82))
{
     SetValue(42213 /*[Heizung\252H  1 Byte  Sollwert von TA270 Heizungssollwert]*/ , $Byte[7]/2 );
}


//253H  1 Byte  Sollwert von TA270 Warmwassersollwert in Halbgradschritten
if (($Byte[4] == 2) and ($Byte[5] == 83))
{
     SetValue(16292 /*[Heizung\253H  1 Byte  ?????????]*/ , $Byte[7]/2 );
}

//254H  1 Byte  ?????????
if (($Byte[4] == 2) and ($Byte[5] == 84))
{
     SetValue(49660 /*[Heizung\254H  1 Byte  ?????????]*/ , $Byte[7] );
}


//255H  1 Byte  Sollwert von TA270 Warmwassersollwert in Halbgradschritten
if (($Byte[4] == 2) and ($Byte[5] == 85))
{
     SetValue(47045 /*[Heizung\255H  1 Byte  Sollwert von TA270 Warmwassersollwert]*/  , $Byte[7] /2);
}


//256H   Uhrzeit 4 HEX Werte
if (($Byte[4] == 2) and ($Byte[5] == 86))
{
     SetValue(45494 /*[Heizung\256H  2 Byte Uhrzeit 4 HEX Werte]*/  , $Byte[7] .$Byte[8].$Byte[9].$Byte[10]);
}




//*[Heizung\404H  2 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????]*/
if (($Byte[4] == 4) and ($Byte[5] == 4))
{
     SetValue(14433 /*[Heizung\404H  2 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????]*/ , $Byte[7]. $Byte[8]);
}


//405H  2 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????
if (($Byte[4] == 4) and ($Byte[5] == 5))
{
     SetValue(59154 /*[Heizung\405H  2 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????]*/ , $Byte[7]. $Byte[8]);
}


//417H  2 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????
if (($Byte[4] == 4) and ($Byte[5] == 23))
{
     SetValue(25711 /*[Heizung\417H  2 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????]*/ , $Byte[7]. $Byte[8]);
}




//440H  2 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????
if (($Byte[4] == 4) and ($Byte[5] == 64))
{
     SetValue(27241 /*[Heizung\440H  2 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????]*/ , $Byte[7]. $Byte[8]);
}




//441H  2 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????
if (($Byte[4] == 4) and ($Byte[5] == 65))
{
     SetValue(43161 /*[Heizung\441H  2 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????]*/ , $Byte[7]. $Byte[8]);
}


//4F9H  1 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????
if (($Byte[4] == 4) and ($Byte[5] == 249))
{
     SetValue(25651 /*[Heizung\4F9H  1 Byte  Mischermodul ( Fußbodenheizung ) Bedeutung ?????]*/ , $Byte[7]. $Byte[8]);
}


//256H    Uhrzeit 4 HEX Werte
//    1 Byte  = Tag 1Montag / 7 Sonntag
//    2 Byte = Stunde
//    3 Byte = Minute
//    4 Byte = ????

if (($Byte[4] == 2) and ($Byte[5] == 86))
{
     SetValue(57803 /*[Heizung\Tag]*/ , $Byte[7]);
     SetValue(52085 /*[Heizung\Stunde]*/ , $Byte[8]);
     SetValue(54474 /*[Heizung\Minute]*/ , $Byte[9]);
}

// IPS_SetScriptTimer(15815 /*[Client Socket Heizung\Neustart]*/ , 100);

?>

Da die Heizung nicht die neuste Generation ist erspare ich mir mal den Rest.
bei Interesse kein Problem.

Vielen Dank für den Tipp, habe ich heute eingebaut aber dann über die CCU2 (alle Ventile <10%) die Verknüpfung eingefügt.:slight_smile:

Viele Grüße aus dem Norden