NEUE Betreff: Text-to-Speech App

Begonnen von mediastudio, 02 November 2025, 17:59:16

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Zitat von: Beta-User am 12 November 2025, 21:24:36AMAD benötigt afaik die App Automagic.
Ja, ist aber immer noch zu bekommen und läuft bei mir problemlos.

LG

pah

Beta-User

Zitat von: Prof. Dr. Peter Henning am 13 November 2025, 10:18:54
Zitat von: Beta-User am 12 November 2025, 21:24:36AMAD benötigt afaik die App Automagic.
Ja, ist aber immer noch zu bekommen und läuft bei mir problemlos.
"Noch". Dachte mir schon, dass man das irgendwie noch ans Laufen bekommt, aber gab es da nicht schon unter Andoid 10 (oder 11?) irgendein Thema mit dem Overlay?

Egal. Wir diskutieren grade, ob es noch lebt oder schon tot ist. Automagic wird jedenfalls afaik nicht wieder lebendig, von daher stellt sich doch schon länger die Frage, wie wir es ersetzen können.

Allerdings ist die dahinter liegende Frage valide, ob man nicht (auch) diese App als drop-in-replacement für Automagic hinsichtlich der Schnittstelle zu FHEM (AMADCommBridge) dienen könnte.
Wobei ich beim Blick in die commandref grade gesehen habe, dass es da noch Tasker gäbe; mal sehen...

@mediastudio
Wie sind denn deine Pläne hinsichtlich der Lizensierung des Codes? Auch GPL?
Falls du selbst nicht in diese Richtung entwickeln magst, findet sich vielleicht jemand, der in diese Richtung mitwirken würde, und es wäre auch nicht die erste App, die über den Verein finanziert den Weg in den Appstore gefunden hätte...
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

mediastudio

Hallo zusammen,

hier ist ein Beispiel, wie ihr den FHEMVoiceClient testen könnt.
Es ist wichtig, dass die beigefügten Skripte in der FHEM.cfg übernommen werden,
damit alles reibungslos funktioniert.

Bitte beachtet: Solltet ihr weitere Sprachmodule eingebunden haben, kann ich leider
keine Garantie für die Funktionalität des FHEMVoiceClient übernehmen. Ich empfehle,
lediglich das zu übernehmen, was ich bereits getestet habe. In diesem Fall sollte es auch bei euch funktionieren.


##########################################
## Wichtig!! in der fhem.cfg hinzufügen ##
##########################################

#################################
# TTS Text2Speech
#################################
define MyTTS Text2Speech hw=0.0
attr MyTTS TTS_UseMP3Wrap 1
attr MyTTS room Text2Speech


#######################################################################
##  im Webinterface unter Android zwei Readings:                     ##
##                                                                   ##
##  lastTTS → wird vom Handy gelesen und gesprochen                  ##
##  debugTTS → dient nur der Kontrolle, was wirklich gesendet wurde  ##
#######################################################################

define voiceRecognitionLastResult dummy
attr voiceRecognitionLastResult room Android
attr voiceRecognitionLastResult setList textField


define androidTablet dummy
attr androidTablet room Android
attr androidTablet setList ttsSay:textField
attr androidTablet webCmd ttsSay


define androidTablet_tts notify androidTablet:ttsSay.* { \
  my @parts = ();; \
  for (my $i = 1;; $i < 10;; $i++) { ;;\
    my $var = "\$EVTPART$i";; \
    no strict 'refs';; \
    push @parts, eval $var if defined(eval $var) && eval($var) ne '';; \
  };; \
  my $text = join(' ', @parts);; \
  if ($text) { ;;\
  fhem("setreading androidTablet lastTTS $text");; \
  fhem("setreading androidTablet debugTTS $text");; \
      Log3('androidTablet', 3, "androidTablet_tts -> $text");; \
  } else { ;;\
      Log3('androidTablet', 3, "androidTablet_tts -> kein Text erkannt");; \
  } \
}




Das sollte in die fhem.cfg

Hier ist ein Beispiel wie man das testen kann.


###################################################################################################
####  So sind die Befehle mit Sprache EIN und Ausgabe aufgebaut, das ist FHEM Standart gewesen  ###
###################################################################################################
## Der Testschalter wird im Room Testschalter angelegt.
## Im room Android kann man sehen was als Sprache von der App FHEMVoiceClient an Fhem gesendet wurde.
##
## Sprache empfangen: "voiceRecognitionLastResult" testschalter Licht aus
## Fhem sendet zurüch an FHEMVoiceClient: AttsSay Der Test wurde ausgeschaltet
##
## Wichtig die Räume oder Aktoren so schreiben wie sie von "voiceRecognitionLastResult" erkannt werden.
##
## Hier ein Testschalter, Sprachausgabe bei Betätigung oder über App Spracheingabe
##
## .*(Testschalter|testschalter).* hier wird der Raum benannt,
## wenn "Testschalter Licht ein" oder "Testschalter Licht an"
## erkannt wird, schaltet der "Testschalter" und
## set androidTablet ttsSay Der Test wurde eingeschaltet , hier wird die Sprache ausgegeben.


######################
### Test Schalter ####
######################
define Testschalter dummy
attr Testschalter alias Test Schalter
attr Testschalter devStateIcon on:power.on off:power.off
attr Testschalter group Testschalter
attr Testschalter icon lampe_1_blau_40.png
attr Testschalter room Testschalter
attr Testschalter setList off on

define Testschalter_1 notify Testschalter:on  set androidTablet ttsSay Test Eingeschaltet
define Testschalter_2 notify Testschalter:off  set androidTablet ttsSay Test Ausgeschaltet

