LAN-Anbindung für BSB-Bus (Brötje, Elco Thision etc.)

Begonnen von justme1968, 29 November 2014, 19:50:40

Vorheriges Thema - Nächstes Thema

gero

Zitat von: Peppi am 06 Februar 2015, 14:55:34
Um eine Analyse des LPB zu ermöglichen, werde ich am Wochenende gleich mal ein paar Ausgaben des LPB mit Änderungen an der Heizung mitschneiden...
Gibt es da wichtige Sachen, die man beim Monitoren machen sollte (Raumtemperatursteller, Wasserbereitung an/aus, Steilheit +/-), um die Analyse der Daten zu verbessern?

Erstmal wäre es gut zu wissen, ob du ein Abruf oder Ändern der Daten am Bedienteil überhaupt auf dem Bus mitbekommst.
Beim BSB läuft die Kommunikation wie folgt:
Wählt man im Bedienteil eine bestimmte Zeile aus, wird eine Abfage (TYPE_QUR) an die Heizung geschickt und darauf antwortet die Heizung mit einer Antwort (TYPE_ANS).
Ändert man den Wert, so schickt das Bedienteil eine Nachricht mit TYPE_SET, die von der Heizung mit TYPE_ACK quittiert wird (oder mit einem Fehler).

Schneide einfach mal ein paar Aktionen mit und protokollier sie genau. Ich habe dazu ein Video von meinen Aktionen am Bedienteil mit dem Handy mitgeschnitten und nachträglich das Logfile kommentiert.

Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

frank

ZitatInzwischen habe ich eine Simulation eines Raumtemperturfühlers über fhem realisiert. Zusätzlich wird die Betriebsart der Heizung zwischen "Komfort" und "Reduziert" hin- und hergeschaltet, je nachdem ob eine Wärmeanforderung existiert oder nicht.
bei mir habe ich festgestellt, dass beim betrieb mit raumtemperatur an heizung senden, die broetje-therme eine fehlererkennung eingebaut hat. sobald bei mir die gesendeten temperaturen für ca 10-20 minuten ausbleiben, schaltet sie wieder in den modus ohne raumtemperatur (anzeige 99). wenn sie wieder temperaturen empfängt wird auch wieder die raumtemperatur ausgegeben.

wenn du die solltemperatur (komfort) nicht unter 15 grad setzen möchtest, reicht es auch die solltemperatur zu verändern. die komforttemperatur lässt sich aber nur bis 15 grad absenken. danach gibt es eine fehlermeldung. für tiefere solltemperaturen muss dann die reduzierte temperatur zum regeln genutzt werden. ebenfalls gibt es eine fehlermeldung, wenn du versuchst die komforttemperatur unter die reduzierte temperatur zu setzen. das ist aber ein guter test um den empfang der fehlermeldungen von der heizung zu testen.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Peppi

Anbei ein kleiner Versuch mit dem Loggen meiner Heizung...
Ich habe die Änderungen im Betrieb kommentiert...
Am Anfang läuft die Heizung im normalen Modus (Brenner an, Kesselerwärmung auf Solltemperatur)
Vielleicht gibt es ja beim LPB Bus Parallelen zum BSB?
Ich habe einmal den Sollwertregler auf max und auf min und zurück gestellt, sowie im Menü 28 die Mindesttemperatur auf 11° gestellt

Gruß
Peppi

gero

Zitat von: frank am 06 Februar 2015, 18:20:57
bei mir habe ich festgestellt, dass beim betrieb mit raumtemperatur an heizung senden, die broetje-therme eine fehlererkennung eingebaut hat. sobald bei mir die gesendeten temperaturen für ca 10-20 minuten ausbleiben, schaltet sie wieder in den modus ohne raumtemperatur (anzeige 99). wenn sie wieder temperaturen empfängt wird auch wieder die raumtemperatur ausgegeben.
Das ist bei meiner ELCO auch so. Nach etwas über 10 Minuten wird die Raumtemperatur wieder auf unbekannt gesetzt, falls kein neuer Wert gesendet wurde.

