Hauptmenü

Neueste Beiträge

#11
Heizungssteuerung/Raumklima / Aw: LAN-Anbindung für BSB-Bus ...
Letzter Beitrag von para-mount - 18 April 2026, 15:37:38
Elco Trigon S Plus 24 — WW-Temperatur sinkt extrem, wenn Kesselpumpe EIN

Hallo Community!

Erstmal vielen Dank an Frederik und an die anderen Beitragenden für dieses tolle Projekt. Seit Dezember 2025 läuft BSB-LAN und hat den häufigen Gang in den Keller und das ungenaue händische Protokollieren ersetzt :)

Mein Setup:
    Therme:
  • Elco TRIGON S PLUS 24 (6,6–24 kW) LMS14.063B109
  • Heizkreispumpe: Grundfos Alpha 2 25-60 180
  • versorgt die Heizkörper, lädt den WW-Sppeicher
    WW-Speicher:
  • Elco Vistron V150.RM, 150 Liter
  • WW Zirkulationsleitungen ohne Zirkulationspumpe
  • WW-Temperatur über B3 (oben), Ladung über TWW-Pumpe (Grundfos Alpha2 E)
    BSB-LAN: Angebunden über ESP32 (Olimex ESP32-EVB), Zugriff auf alle Parameter, Raumfühler über Shelly H&T

Ich habe dieses Phänomen, unten ist ein Plot aus BSB-LAN dazu:

Ist die Kesselpumpe AUS, sinkt die Temperatur im WW-Speicher durch den Wärmeverlust der Speicherwand "erwartbar"; beispielhaft um 3,5K (46,8°C auf 43,3°C) innerhalb ~7h. (Plot links)
Sobald die Kesselpumpe EIN geht, sinkt die Temperatur im WW-Speicher (8830 Trinkwassertemperatur Istwert Oben (B3)) extrem stark ab. Im Plot rechts von 43,3°C auf 32,9°C, also über 10K innerhalb von 50 Minuten.
Das resultiert in häufigem Takten, um die Temperatur im WW-Speicher wieder auf Sollwert zu bekommen; WW-Bereitung springt ca. alle 50 Minuten an unter den Bedingungen(!).
(Randnotiz: Obwohl WW-Temperatur unter Schaltdifferenz (5024) von 8K sinkt, springt Heizung hier nicht an, weil ich WW-Bereitung zeitlich limitiert habe, um das hohe Takten für WW-Bereitung zu verhindern.)

Außerdem habe ich beobachtet:
  • Die Temperatur im WW-Speicher nähert sich der Temperatur im Kessel (Parameter 8310 Kesseltemp. Istwert) zeitverzögert an, wenn Kesselpumpe EIN; sprich: ist der Kesseltemp. Istwert 45°C, verbleibt auch die Temperatur im WW-Speicher auf diesem Wert. Sinkt der Kesseltemp. Istwert (z.B. durch gestiegene Außentemperatur), sinkt auch die Temperatur im WW-Speicher etwas zeitverzögert — und umgekehrt. (Plot rechts)
  • Wenn der WW-Speicher geladen wird, wird (an manchen) Heizkörpern der Rücklauf heiß.

Ich habe selbst mit und ohne KI recherchiert, lasse die Ergebnisse hier erstmal weg, um Vermutungen nicht in eine (falsche) Richtung zu lenken.

Habt ihr eine Idee? Wenn ihr noch Infos (Anlage, Bauteile, Parameter) braucht gerne melden.

LG para