### Sprachbefehl für Test Schalter
define speechRecognizer_Testschalter_ein notify .*voiceRecognitionLastResult.*(Testschalter|testschalter).*Licht.*(ein|an).* set Testschalter on;; set androidTablet ttsSay Der Test wurde eingeschaltet
define speechRecognizer_Testschalter_aus notify .*voiceRecognitionLastResult.*(Testschalter|testschalter).*Licht.*aus.* set Testschalter off;; set androidTablet ttsSay  Der Test wurde ausgeschaltet




mediastudio

Betreff: Information zu "Hotword" Variable

Hallo,

ich möchte dich kurz über die Variable "Hotword" informieren.
Ich habe diese Funktion zwar vorgesehen, jedoch noch nicht freigegeben,
da es damit noch einige Probleme gibt. Daher ist dieses Feld derzeit
ohne Funktion und muss nicht weiter beachtet werden.

Viele Grüße,

Beta-User

Zitat von: mediastudio am 13 November 2025, 12:18:22Ich empfehle,
lediglich das zu übernehmen, was ich bereits getestet habe. In diesem Fall sollte es auch bei euch funktionieren.
Das "MyTTS"-Device wird in den von dir gezeigten cfg-Auszügen gar nicht genutzt ;) .

Wie dem auch sei: nach meinem Verständnis müßte nach einer Spracheingabe der dummy "voiceRecognitionLastResult" irgendwelche Infos in Readings (und sei es nur state) enthalten, in denen steht, was gesprochen wurde. Oder es müßte zumindest nach einer Spracheingabe irgendein Event mit dem Textteil "voiceRecognitionLastResult" im Event-Monitor zu sehen sein.

Beides ist bei mir nicht der Fall.

Ergo:
Kannst du bitte checken, ob du bei einer Spracheingabe was dazu passendes im Event-Monitor sehen kannst und/oder wie der dummy danach aussieht?
Nett wäre, wenn du hier ein per "copy for forum" erstelltes list davon (es gibt in der Detailansicht jedes Devices unten einen entsprechenden "Knopf") (und einem der Testschalter_*-notify nach "Benutzung" sowie dem "androidTablet"-Device) hier einstellen könntest. An den cfg-Auszügen sieht man keine Reading-Werte oder Zeitstempel...   
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

Beta-User

OK, bin einen halben Schritt weiter: Das Problem scheint tatsächlich csrf zu sein. Setzt man csrfToken auf "none", erfolgt sowohl die Sprachausgabe dessen, was im Reading "lastTTS" des Devices "androidTablet" steht (das war bei meinem Testen grade vom TYPE webViewControl...), und es wird nach einer Spracheingabe  auch voiceRecognitionLastResult gefüllt:
define voiceRecognitionLastResult dummy
attr voiceRecognitionLastResult room Steuerung->Interfaces
attr voiceRecognitionLastResult setList textField
#   FUUID      6913ae84-f33f-d171-380a-6594cec92cb66379
#   NAME       voiceRecognitionLastResult
#   NR         706
#   STATE      das ist ein Test
#   TYPE       dummy
#   READINGS:
#     2025-11-14 06:50:08   state           das ist ein Test
#
setstate voiceRecognitionLastResult das ist ein Test
setstate voiceRecognitionLastResult 2025-11-14 06:50:08 state das ist ein Test


Soweit, so gut.

@mediastudio:
Alle Sicherheitsmechanismen auszuschalten ist imo keine Option, der pauschale Verweis, dass man sich (ggf. via wireguard) im eigenen Netz befindet, ist m.E. nicht zielführend. Wie gehen wir mit dem csrf-Thema um?


Zum Vergleich, wie das bei AMAD läuft - da werden bei empfangener Spracheingabe zwei Readings an der Bridge geschrieben, sollte eigentlich selbsterklärend sein:
define AMADBridge AMADCommBridge
[...]
setstate AMADBridge 2022-08-04 23:49:13 receiveVoiceCommand schalte das licht am esstisch aus
setstate AMADBridge 2022-08-04 23:49:13 receiveVoiceDevice TabletWohnzimmer
setstate AMADBridge 2025-11-14 06:51:10 state opened

"TabletWohnzimmer" war/ist ein AMADDevice (das aber schon länger nicht mehr funktional ist, wie man am Zeitstempel erkennen kann...)

OT: Der schnelle (und bisher erfolglose) Versuch, das AMADDevice via Tasker wiederzubeleben, ist hier zu finden: https://forum.fhem.de/index.php?topic=143045.0
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

mediastudio

Betreff: Update zur FHEMVoiceClient App

Hallo FHEM USER,

ich möchte euch darüber informieren, dass mir bewusst ist, dass für den universellen Gebrauch der
FHEMVoiceClient App eine Eingabe für HTTPS erforderlich ist. Ich plane, dieses Thema in den nächsten
Tagen anzugehen und bin zuversichtlich, dass dies umsetzbar sein sollte.

In den Diskussionen höre ich oft, wie gut andere vorhandene Apps verschiedene Funktionen erfüllen.
Daher möchte ich noch einmal klarstellen, was meine Vision für die FHEMVoiceClient App ist.
Ursprünglich wollte ich die Funktionalitäten realisieren, die vor Jahren mit der in FHEM integrierten
WebView App möglich waren, ohne dass zusätzliche Apps eingebunden werden müssen.
So bleibt es jedem Nutzer selbst überlassen, welche Lösungen er einsetzen möchte.

Sobald die FHEMVoiceClient App mit HTTPS funktioniert, werde ich sie zum Test bereitstellen.

Vielen Dank für euer Verständnis und eure Geduld!

Mit besten Grüßen,
Wilfried Fröse