Zitat von: frank am 06 Februar 2015, 18:20:57
wenn du die solltemperatur (komfort) nicht unter 15 grad setzen möchtest, reicht es auch die solltemperatur zu verändern. die komforttemperatur lässt sich aber nur bis 15 grad absenken. danach gibt es eine fehlermeldung. für tiefere solltemperaturen muss dann die reduzierte temperatur zum regeln genutzt werden. ebenfalls gibt es eine fehlermeldung, wenn du versuchst die komforttemperatur unter die reduzierte temperatur zu setzen. das ist aber ein guter test um den empfang der fehlermeldungen von der heizung zu testen.
Ich versuche mal meine Steuerung in Wort zu fassen:
Fast alle Räume werden über MAX!-Komponenten mit dem PID20 Modul gesteuert.
Alle 5 Minuten läuft eine Schleife über alle PID20 Regler im state processing.
- Falls einer dieser Regler eine Ventilöffnung von mehr als 10% hat, besteht eine Wärmeanforderung
- Von allen Reglern im state processing wird die höchste Solltemperatur ermittelt (TSmax)
- (jetzt wird es kompliziert) Von allen Reglern im State processing wird die größte Abweichung der gemessenen Temperatur und der Solltemperatur dieses Reglers ermittelt (Tdiff).
  Wobei die gemessene Temperatur eine Korrektur erfährt, die von der Ventilöffnung abhängig ist.
  Ich versuche quasi zu berechnen, wie hoch die Temperatur bei 100% Ventilöffnung wäre. Dadurch brauche ich keinen Referenzraum mit 100%iger Ventilöffnung.
Die so ermittelte Differenz ergibt die virtuelle Raumtemperatur: TR = TSmax + Tdiff
TSmax wrd anschließend als Komfortsollwert und TR al Raumtemperatur gesetzt.
Je nach bestehender Wärmeanforderung schalte ich wie schon erwähnt die Betriebsart um.

