FHEM Forum

FHEM => Frontends => FHEMWEB => Thema gestartet von: schwatter am 14 März 2026, 17:25:25

Titel: VoiceButton für Fhemweb
Beitrag von: schwatter am 14 März 2026, 17:25:25
Tag,

hier eine kleine JS Sammlung für Voicecontrol.

##########################################
# 1. VoiceButton
##########################################

# Zweck:
Der Button setzt beim Berühren einen Dummy auf 'on'
und beim Loslassen sofort wieder auf 'off'.
Geeignet, um ein Mikrofon-Device aufzuwecken.

# Schritt 1: Datei kopieren
voicebutton.js nach /opt/fhem/www/voicecontrol kopieren

# Schritt 2: JavaScript einbinden
attr WEBphone JavaScripts voicecontrol/voicebutton.js
# Schritt 3: Dummy-Modul erstellen
define VoiceButton dummy
attr VoiceButton readingList state
attr VoiceButton room Test
attr VoiceButton setList state

setstate VoiceButton off
setstate VoiceButton 2026-03-14 17:24:00 state off

# Schritt 4: FHEM neu starten
Änderungen speichern und FHEM neustarten

##########################################
# 2. VoiceControl (Speech-to-Text)
##########################################

# Zweck:
Wandelt Sprache in Text um und schreibt den Text in den Dummy VoiceControl(state).

# Schritt 1: Dateien kopieren
voicecontrol.js nach /opt/fhem/www/voicecontrol kopieren

# Schritt 2: JavaScript einbinden
attr WEBphone JavaScripts voicecontrol/voicecontrol.js
# Schritt 3: Dummy-Modul erstellen
define VoiceControl dummy
attr VoiceControl readingList state
attr VoiceControl room Test
attr VoiceControl setList state

setstate VoiceControl off
setstate VoiceControl 2026-03-14 17:24:00 state off

# Schritt 4: Beispiel notify
defmod n_VoiceControl_Licht notify VoiceControl:Esszimmer.Licht.(an|aus) {\
if ($EVENT eq "Esszimmer Licht an")\
       { fhem 'set Lampe01_Ez on' }\
if ($EVENT eq "Esszimmer Licht aus")\
       { fhem 'set Lampe01_Ez off' }\
}

setstate n_VoiceControl_Licht 2026-03-14 22:10:27
setstate n_VoiceControl_Licht 2026-03-14 22:09:38 state active
setstate n_VoiceControl_Licht 2026-03-14 22:10:27 triggeredByDev VoiceControl
setstate n_VoiceControl_Licht 2026-03-14 22:10:27 triggeredByEvent Esszimmer Licht an

# Schritt 5: FHEM neu starten
Änderungen speichern und FHEM neustarten

# Hinweis für HTTP-Server ohne HTTPS:
In Chrome muss die Flag aktiviert werden: chrome://flags/#unsafely-treat-insecure-origin-as-secure
und die eigene Serveradresse hinzufügen, z.B.: http://192.168.178.50:8083
Für die Spracheingabe den Button dücken und halten.


Gruß schwatter
Titel: Aw: VoiceButton für Fhemweb
Beitrag von: schwatter am 14 März 2026, 17:39:01
Aso, ich hatte auch mit webkitSpeechRecognition gespielt. Aber mein Chrome lässt mich nicht das Mikro
unter http freischalten. Da ist wohl https erforderlich  :( Oder irre ich mich?

Gruß schwatter
Titel: Aw: VoiceButton für Fhemweb
Beitrag von: Dr. Boris Neubert am 14 März 2026, 19:22:58
Zitat von: schwatter am 14 März 2026, 17:25:25defmod VoiceControl dummy
attr VoiceControl readingList state
attr VoiceControl room Test
attr VoiceControl setList state

setstate VoiceControl off
setstate VoiceControl 2026-03-14 17:24:00 state off

Wie ist denn das Widget mit dem Dummy verknüpft? Braucht man da nicht noch ein widgetOverride?
Titel: Aw: VoiceButton für Fhemweb
Beitrag von: schwatter am 14 März 2026, 20:07:15
Das ist in dem JS voicebutton.js fest drinne

    function voiceOn() {
      console.log("Voice ON");
      FW_cmd('/fhem?cmd=set VoiceControl state on&XHR=1');
    }

    function voiceOff() {
      console.log("Voice OFF");
      FW_cmd('/fhem?cmd=set VoiceControl state off&XHR=1');
    }

Gruß schwatter
Titel: Aw: VoiceButton für Fhemweb
Beitrag von: schwatter am 14 März 2026, 20:24:34
Oh,

ok ich bin etwas weiter. Wer wie ich noch http benutzt kann in Chrome z.B
chrome://flags/#unsafely-treat-insecure-origin-as-secure aktivieren und in dem Feld
darunter den Link zu Fhem eintragen: http://192.168.1.76:8084
Jetzt habe ich zugriff auf das Mikro, bzw es ist freigeschaltet. Ich schaue mal.

Gruß schwatter
Titel: Aw: VoiceButton für Fhemweb
Beitrag von: schwatter am 14 März 2026, 20:42:34
Super,

jetzt funktioniert es. Am Laptop spinnt das Mikro. Konnte auf dem Handy gerade erfolgreich in den
state vom Dummy VoiceControl VoicetoText übertragen. Dazu beim sprechen den Button halten.
Update im ersten Post.

Gruß schwatter
Titel: Aw: VoiceButton für Fhemweb
Beitrag von: rudolfkoenig am 14 März 2026, 21:29:53
Ich habe f18.js mit STT erweitert.

Im Select-Style/f18 Menu gibt es einw STT Option, was das Micro oben einschaltet.

Beim Druecken auf das Micro kommt ein Dialog, da kann man was sagen, und das Ergebnis zu FHEM schicken.
In FHEM wird im dazugehoerigen FHEMWEB ein STT Reading gesetzt bzw. ein Event ausgeloest.
Die Sprache (DE oder EN) haengt vom "attr global language" ab, Voreinstellung ist EN.
Ich habe es mit Chromium, deutsch und englisch getestet. Es funktioniert auch ohne https.
Titel: Aw: VoiceButton für Fhemweb
Beitrag von: schwatter am 14 März 2026, 21:57:02
Funktioniert!  :)

Aber bei mir mit http auf Chrome Android auch erst nachdem ich Insecure... aktiviert habe.
Vorher wird das Micro nicht aktiviert.

Edit:
Und bei mir werden relativ schnell doppelte/dreifache Wörter aufgenommen.
setstate WEBphone 2026-03-14 21:59:52 STT EsszimmerEsszimmerEsszimmerEsszimmer Licht Licht aus
Gruß schwatter
Titel: Aw: VoiceButton für Fhemweb
Beitrag von: schwatter am 14 März 2026, 22:13:54
Update im ersten Post.
Beispiel notify für den Voicebutton hinzugefügt.

Gruß schwatter