(https://i.ibb.co/k2Rx0pq5/plot-2026-04-18-BSB-LAN-WW-Ladung-normaler-Temp-Abfall-bis-Kesselpumpe-EIN-starker-Abfall.png)

#12
Sprachsteuerung / Aw: (WIP) FHEMWEB interaktiv (...
Letzter Beitrag von Beta-User - 18 April 2026, 14:46:50
Zitat von: Prof. Dr. Peter Henning am 18 April 2026, 14:06:22hoffentlich etwas mehr Zeit
Dann mal willkommen an Bord!

ZitatSo halb.
Nun ja, das hier ist "work in progress", bei mir ist es auch so, dass da auch zunächst eine eher vage Vorstellung davon da war, dass das mit dem "voicebutton" als Erbe von "FHEM-WebViewControl" (wie im Wiki noch dargestellt) doch heutzutage keine große Sache sein sollte und man damit einen einfachen RHASSPY-Satelliten generieren kann.

Alles andere kristiallisiert sich erst mir der Zeit raus, leider teils mit Irrwegen und Missverständnissen. Jetzt ist vieles zum Glück schon funktional, aber vermutlich wird es weiter so sein, dass sich die Vorgehensweise an die Kenntnis dessen anpassen wird, was denn möglich ist...
ZitatMeine Rivescript-Dateien steuere ich gerne bei, Rivescript ist bei mir ja dem Babble-Modul nachgeschaltet.
Habe vor einiger Zeit mal ein paar der Threads zu rivescript durchgesehen, aber im Moment nicht viel mehr wie die vage Vorstellung, dass man RHASSPY damit eigentlich relativ leicht dahin umbauen können sollte, dass es mit einer "sentences.ini" (mehr oder weniger mit der von Rhasspy her bekannten Syntax) rivescript aufrufen kann, um den "intent-json" zu generieren, dabei intents zu (de-) aktivieren, "slots" füllen usw..

Babble habe ich mir auch kurz angeschaut, aber irgendwie kam mir das nicht wie ein adäquater Ersatz für RHASSPY vor. Mag sein, dass ich mich da täusche. Jedenfalls: FULLY kann man ohne großes Aufhebens so konfigurieren, dass es Babble_DoIt() mit dem erkannten Text aufruft (wenn fully als Browser verwendet wird). Um den Rückweg für die response muss man sich dann natürlich selber kümmern :) .
#13
Sprachsteuerung / Aw: (WIP) FHEMWEB interaktiv (...
Letzter Beitrag von Prof. Dr. Peter Henning - 18 April 2026, 14:06:22
Zitat von: Beta-User am 18 April 2026, 12:19:12Ist das Bild jetzt auch ohne Zeichnung klarer?
So halb. Meine Rivescript-Dateien steuere ich gerne bei, Rivescript ist bei mir ja dem Babble-Modul nachgeschaltet.

Natürlich wird das Wakeword nicht von Rhasspy selbst erkannt, sondern ich nutze darauf MycroftAI Precise, selbst trainiert. Das ist allerdings jetzt auch schon ein paar Jahre alt und wird nicht weiter entwickelt. Darum habe ich ja auch nach dem Atom Echo gefragt.

Ich habe gerade ein Buchmanuskript fertig, und darum hoffentlich etwas mehr Zeit, damit kann ich dann also mal spielen.


LG

pah
#14
Sprachsteuerung / Aw: (WIP) FHEMWEB interaktiv (...
Letzter Beitrag von Beta-User - 18 April 2026, 12:19:12
Zitat von: Prof. Dr. Peter Henning am 18 April 2026, 11:57:17Was ist denn jetzt das Ziel - STT oder TTS?
Ich komme von:
Zitat von: Beta-User am 03 April 2026, 11:24:46Mein Ausgangspunkt war eigentlich, das FULLY-Modul so zu erweitern, das es mit RHASSPY in Punkto Sprachein- und -ausgabe so zusammenarbeitet, wie das vorher mit AMAD möglich gewesen war, insbesondere also interaktive Dialoge möglich sind. Wie es im Moment aussieht, braucht es dafür aber auch einiges an javascript, so dass es letztlich (fast) völlig egal ist, welchen Browser man verwendet...
Stand JETZT funktioniert das insoweit, dass die TTS- und STT-Fähigkeiten des Handys wie beschrieben genutzt werden können, wenn man als Browser Chrome verwendet.

Letztlich ist meine Vision, (aus User-Sicht betrachtet) funktional (im Moment: bis auf die "lokale" STT-Fähigkeit) einen vollwertigen Rhasspy-Satelliten zu basteln, wobei technisch am Ende* vom Rhasspy-Framework letztlich nur die intent-Erkennung und Teile des session-Managements weiter genutzt werden, den Rest erledigt RHASSPY.

Was ich letztlich loswerden will: Sämtliche Abhängigkeiten von veralteten "Bauteilen" (wie automagic oder Polly-TTS-Engine), bei denen man nie weiß, wie lange es funktioniert. Ganz am Ende* ist auch das Rhasspy-Framework in diesem Setup ohne weiteres gegen eine andere Intent-Erkennung austauschbar, mir schwebt was auf rivescript-Basis vor, ohne dass das irgendwie schon konkretere Formen angenommen hätte.

Was dazu als nächstes ansteht, wäre die Option, einen mehr oder weniger beliebigen (eigenen und lokal laufenden) TTS-Server mit der Generierung der Audios zu beaufschlagen, das ganze möglichst per direktem js-Aufruf. Da mir das aber im Moment zu viele Zwischenschritte sind, versuche ich das mit piper+Text2Speech (notgedrungen halt incl. dem Umweg über lame, damit es "modulkonform" ist).

Ist das Bild jetzt auch ohne Zeichnung klarer?

OT:
Zitat von: Prof. Dr. Peter Henning am 18 April 2026, 11:57:17Einzig unzufrieden bin ich mit der Wakeword detection, die über RHASSPY  läuft.
RHASSPY ist bzgl. Wakeword nur ein "Makler-Device", die Unzufriendenheit müßte sich demnach auf einen Rhasspy-Satelliten beziehen?
Was das Thema angeht, bin ich nach wie vor eher Nutzer klassischer Buttons am Handy, von daher habe ich eher noch Wünsche in Richtung der Bedienbarkeit/Konfigurierbarkeit der neuen f18.js-Funktionen.
#15
Sprachsteuerung / Aw: (WIP) FHEMWEB interaktiv (...
Letzter Beitrag von Prof. Dr. Peter Henning - 18 April 2026, 11:57:17
Jetzt habt Ihr mich irgendwo abgehängt.

Was ist denn jetzt das Ziel - STT oder TTS?

Für STT benutze ich immer noch meine Android-Tablets mit Automagic - das kann ich dank Google Backup auch auf neuen Geräten installieren. Auf den Tablets läuft aber auch überall Fully.

Für TTS baue ich entweder in FHEM mit Hilfe von Amazon Polly neue MP3s zusammen, sende diese per Automagic an die Tablets (oder andere Geräte) und spiele sie ab. Oder nutze die TTS-Fähigkeit der Tablets selbst, weil ich mir auch hier die inzwischen > 10 Jahre alte Sprachbibliothek gesichert habe, die Amazon Polly verwendet. Also sprechen alle meine Devices mit derselben Stimme, das hat sich als wichtig herausgestellt.

Einzig unzufrieden bin ich mit der Wakeword detection, die über RHASSPY  läuft.

Vielleicht könnte einer von Euch mal (gerne auf Papier) eine Skizze produzieren, welche Komponenten und Abläufe jetzt hier diskutiert werden.

LG

pah
#16
Sprachsteuerung / Aw: (WIP) FHEMWEB interaktiv (...
Letzter Beitrag von Beta-User - 18 April 2026, 11:32:41
Zitat von: schwatter am 18 April 2026, 07:15:12Daher ignoriere mich einfach...
Ungern ;D .

Brauchst du denn jetzt noch eine Anleitung oder nicht? Ich hatte neulich auf Basis meiner hier geposteten Notizen auf einem Testsystem die Installation nochmal gemacht, und das hat da ohne größere Umstände funktioniert. Dabei habe ich die Installation erst mit meinem Standarduser gemacht, und dann danach die Rechte auf /opt/piper auf fhem:dialout geändert und in der systemd-unit-file fhem als User angegeben.


Zwischenzeitlich habe ich etwas mit dem Code von Text2Speech gespielt, leider nur mit Teilerfolgen:

define t2s Text2Speech none
attr t2s TTS_Ressource maryTTS
attr t2s TTS_User host='http://127.0.0.1:5000/' method=POST header='{ "Content-Type" => "application/json" }' body='{ "text": "$text" }'
attr t2s verbose 5

Der Code-Abschnitt im Modul (komplette Fassung anbei):
} elsif ( $TTS_Ressource eq 'maryTTS' ) {
    my $mTTSurl  = $TTS_User;
    my($unnamed, $named) = parseParams($mTTSurl);
    $named->{host}     //= shift @{$unnamed} // '127.0.0.1';
    $named->{port}     //= shift @{$unnamed} // '59125';
    $named->{lang}     //= shift @{$unnamed} // !$TTS_Language || $TTS_Language eq 'Deutsch' ? 'de_DE' : $TTS_Language;
    $named->{voice}    //= shift @{$unnamed} // 'de_DE/thorsten_low';
    $named->{endpoint} //= shift @{$unnamed} // 'process';
    #$named->{method}   //= shift @{$unnamed} // 'GET';

    if (defined $named->{method} && $named->{method} eq 'POST') {
        $mTTSurl = $named->{host};
    } else {
        $mTTSurl = "http://$named->{host}:$named->{port}/$named->{endpoint}?INPUT_TYPE=TEXT&OUTPUT_TYPE=AUDIO&AUDIO=WAVE_FILE&LOCALE=$named->{lang}&VOICE=$named->{voice}&INPUT_TEXT="; # https://github.com/marytts/marytts-txt2wav/blob/python/txt2wav.py#L21
        $mTTSurl .= uri_escape($text);
    }

    Log3( $hash->{NAME}, 4, "$hash->{NAME}: Hole URL: $mTTSurl" );
    my $param = {     url         => $mTTSurl,
                      timeout     => 5,
                      hash        => $hash,                # Muss gesetzt werden, damit die Callback funktion wieder $hash hat
                      method      => $named->{method} // 'GET'     # POST can be found in https://github.com/marytts/marytts-txt2wav/blob/python/txt2wav.py#L33
                  };

    $param->{header} = $named->{header} if defined $named->{header};
    if (defined $named->{body}) {
        $named->{body} =~ s{(\$\w+)}{$1}eegx;
        $param->{body} = $named->{body};
       
      Log3($hash->{NAME}, 3, "$hash->{NAME} body: $param->{body}, header: $param->{header}");

    }

    my ($maryTTSResponseErr, $maryTTSResponse) = HttpUtils_BlockingGet($param);

    if(length($maryTTSResponseErr) > 0) {
      Log3($hash->{NAME}, 3, "$hash->{NAME}: Fehler beim Abrufen der Daten von $TTS_Ressource: $maryTTSResponseErr");
      return;
    }

    my $FileWav2 = $file . '.wav';
    my $fh2 = new IO::File ">$FileWav2";
    if ( !defined $FileWav2 ) {
      Log3($hash->{NAME}, 2, "$hash->{NAME}: wav Datei <$FileWav2> konnte nicht angelegt werden.");
      return;
    }

    $fh2->print($maryTTSResponse);
    Log3($hash->{NAME}, 4, "$hash->{NAME}: Schreibe wav in die Datei $FileWav2, Bytes: ".length $maryTTSResponse);
    close $fh2;
    $cmd = qq(lame "$FileWav2" "$file");
    Log3($hash, 4, "$hash->{NAME}:$cmd");
    system $cmd;
    return unlink $FileWav2;
  }
Irgendeine Kleinigkeit paßt noch nicht, vermutlich im Header (ich habe einige Versionen durch, muss jetzt aber auch mal was anderes machen)? Jedenfalls will HttpUtils_BlockingGet() eigentlich einen Endpunkt haben, und via curl bekomme ich auch mit dem ersten slash eine wav:
curl -X POST -H 'Content-Type: application/json' -d '{ "text": "thorsten sagt jetzt mal wieder etwas an" }' -o test.wav localhost:5000/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 84577  100 84524  100    53   228k    146 --:--:-- --:--:-- --:--:--  228k
oder
curl -X POST -H 'Content-Type: application/json' -d '{ "text": "thorsten sagt wieder etwas an" }' -o test.wav http://localhost:5000/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 69719  100 69676  100    43   317k    200 --:--:-- --:--:-- --:--:--  318k
#17
Codeschnipsel / Aw: HowTo: Ein einfacher Trick...
Letzter Beitrag von Damu - 18 April 2026, 10:50:39
Sorry

Verstehe nicht ganz.

Wie geht das genau.

Würde es gerne mal machen.

Kannst Du das etwas genauer erklären.

(Welche Befehle wo?)
Vielen Dank
#18
1Wire / Aw: Using OWServer with comple...
Letzter Beitrag von Dr. Boris Neubert - 18 April 2026, 10:28:23
Herzlichen Glückwunsch!

A primer for creating plots can be found in the Wiki: https://wiki.fhem.de/wiki/Creating_Plots

There is also a "Create SVG plot" link in the detail view of the FileLog for the OWDevice in the FHEMWEB GUI to simplify the task.

As this is off-topic here, I advise to open a new topic in the right board of this forum in case of questions regarding the plot.

Cheers
Boris
#19
Sonstige Systeme / Aw: 76_SMAInverter.pm - Abfrag...
Letzter Beitrag von 300P - 18 April 2026, 09:50:52
Zitat von: MadMax am 07 Dezember 2025, 14:19:20Bei mir läuft es mit einem SPT8.0SE und einem SBS2.5.

Hallo MadMax!

ich hatte es grad nochmals bei mir geladen und probiert.
Einstellung bei mir ist sowieso schon:
attr <name> InstallerLogin 1
attr <name> detail-level 2
SBS2.5 mit LG10H-RESU = kein Erfolg / keine Werte
SBS3.7 mit LG16H-PRIME = kein Erfolg / keine Werte





PS:
Nach längerem suchen dann doch noch etwas gefunden:

Grund:
Die Bezeichnung der Reading ist bei mir anders  :o

SBS2.5 - 3 Werte
->>> LG10HRESU hat (m.M.n.) den 4. Wert nicht
 
bat_lower_discharge_limit
bat_deep_discharge_protection_area
bat_inv_BAT_conserving_battery_state_of_charge_area

SBS3.7
leider gar keine Werte !

Ich schaue die Tage mal ob ich die Werte evtl. doch noch herausfinde  O:-)
#20
DOIF / Aw: Energy-Card
Letzter Beitrag von Damian - 18 April 2026, 09:32:33
Zitat von: Wzut am 18 April 2026, 09:08:41Könntest bitte alle deine Readingsnamen nach Bedeutung  aufschlüsseln ?
Bei quota_powGetBpCms handelt es sich vermutlich um den aktuellen Ladestrom der Batterie und bei quota_soc um den aktuellen Ladezustand.
Aber der Rest ist doch sehr kryptisch, zumal einige Readings wohl nicht von einem Gerät direkt stammen sondern in einem anderen DOIF erst gebildet werden bsp total_f.day

Ich habe die Readingnamen angepasst und die Definition in den ersten Post verlagert. Später wird es dazu eine Wiki-Beschreibung geben.