Hier noch mal ein Stück Code (der wahrscheinlich einfacher zu verstehen ist als meine Erklärungen:

sub ElcoCalcRT($$){
  my ($tdev,$pidlist) = @_;
  my $hash = $defs{$tdev};
 
  my $min_measured=25.0;
  my $max_desired=17.0;
  my $request=0;
  my $diff=100;
 
  my $DELTA_T = 1.0;
  my $ROOM_W = 50;
 
 
  foreach(split(/,/,$pidlist)){
    my $dev=$_;
    my $desired=ReadingsVal($dev,"desired",0);
    my $measured=ReadingsVal($dev,"measured",0);
    my $state=ReadingsVal($dev,"state",0);
    my $actuation=ReadingsVal($dev,"actuation",0);
   
    Log3 NULL,1,"ElcoCalcRT - dev: $dev measured: $measured desired $desired state: $state actuation: $actuation";
   
    if($state =~ /processing/){
      # nur RÄume mit einer Minimalen Anforderung zählen
      if($actuation > 10){
        $request=1;
      }
      # von diesen Räumen wird der maximale Sollwert ermittelt
      if($desired > $max_desired){
      $max_desired=$desired;
      }
      # die größte Abweichung nach unten wird ermittelt
      # die Ventilstellung wird anteilig durch DELTA_T berücksichtigt.
      if($measured - $desired < $diff){
      $diff = $measured + $DELTA_T * (100.0 - $actuation)/100.0 - $desired;
      }
    }
  }
  # Berechnung der virtuellen Raumtemperatur
  $min_measured = $max_desired + $diff;
  Log3 NULL,1,"ElcoCalcRT - heating request: $request";
  Log3 NULL,1,"ElcoCalcRT - max_desired: $max_desired min_measured: $min_measured";
   
  readingsBeginUpdate($hash);
  readingsBulkUpdate($hash,"max_desired",$max_desired);
  readingsBulkUpdate($hash,"min_measured",$min_measured);
  readingsBulkUpdate($hash,"request",$request);
  readingsEndUpdate($hash, 1);
 
  my $mode=ReadingsVal("ELCOTEMP","Betriebsart",1);
  Log3 NULL,1,"ElcoCalcRT - current mode: $mode";
  # wenn nicht im automatik modus
  if($mode != 1){
    #fhem("set ELCOTEMP Raumeinfluss $ROOM_W");
    Log3 NULL,1,"ElcoCalcRT - setting temperatures";
    fhem("set ELCOTEMP Komfortsollwert $max_desired");
    fhem("set ELCOTEMP Raumtemperatur $min_measured");
    if($request == 1){
      # wenn nicht komfort
      if($mode!=3){
    Log3 NULL,1,"ElcoCalcRT - switching to Komfort Mode";
        fhem("set ELCOTEMP Betriebsart Komfort");
      }
    }else{
      # wenn nicht reduziert
      if($mode!=2){
    Log3 NULL,1,"ElcoCalcRT - switching to Reduziert Mode";
        fhem("set ELCOTEMP Betriebsart Reduziert");
      } 
    }
  }
}



Die Reduzierttemperaturen meiner Wochenprofile in der Wohnung liegen bei mindestens 16°C. Die Reduzierttemperatur in der Heizung ist auf 15°C eingestellt. D.h. für mich reicht die Steuerung über die Komforttemperatur vollkommen aus.

Gruß,
Gero







Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

gero

Zitat von: Peppi am 06 Februar 2015, 20:21:30
Anbei ein kleiner Versuch mit dem Loggen meiner Heizung...
Ich habe die Änderungen im Betrieb kommentiert...
Am Anfang läuft die Heizung im normalen Modus (Brenner an, Kesselerwärmung auf Solltemperatur)
Vielleicht gibt es ja beim LPB Bus Parallelen zum BSB?
Ich habe einmal den Sollwertregler auf max und auf min und zurück gestellt, sowie im Menü 28 die Mindesttemperatur auf 11° gestellt

Auf den ersten Blick kann ich aus den Daten noch nichts erkennen. Ich werde sie mir die nächsten Tage nocheinmal genauer ansehen.
Hast du mal versucht einen Wert mittels BSB-Telegramm abzufragen? (z.B. http://<ip>/8000)
Evtl. versteht die Heizung auch auf der LPB Schnittstelle das BSB Protokoll.
(Du mußt dazu natürlich den Monitor-Modus wieder deaktivieren.)
Sobald ich genügend Zeit habe, werde ich meinen BSB-Adapter mal an den LPB Anschluß meiner Heizung klemmen. Vielleicht werden wir dann schlauer.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Peppi

#50
Ich habe noch ein wenig getestet und folgendes festgestellt:

Bei mir fangen die Telegramme mit 78 an...
Danach kommt entweder: 10, 11, 12, 13 oder 15
12er Telegramme scheinen von der Heizungssteuerung zu kommen (Sobald ich an der Regelung - Bsp. Solltemperatur - etwas einstelle, kommt ein 78 12 ... Telegramm
15er Telegramme kommen hinzu, wenn der Brenner läuft, wenn ich die Betriebsart des Heizungsreglers umstelle (Automatikbetrieb, Dauerbetrieb)

Ich hänge noch einmal ein paar Telegramme an... (ca. 21:50 - 22:30)

Gruß
Peppi


gero

Das zweite Byte scheint mir ein Längenbyte zu sein (die 78 wird nicht mitgezählt.

Die letzten beiden Bytes sind eine Art Prüfsumme (aber keine CRC wie beim BSB-Protokoll). Iach habe noch nicht herausgefunden, wie sie genau funktioniert. Aber wenn in einem Telegramm sich ein Wert erhöht, so ist ide Prüfsumme auch um eins höher. Nur der Startwert scheint nicht fix zu sein.


Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Peppi

Das mit dem Längenbyte klingt logisch...
Was mir noch aufgefallen ist, dass bei den zyklischen 78 13 FF ... Telegrammen das 16byte immer 3 Werte Unterschied zum 20. Byte hat. Darüber hinaus werden die Werte auch kleiner (ab Zeile 2815135) als 13 (19°?), wenn die Heizung in die Nachtabsenkung geht. Sonst schwanken sie zwischen 13 und 4F (19° und 79°?)...

Gruß
Peppi

Peppi

... irgendwie fällt mir die Auswertung sehr schwer...
Gibt es evtl. einen Trick, wie man an das Auswerten die Telegramme strukturiert herangehen kann?

Peppi

gero

Zitat von: Peppi am 18 Februar 2015, 10:10:10
... irgendwie fällt mir die Auswertung sehr schwer...
Gibt es evtl. einen Trick, wie man an das Auswerten die Telegramme strukturiert herangehen kann?

Peppi
Entschuldige bitte, dass ich noch keine Zeit gefunden habe, die LPB Telegramme weiter zu untersuchen.

Wichtig für eine Decodierung ist die eindeutige Zuordnung von Aktionen am Bedienteil der Heizung zu einzelnen Telegrammen.
Spontan gesendete Telegramme sind nur schwer zu decodieren.
Beim BSB war das relativ einfach:
Sobald man am Bedienteil sich einen Wert anzeigen ließ (z.B. Kessestatus), sah man für kurze Zeit eine Sanduhr.
Auf dem BSB hat man zu dieser Zeit eine Nachricht vom Bedienteil an die Heizung unmittelbar gefolgt von einer Antwort der Heizung an das Bedienteil gesehen.
Der angezeigte Wert mußte also in dieser Antwort codiert sein.

Falls so etwas für den LPB gelingt, sehe ich Chancen. Anderenfalls wird es sehr schwer.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

gero

Es gibt wohl inzwischen auch jemanden hier im Forum, der ein OZW672 besitzt und einsetzt:
http://forum.fhem.de/index.php/topic,32866.msg252542.html#msg252542

Mit diesem Gerät kann man gezielt alle Werte über LPB oder BSB abfragen und setzten. Wenn man jetzt noch gleichzeitig den LPB monitoren würde...

Gruß,
Gero

Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Peppi

Zitat von: gero am 18 Februar 2015, 11:29:27
Beim BSB war das relativ einfach:
Sobald man am Bedienteil sich einen Wert anzeigen ließ (z.B. Kessestatus), sah man für kurze Zeit eine Sanduhr.
Auf dem BSB hat man zu dieser Zeit eine Nachricht vom Bedienteil an die Heizung unmittelbar gefolgt von einer Antwort der Heizung an das Bedienteil gesehen.

Hallo gero,

könnte man evtl. beide Ausgaben gleichzeitig loggen?
Es gibt ja bei den meisten Kessel mit ISR Steuerung prinzipiell beide Busanschlüsse... Vielleicht wäre das ja der Ansatz...

gruß
Peppi

gero

Zitat von: Peppi am 18 Februar 2015, 15:45:59
Hallo gero,

könnte man evtl. beide Ausgaben gleichzeitig loggen?
Es gibt ja bei den meisten Kessel mit ISR Steuerung prinzipiell beide Busanschlüsse... Vielleicht wäre das ja der Ansatz...

gruß
Peppi
Dazu müsste ich mir einen zweiten Adapter zusammenbasteln und dafür fehlen mir gerade ein paar Bauteile.
Aber prinzipiell ist das eine gute Idee.
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Peppi

Soll ich Dir deinen Adapter noch einmal zuschicken?  :)

gero

Zitat von: Peppi am 18 Februar 2015, 16:25:04
Soll ich Dir deinen Adapter noch einmal zuschicken?  :)

Warte erstmal ab. Ich will erst etwas ausprobieren.

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor