Hauptmenü

Neueste Beiträge

#11
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
#12
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
#13
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
#14
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
#15
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:-)
#16
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.
#17
Automatisierung / Aw: EnOcean - ASC Rollo Fahrte...
Letzter Beitrag von ch.eick - 18 April 2026, 09:26:05
Leider kann ich von der Verschiebung der Zeiten noch keinen Erfolg erkennen, gestern haben 4-5 Fahrten nicht funktioniert und heute Morgen sind zwei Rolles geschlossen geblieben. Das Log muss ich mir noch anschauen.

Eventuell könnte ja jemand mit EnOcean Kenntnissen hier mit Einsteigen.

VG Christian
#18
DOIF / Aw: Energy-Card
Letzter Beitrag von Wzut - 18 April 2026, 09:08:41
Kö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
#19
TabletUI / Aw: [FTUI2] Widget Thermostat ...
Letzter Beitrag von romakrau - 18 April 2026, 08:42:34
Guten Morgen,

es scheint wohl ein Problem des MQTT2_Device zu sein. Nachdem ich die DEF änderte in die Orginal z2m EndDevice Nummer oder die dort angegeben MQTT Defination war die Kommunikation WebUI -> z2m nicht mehr möglich. Änderung in z2m wurde im Device aktualisiert.

Ich schließe mal den Thread und fange am Montag neu an. Melde mich dann im MQTT-Board.
#20
FHEM Code changes / Revision 31133: controls_fhem....
Letzter Beitrag von System - 18 April 2026, 08:30:41
Revision 31133: controls_fhem.txt: fhemupdate checkin

controls_fhem.txt: fhemupdate checkin

Source: Revision 31133: controls_fhem.txt: fhemupdate checkin