openDTU mit Hoymiles HMS-2000-4T Mikrowechselrichter im Inselbetrieb

Begonnen von holle75, 23 Juni 2025, 10:21:29

Vorheriges Thema - Nächstes Thema

holle75

Ist doch hübsch. Kannst du da irgendwas schalten? Falls man es bräuchte ....

Beta-User

Mein Stand: https://forum.fhem.de/index.php?msg=1339408

In dem thread gibt es vermutlich auch diverse Hinweise bzgl. Benennung der Readings und der "eocr"-Thematik (event-on-.*).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

DasQ

#17
Wüsst nicht was ich da schalten soll.
Falls du auf ne nulleinspeisung anspielst, das geht per Zeroexport PythonScript viel einfacher.

Brauch ich aber nimmer. Bei mir nuckelt der Multiplus den ,,ganzen" überschuß weg.

Und schalten kannste natürlich auch ... per set

Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

holle75

Zitat von: Beta-User am 15 Juli 2025, 08:47:51In dem thread gibt es vermutlich auch diverse Hinweise bzgl. Benennung der Readings und der "eocr"-Thematik (event-on-.*).

hab da mal kurz reingeschaut, bekomme aber noch immer nicht die Verbindung "eocr-Thematik"/"gruselig" mit meinem Erguss hin. Oder was "eocr" ist. In dem Link gehts um JSON (an dieser Stelle). openDTU "kann" mWn kein JSON mit MQTT. Aber wohl über die API

Zitat von: DasQ am 15 Juli 2025, 08:57:39Wüsst nicht was ich da schalten soll.

Zb das, was ich bei mir schalte. Aber ja, wenn man nicht schalten will, ergibt sich die Problematik wieso ich den Thread eröffnet habe nicht.

DasQ

#19
so hab mal im ersten schuss das bei mir jetzt so realisiert.
die erste OpenDTU (ich hab zwei)

defmod OpenDTU_9823408 MQTT2_DEVICE OpenDTU_9823408
attr OpenDTU_9823408 DbLogExclude .*
attr OpenDTU_9823408 bridgeRegexp solar/([[:xdigit:]]+)/.*:.*  "solar_$1"
attr OpenDTU_9823408 devStateIcon online:10px-kreis-gruen offline:10px-kreis-rot
attr OpenDTU_9823408 icon solar
attr OpenDTU_9823408 model hoymiles_opendtu_hub_bridge
attr OpenDTU_9823408 readingList solar/dtu/uptime:.* uptime\
  solar/dtu/status:.* status\
  solar/dtu/ip:.* ip\
  solar/dtu/rssi:.' rssi\
  solar/dtu/hostname:.* hostname\
  solar/ac/power:.* power\
  solar/ac/yieldtotal:.* yieldtotal\
  solar/ac/yieldday:.* yieldday\
  solar/ac/is_valid:.* is_valid\
  solar/dc/power:.* powerdc\
  solar/dc/irradiation:.* irradiation\
  solar/dc/is_valid:.* is_validdc\
OpenDTU_9823408:solar/dtu/heap/size:.* size\
OpenDTU_9823408:solar/dtu/heap/free:.* free\
OpenDTU_9823408:solar/dtu/heap/minfree:.* minfree\
OpenDTU_9823408:solar/dtu/heap/maxalloc:.* maxalloc
attr OpenDTU_9823408 room Strom
attr OpenDTU_9823408 stateFormat <a href="http://ip" target="_blank">\
status\
</a>\
Leistung AC power W<br>\
Ertrag/Tag yieldday Wh

setstate OpenDTU_9823408 <a href="http://192.168.1.115" target="_blank">\
online\
</a>\
Leistung AC 400.5 W<br>\
Ertrag/Tag 1965 Wh
setstate OpenDTU_9823408 2025-07-15 06:56:06 IODev venus
setstate OpenDTU_9823408 2025-07-11 14:17:12 attrTemplateVersion 20240513
setstate OpenDTU_9823408 2025-07-15 11:15:11 free 167296
setstate OpenDTU_9823408 2025-07-15 11:15:11 hostname OpenDTU-95E4B0
setstate OpenDTU_9823408 2025-07-15 11:15:11 ip 192.168.1.115
setstate OpenDTU_9823408 2025-07-15 11:15:12 irradiation 16.628
setstate OpenDTU_9823408 2025-07-15 11:15:12 is_valid 1
setstate OpenDTU_9823408 2025-07-15 11:15:12 is_validdc 1
setstate OpenDTU_9823408 2025-07-15 11:15:11 maxalloc 94196
setstate OpenDTU_9823408 2025-07-15 11:15:11 minfree 138524
setstate OpenDTU_9823408 2025-07-15 11:15:12 power 400.5
setstate OpenDTU_9823408 2025-07-15 11:15:12 powerdc 421.5
setstate OpenDTU_9823408 2025-07-15 11:15:11 size 282372
setstate OpenDTU_9823408 2025-07-15 09:48:10 status online
setstate OpenDTU_9823408 2025-07-15 11:15:11 uptime 85988
setstate OpenDTU_9823408 2025-07-15 11:15:12 yieldday 1965
setstate OpenDTU_9823408 2025-07-15 11:15:12 yieldtotal 2895.808

exemplarisch ein Hoymiles von mir
defmod 1500Terrasse MQTT2_DEVICE solar_116183138979
attr 1500Terrasse DbLogExclude .*
attr 1500Terrasse devStateIcon {FHEM::attrT_OpenDTU_Utils::devStateIcon($name)}
attr 1500Terrasse icon measure_photovoltaic_inst
attr 1500Terrasse model hoymiles_opendtu_microinverter
attr 1500Terrasse readingList solar/116183138979/name:.* name\
  solar/116183138979/status/reachable:.* reachable\
  solar/116183138979/status/producing:.* producing\
  solar/116183138979/status/last_update:.* last_update\
  solar/116183138979/device/bootloaderversion:.* bootloaderversion\
  solar/116183138979/device/fwbuildversion:.* fwbuildversion\
  solar/116183138979/device/fwbuilddatetime:.* fwbuilddatetime\
  solar/116183138979/device/hwpartnumber:.* hwpartnumber\
  solar/116183138979/device/hwversion:.* hwversion\
  solar/116183138979/status/limit_relative:.* limit_relative\
  solar/116183138979/status/limit_absolute:.* limit_absolute\
  solar/116183138979/0/powerdc:.* powerdc\
  solar/116183138979/0/yieldday:.* yieldday0\
  solar/116183138979/0/yieldtotal:.* yieldtotal0\
  solar/116183138979/0/voltage:.* voltage\
  solar/116183138979/0/current:.* current\
  solar/116183138979/0/power:.* power\
  solar/116183138979/0/frequency:.* frequency\
  solar/116183138979/0/temperature:.* temperature\
  solar/116183138979/0/powerfactor:.* powerfactor\
  solar/116183138979/0/efficiency:.* efficiency\
  solar/116183138979/0/reactivepower:.* reactivepower\
  solar/116183138979/1/voltage:.* voltage1\
  solar/116183138979/1/current:.* current1\
  solar/116183138979/1/power:.* power1\
  solar/116183138979/1/irradiation:.* irradiation1\
  solar/116183138979/1/yieldday:.* yieldday1\
  solar/116183138979/1/yieldtotal:.* yieldtotal1\
  solar/116183138979/1/name:.* name1\
  solar/116183138979/2/voltage:.* voltage2\
  solar/116183138979/2/current:.* current2\
  solar/116183138979/2/power:.* power2\
  solar/116183138979/2/irradiation:.* irradiation2\
  solar/116183138979/2/yieldday:.* yieldday2\
  solar/116183138979/2/yieldtotal:.* yieldtotal2\
  solar/116183138979/2/name:.* name2\
  solar/116183138979/3/voltage:.* voltage3\
  solar/116183138979/3/current:.* current3\
  solar/116183138979/3/power:.* power3\
  solar/116183138979/3/irradiation:.* irradiation3\
  solar/116183138979/3/yieldday:.* yieldday3\
  solar/116183138979/3/yieldtotal:.* yieldtotal3\
  solar/116183138979/3/name:.* name3\
  solar/116183138979/4/voltage:.* voltage4\
  solar/116183138979/4/current:.* current4\
  solar/116183138979/4/power:.* power4\
  solar/116183138979/4/irradiation:.* irradiation4\
  solar/116183138979/4/yieldday:.* yieldday4\
  solar/116183138979/4/yieldtotal:.* yieldtotal4\
  solar/116183138979/4/name:.* name4\
solar/116183138979/radio/tx_request:.* tx_request\
solar/116183138979/radio/tx_re_request:.* tx_re_request\
solar/116183138979/radio/rx_success:.* rx_success\
solar/116183138979/radio/rx_fail_nothing:.* rx_fail_nothing\
solar/116183138979/radio/rx_fail_partial:.* rx_fail_partial\
solar/116183138979/radio/rx_fail_corrupt:.* rx_fail_corrupt\
solar/116183138979/radio/rssi:.* rssi
attr 1500Terrasse room Strom
attr 1500Terrasse setList on:noArg solar/116183138979/cmd/power 1\
  off:noArg solar/116183138979/cmd/power 0\
  reboot:noArg solar/116183138979/cmd/restart 1\
  limit_non_persistent_abs solar/116183138979/cmd/limit_persistent_absolute $EVTPART1\
  limit_non_persistent_pct:slider,2,1,100 solar/116183138979/cmd/limit_persistent_relative $EVTPART1\
  limit_persistent_abs solar/116183138979/cmd/limit_nonpersistent_absolute $EVTPART1\
  limit_persistent_pct:slider,2,1,100 solar/116183138979/cmd/limit_nonpersistent_relative $EVTPART1
attr 1500Terrasse setStateList on off
attr 1500Terrasse webCmd :

setstate 1500Terrasse set_on
setstate 1500Terrasse 2025-07-15 06:56:06 IODev MQTT2_Broker
setstate 1500Terrasse 2025-07-11 14:18:47 associatedWith OpenDTU_9823408
setstate 1500Terrasse 2025-07-11 14:18:44 attrTemplateVersion 20240513
setstate 1500Terrasse 2025-07-15 11:13:11 bootloaderversion 100
setstate 1500Terrasse 2025-07-15 11:13:11 current 0.29
setstate 1500Terrasse 2025-07-15 11:13:11 current1 0.75
setstate 1500Terrasse 2025-07-15 11:13:11 current2 0.01
setstate 1500Terrasse 2025-07-15 11:13:11 current3 0.82
setstate 1500Terrasse 2025-07-15 11:13:11 current4 0.01
setstate 1500Terrasse 2025-07-15 11:13:11 efficiency 94.889
setstate 1500Terrasse 2025-07-15 11:13:11 frequency 49.99
setstate 1500Terrasse 2025-07-15 11:13:11 fwbuilddatetime 2021-12-24 18:21:00
setstate 1500Terrasse 2025-07-15 11:13:11 fwbuildversion 10018
setstate 1500Terrasse 2025-07-15 11:13:11 hwpartnumber 269627393
setstate 1500Terrasse 2025-07-15 11:13:11 hwversion 01.10
setstate 1500Terrasse 2025-07-15 11:13:11 irradiation1 8.444
setstate 1500Terrasse 2025-07-15 11:13:11 irradiation2 0.000
setstate 1500Terrasse 2025-07-15 11:13:11 irradiation3 9.235
setstate 1500Terrasse 2025-07-15 11:13:11 irradiation4 0.000
setstate 1500Terrasse 2025-07-15 11:13:11 last_update 1752570781
setstate 1500Terrasse 2025-07-15 11:13:11 limit_absolute 1500.00
setstate 1500Terrasse 2025-07-15 11:13:11 limit_relative 100.00
setstate 1500Terrasse 2025-07-15 11:13:11 name HM15Terrasse
setstate 1500Terrasse 2025-07-15 11:13:11 name1 1_1500_Ter
setstate 1500Terrasse 2025-07-15 11:13:11 name2
setstate 1500Terrasse 2025-07-15 11:13:11 name3 3_1500_Ter
setstate 1500Terrasse 2025-07-15 11:13:11 name4
setstate 1500Terrasse 2025-07-15 11:13:11 power 68.7
setstate 1500Terrasse 2025-07-15 11:13:11 power1 34.2
setstate 1500Terrasse 2025-07-15 11:13:11 power2 0.4
setstate 1500Terrasse 2025-07-15 11:13:11 power3 37.4
setstate 1500Terrasse 2025-07-15 11:13:11 power4 0.4
setstate 1500Terrasse 2025-07-15 11:13:11 powerdc 72.4
setstate 1500Terrasse 2025-07-15 11:13:11 powerfactor 0.951
setstate 1500Terrasse 2025-07-15 11:13:11 producing 1
setstate 1500Terrasse 2025-07-15 11:13:11 reachable 1
setstate 1500Terrasse 2025-07-15 11:13:11 reactivepower 22.5
setstate 1500Terrasse 2025-07-15 11:13:11 rssi -80
setstate 1500Terrasse 2025-07-15 11:13:11 rx_fail_corrupt 0
setstate 1500Terrasse 2025-07-15 11:13:11 rx_fail_nothing 682
setstate 1500Terrasse 2025-07-15 11:13:11 rx_fail_partial 0
setstate 1500Terrasse 2025-07-15 11:13:11 rx_success 448
setstate 1500Terrasse 2025-07-15 10:53:42 state set_on
setstate 1500Terrasse 2025-07-15 11:13:11 temperature 23.7
setstate 1500Terrasse 2025-07-15 11:13:11 tx_re_request 71
setstate 1500Terrasse 2025-07-15 11:13:11 tx_request 1130
setstate 1500Terrasse 2025-07-15 11:13:11 voltage 240.2
setstate 1500Terrasse 2025-07-15 11:13:11 voltage1 45.6
setstate 1500Terrasse 2025-07-15 11:13:11 voltage2 45.6
setstate 1500Terrasse 2025-07-15 11:13:11 voltage3 45.9
setstate 1500Terrasse 2025-07-15 11:13:11 voltage4 45.9
setstate 1500Terrasse 2025-07-15 10:53:12 yieldday 1826
setstate 1500Terrasse 2025-07-15 11:13:11 yieldday0 386
setstate 1500Terrasse 2025-07-15 11:13:11 yieldday1 189
setstate 1500Terrasse 2025-07-15 11:13:11 yieldday2 1
setstate 1500Terrasse 2025-07-15 11:13:11 yieldday3 195
setstate 1500Terrasse 2025-07-15 11:13:11 yieldday4 1
setstate 1500Terrasse 2025-07-15 10:53:12 yieldtotal 2895.669
setstate 1500Terrasse 2025-07-15 11:13:11 yieldtotal0 1585.959
setstate 1500Terrasse 2025-07-15 11:13:11 yieldtotal1 449.798
setstate 1500Terrasse 2025-07-15 11:13:11 yieldtotal2 334.347
setstate 1500Terrasse 2025-07-15 11:13:11 yieldtotal3 477.891
setstate 1500Terrasse 2025-07-15 11:13:11 yieldtotal4 323.923

die dazugehörige 99_attrT_OpenDTU_Utils.pm

##############################################
# $Id: 99_attrT_Ahoy_Utils.pm 28254 2023-12-05 15:03:19Z Beta-User $
#

package FHEM::attrT_OpenDTU_Utils;    ## no critic 'Package declaration'

use strict;
use warnings;

use Color;
use GPUtils qw(GP_Import);

## Import der FHEM Funktionen
#-- Run before package compilation
BEGIN {

    # Import from main context
    GP_Import(
        qw(
          FW_makeImage
          AttrVal
          InternalVal
          ReadingsVal
          ReadingsNum
          ReadingsAge
          isday
          defs
          )
    );
}

sub main::attrT_OpenDTU_Utils_Initialize { goto &Initialize }

# initialize ##################################################################
sub Initialize {
  my $hash = shift;
  return;
}

# Enter you functions below _this_ line.

sub devStateIcon {
  my $devname = shift // return;
  my $panels  = shift // 4;
  my $colors  = shift // 0;

  return if !defined $defs{$devname};

  my $col = substr(Color::pahColor(-10,50,70,ReadingsNum($devname,'temperature',0),$colors),0,6);
  my $ret = FW_makeImage("sani_solar_temp\@$col",'file_unknown@grey');
  $ret .= ' ';
  $ret .= ReadingsNum($devname,'temperature',0,1);
  $ret .= ' °C<br>';

  my $avail = ReadingsNum($devname,'reachable',0);
  $avail = $avail > 0 ? '10px-kreis-gruen' : isday() ? '10px-kreis-rot' :'10px-kreis-gelb';
  $ret .= FW_makeImage($avail, 'edit_settings');
  $ret .= ' ';

  if ( $panels > 1 ) {
    $ret .= ReadingsNum($devname,'power',0);
    $ret .= ' W / ';
    $ret .= ReadingsNum($devname,'yieldday0',0);
    $ret .= ' Wh';

    my $total = ReadingsNum($devname,'yieldtotal0',0,1);
    if ( $total > 0 ) {
      $ret .= ' / ';
      $ret .= $total;
      $ret .= ' kWh';
    }

    for (1..$panels) {
      $ret .= '<br>';
      $col = substr(Color::pahColor(0,50,100,ReadingsNum($devname,"irradiation$_",0),$colors),0,6);
      $ret .= FW_makeImage("solar\@$col",'file_unknown@grey');
      $ret .= ' ';
      $ret .= ReadingsNum($devname,"power$_",0);
      $ret .= ' W / ';
      $ret .= ReadingsNum($devname,"yieldday$_",0);
      $ret .= ' Wh';
      $total = ReadingsNum($devname,"yieldtotal$_",0,1);
      if ( $total > 0 ) {
        $ret .= ' / ';
        $ret .= $total;
        $ret .= ' kWh';
      }
    }
  } else {
    $col = substr(Color::pahColor(0,50,100,ReadingsNum($devname,"irradiation1",0),$colors),0,6);
    $ret .= FW_makeImage("solar\@$col",'file_unknown@grey');
    $ret .= ' ';
    $ret .= ReadingsNum($devname,'power',0);
    $ret .= ' W / ';
    $ret .= ReadingsNum($devname,'yieldday',0);
    $ret .= ' Wh';

    my $total = ReadingsNum($devname,'yieldtotal',0,1);
    if ( $total > 0 ) {
      $ret .= ' / ';
      $ret .= $total;
      $ret .= ' kWh';
    }
  }
  return qq(<div><p style="text-align:right">$ret</p></div>);
}

den "yieldday" und "yieldtotal" hab ich händisch in die readings eingebaut, da wäre womöglich ein bessere greifendes bridge regex ganz gut. in der "99_attrT_Ahoy_Utils.pm" von dir Beta müsste man lediglich einige variablen von großbuchstaben auf klein ändern. dann könnte (d)eine datei bleiben.

und ach ja, auf den KI müll von google nicht hören. Das mit alles in einem payload packet kann openDTU eben nicht. hat der openDTU künstler seine eigene denkweise ... von der er nicht abrückt. wäre aber ungemein dem netzwerktraffik dienlich
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

holle75

Kurz mal OT. Meiner läuft ja erst seit 2 Tagen:

Insel. Eben lief die Batt langsam voll und meine Anlage hat brav über die Frequenz den Hoymiles runtergeregelt. Das ging gefühlt eine Stunde gut (auch mal wieder rauf bei Verbrauch), bis der Hoymiles irgendwann 0 geliefert hat. Top, dachte ich, funktioniert ja wie gewünscht .... nur hat er sich bei Leerung der Batt und wieder 50Hz einfach nicht wieder "eingeschaltet". Und ich kann ihn auch nicht über Neustart gerade davon überzeugen die Arbeit wieder aufzunehmen.

Ist mir irgendetwas Grundlegendes entgangen?

DasQ

Was ist deine Anlage?
Hoymiles allein sind nicht Schwarzstartfähig.

Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

holle75

Die Anlage kommt von Studer.
Seit heute generiert der Mikro wieder Strom. Hatte gestern alles probiert (AC/DC abgeklemmt, etc.) um das Ding wieder zum Starten zu bringen. Brauchte wohl die Nacht (oder welche Pause auch immer). Ich vermute, es liegt an den Frequenzsettings. Im Moment ist max +2Hz Frequenzverschiebung eingestellt. Ich könnte mir vorstellen, dass der HMS ab 51,5Hz komplett abschaltet (NA-Schutz) und dann eben "die Nacht" braucht, bis er überhaupt wieder angeht.

Ich hatte gehofft, dass er auch schon bei wieder normalen 50Hz loslegt. Probiere gerade als max Setting Frequenz 51,5 Hz. Mal schauen, was jetzt passiert. Als nächsten Schritt 51,4. Möchte nur sichergehen, dass Komplettdrosselung und danach aber wieder Produktion funktioniert. Weiss nicht, wo der HMS bei 51,4 Hz steht.

DasQ

Du hättest ihn womöglich komplett stromlos machen müssen (also Panel weg)

Und Jup ich mein auch was gelesen zu haben das die Reglung über Frequenz recht zickig ist. ich mein auch mal was gesehen zu haben, das der bei 51,5hz abschaltet und dann den Rest vom Tag ausbleibt. Aber da war auch der Sinus nicht ganz sauber realisiert.

Die Daten findest du aber ganz sicher im gridcode vom wechselrichter.
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

holle75

Nominal Frequency 50 Hz
Low Frequency 1 (LF1) 48 Hz
LF1 Maximum Trip Time (MTT) 2 s
High Frequency 1 (HF1) 51 Hz
HF1 Maximum Trip time (MTT) 2 s
Low Frequency 2 (LF2) 47,5 Hz
LF2 Maximum Trip Time (MTT) 0,5 s
High Frequency 2 (HF2) 52 Hz
HF2 Maximum Trip time (MTT) 0,5 s

sagt mir leider nichts, wie er sich DANACH verhält. "Trip time" könnte man auch als Abschaltung interpretieren. Die dann auch nach 2 Sekunden bei 51Hz passieren müsste .... wahrscheinlich eher "Drosselung", die dann aber auch bis/ab 52Hz funktionieren sollte -> schaltet nicht ab sondern liefert wieder bei Absenkung.... was aber gestern zumindest kläglich gescheitert ist.

DasQ

Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

holle75

Du hast auch einen anderen Gridcode... nen schöneren scheint mir ;)
Aber spannend, dass bei dir der erste "LF1" tatsächlich erst bei 51,5 liegt.
Wenn man die Logik 1:1 überträgt, wäre das bei mir die 51Hz (HF1), was erklärt, warum er abschaltet ... was er gerade eben wieder gemacht hat. Nervig.
Noch schöner, dass ich gerade nicht weiss, wie ich deine VDE4105 ohne Hoymile DTU auf die Kiste bekomme. Oder das Gegebene anpassen kann. Bei mir nennt die sich XX - EN 50549-1:2019

DasQ

Magst nicht das Topic ändern? (Das geht) (z.b. openDTU mit Hoymiles HMS-2000-4T im inselbetrieb)

Und denk dran, die Updates gehen nur mit der Pro Version ... mit dem light ding gehts nicht.
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

holle75

DTU-WLite-S

geht nicht? Sicher? Habe gerade gelesen, dass du zumindest das Profil umstellen kannst.

Ich änder mal das Topic ...